@atomichub/atomicassets 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -0
- package/NOTICE +12 -0
- package/README.md +129 -0
- package/build/atomicassets.global.js +2730 -0
- package/build/index.cjs +2768 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.mts +1149 -0
- package/build/index.d.ts +1149 -0
- package/build/index.mjs +2708 -0
- package/build/index.mjs.map +1 -0
- package/licenses/Apache-2.0.txt +202 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/float.js","../src/index.ts","../src/Errors/SerializationError.ts","../src/Actions/Generator.ts","../src/Actions/Explorer.ts","../src/Actions/Rpc.ts","../src/Errors/ApiError.ts","../src/API/Explorer/index.ts","../src/Errors/RpcError.ts","../src/Errors/SchemaError.ts","../src/Errors/DeserializationError.ts","../src/Serialization/Coders/Base.ts","../src/Serialization/Binary.ts","../src/Schema/MappingSchema.ts","../src/Serialization/State.ts","../src/Serialization/index.ts","../src/Schema/ValueSchema.ts","../src/Schema/VectorSchema.ts","../src/Schema/index.ts","../src/API/Rpc/Collection.ts","../src/API/Rpc/Schema.ts","../src/API/Rpc/Template.ts","../src/API/Rpc/Asset.ts","../src/API/Rpc/BaseCache.ts","../src/API/Rpc/RpcCache.ts","../src/API/Rpc/Offer.ts","../src/API/Rpc/Queue.ts","../src/API/Rpc/index.ts","../src/Serialization/TypeParser/FixedParser.ts","../src/Serialization/TypeParser/BooleanParser.ts","../src/Serialization/TypeParser/VariableParser.ts","../src/Serialization/TypeParser/ByteParser.ts","../src/Serialization/TypeParser/FixedIntegerParser.ts","../src/Serialization/TypeParser/FloatingParser.ts","../src/Serialization/TypeParser/IPFSParser.ts","../src/Serialization/TypeParser/StringParser.ts","../src/Serialization/TypeParser/VariableIntegerParser.ts","../src/Serialization/Types.ts","../src/Networks.ts","../src/Errors/ExplorerError.ts","../src/API/Explorer/Enums.ts","../src/Contracts/ActionNames.ts","../src/Contracts/SchemaFormat.ts"],"sourcesContent":["/**\n * pure javascript functions to read and write 32-bit and 64-bit IEEE 754 floating-point\n *\n * Copyright (C) 2017-2019 Andras Radics\n * Licensed under the Apache License, Version 2.0\n */\n// removed buffer\n\n'use strict';\n\nvar isBigeCpu = false;\nvar readFloat32Array, writeFloat32Array, readFloat32ArrayRev, writeFloat32ArrayRev;\nvar readFloat64Array, writeFloat64Array, readFloat64ArrayRev, writeFloat64ArrayRev;\n\n\n// test FloatArray existence with && to not throw off code coverage\n(typeof Float32Array === 'function') && (function(){\n var _fp32 = new Float32Array(1);\n var _b32 = new Uint8Array(_fp32.buffer);\n\n _fp32[0] = -1;\n isBigeCpu = _b32[3] === 0;\n\n readFloat32Array = function readFloat32Array( buf, pos ) {\n pos = pos || 0;\n if (pos < 0 || pos + 4 > buf.length) return 0;\n _b32[0] = buf[pos++]; _b32[1] = buf[pos++]; _b32[2] = buf[pos++];_b32[3] = buf[pos];\n //_b32[0] = buf[pos+0]; _b32[1] = buf[pos+1]; _b32[2] = buf[pos+2]; _b32[3] = buf[pos+3];\n return _fp32[0];\n }\n\n readFloat32ArrayRev = function readFloat32ArrayRev( buf, pos ) {\n pos = pos || 0;\n if (pos < 0 || pos + 4 > buf.length) return 0;\n _b32[3] = buf[pos++]; _b32[2] = buf[pos++]; _b32[1] = buf[pos++]; _b32[0] = buf[pos];\n //_b32[3] = buf[pos+0]; _b32[2] = buf[pos+1]; _b32[1] = buf[pos+2]; _b32[0] = buf[pos+3];\n return _fp32[0];\n }\n\n writeFloat32Array = function writeFloat32Array( buf, v, pos ) {\n pos = pos || 0;\n _fp32[0] = v;\n buf[pos++] = _b32[0]; buf[pos++] = _b32[1]; buf[pos++] = _b32[2]; buf[pos] = _b32[3];\n //buf[pos+0] = _b32[0]; buf[pos+1] = _b32[1]; buf[pos+2] = _b32[2]; buf[pos+3] = _b32[3];\n }\n\n writeFloat32ArrayRev = function writeFloat32ArrayRev( buf, v, pos ) {\n pos = pos || 0;\n _fp32[0] = v;\n buf[pos++] = _b32[3]; buf[pos++] = _b32[2]; buf[pos++] = _b32[1]; buf[pos] = _b32[0];\n //buf[pos+0] = _b32[3]; buf[pos+1] = _b32[2]; buf[pos+2] = _b32[1]; buf[pos+3] = _b32[0];\n }\n})();\n\n(typeof Float64Array === 'function') && (function(){\n var _fp64 = new Float64Array(1);\n var _b64 = new Uint8Array(_fp64.buffer);\n\n readFloat64Array = function readFloat64Array( buf, pos ) {\n pos = pos || 0;\n if (pos < 0 || pos + 8 > buf.length) return 0;\n //_b64[0] = buf[pos++]; _b64[1] = buf[pos++]; _b64[2] = buf[pos++]; _b64[3] = buf[pos++];\n //_b64[4] = buf[pos++]; _b64[5] = buf[pos++]; _b64[6] = buf[pos++]; _b64[7] = buf[pos];\n _b64[0] = buf[pos+0]; _b64[1] = buf[pos+1]; _b64[2] = buf[pos+2]; _b64[3] = buf[pos+3];\n _b64[4] = buf[pos+4]; _b64[5] = buf[pos+5]; _b64[6] = buf[pos+6]; _b64[7] = buf[pos+7];\n return _fp64[0];\n }\n\n readFloat64ArrayRev = function readFloat64ArrayRev( buf, pos ) {\n pos = pos || 0;\n if (pos < 0 || pos + 8 > buf.length) return 0;\n //_b64[7] = buf[pos++]; _b64[6] = buf[pos++]; _b64[5] = buf[pos++]; _b64[4] = buf[pos++];\n //_b64[3] = buf[pos++]; _b64[2] = buf[pos++]; _b64[1] = buf[pos++]; _b64[0] = buf[pos];\n _b64[7] = buf[pos+0]; _b64[6] = buf[pos+1]; _b64[5] = buf[pos+2]; _b64[4] = buf[pos+3];\n _b64[3] = buf[pos+4]; _b64[2] = buf[pos+5]; _b64[1] = buf[pos+6]; _b64[0] = buf[pos+7];\n return _fp64[0];\n }\n\n writeFloat64Array = function writeFloat64Array( buf, v, pos ) {\n pos = pos || 0;\n _fp64[0] = v;\n buf[pos + 0] = _b64[0]; buf[pos + 1] = _b64[1]; buf[pos + 2] = _b64[2]; buf[pos + 3] = _b64[3];\n buf[pos + 4] = _b64[4]; buf[pos + 5] = _b64[5]; buf[pos + 6] = _b64[6]; buf[pos + 7] = _b64[7];\n }\n\n writeFloat64ArrayRev = function writeFloat64ArrayRev( buf, v, pos ) {\n pos = pos || 0;\n _fp64[0] = v;\n buf[pos + 0] = _b64[7]; buf[pos + 1] = _b64[6]; buf[pos + 2] = _b64[5]; buf[pos + 3] = _b64[4];\n buf[pos + 4] = _b64[3]; buf[pos + 5] = _b64[2]; buf[pos + 6] = _b64[1]; buf[pos + 7] = _b64[0];\n }\n})();\n\n\n// arithmetic operations preserve NaN, but logical ops (, >>, etc) convert them to zero\n// Assemble the word to generate NaN if any reads are undefined (outside the bounds of the array).\nfunction readWord( buf, offs, dirn ) {\n var a = buf[offs++], b = buf[offs++], c = buf[offs++], d = buf[offs];\n return (dirn === 'bige')\n ? (((((a * 256) + b) * 256) + c) * 256) + d\n : (((((d * 256) + c) * 256) + b) * 256) + a;\n}\n\nfunction writeWord( buf, v, offs, dirn ) {\n var a = (v >>> 24) & 0xff, b = (v >> 16) & 0xff, c = (v >> 8) & 0xff, d = (v) & 0xff;\n (dirn === 'bige')\n ? (buf[offs++] = a, buf[offs++] = b, buf[offs++] = c, buf[offs] = d)\n : (buf[offs++] = d, buf[offs++] = c, buf[offs++] = b, buf[offs] = a)\n}\n\n// write the two-word value [hi,lo] where hi holds the 32 msb bits and lo the 32 lsb bits\nfunction writeDoubleWord( buf, hi, lo, offs, dirn ) {\n if (dirn === 'bige') {\n writeWord(buf, hi, offs, dirn);\n writeWord(buf, lo, offs + 4, dirn);\n }\n else {\n writeWord(buf, lo, offs, dirn);\n writeWord(buf, hi, offs + 4, dirn);\n }\n}\n\n// given an exponent n, return 2**n\n// n is always an integer, faster to shift when possible\n// Note that nodejs Math.pow() is faster than a lookup table (may be caching)\nvar _2eXp = new Array(); for (var i=0; i<1200; i++) _2eXp[i] = Math.pow(2, i);\nvar _2eXn = new Array(); for (var i=0; i<1200; i++) _2eXn[i] = Math.pow(2, -i);\nfunction pow2( exp ) {\n return (exp >= 0) ? _2eXp[exp] : _2eXn[-exp];\n //return (exp >= 0) ? (exp < 31 ? (1 << exp) : Math.pow(2, exp))\n // : (exp > -31 ? (1 / (1 << -exp)) : Math.pow(2, exp));\n}\n\n\n// getFloat() from qbson, https://github.com/andrasq/node-qbson:\n/*\n * extract the 64-bit little-endian ieee 754 floating-point value\n * see http://en.wikipedia.org/wiki/Double-precision_floating-point_format\n * 1 bit sign + 11 bits exponent + (1 implicit mantissa 1 bit) + 52 mantissa bits\n */\nvar _rshift32 = (1 / 0x100000000); // >> 32 for floats\nvar _rshift20 = (1 / 0x100000); // >> 20 for floats\nvar _lshift32 = (1 * 0x100000000); // << 32\nvar _rshift52 = (1 * _rshift32 * _rshift20); // >> 52\nvar _rshift1023 = pow2(-1023); // 2^-1023\nfunction readDouble( buf, offset, dirn ) {\n var w0 = readWord(buf, offset, dirn);\n var w1 = readWord(buf, offset + 4, dirn);\n var highWord, lowWord;\n (dirn === 'bige') ? (highWord = w0, lowWord = w1) : (highWord = w1, lowWord = w0);\n\n var mantissa = (highWord & 0x000FFFFF) * _lshift32 + lowWord;\n var exponent = (highWord & 0x7FF00000) >>> 20;\n var sign = (highWord >> 31) || 1; // -1, 1, or 1 if NaN\n\n var value;\n if (exponent === 0x000) {\n // zero if !mantissa, else subnormal (non-normalized reduced precision small value)\n // recover negative zero -0.0 as distinct from 0.0\n // subnormals do not have an implied leading 1 bit and are positioned 1 bit to the left\n value = mantissa ? (mantissa * pow2(-52 + 1 -1023)) : 0.0;\n }\n else if (exponent < 0x7ff) {\n // normalized value with an implied leading 1 bit and 1023 biased exponent\n // test for NaN with (mantissa >= 0), and return 0 if NaN ie read from outside buffer bounds\n value = (mantissa >= 0) ? (1 + mantissa * _rshift52) * pow2(exponent - 1023) : 0.0;\n }\n else {\n // Infinity if zero mantissa (+/- per sign), NaN if nonzero mantissa\n value = mantissa ? NaN : Infinity;\n }\n\n return sign * value;\n}\n\n//\n// Note: node-v9 prefers +28% (sign * value), node v6 doesnt care, node v8 likes +16% (-value : value)\n//\n// float32: 1 sign + 8 exponent + 24 mantissa (23 stored, 1 implied)\n// see https://en.wikipedia.org/wiki/Single-precision_floating-point_format\n//\n// Exponent Mantissa == 0 Mantissa > 0 Value\n// 00 +0, -0 denormalized 2^( 1-127) * (0. + (mantissa / 2^23))\n// 00.. FE normalized 2^(exp-127) * (1. + (mantissa / 2^23))\n// FF +/-Infinity NaN -\n//\nvar _rshift23 = Math.pow(2, -23); // >> 23 for floats\nvar _rshift127 = Math.pow(2, -127); // 2^-127\nfunction readFloat( buf, offset, dirn ) {\n var word = readWord(buf, offset, dirn);\n var mantissa = (word & 0x007FFFFF);\n var exponent = (word & 0x7F800000) >>> 23;\n var sign = (word >> 31) || 1; // -1, 1, or 1 if NaN\n\n var value;\n if (exponent === 0x000) {\n value = mantissa ? mantissa * _rshift23 * 2 * _rshift127 : 0.0;\n }\n else if (exponent < 0xff) {\n value = (1 + mantissa * _rshift23) * pow2(exponent - 127) // * _rshift127;\n }\n else {\n value = mantissa ? NaN : Infinity;\n }\n\n return sign * value;\n //return (word >>> 31) ? -value : value;\n}\n\n// given a positive value v, normalize it to between 1 and less than 2 with a binary exponent\n// The exponent is the number of bit places it was shifted, positive if v was >= 2.\n// The special values 0, -0, NaN, +Infinity and -Infinity are not handled here.\n// Looping is faster than (Math.log(v) / Math.LN2) in node-v6, v8, and v9.\n// This function can account for half the time taken to write a double.\nvar _parts = { exp: 0, mant: 0 };\nfunction normalize( v ) {\n var exp = 0;\n\n if (v >= 2) {\n exp = countDoublings(1, v);\n v *= pow2(-exp);\n // if doubled to exactly v/2, adjust up to v\n if (v >= 2) { v /= 2; exp += 1 }\n }\n else if (v < 1) {\n exp = countDoublings(v, 2);\n // avoid using pow2 exponents > 1023, they overflow to Infinity\n if (exp <= 1023) v *= pow2(exp);\n else { v *= pow2(exp - 100); v *= pow2(100); }\n exp = -exp;\n }\n\n // TODO: pass in num bits, and normalize straight to mantissa / denorm\n\n _parts.exp = exp;\n _parts.mant = v;\n return _parts;\n}\n\n// count how many doublings of a are needed for it be close to b.\n// Returns a shift count that grows (a) to at least (b/2) but less than (b).\n// Doubling 1 toward v ensures that (v >> n) >= 1 < 2,\n// and doubling from v toward 2 ensures that (v << n) >= 1 < 2.\nvar _2e192 = Math.pow(2, 192);\nfunction countDoublings( a, b ) {\n var n = 0;\n\n while (a * _2e192 < b) { a *= _2e192; n += 192 }\n while (a * 0x10000000000000000 < b) { a *= 0x10000000000000000; n += 64 }\n while (a * 0x10000 < b) { a *= 0x10000; n += 16 }\n while (a * 0x40 < b) { a *= 0x40; n += 6 }\n while (a * 2 < b) { a *= 2; n += 1 }\n\n return n;\n}\n\n// round the fraction in v and scale up to scale = 2^n bits\n// https://blog.angularindepth.com/how-to-round-binary-fractions-625c8fa3a1af\n// Rounding can cause the scaled value to exceed 2^n.\nfunction roundMantissa( v, scale ) {\n v *= scale;\n // round to nearest, but round a 0.5 tie to even (0.5 to 0.0 and 1.5 to 2.0)\n // round all numbers with a fraction other than 1/2, and round up odd numbers with\n return ((v - Math.floor(v) !== 0.5) || (v & 1)) ? v + 0.5 : v;\n}\n\n// float32: 1 sign + 8 exponent + (1 implied mantissa 1 bit) + 23 stored mantissa bits\n// NaN types: quiet Nan = x.ff.8xxx, signaling NaN = x.ff.0xx1 (msb zero, at least one other bit set)\n// JavaScript built-in NaN is the non-signaling 7fc00000, but arithmetic can yield a negative NaN ffc00000.\nfunction writeFloat( buf, v, offset, dirn ) {\n var norm, word, sign = 0;\n if (v < 0) { sign = 0x80000000; v = -v; }\n\n if (! (v && v < Infinity)) {\n if (v === 0) { // -0, +0\n word = (1/v < 0) ? 0x80000000 : 0x00000000;\n }\n else if (v === Infinity) { // -Infinity, +Infinity\n word = sign | 0x7F800000;\n }\n else { // NaN - positive, non-signaling\n word = 0x7FC00000;\n }\n writeWord(buf, word, offset, dirn);\n }\n else {\n norm = normalize(v); // separate exponent and mantissa\n norm.exp += 127; // bias exponent\n\n if (norm.exp <= 0) { // denormalized number\n if (norm.exp <= -25) { // too small, underflow to zero. -24 might round up though.\n norm.mant = 0;\n norm.exp = 0;\n } else { // denormalize\n norm.mant = roundMantissa(norm.mant, pow2(22 + norm.exp));\n norm.exp = 0; // rounding can carry out and re-normalize the number\n if (norm.mant >= 0x800000) { norm.mant -= 0x800000; norm.exp += 1 }\n }\n } else {\n norm.mant = roundMantissa(norm.mant - 1, 0x800000);\n // if rounding overflowed into the hidden 1s place, hide it and adjust the exponent\n if (norm.mant >= 0x800000) { norm.mant -= 0x800000; norm.exp += 1 }\n if (norm.exp > 254) { // overflow to Infinity\n norm.mant = 0;\n norm.exp = 255;\n }\n }\n\n word = sign | (norm.exp << 23) | norm.mant;\n writeWord(buf, word, offset, dirn);\n }\n}\n\n// double64: 1 bit sign + 11 bits exponent + (1 implied mantissa 1 bit) + 52 stored mantissa bits\n// Writing doubles is simpler than floats, because the internal javascript 64-bit floats\n// are identical to the stored representation, and thus will not overflow or underflow.\nvar doubleArray = [0, 0, 0, 0, 0, 0, 0, 0];\nvar doubleBuf = new Uint8Array(8);\nvar _2e52 = Math.pow(2, 52);\nfunction writeDouble( buf, v, offset, dirn ) {\n var norm, highWord, lowWord, sign = 0;\n if (v < 0) { sign = 0x80000000; v = -v; }\n\n if (! (v && v < Infinity)) {\n if (v === 0) { // -0, +0\n highWord = (1/v < 0) ? 0x80000000 : 0;\n lowWord = 0;\n }\n else if (v === Infinity) { // -Infinity, +Infinity\n highWord = (sign + 0x7FF00000);\n lowWord = 0;\n }\n else { // NaN - positive, non-signaling\n highWord = 0x7FF80000;\n lowWord = 0;\n }\n writeDoubleWord(buf, highWord, lowWord, offset, dirn);\n }\n else {\n norm = normalize(v); // separate exponent and mantissa\n norm.exp += 1023; // bias exponent\n\n if (norm.exp <= 0) { // denormalized\n // JavaScript numbers can not hold values small enough to underflow\n // and no need to round, all bits will be written\n norm.mant *= pow2(51 + norm.exp);\n norm.exp = 0;\n }\n else {\n // no need to round, all bits will be written\n norm.mant = (norm.mant - 1) * _2e52;\n }\n\n highWord = sign | (norm.exp << 20) | (norm.mant / 0x100000000);\n lowWord = norm.mant >>> 0;\n writeDoubleWord(buf, highWord, lowWord, offset, dirn);\n }\n}\n\n\n;(function install() {\n var exports = typeof module === 'object' && module.exports || this;\n\n exports.readWord = readWord;\n exports.writeWord = writeWord;\n exports.writeDoubleWord = writeDoubleWord;\n\n exports.readFloat = readFloat;\n exports.writeFloat = writeFloat;\n exports.readDouble = readDouble;\n exports.writeDouble = writeDouble;\n\n // expose the implementation to the tests\n exports._useFloatArray = function( yesno ) {\n exports._usingFloatArray = yesno;\n if (yesno) {\n // software conversion is faster for float32 than Float32Array\n // Only read via Float32Array if yesno == 'full'.\n if (yesno == 'full') exports.readFloatLE = isBigeCpu ? readFloat32ArrayRev : readFloat32Array;\n exports.writeFloatLE = isBigeCpu ? writeFloat32ArrayRev : writeFloat32Array;\n if (yesno == 'full') exports.readFloatBE = isBigeCpu ? readFloat32Array : readFloat32ArrayRev;\n exports.writeFloatBE = isBigeCpu ? writeFloat32Array : writeFloat32ArrayRev;\n\n exports.readDoubleLE = isBigeCpu ? readFloat64ArrayRev : readFloat64Array;\n exports.writeDoubleLE = isBigeCpu ? writeFloat64ArrayRev : writeFloat64Array;\n exports.readDoubleBE = isBigeCpu ? readFloat64Array : readFloat64ArrayRev;\n exports.writeDoubleBE = isBigeCpu ? writeFloat64Array : writeFloat64ArrayRev;\n }\n else {\n exports._usingFloatArray = '';\n exports.readFloatLE = function readFloatLE( buf, offset ) { return exports.readFloat(buf, offset || 0, 'le'); }\n exports.writeFloatLE = function writeFloatLE( buf, v, offset ) { exports.writeFloat(buf, v, offset || 0, 'le'); };\n exports.readFloatBE = function readFloatBE( buf, offset ) { return exports.readFloat(buf, offset || 0, 'bige'); }\n exports.writeFloatBE = function writeFloatBE( buf, v, offset ) { exports.writeFloat(buf, v, offset || 0, 'bige'); }\n\n exports.readDoubleLE = function readDoubleLE( buf, offset ) { return exports.readDouble(buf, offset || 0, 'le'); }\n exports.writeDoubleLE = function writeDoubleLE( buf, v, offset ) { exports.writeDouble(buf, v, offset || 0, 'le'); }\n exports.readDoubleBE = function readDoubleBE( buf, offset ) { return exports.readDouble(buf, offset || 0, 'bige'); }\n exports.writeDoubleBE = function writeDoubleLE( buf, v, offset ) { exports.writeDouble(buf, v, offset || 0, 'bige'); }\n }\n }\n\n // expose the cpu endianism to the tests\n exports._getBigeCpu = function() { return isBigeCpu };\n exports._setBigeCpu = function(yesno) { isBigeCpu = yesno };\n\n // by default export the software conversion functions, then\n // if available, convert by casting a FloatArray to a byte array\n exports._useFloatArray(false);\n exports._useFloatArray(readFloat32Array && readFloat64Array && 'fastest');\n\n // accelerate access\n install.prototype = exports;\n\n}).call(this);\n","import ExplorerActionGenerator from './Actions/Explorer';\nimport { ActionBuilder, ActionGenerator } from './Actions/Generator';\nimport RpcActionGenerator from './Actions/Rpc';\nimport ExplorerApi from './API/Explorer';\nimport RpcApi from './API/Rpc';\nimport { CachedObjectSchema, ISchema, ObjectSchema, SchemaObject } from './Schema';\nimport { ByteInput, deserialize, serialize, toByteArray } from './Serialization';\nimport { ParserTypes } from './Serialization/Types';\n\nexport {\n RpcApi, ExplorerApi, ObjectSchema, CachedObjectSchema, deserialize, serialize, toByteArray, ParserTypes,\n RpcActionGenerator, ExplorerActionGenerator, ActionGenerator, ActionBuilder\n};\n\n// Serialization schema interface plus the canonical schema-format entry type\n// (carries the optional v2 mediatype hint), and the input shapes\n// deserialize/toByteArray normalize.\nexport { ISchema, SchemaObject, ByteInput };\n\n// Action-generator shapes, including the v2 setschematyp media-type entry,\n// plus the schema-less attribute-map helpers.\nexport {\n AttributeMap, AttributeMapEntry, DecodedAttributeMap,\n EosioActionObject, EosioAuthorizationObject, EosioSimpleAction, Format, SchemaFormatType,\n ATOMIC_ATTRIBUTE, convertAttributeMapToObject, createAttributeMap, toAttributeMap\n} from './Actions/Generator';\n\n// AtomicHub public endpoint presets and preconfigured client factories.\nexport { AtomicHubNetwork, NETWORK_ENDPOINTS, explorerApiForNetwork, rpcApiForNetwork } from './Networks';\n\n// Error classes, exported so consumers can instanceof-match failures.\nexport { default as ApiError } from './Errors/ApiError';\nexport { default as DeserializationError } from './Errors/DeserializationError';\nexport { default as ExplorerError } from './Errors/ExplorerError';\nexport { default as RpcError } from './Errors/RpcError';\nexport { default as SchemaError } from './Errors/SchemaError';\nexport { default as SerializationError } from './Errors/SerializationError';\n\n// API response object types. The API-object schema interface is IApiSchema\n// (renamed from ISchema to resolve the collision with the serialization\n// ISchema exported above).\nexport * from './API/Explorer/Objects';\n\n// Explorer query-parameter and enum types (sort orders, api params). Exported\n// from the package root so consumers no longer reach into deep build/ paths.\nexport * from './API/Explorer/Params';\nexport * from './API/Explorer/Enums';\nexport { DataOptions } from './API/Explorer';\n\n// RPC table-row shapes as the RPC layer caches them (byte vectors already\n// normalized to Uint8Array).\nexport {\n IAssetRow, ICollectionRow, IConfigRow, IOfferRow, ISchemaRow, ITemplateRow, SchemaFormat\n} from './API/Rpc/RpcCache';\n\n// Contract-level types straight from the v2 ABI: raw table rows, action data\n// payloads, action names, and the schema-format mediatype merge rule.\nexport * from './Contracts/Tables';\nexport * from './Contracts/ActionData';\nexport * from './Contracts/ActionNames';\nexport * from './Contracts/SchemaFormat';\n","export default class SerializationError extends Error {\n\n}\n","import { SchemaFormat } from '../API/Rpc/RpcCache';\nimport SerializationError from '../Errors/SerializationError';\n\nexport type EosioAuthorizationObject = { actor: string, permission: string };\nexport type EosioActionObject = {\n account: string,\n name: string,\n authorization: EosioAuthorizationObject[],\n data: any\n};\n// An action without authorization, as produced by the sync ActionBuilder.\n// Signing pipelines that attach authorization late (or per-chain) consume\n// this shape directly.\nexport type EosioSimpleAction = {\n account: string,\n name: string,\n data: any\n};\n\n// The on-chain pair_string_ATOMIC_ATTRIBUTE struct has exactly the fields\n// key/value; action inputs are kept to this shape so a serializer-rejected\n// entry cannot be passed.\nexport type AttributeMapEntry = { key: string, value: [string, any] };\nexport type AttributeMap = AttributeMapEntry[];\n\n// v2 ABIs may serialize the attribute pair as {first, second} instead of the\n// classic {key, value}; the decode side accepts both shapes so callers don't\n// have to normalize before converting.\nexport type DecodedAttributeMap = Array<\n AttributeMapEntry | { first: string, second: [string, any] }\n>;\n\n// The createschema/extendschema on-chain ABI struct: name + type only. Kept\n// deliberately narrow (NOT the codec's SchemaObject, which also carries\n// parent/mediatype) so those v2-only fields cannot leak into createschema\n// action data, where a strict ABI serializer would reject unknown keys.\nexport type Format = { name: string, type: string };\n\n// One schema field's media-type hint carried by the v2 setschematyp action.\n// Distinct from the base wire format: it targets the on-chain\n// schema_format_type structure, not the serialization format.\nexport type SchemaFormatType = { name: string, mediatype: string, info?: string };\n\n// Maps every schema-format type alias the codec understands to the\n// ATOMIC_ATTRIBUTE variant name the contract stores. The alias set mirrors\n// ParserTypes (plus []-suffixed vectors); the variant names are the ABI's\n// ATTRIBUTE variant list, so an attribute built through this map matches the\n// identity the chain records.\nexport const ATOMIC_ATTRIBUTE: { [type: string]: string } = {\n int8: 'int8',\n int16: 'int16',\n int32: 'int32',\n int64: 'int64',\n uint8: 'uint8',\n uint16: 'uint16',\n uint32: 'uint32',\n uint64: 'uint64',\n fixed8: 'uint8',\n fixed16: 'uint16',\n fixed32: 'uint32',\n fixed64: 'uint64',\n float: 'float32',\n double: 'float64',\n string: 'string',\n ipfs: 'string',\n image: 'string',\n bool: 'uint8',\n\n 'int8[]': 'INT8_VEC',\n 'int16[]': 'INT16_VEC',\n 'int32[]': 'INT32_VEC',\n 'int64[]': 'INT64_VEC',\n 'uint8[]': 'UINT8_VEC',\n 'uint16[]': 'UINT16_VEC',\n 'uint32[]': 'UINT32_VEC',\n 'uint64[]': 'UINT64_VEC',\n 'fixed8[]': 'UINT8_VEC',\n 'fixed16[]': 'UINT16_VEC',\n 'fixed32[]': 'UINT32_VEC',\n 'fixed64[]': 'UINT64_VEC',\n 'float[]': 'FLOAT_VEC',\n 'double[]': 'DOUBLE_VEC',\n 'string[]': 'STRING_VEC',\n 'image[]': 'STRING_VEC',\n 'bool[]': 'INT8_VEC'\n};\n\n// Builds an AttributeMap from plain values plus a per-key type lookup,\n// without requiring a full schema. Types are schema-format aliases\n// (see ATOMIC_ATTRIBUTE); the emitted variant is the canonical ABI name.\nexport function createAttributeMap(\n obj: { [key: string]: any }, types: { [key: string]: string }\n): AttributeMap {\n const result: AttributeMap = [];\n\n for (const key of Object.keys(obj)) {\n const type = types[key];\n\n if (typeof type === 'undefined') {\n throw new SerializationError('no type given for field \\'' + key + '\\'');\n }\n\n const variant = ATOMIC_ATTRIBUTE[type];\n\n if (typeof variant === 'undefined') {\n throw new SerializationError('invalid type \\'' + type + '\\' for field \\'' + key + '\\'');\n }\n\n result.push({key, value: [variant, obj[key]]});\n }\n\n return result;\n}\n\n// Sync, authorization-free builders: one method per contract action, each\n// returning a single {account, name, data} object. ActionGenerator wraps\n// these with authorization; signing pipelines that inject authorization\n// themselves use the builder directly.\nexport class ActionBuilder {\n constructor(readonly contract: string) {\n }\n\n acceptauswap(collection_name: string): EosioSimpleAction {\n return this._action('acceptauswap', {collection_name});\n }\n\n acceptoffer(offer_id: string): EosioSimpleAction {\n return this._action('acceptoffer', {offer_id});\n }\n\n addcolauth(collection_name: string, account_to_add: string): EosioSimpleAction {\n return this._action('addcolauth', {collection_name, account_to_add});\n }\n\n addconftoken(token_contract: string, token_symbol: string): EosioSimpleAction {\n return this._action('addconftoken', {token_contract, token_symbol});\n }\n\n addnotifyacc(collection_name: string, account_to_add: string): EosioSimpleAction {\n return this._action('addnotifyacc', {collection_name, account_to_add});\n }\n\n admincoledit(collection_format_extension: Format[]): EosioSimpleAction {\n return this._action('admincoledit', {collection_format_extension});\n }\n\n announcedepo(owner: string, symbol_to_announce: string): EosioSimpleAction {\n return this._action('announcedepo', {owner, symbol_to_announce});\n }\n\n backasset(payer: string, asset_owner: string, asset_id: string, token_to_back: string): EosioSimpleAction {\n return this._action('backasset', {payer, asset_owner, asset_id, token_to_back});\n }\n\n burnasset(asset_owner: string, asset_id: string): EosioSimpleAction {\n return this._action('burnasset', {asset_owner, asset_id});\n }\n\n canceloffer(offer_id: string): EosioSimpleAction {\n return this._action('canceloffer', {offer_id});\n }\n\n createauswap(collection_name: string, new_author: string, owner: boolean): EosioSimpleAction {\n return this._action('createauswap', {collection_name, new_author, owner});\n }\n\n createcol(\n author: string, collection_name: string, allow_notify: boolean,\n authorized_accounts: string[], notify_accounts: string[], market_fee: number, data: AttributeMap\n ): EosioSimpleAction {\n return this._action('createcol', {\n author,\n collection_name,\n allow_notify,\n authorized_accounts,\n notify_accounts,\n market_fee,\n data\n });\n }\n\n createoffer(\n sender: string, recipient: string, sender_asset_ids: string[], recipient_asset_ids: string[], memo: string\n ): EosioSimpleAction {\n return this._action('createoffer', {sender, recipient, sender_asset_ids, recipient_asset_ids, memo});\n }\n\n createtempl(\n authorized_creator: string, collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: AttributeMap\n ): EosioSimpleAction {\n return this._action('createtempl', {\n authorized_creator, collection_name, schema_name, transferable, burnable, max_supply, immutable_data\n });\n }\n\n createtempl2(\n authorized_creator: string, collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: AttributeMap, mutable_data: AttributeMap\n ): EosioSimpleAction {\n return this._action('createtempl2', {\n authorized_creator, collection_name, schema_name, transferable, burnable, max_supply, immutable_data, mutable_data\n });\n }\n\n createschema(\n authorized_creator: string, collection_name: string, schema_name: string, schema_format: Format[]\n ): EosioSimpleAction {\n return this._action('createschema', {authorized_creator, collection_name, schema_name, schema_format});\n }\n\n declineoffer(offer_id: string): EosioSimpleAction {\n return this._action('declineoffer', {offer_id});\n }\n\n deltemplate(authorized_editor: string, collection_name: string, template_id: number): EosioSimpleAction {\n return this._action('deltemplate', {authorized_editor, collection_name, template_id});\n }\n\n extendschema(\n authorized_editor: string, collection_name: string, schema_name: string, schema_format_extension: Format[]\n ): EosioSimpleAction {\n return this._action('extendschema', {authorized_editor, collection_name, schema_name, schema_format_extension});\n }\n\n forbidnotify(collection_name: string): EosioSimpleAction {\n return this._action('forbidnotify', {collection_name});\n }\n\n init(): EosioSimpleAction {\n return this._action('init', {});\n }\n\n locktemplate(authorized_editor: string, collection_name: string, template_id: number): EosioSimpleAction {\n return this._action('locktemplate', {authorized_editor, collection_name, template_id});\n }\n\n mintasset(\n authorized_minter: string, collection_name: string, schema_name: string, template_id: number,\n new_asset_owner: string, immutable_data: AttributeMap, mutable_data: AttributeMap, tokens_to_back: string[]\n ): EosioSimpleAction {\n return this._action('mintasset', {\n authorized_minter, collection_name, schema_name, template_id, new_asset_owner, immutable_data, mutable_data, tokens_to_back\n });\n }\n\n payofferram(payer: string, offer_id: string): EosioSimpleAction {\n return this._action('payofferram', {payer, offer_id});\n }\n\n redtemplmax(\n authorized_editor: string, collection_name: string, template_id: number, new_max_supply: number\n ): EosioSimpleAction {\n return this._action('redtemplmax', {authorized_editor, collection_name, template_id, new_max_supply});\n }\n\n rejectauswap(collection_name: string): EosioSimpleAction {\n return this._action('rejectauswap', {collection_name});\n }\n\n remcolauth(collection_name: string, account_to_remove: string): EosioSimpleAction {\n return this._action('remcolauth', {collection_name, account_to_remove});\n }\n\n remnotifyacc(collection_name: string, account_to_remove: string): EosioSimpleAction {\n return this._action('remnotifyacc', {collection_name, account_to_remove});\n }\n\n setassetdata(\n authorized_editor: string, asset_owner: string, asset_id: string, new_mutable_data: AttributeMap\n ): EosioSimpleAction {\n return this._action('setassetdata', {authorized_editor, asset_owner, asset_id, new_mutable_data});\n }\n\n setcoldata(collection_name: string, data: AttributeMap): EosioSimpleAction {\n return this._action('setcoldata', {collection_name, data});\n }\n\n setlastpayer(owner: string, collection_name: string): EosioSimpleAction {\n return this._action('setlastpayer', {owner, collection_name});\n }\n\n setmarketfee(collection_name: string, market_fee: number): EosioSimpleAction {\n return this._action('setmarketfee', {collection_name, market_fee});\n }\n\n setrampayer(new_payer: string, asset_id: string): EosioSimpleAction {\n return this._action('setrampayer', {new_payer, asset_id});\n }\n\n settempldata(\n authorized_editor: string, collection_name: string, template_id: number, new_mutable_data: AttributeMap\n ): EosioSimpleAction {\n return this._action('settempldata', {authorized_editor, collection_name, template_id, new_mutable_data});\n }\n\n setschematyp(\n authorized_editor: string, collection_name: string, schema_name: string, schema_format_type: SchemaFormatType[]\n ): EosioSimpleAction {\n const normalized = schema_format_type.map(\n ({name, mediatype, info}) => ({name, mediatype, info: info ?? ''})\n );\n\n return this._action('setschematyp', {\n authorized_editor, collection_name, schema_name, schema_format_type: normalized\n });\n }\n\n setversion(new_version: string): EosioSimpleAction {\n return this._action('setversion', {new_version});\n }\n\n transfer(account_from: string, account_to: string, asset_ids: string[], memo: string): EosioSimpleAction {\n return this._action('transfer', {from: account_from, to: account_to, asset_ids, memo});\n }\n\n withdraw(owner: string, token_to_withdraw: string): EosioSimpleAction {\n return this._action('withdraw', {owner, token_to_withdraw});\n }\n\n protected _action(name: string, data: any): EosioSimpleAction {\n return {account: this.contract, name, data};\n }\n}\n\nexport class ActionGenerator {\n protected readonly builder: ActionBuilder;\n\n constructor(readonly contract: string) {\n this.builder = new ActionBuilder(contract);\n }\n\n async acceptauswap(authorization: EosioAuthorizationObject[], collection_name: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.acceptauswap(collection_name));\n }\n\n async acceptoffer(authorization: EosioAuthorizationObject[], offer_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.acceptoffer(offer_id));\n }\n\n async addcolauth(authorization: EosioAuthorizationObject[], collection_name: string, account_to_add: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.addcolauth(collection_name, account_to_add));\n }\n\n async addconftoken(authorization: EosioAuthorizationObject[], token_contract: string, token_symbol: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.addconftoken(token_contract, token_symbol));\n }\n\n async addnotifyacc(authorization: EosioAuthorizationObject[], collection_name: string, account_to_add: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.addnotifyacc(collection_name, account_to_add));\n }\n\n async admincoledit(authorization: EosioAuthorizationObject[], collection_format_extension: Format[]): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.admincoledit(collection_format_extension));\n }\n\n async announcedepo(authorization: EosioAuthorizationObject[], owner: string, symbol_to_announce: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.announcedepo(owner, symbol_to_announce));\n }\n\n async backasset(\n authorization: EosioAuthorizationObject[], payer: string, asset_owner: string, asset_id: string, token_to_back: string\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.backasset(payer, asset_owner, asset_id, token_to_back));\n }\n\n async burnasset(authorization: EosioAuthorizationObject[], asset_owner: string, asset_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.burnasset(asset_owner, asset_id));\n }\n\n async canceloffer(authorization: EosioAuthorizationObject[], offer_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.canceloffer(offer_id));\n }\n\n async createauswap(\n authorization: EosioAuthorizationObject[], collection_name: string, new_author: string, owner: boolean\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createauswap(collection_name, new_author, owner));\n }\n\n async createcol(\n authorization: EosioAuthorizationObject[], author: string, collection_name: string, allow_notify: boolean,\n authorized_accounts: string[], notify_accounts: string[], market_fee: number, data: AttributeMap\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createcol(\n author, collection_name, allow_notify, authorized_accounts, notify_accounts, market_fee, data\n ));\n }\n\n async createoffer(\n authorization: EosioAuthorizationObject[], sender: string, recipient: string,\n sender_asset_ids: string[], recipient_asset_ids: string[], memo: string\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createoffer(sender, recipient, sender_asset_ids, recipient_asset_ids, memo));\n }\n\n async createtempl(\n authorization: EosioAuthorizationObject[], authorized_creator: string, collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: AttributeMap\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createtempl(\n authorized_creator, collection_name, schema_name, transferable, burnable, max_supply, immutable_data\n ));\n }\n\n async createtempl2(\n authorization: EosioAuthorizationObject[], authorized_creator: string, collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: AttributeMap, mutable_data: AttributeMap\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createtempl2(\n authorized_creator, collection_name, schema_name, transferable, burnable, max_supply, immutable_data, mutable_data\n ));\n }\n\n async createschema(\n authorization: EosioAuthorizationObject[], authorized_creator: string,\n collection_name: string, schema_name: string, schema_format: Format[]\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.createschema(authorized_creator, collection_name, schema_name, schema_format));\n }\n\n async declineoffer(authorization: EosioAuthorizationObject[], offer_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.declineoffer(offer_id));\n }\n\n async deltemplate(\n authorization: EosioAuthorizationObject[], authorized_editor: string, collection_name: string, template_id: number\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.deltemplate(authorized_editor, collection_name, template_id));\n }\n\n async extendschema(\n authorization: EosioAuthorizationObject[], authorized_editor: string,\n collection_name: string, schema_name: string, schema_format_extension: Format[]\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.extendschema(\n authorized_editor, collection_name, schema_name, schema_format_extension\n ));\n }\n\n async forbidnotify(authorization: EosioAuthorizationObject[], collection_name: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.forbidnotify(collection_name));\n }\n\n async init(authorization: EosioAuthorizationObject[]): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.init());\n }\n\n async locktemplate(\n authorization: EosioAuthorizationObject[], authorized_editor: string, collection_name: string, template_id: number\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.locktemplate(authorized_editor, collection_name, template_id));\n }\n\n async mintasset(\n authorization: EosioAuthorizationObject[], authorized_minter: string, collection_name: string, schema_name: string, template_id: number,\n new_asset_owner: string, immutable_data: AttributeMap, mutable_data: AttributeMap, tokens_to_back: string[]\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.mintasset(\n authorized_minter, collection_name, schema_name, template_id, new_asset_owner, immutable_data, mutable_data, tokens_to_back\n ));\n }\n\n async payofferram(authorization: EosioAuthorizationObject[], payer: string, offer_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.payofferram(payer, offer_id));\n }\n\n async redtemplmax(\n authorization: EosioAuthorizationObject[], authorized_editor: string,\n collection_name: string, template_id: number, new_max_supply: number\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.redtemplmax(authorized_editor, collection_name, template_id, new_max_supply));\n }\n\n async rejectauswap(authorization: EosioAuthorizationObject[], collection_name: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.rejectauswap(collection_name));\n }\n\n async remcolauth(authorization: EosioAuthorizationObject[], collection_name: string, account_to_remove: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.remcolauth(collection_name, account_to_remove));\n }\n\n async remnotifyacc(authorization: EosioAuthorizationObject[], collection_name: string, account_to_remove: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.remnotifyacc(collection_name, account_to_remove));\n }\n\n async setassetdata(\n authorization: EosioAuthorizationObject[], authorized_editor: string,\n asset_owner: string, asset_id: string, new_mutable_data: AttributeMap\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setassetdata(authorized_editor, asset_owner, asset_id, new_mutable_data));\n }\n\n async setcoldata(authorization: EosioAuthorizationObject[], collection_name: string, data: AttributeMap): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setcoldata(collection_name, data));\n }\n\n async setlastpayer(authorization: EosioAuthorizationObject[], owner: string, collection_name: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setlastpayer(owner, collection_name));\n }\n\n async setmarketfee(authorization: EosioAuthorizationObject[], collection_name: string, market_fee: number): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setmarketfee(collection_name, market_fee));\n }\n\n async setrampayer(authorization: EosioAuthorizationObject[], new_payer: string, asset_id: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setrampayer(new_payer, asset_id));\n }\n\n async settempldata(\n authorization: EosioAuthorizationObject[], authorized_editor: string,\n collection_name: string, template_id: number, new_mutable_data: AttributeMap\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.settempldata(authorized_editor, collection_name, template_id, new_mutable_data));\n }\n\n async setschematyp(\n authorization: EosioAuthorizationObject[], authorized_editor: string,\n collection_name: string, schema_name: string, schema_format_type: SchemaFormatType[]\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setschematyp(\n authorized_editor, collection_name, schema_name, schema_format_type\n ));\n }\n\n async setversion(authorization: EosioAuthorizationObject[], new_version: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.setversion(new_version));\n }\n\n async transfer(\n authorization: EosioAuthorizationObject[], account_from: string, account_to: string, asset_ids: string[], memo: string\n ): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.transfer(account_from, account_to, asset_ids, memo));\n }\n\n async withdraw(authorization: EosioAuthorizationObject[], owner: string, token_to_withdraw: string): Promise<EosioActionObject[]> {\n return this._authorize(authorization, this.builder.withdraw(owner, token_to_withdraw));\n }\n\n protected _authorize(authorization: EosioAuthorizationObject[], action: EosioSimpleAction): EosioActionObject[] {\n return [{account: action.account, name: action.name, authorization, data: action.data}];\n }\n\n protected _pack(authorization: EosioAuthorizationObject[], name: string, data: any): EosioActionObject[] {\n return [{account: this.contract, name, authorization, data}];\n }\n}\n\nexport function toAttributeMap(obj: any, schema: SchemaFormat): AttributeMap {\n const types: { [id: string]: string } = {};\n const result: AttributeMap = [];\n\n for (const row of schema) {\n types[row.name] = row.type;\n }\n\n const keys = Object.keys(obj);\n for (const key of keys) {\n if (typeof types[key] === 'undefined') {\n throw new SerializationError('field not defined in schema');\n }\n\n result.push({key, value: [types[key], obj[key]]});\n }\n\n return result;\n}\n\n// Converts an on-chain AttributeMap (either entry shape) into a plain\n// key/value object. uint64/int64 values are stringified to avoid precision\n// loss; uint64/int64 vector values are stringified element-wise. Every other\n// variant passes through as decoded (numbers, number arrays, strings).\nexport function convertAttributeMapToObject(data: DecodedAttributeMap): { [key: string]: any } {\n const result: { [key: string]: any } = {};\n\n for (const row of data) {\n const key = 'key' in row ? row.key : row.first;\n const value = 'value' in row ? row.value : row.second;\n\n // key is an attacker-controlled on-chain attribute name; use defineProperty so a\n // key named e.g. __proto__ or constructor sets an own property instead of\n // invoking a prototype setter.\n if (['uint64', 'int64'].indexOf(value[0]) >= 0) {\n Object.defineProperty(result, key, { value: String(value[1]), enumerable: true, writable: true, configurable: true });\n } else if (['INT64_VEC', 'UINT64_VEC'].indexOf(value[0]) >= 0) {\n Object.defineProperty(result, key, {\n value: (value[1] as number[]).map((entry) => String(entry)),\n enumerable: true,\n writable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(result, key, { value: value[1], enumerable: true, writable: true, configurable: true });\n }\n }\n\n return result;\n}\n","import ExplorerApi from '../API/Explorer';\nimport { IConfig } from '../API/Explorer/Objects';\nimport { ActionGenerator, EosioActionObject, EosioAuthorizationObject, toAttributeMap } from './Generator';\n\n\nexport default class ExplorerActionGenerator extends ActionGenerator {\n private config: Promise<IConfig>;\n\n constructor(contract: string, readonly api: ExplorerApi) {\n super(contract);\n\n this.config = api.getConfig();\n }\n\n async createcol(\n authorization: EosioAuthorizationObject[], author: string, collection_name: string,\n allow_notify: boolean, authorized_accounts: string[], notify_accounts: string[], market_fee: number, data: object\n ): Promise<EosioActionObject[]> {\n return super.createcol(\n authorization, author, collection_name, allow_notify, authorized_accounts, notify_accounts, market_fee,\n toAttributeMap(data, (await this.config).collection_format)\n );\n }\n\n async createtempl(\n authorization: EosioAuthorizationObject[], authorized_creator: string,\n collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: object\n ): Promise<EosioActionObject[]> {\n const schema = await this.api.getSchema(collection_name, schema_name);\n\n const immutable_attribute_map = toAttributeMap(immutable_data, schema.format);\n\n return super.createtempl(\n authorization, authorized_creator, collection_name, schema_name,\n transferable, burnable, max_supply, immutable_attribute_map\n );\n }\n\n async mintasset(\n authorization: EosioAuthorizationObject[], authorized_minter: string,\n collection_name: string, schema_name: string, template_id: number,\n new_owner: string, immutable_data: object, mutable_data: object, tokens_to_back: string[]\n ): Promise<EosioActionObject[]> {\n const schema = await this.api.getSchema(collection_name, schema_name);\n\n const immutable_attribute_map = toAttributeMap(immutable_data, schema.format);\n const mutable_attribute_map = toAttributeMap(mutable_data, schema.format);\n\n return super.mintasset(\n authorization, authorized_minter, collection_name, schema_name, template_id,\n new_owner, immutable_attribute_map, mutable_attribute_map, tokens_to_back\n );\n }\n\n async setassetdata(\n authorization: EosioAuthorizationObject[], authorized_editor: string, owner: string, asset_id: string, mutable_data: object\n ): Promise<EosioActionObject[]> {\n const asset = await this.api.getAsset(asset_id);\n\n const mutable_attribute_map = toAttributeMap(mutable_data, asset.schema.format);\n\n return super.setassetdata(authorization, authorized_editor, owner, asset_id, mutable_attribute_map);\n }\n\n async setcoldata(authorization: EosioAuthorizationObject[], collection_name: string, data: object): Promise<EosioActionObject[]> {\n const mdata = toAttributeMap(data, (await this.config).collection_format);\n\n return super.setcoldata(authorization, collection_name, mdata);\n }\n}\n","import RpcApi from '../API/Rpc';\nimport { ActionGenerator, EosioActionObject, EosioAuthorizationObject, toAttributeMap } from './Generator';\n\n\nexport default class RpcActionGenerator extends ActionGenerator {\n constructor(readonly api: RpcApi) {\n super(api.contract);\n }\n\n async createcol(\n authorization: EosioAuthorizationObject[], author: string, collection_name: string,\n allow_notify: boolean, authorized_accounts: string[], notify_accounts: string[], market_fee: number, data: object\n ): Promise<EosioActionObject[]> {\n const config = await this.api.config();\n\n return super.createcol(\n authorization, author, collection_name, allow_notify, authorized_accounts, notify_accounts, market_fee,\n toAttributeMap(data, config.collection_format)\n );\n }\n\n async createtempl(\n authorization: EosioAuthorizationObject[], authorized_creator: string,\n collection_name: string, schema_name: string,\n transferable: boolean, burnable: boolean, max_supply: number, immutable_data: object\n ): Promise<EosioActionObject[]> {\n const schema = await this.api.getSchema(collection_name, schema_name);\n\n const immutable_attribute_map = toAttributeMap(immutable_data, await schema.rawFormat());\n\n return super.createtempl(\n authorization, authorized_creator, collection_name, schema_name,\n transferable, burnable, max_supply, immutable_attribute_map\n );\n }\n\n async mintasset(\n authorization: EosioAuthorizationObject[], authorized_minter: string,\n collection_name: string, schema_name: string, template_id: number,\n new_owner: string, immutable_data: object, mutable_data: object, tokens_to_back: string[]\n ): Promise<EosioActionObject[]> {\n const template = await this.api.getTemplate(collection_name, String(template_id));\n\n const immutable_attribute_map = toAttributeMap(immutable_data, await (await template.schema()).rawFormat());\n const mutable_attribute_map = toAttributeMap(mutable_data, await (await template.schema()).rawFormat());\n\n return super.mintasset(\n authorization, authorized_minter, collection_name, schema_name, template_id,\n new_owner, immutable_attribute_map, mutable_attribute_map, tokens_to_back\n );\n }\n\n async setassetdata(\n authorization: EosioAuthorizationObject[], authorized_editor: string, owner: string, asset_id: string, mutable_data: object\n ): Promise<EosioActionObject[]> {\n const asset = await this.api.getAsset(owner, asset_id);\n const schema = await asset.schema();\n\n const mutable_attribute_map = toAttributeMap(mutable_data, await schema.rawFormat());\n\n return super.setassetdata(authorization, authorized_editor, owner, asset_id, mutable_attribute_map);\n }\n\n async setcoldata(authorization: EosioAuthorizationObject[], collection_name: string, data: object): Promise<EosioActionObject[]> {\n const mdata = toAttributeMap(data, (await this.api.config()).collection_format);\n\n return super.setcoldata(authorization, collection_name, mdata);\n }\n}\n","export default class ApiError extends Error {\n isApiError = true;\n\n constructor(readonly message: any, readonly status: number) {\n super(message);\n }\n}\n","import ExplorerActionGenerator from '../../Actions/Explorer';\nimport ApiError from '../../Errors/ApiError';\nimport {\n IAccountCollectionStats,\n IAccountStats,\n IAsset,\n IAssetStats,\n ICollection,\n ICollectionStats,\n IConfig,\n ILog, IOffer,\n IApiSchema,\n ISchemaStats,\n ITemplate,\n ITemplateStats, ITransfer\n} from './Objects';\nimport {\n AccountApiParams,\n AssetsApiParams,\n CollectionApiParams, GreylistParams, HideOffersParams,\n OfferApiParams,\n SchemaApiParams,\n TemplateApiParams,\n TransferApiParams\n} from './Params';\n\ntype Fetch = (input?: Request | string, init?: RequestInit) => Promise<Response>;\ntype ApiArgs = { fetch?: Fetch };\n\nexport type DataOptions = Array<{key: string, value: any, type?: string}>;\n\nfunction buildDataOptions(options: {[key: string]: any}, data: DataOptions): {[key: string]: any} {\n const dataFields: {[key: string]: string} = {};\n\n for (const row of data) {\n const dataType = row.type ?? 'data';\n\n if (typeof row.value === 'number') {\n dataFields[dataType + ':number.' + row.key] = String(row.value);\n } else if (typeof row.value === 'boolean') {\n dataFields[dataType + ':bool.' + row.key] = row.value ? 'true' : 'false';\n } else {\n dataFields[dataType + '.' + row.key] = row.value;\n }\n }\n\n return Object.assign({}, options, dataFields);\n}\n\nexport default class ExplorerApi {\n readonly action: Promise<ExplorerActionGenerator>;\n\n private readonly endpoint: string;\n private readonly namespace: string;\n\n private readonly fetchBuiltin: Fetch;\n\n constructor(endpoint: string, namespace: string, args: ApiArgs) {\n this.endpoint = endpoint;\n this.namespace = namespace;\n\n if (args.fetch) {\n this.fetchBuiltin = args.fetch;\n } else {\n // Bound because browser fetch is a Window-branded method: called\n // bare (this === undefined) it throws Illegal invocation.\n this.fetchBuiltin = <Fetch>globalThis.fetch.bind(globalThis);\n }\n\n this.action = (async () => {\n return new ExplorerActionGenerator((await this.getConfig()).contract, this);\n })();\n }\n\n async getConfig(): Promise<IConfig> {\n return await this.fetchEndpoint<IConfig>('/v1/config', {});\n }\n\n async getAssets(options: AssetsApiParams = {}, page: number = 1, limit: number = 100, data: DataOptions = []): Promise<IAsset[]> {\n return await this.fetchEndpoint('/v1/assets', {page, limit, ...buildDataOptions(options, data)});\n }\n\n async countAssets(options: AssetsApiParams, data: DataOptions = []): Promise<number> {\n return await this.countEndpoint('/v1/assets', buildDataOptions(options, data));\n }\n\n async getAsset(id: string): Promise<IAsset> {\n return await this.fetchEndpoint('/v1/assets/' + id, {});\n }\n\n async getAssetStats(id: string): Promise<IAssetStats> {\n return await this.fetchEndpoint('/v1/assets/' + id + '/stats', {});\n }\n\n async getAssetLogs(id: string, page: number = 1, limit: number = 100, order: string = 'desc'): Promise<ILog[]> {\n return await this.fetchEndpoint('/v1/assets/' + id + '/logs', {page, limit, order});\n }\n\n async getCollections(options: CollectionApiParams = {}, page: number = 1, limit: number = 100): Promise<ICollection[]> {\n return await this.fetchEndpoint('/v1/collections', {page, limit, ...options});\n }\n\n async countCollections(options: CollectionApiParams = {}): Promise<number> {\n return await this.countEndpoint('/v1/collections', options);\n }\n\n async getCollection(name: string): Promise<ICollection> {\n return await this.fetchEndpoint('/v1/collections/' + name, {});\n }\n\n async getCollectionStats(name: string): Promise<ICollectionStats> {\n return await this.fetchEndpoint('/v1/collections/' + name + '/stats', {});\n }\n\n async getCollectionLogs(name: string, page: number = 1, limit: number = 100, order: string = 'desc'): Promise<ILog[]> {\n return await this.fetchEndpoint('/v1/collections/' + name + '/logs', {page, limit, order});\n }\n\n async getSchemas(options: SchemaApiParams = {}, page: number = 1, limit: number = 100): Promise<IApiSchema[]> {\n return await this.fetchEndpoint('/v1/schemas', {page, limit, ...options});\n }\n\n async countSchemas(options: SchemaApiParams = {}): Promise<number> {\n return await this.countEndpoint('/v1/schemas', options);\n }\n\n async getSchema(collection: string, name: string): Promise<IApiSchema> {\n return await this.fetchEndpoint('/v1/schemas/' + collection + '/' + name, {});\n }\n\n async getSchemaStats(collection: string, name: string): Promise<ISchemaStats> {\n return await this.fetchEndpoint('/v1/schemas/' + collection + '/' + name + '/stats', {});\n }\n\n async getSchemaLogs(collection: string, name: string, page: number = 1, limit: number = 100, order: string = 'desc'): Promise<ILog[]> {\n return await this.fetchEndpoint('/v1/schemas/' + collection + '/' + name + '/logs', {page, limit, order});\n }\n\n async getTemplates(options: TemplateApiParams = {}, page: number = 1, limit: number = 100, data: DataOptions = []): Promise<ITemplate[]> {\n return await this.fetchEndpoint('/v1/templates', {page, limit, ...buildDataOptions(options, data)});\n }\n\n async countTemplates(options: TemplateApiParams = {}, data: DataOptions = []): Promise<number> {\n return await this.countEndpoint('/v1/templates', buildDataOptions(options, data));\n }\n\n async getTemplate(collection: string, id: string): Promise<ITemplate> {\n return await this.fetchEndpoint('/v1/templates/' + collection + '/' + id, {});\n }\n\n async getTemplateStats(collection: string, name: string): Promise<ITemplateStats> {\n return await this.fetchEndpoint('/v1/templates/' + collection + '/' + name + '/stats', {});\n }\n\n async getTemplateLogs(collection: string, id: string, page: number = 1, limit: number = 100, order: string = 'desc'): Promise<ILog[]> {\n return await this.fetchEndpoint('/v1/templates/' + collection + '/' + id + '/logs', {page, limit, order});\n }\n\n async getTransfers(options: TransferApiParams = {}, page: number = 1, limit: number = 100): Promise<ITransfer[]> {\n return await this.fetchEndpoint('/v1/transfers', {page, limit, ...options});\n }\n\n async countTransfers(options: TransferApiParams = {}): Promise<number> {\n return await this.countEndpoint('/v1/transfers', options);\n }\n\n async getOffers(options: OfferApiParams = {}, page: number = 1, limit: number = 100): Promise<IOffer[]> {\n return await this.fetchEndpoint('/v1/offers', {page, limit, ...options});\n }\n\n async countOffers(options: OfferApiParams = {}): Promise<number> {\n return await this.countEndpoint('/v1/offers', options);\n }\n\n async getOffer(id: string): Promise<IOffer> {\n return await this.fetchEndpoint('/v1/offers/' + id, {});\n }\n\n async getAccounts(options: AccountApiParams = {}, page: number = 1, limit: number = 100): Promise<Array<{account: string, assets: string}>> {\n return await this.fetchEndpoint('/v1/accounts', {page, limit, ...options});\n }\n\n async getBurns(options: AccountApiParams = {}, page: number = 1, limit: number = 100): Promise<Array<{account: string, assets: string}>> {\n return await this.fetchEndpoint('/v1/burns', {page, limit, ...options});\n }\n\n async countAccounts(options: AccountApiParams = {}): Promise<number> {\n return await this.countEndpoint('/v1/accounts', options);\n }\n\n async getAccount(account: string, options: GreylistParams & HideOffersParams = {}): Promise<IAccountStats> {\n return await this.fetchEndpoint('/v1/accounts/' + account, options);\n }\n\n async getAccountCollection(account: string, collection: string): Promise<IAccountCollectionStats> {\n return await this.fetchEndpoint('/v1/accounts/' + account + '/' + collection, {});\n }\n\n async getAccountBurns(account: string, options: GreylistParams & HideOffersParams = {}): Promise<IAccountStats> {\n return await this.fetchEndpoint('/v1/burns/' + account, options);\n }\n\n async fetchEndpoint<T>(path: string, args: any): Promise<T> {\n let response, json;\n\n const f = this.fetchBuiltin;\n const queryString = Object.keys(args).map((key) => {\n let value = args[key];\n\n if (value === true) {\n value = 'true';\n }\n\n if (value === false) {\n value = 'false';\n }\n\n return key + '=' + encodeURIComponent(value);\n }).join('&');\n\n try {\n if ( queryString.length < 1000 ) {\n response = await f(this.endpoint + '/' + this.namespace + path + (queryString.length > 0 ? '?' + queryString : ''));\n }\n else {\n response = await f(\n this.endpoint + '/' + this.namespace + path,\n {\n headers: {\n 'accept': '*.*',\n 'content-type': 'application/json'\n },\n method: 'POST',\n body: JSON.stringify(args)\n }\n );\n }\n\n json = await response.json();\n } catch (e: any) {\n throw new ApiError(e.message, 500);\n }\n\n if (response.status !== 200) {\n throw new ApiError(json.message, response.status);\n }\n\n if (!json.success) {\n throw new ApiError(json.message, response.status);\n }\n\n return json.data;\n }\n\n async countEndpoint(path: string, args: any): Promise<number> {\n const res = await this.fetchEndpoint<string>(path + '/_count', args);\n\n return parseInt(res, 10);\n }\n}\n","export default class RpcError extends Error {\n json: any;\n\n constructor(json: any) {\n if (json.error && json.error.details && json.error.details.length && json.error.details[0].message) {\n super(json.error.details[0].message);\n } else if (json.processed && json.processed.except && json.processed.except.message) {\n super(json.processed.except.message);\n } else {\n super(json.message);\n }\n\n this.json = json;\n }\n}\n","export default class SchemaError extends Error {\n\n}\n","export default class DeserializationError extends Error {\n\n}\n","/* based on npm base-x module (removed buffer, added class structure) */\nexport default class BaseCoder {\n private readonly BASE: number;\n private readonly BASE_MAP: Uint8Array;\n private readonly LEADER: string;\n private readonly FACTOR: number;\n private readonly iFACTOR: number;\n\n constructor(private readonly ALPHABET: string) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n this.BASE_MAP = new Uint8Array(256);\n\n for (let j = 0; j < this.BASE_MAP.length; j++) {\n this.BASE_MAP[j] = 255;\n }\n\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i);\n const xc = x.charCodeAt(0);\n if (this.BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n this.BASE_MAP[xc] = i;\n }\n\n this.BASE = ALPHABET.length;\n this.LEADER = ALPHABET.charAt(0);\n this.FACTOR = Math.log(this.BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n this.iFACTOR = Math.log(256) / Math.log(this.BASE); // log(256) / log(BASE), rounded up\n }\n\n encode(source: Uint8Array): string {\n if (source.length === 0) {\n return '';\n }\n // Skip & count leading zeroes.\n let zeroes = 0;\n let length = 0;\n let pbegin = 0;\n const pend = source.length;\n\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * this.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 % this.BASE) >>> 0;\n carry = (carry / this.BASE) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n\n // Skip leading zeroes in base58 result.\n let it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n\n // Translate the result into a string.\n let str = this.LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += this.ALPHABET.charAt(b58[it2]);\n }\n\n return str;\n }\n\n decode(source: string): Uint8Array {\n const buffer = this.decodeUnsafe(source);\n if (buffer) {\n return buffer;\n }\n\n throw new Error('Non-base' + this.BASE + ' character');\n }\n\n // Returns null on invalid input (mirroring upstream base-x's undefined) so\n // decode() can raise; the empty string legitimately decodes to zero bytes.\n private decodeUnsafe(source: string): Uint8Array | null {\n if (source.length === 0) {\n return new Uint8Array(0);\n }\n let psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return null;\n }\n\n // Skip and count leading '1's.\n let zeroes = 0;\n let length = 0;\n while (source[psz] === this.LEADER) {\n zeroes++;\n psz++;\n }\n\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * this.FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size);\n\n // Process the characters.\n while (source[psz]) {\n // Decode character\n let carry = this.BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) {\n return null;\n }\n let i = 0;\n for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (this.BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return null;\n }\n // Skip leading zeroes in b256.\n let it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n\n const vch = new Uint8Array(zeroes + (size - it4));\n vch.fill(0x00, 0, zeroes);\n\n let j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n\n return vch;\n }\n}\n","import DeserializationError from '../Errors/DeserializationError';\nimport SerializationError from '../Errors/SerializationError';\nimport BaseCoder from './Coders/Base';\nimport SerializationState from './State';\n\nexport function varint_encode(input: any): Uint8Array {\n const bytes: number[] = [];\n let n = BigInt(input);\n\n if (n < 0n) {\n throw new SerializationError('cant pack negative integer');\n }\n\n while (true) {\n const byte = n & 0x7Fn;\n\n n = n >> 7n;\n\n if (n === 0n) {\n bytes.push(Number(byte));\n\n break;\n }\n\n bytes.push(Number(byte) + 128);\n }\n\n return new Uint8Array(bytes);\n}\n\n// The widest legal varint is the 64-bit maximum zigzag value, which needs\n// ceil(70 / 7) = 10 bytes. Anything longer is hostile input designed to burn\n// quadratic BigInt work, so it is rejected before the loop accumulates it.\nconst VARINT_MAX_BYTES = 10;\n\nexport function varint_decode(state: SerializationState): bigint {\n let result = 0n;\n\n for (let i = 0; true; i++) {\n if (i >= VARINT_MAX_BYTES) {\n throw new DeserializationError('varint exceeds maximum encoded length');\n }\n\n if (state.position >= state.data.length) {\n throw new DeserializationError('failed to unpack integer');\n }\n\n const byte = BigInt(state.data[state.position]);\n state.position += 1;\n\n if (byte < 128n) {\n result = result + (byte << BigInt(7 * i));\n\n break;\n }\n\n result = result + ((byte & 0x7Fn) << BigInt(7 * i));\n }\n\n return result;\n}\n\nexport function integer_sign(input: any, size: number): bigint {\n const n = BigInt(input);\n\n if (n >= 2n ** BigInt(8 * size - 1)) {\n throw new Error('cannot sign integer: too big');\n }\n\n if (n >= 0n) {\n return n;\n }\n\n return (-n ^ (2n ** BigInt(8 * size) - 1n)) + 1n;\n}\n\n// Deliberate divergence from the v1 package: both comparisons are >= where v1\n// used strict >, so the exact sign-bit value maps to the correct\n// two's-complement minimum (e.g. -128 for size 1) and out-of-range input\n// throws instead of computing garbage. Unused by the codec's own\n// encode/decode paths, so the wire format is unaffected.\nexport function integer_unsign(input: any, size: number): bigint {\n const n = BigInt(input);\n\n if (n >= 2n ** BigInt(8 * size)) {\n throw new Error('cannot unsign integer: too big');\n }\n\n if (n >= 2n ** BigInt(8 * size - 1)) {\n return -((n - 1n) ^ (2n ** BigInt(8 * size) - 1n));\n }\n\n return n;\n}\n\nexport function zigzag_encode(input: any): bigint {\n const n = BigInt(input);\n\n if (n < 0n) {\n return (n + 1n) * -2n + 1n;\n }\n\n return n * 2n;\n}\n\nexport function zigzag_decode(input: any): bigint {\n const n = BigInt(input);\n\n if (n % 2n === 0n) {\n return n / 2n;\n }\n\n return n / 2n * -1n - 1n;\n}\n\nconst bs58 = new BaseCoder('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n\nexport function base58_decode(data: string): Uint8Array {\n return bs58.decode(data);\n}\n\nexport function base58_encode(data: Uint8Array): string {\n return bs58.encode(data);\n}\n\nexport function hex_decode(hex: string): Uint8Array {\n // parseInt would coerce non-hex or odd-length input into NaN bytes that\n // Uint8Array silently maps to 0, so reject malformed input outright.\n if (!/^([0-9a-fA-F]{2})*$/.test(hex)) {\n throw new DeserializationError('invalid hex string');\n }\n\n const bytes = hex.match(/.{2}/g);\n\n if (!bytes) {\n return new Uint8Array(0);\n }\n\n return new Uint8Array(bytes.map((byte) => parseInt(byte, 16)));\n}\n\nexport function hex_encode(bytes: Uint8Array): string {\n return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n\nexport function concat_byte_arrays(arr: Uint8Array[]): Uint8Array {\n // concat all bytearrays into one array\n const data = new Uint8Array(arr.reduce((acc, val) => acc + val.length, 0));\n\n let offset = 0;\n for (const bytes of arr) {\n data.set(bytes, offset);\n offset += bytes.length;\n }\n\n return data;\n}\n\nexport function int_to_byte_vector(n: any): Uint8Array {\n const bytes: number[] = [];\n let num = BigInt(n);\n\n while (num !== 0n) {\n bytes.push(Number(num & 0xFFn));\n num = num >> 8n;\n }\n\n return new Uint8Array(bytes);\n}\n\nexport function byte_vector_to_int(bytes: Uint8Array): number {\n let num = 0n;\n\n for (let i = 0; i < bytes.length; i++) {\n num = num + (BigInt(bytes[i]) << BigInt(8 * i));\n }\n\n return Number(num);\n}\n","import SchemaError from '../Errors/SchemaError';\nimport { concat_byte_arrays, varint_decode, varint_encode } from '../Serialization/Binary';\nimport SerializationState from '../Serialization/State';\nimport { ISchema, MappingAttribute } from './index';\n\nexport default class MappingSchema implements ISchema {\n private readonly reserved = 4;\n\n constructor(private readonly attributes: MappingAttribute[]) {\n }\n\n deserialize(state: SerializationState, upwardsCompatible: boolean = false): any {\n const object: any = {};\n\n while (state.position < state.data.length) {\n const identifier = varint_decode(state);\n\n if (identifier === 0n) {\n break;\n }\n\n const attribute = this.getAttribute(Number(identifier), !upwardsCompatible);\n\n if (attribute) {\n // attribute.name comes from on-chain schema data; use defineProperty so a\n // field named e.g. __proto__ or constructor sets an own property instead of\n // invoking a prototype setter.\n Object.defineProperty(object, attribute.name, {\n value: attribute.value.deserialize(state),\n enumerable: true,\n writable: true,\n configurable: true,\n });\n }\n }\n\n return object;\n }\n\n serialize(object: any): Uint8Array {\n const data: Uint8Array[] = [];\n\n for (let i = 0; i < this.attributes.length; i++) {\n const attribute = this.attributes[i];\n\n if (typeof object[attribute.name] === 'undefined') {\n continue;\n }\n\n data.push(varint_encode(i + this.reserved));\n data.push(attribute.value.serialize(object[attribute.name]));\n }\n\n data.push(varint_encode(0));\n\n return concat_byte_arrays(data);\n }\n\n private getAttribute(identifier: number, throwError: boolean = true): MappingAttribute | undefined {\n const attributeID = identifier - this.reserved;\n\n if (attributeID >= this.attributes.length) {\n if (throwError) {\n throw new SchemaError('attribute does not exists');\n }\n\n return;\n }\n\n return this.attributes[Number(attributeID)];\n }\n}\n","export default class SerializationState {\n constructor(readonly data: Uint8Array, public position: number = 0) {\n }\n}\n\nexport function prepare(data: Uint8Array): SerializationState {\n return new SerializationState(data, 0);\n}\n","import { ISchema } from '../Schema';\nimport MappingSchema from '../Schema/MappingSchema';\nimport { concat_byte_arrays, hex_decode, varint_encode } from './Binary';\nimport SerializationState from './State';\n\n// Serialized data reaches consumers in three shapes: a hex string over SHIP\n// snapshots (optionally with Postgres bytea's \\x prefix), a plain byte array\n// over live deltas and get_table_rows JSON, and a Uint8Array from code that\n// already normalized.\nexport type ByteInput = Uint8Array | number[] | string;\n\nexport function toByteArray(data: ByteInput): Uint8Array {\n if (typeof data === 'string') {\n return hex_decode(data.startsWith('\\\\x') ? data.substring(2) : data);\n }\n\n if (data instanceof Uint8Array) {\n return data;\n }\n\n return new Uint8Array(data);\n}\n\nexport function serialize(object: any, schema: ISchema): Uint8Array {\n const data = schema.serialize(object);\n\n // remove terminating 0 byte because it is unnecessary\n if (schema instanceof MappingSchema) {\n return data.slice(0, data.length - 1);\n }\n\n return data;\n}\n\n// The return is typed for the dominant case (a MappingSchema root decoding\n// to a plain object). A bare ValueSchema/VectorSchema root yields a\n// scalar/array instead; such callers know their shape and can assert it.\nexport function deserialize(data: ByteInput, schema: ISchema): { [key: string]: any } {\n let bytes = toByteArray(data);\n\n if (schema instanceof MappingSchema) {\n bytes = concat_byte_arrays([bytes, varint_encode(0)]);\n }\n\n const state = new SerializationState(bytes, 0);\n\n return schema.deserialize(state);\n}\n","import SchemaError from '../Errors/SchemaError';\nimport SerializationState from '../Serialization/State';\nimport { ITypeParser } from '../Serialization/TypeParser';\nimport { ParserTypes } from '..';\nimport { ISchema } from './index';\n\nexport default class ValueSchema implements ISchema {\n readonly parser: ITypeParser;\n\n constructor(type: string) {\n if (typeof ParserTypes[type] === 'undefined') {\n throw new SchemaError(`attribute type '${type}' not defined`);\n }\n\n this.parser = ParserTypes[type];\n }\n\n deserialize(state: SerializationState): any {\n return this.parser.deserialize(state);\n }\n\n serialize(value: any): Uint8Array {\n return this.parser.serialize(value);\n }\n}\n","import DeserializationError from '../Errors/DeserializationError';\nimport { concat_byte_arrays, varint_decode, varint_encode } from '../Serialization/Binary';\nimport SerializationState from '../Serialization/State';\nimport { ISchema } from './index';\n\nexport default class VectorSchema implements ISchema {\n constructor(private readonly element: ISchema) {\n }\n\n deserialize(state: SerializationState): any {\n const rawLength = varint_decode(state);\n\n if (rawLength > BigInt(state.data.length - state.position)) {\n throw new DeserializationError('VectorSchema: length exceeds remaining data');\n }\n\n const length = Number(rawLength);\n const array: any[] = [];\n\n for (let i = 0; i < length; i++) {\n array.push(this.element.deserialize(state));\n }\n\n return array;\n }\n\n serialize(array: any[]): Uint8Array {\n const data: Uint8Array[] = [varint_encode(array.length)];\n\n for (const element of array) {\n data.push(this.element.serialize(element));\n }\n\n return concat_byte_arrays(data);\n }\n}\n","import SchemaError from '../Errors/SchemaError';\nimport SerializationState from '../Serialization/State';\nimport MappingSchema from './MappingSchema';\nimport ValueSchema from './ValueSchema';\nimport VectorSchema from './VectorSchema';\n\nexport interface ISchema {\n serialize(data: any): Uint8Array;\n\n // Yields whatever the node type decodes: a plain object for mappings,\n // a scalar for values, an array for vectors.\n deserialize(state: SerializationState): any;\n}\n\nexport type SchemaObject = { name: string, type: string, parent?: number, mediatype?: string };\nexport type MappingAttribute = { name: string, value: ISchema };\n\ntype ObjectLookup = { [id: number]: SchemaObject[] };\n\nfunction buildObjectSchema(objectID: number, lookup: ObjectLookup): ISchema {\n const attributes: MappingAttribute[] = [];\n let fields = lookup[objectID];\n\n if (typeof fields === 'undefined') {\n fields = [];\n }\n\n delete lookup[objectID];\n\n for (const field of fields) {\n attributes.push({name: field.name, value: buildValueSchema(field.type, lookup)});\n }\n\n return new MappingSchema(attributes);\n}\n\nfunction buildValueSchema(type: string, lookup: ObjectLookup): ISchema {\n if (type.endsWith('[]')) {\n return new VectorSchema(buildValueSchema(type.substring(0, type.length - 2), lookup));\n }\n\n // not supported by the contract currently\n if (type.startsWith('object{') && type.endsWith('}')) {\n const objectID = parseInt(type.substring(7, type.length - 1), 10);\n\n if (isNaN(objectID)) {\n throw new SchemaError(`invalid type '${type}'`);\n }\n\n return buildObjectSchema(objectID, lookup);\n }\n\n return new ValueSchema(type);\n}\n\nexport function ObjectSchema(schema: SchemaObject[]): ISchema {\n const objectLookup: ObjectLookup = {};\n\n for (const schemaObject of schema) {\n const objectID = typeof schemaObject.parent === 'undefined' ? 0 : schemaObject.parent;\n\n if (typeof objectLookup[objectID] === 'undefined') {\n objectLookup[objectID] = [];\n }\n\n objectLookup[objectID].push(schemaObject);\n }\n\n return buildObjectSchema(0, objectLookup);\n}\n\nconst objectSchemaCache = new Map<string, ISchema>();\nconst OBJECT_SCHEMA_CACHE_MAX_ENTRIES = 500;\n\n// Memoizing ObjectSchema for hot paths that rebuild the same schema per row\n// (e.g. fillers deserializing many deltas against one format). ISchema nodes\n// are stateless (decode state lives in SerializationState), so instances are\n// safe to share. The cache is keyed by the JSON of the format array and is\n// bounded to 500 entries, evicting the oldest entry on overflow.\nexport function CachedObjectSchema(schema: SchemaObject[]): ISchema {\n const key = JSON.stringify(schema);\n\n let cached = objectSchemaCache.get(key);\n\n if (!cached) {\n cached = ObjectSchema(schema);\n\n if (objectSchemaCache.size >= OBJECT_SCHEMA_CACHE_MAX_ENTRIES) {\n const oldestKey = objectSchemaCache.keys().next().value;\n\n if (oldestKey !== undefined) {\n objectSchemaCache.delete(oldestKey);\n }\n }\n\n objectSchemaCache.set(key, cached);\n }\n\n return cached;\n}\n","import { ObjectSchema } from '../../Schema';\nimport { deserialize } from '../../Serialization';\nimport { ICollectionRow } from './RpcCache';\nimport RpcApi from './index';\n\nexport default class RpcCollection {\n readonly name: string;\n\n private readonly _data: Promise<ICollectionRow>;\n\n constructor(private readonly api: RpcApi, name: string, data?: ICollectionRow, cache: boolean = true) {\n this.name = name;\n\n this._data = new Promise(async (resolve, reject) => {\n if (data) {\n resolve(data);\n } else {\n try {\n resolve(await api.queue.fetchCollection(name, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n }\n\n async author(): Promise<string> {\n return (await this._data).author;\n }\n\n async allowNotify(): Promise<boolean> {\n return (await this._data).allow_notify;\n }\n\n async authorizedAccounts(): Promise<string[]> {\n return (await this._data).authorized_accounts;\n }\n\n async notifyAccounts(): Promise<string[]> {\n return (await this._data).notify_accounts;\n }\n\n async marketFee(): Promise<number> {\n return Number((await this._data).market_fee);\n }\n\n async data(): Promise<any> {\n return deserialize((await this._data).serialized_data, ObjectSchema((await this.api.config()).collection_format));\n }\n\n async toObject(): Promise<object> {\n return {\n collection_name: this.name,\n\n author: await this.author(),\n allowNotify: await this.allowNotify(),\n authorizedAccounts: await this.authorizedAccounts(),\n notifyAccounts: await this.notifyAccounts(),\n marketFee: await this.marketFee(),\n\n data: await this.data()\n };\n }\n}\n","import { SchemaFormatType } from '../../Actions/Generator';\nimport { ISchema, ObjectSchema, SchemaObject } from '../../Schema';\nimport { ISchemaRow } from './RpcCache';\nimport RpcCollection from './Collection';\nimport RpcApi from './index';\n\nexport default class RpcSchema {\n readonly collection: string;\n readonly name: string;\n\n private readonly _data: Promise<ISchemaRow>;\n private readonly _collection: Promise<RpcCollection>;\n\n private _formatTypes: Promise<SchemaFormatType[]> | null = null;\n\n constructor(private readonly api: RpcApi, collection: string, name: string, data?: ISchemaRow, cache: boolean = true) {\n this.collection = collection;\n this.name = name;\n\n this._data = new Promise(async (resolve, reject) => {\n if (data) {\n resolve(data);\n } else {\n try {\n resolve(await api.queue.fetchSchema(collection, name, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._collection = new Promise(async (resolve, reject) => {\n try {\n resolve(new RpcCollection(api, collection, undefined, cache));\n } catch (e) {\n reject(e);\n }\n });\n }\n\n async format(): Promise<ISchema> {\n return ObjectSchema((await this._data).format);\n }\n\n async rawFormat(): Promise<SchemaObject[]> {\n return (await this._data).format;\n }\n\n // v2 per-field media-type hints (schematypes table, set via setschematyp);\n // empty for schemas without a types row.\n async formatTypes(): Promise<SchemaFormatType[]> {\n if (!this._formatTypes) {\n this._formatTypes = this.api.queue.fetchSchemaFormatTypes(this.collection, this.name);\n }\n\n return await this._formatTypes;\n }\n\n async toObject(): Promise<object> {\n return {\n collection_name: this.collection,\n schema_name: this.name,\n format: await this.rawFormat()\n };\n }\n}\n","import { deserialize } from '../../Serialization';\nimport { ITemplateRow } from './RpcCache';\nimport RpcApi from './index';\nimport RpcSchema from './Schema';\n\nexport default class RpcTemplate {\n readonly collection: string;\n readonly id: string;\n\n private readonly _data: Promise<ITemplateRow>;\n\n private readonly _schema: Promise<RpcSchema>;\n\n constructor(private readonly api: RpcApi, collection: string, id: string, data?: ITemplateRow, schema?: RpcSchema, cache: boolean = true) {\n this.collection = collection;\n this.id = id;\n\n this._data = new Promise(async (resolve, reject) => {\n if (data) {\n resolve(data);\n } else {\n try {\n resolve(await api.queue.fetchTemplate(collection, id, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._schema = new Promise(async (resolve, reject) => {\n if (schema) {\n resolve(schema);\n } else {\n try {\n const row = await this._data;\n\n resolve(new RpcSchema(this.api, collection, row.schema_name, undefined, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n }\n\n async schema(): Promise<RpcSchema> {\n return await this._schema;\n }\n\n async immutableData(): Promise<object> {\n const schema = await this._schema;\n\n return deserialize((await this._data).immutable_serialized_data, await schema.format());\n }\n\n // v2 mutable template data (templates2 table, set via\n // createtempl2/settempldata); empty for templates without a mutable row.\n async mutableData(): Promise<object> {\n const schema = await this._schema;\n\n return deserialize((await this._data).mutable_serialized_data, await schema.format());\n }\n\n // immutable_data wins over mutable_data on key collision: immutable\n // attributes are set at mint time and mutable data must not be able to\n // override them, so immutableData is applied last.\n async data(): Promise<object> {\n return Object.assign({}, await this.mutableData(), await this.immutableData());\n }\n\n async isTransferable(): Promise<boolean> {\n return (await this._data).transferable;\n }\n\n async isBurnable(): Promise<boolean> {\n return (await this._data).burnable;\n }\n\n async maxSupply(): Promise<number> {\n return (await this._data).max_supply;\n }\n\n async circulation(): Promise<number> {\n return (await this._data).issued_supply;\n }\n\n async toObject(): Promise<object> {\n return {\n collection_name: this.collection,\n template_id: this.id,\n\n schema: await (await this.schema()).toObject(),\n immutableData: await this.immutableData(),\n mutableData: await this.mutableData(),\n transferable: await this.isTransferable(),\n burnable: await this.isBurnable(),\n maxSupply: await this.maxSupply(),\n circulation: await this.circulation()\n };\n }\n}\n","import { deserialize } from '../../Serialization';\nimport { IAssetRow } from './RpcCache';\nimport RpcCollection from './Collection';\nimport RpcApi from './index';\nimport RpcSchema from './Schema';\nimport RpcTemplate from './Template';\n\nexport default class RpcAsset {\n readonly owner: string;\n readonly id: string;\n\n private readonly _data: Promise<IAssetRow>;\n private readonly _template: Promise<RpcTemplate | null>;\n private readonly _collection: Promise<RpcCollection>;\n private readonly _schema: Promise<RpcSchema>;\n\n constructor(\n private readonly api: RpcApi,\n owner: string,\n id: string,\n data?: IAssetRow,\n collection?: RpcCollection,\n schema?: RpcSchema,\n template?: RpcTemplate,\n cache: boolean = true\n ) {\n this.owner = owner;\n this.id = id;\n\n this._data = new Promise(async (resolve, reject) => {\n if (data) {\n resolve(data);\n } else {\n try {\n resolve(await api.queue.fetchAsset(owner, id, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._template = new Promise(async (resolve, reject) => {\n if (template) {\n resolve(template);\n } else {\n try {\n const row = await this._data;\n\n if (Number(row.template_id) < 0) {\n return resolve(null);\n }\n\n resolve(new RpcTemplate(api, row.collection_name, row.template_id, undefined, undefined, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._collection = new Promise(async (resolve, reject) => {\n if (collection) {\n resolve(collection);\n } else {\n try {\n const row = await this._data;\n\n resolve(new RpcCollection(api, row.collection_name, undefined, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._schema = new Promise(async (resolve, reject) => {\n if (schema) {\n resolve(schema);\n } else {\n try {\n const row = await this._data;\n\n resolve(new RpcSchema(api, row.collection_name, row.schema_name, undefined, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n }\n\n async template(): Promise<RpcTemplate | null> {\n return await this._template;\n }\n\n async collection(): Promise<RpcCollection> {\n return await this._collection;\n }\n\n async schema(): Promise<RpcSchema> {\n return await this._schema;\n }\n\n async backedTokens(): Promise<string[]> {\n return (await this._data).backed_tokens;\n }\n\n async immutableData(): Promise<object> {\n const schema = await this.schema();\n const row = await this._data;\n\n return deserialize(row.immutable_serialized_data, await schema.format());\n }\n\n async mutableData(): Promise<object> {\n const schema = await this.schema();\n const row = await this._data;\n\n return deserialize(row.mutable_serialized_data, await schema.format());\n }\n\n // template data overrides asset data on key collision: assets inherit\n // their attributes from the template and cannot override them, so\n // templateData is applied last (this is canonical AtomicAssets\n // semantics). Within templateData itself, immutable_data already won\n // over mutable_data (see Template#data).\n async data(): Promise<object> {\n const mutableData = await this.mutableData();\n const immutableData = await this.immutableData();\n\n const template = await this.template();\n const templateData = template ? await template.data() : {};\n\n return Object.assign({}, mutableData, immutableData, templateData);\n }\n\n async toObject(): Promise<object> {\n const template = await this.template();\n const collection = await this.collection();\n const schema = await this.schema();\n\n return {\n asset_id: this.id,\n\n collection: await collection.toObject(),\n schema: await schema.toObject(),\n template: template ? await template.toObject() : null,\n\n backedTokens: await this.backedTokens(),\n immutableData: await this.immutableData(),\n mutableData: await this.mutableData(),\n data: await this.data()\n };\n }\n}\n","export interface ICache {\n get<T = any>(key: string): T | null;\n put(key: string, value: any, timeout: number): void;\n remove(key: string): void;\n}\n\nexport class MemoryCache implements ICache {\n private readonly store: any;\n\n constructor() {\n this.store = {};\n }\n\n get<T = any>(key: string): T | null {\n const res = this.store[key];\n\n if (typeof res === 'undefined') {\n return null;\n }\n\n const [value, expires] = res;\n\n if (new Date() > expires) {\n delete this.store[key];\n return null;\n }\n\n return value;\n }\n\n put(key: string, value: any, timeout: number): void {\n const expires = new Date(Date.now() + timeout);\n\n this.store[key] = [value, expires];\n }\n\n remove(key: string): void {\n delete this.store[key];\n }\n}\n","import { SchemaObject } from '../../Schema';\nimport { ICache, MemoryCache } from './BaseCache';\n\nexport type SchemaFormat = SchemaObject[];\n\nexport interface ICollectionRow {\n collection_name: string;\n author: string;\n allow_notify: boolean;\n authorized_accounts: string[];\n notify_accounts: string[];\n market_fee: number;\n serialized_data: Uint8Array;\n}\n\nexport interface ISchemaRow {\n schema_name: string;\n format: SchemaFormat;\n}\n\nexport interface ITemplateRow {\n template_id: number;\n schema_name: string;\n transferable: boolean;\n burnable: boolean;\n max_supply: number;\n issued_supply: number;\n immutable_serialized_data: Uint8Array;\n // Joined in from the v2 templates2 table; empty for templates that have\n // no mutable data row.\n mutable_serialized_data: Uint8Array;\n}\n\nexport interface IAssetRow {\n asset_id: string;\n collection_name: string;\n schema_name: string;\n template_id: string;\n ram_payer: string;\n backed_tokens: string[];\n immutable_serialized_data: Uint8Array;\n mutable_serialized_data: Uint8Array;\n}\n\nexport interface IOfferRow {\n offer_id: string;\n sender: string;\n recipient: string;\n sender_asset_ids: string[];\n recipient_asset_ids: string[];\n memo: string;\n}\n\nexport interface IConfigRow {\n asset_counter: string;\n offer_counter: string;\n collection_format: SchemaFormat;\n}\n\nexport default class RpcCache {\n private readonly cache: ICache;\n\n constructor() {\n this.cache = new MemoryCache();\n }\n\n getAsset(assetID: string, data?: IAssetRow): IAssetRow | null {\n if (data) {\n data.mutable_serialized_data = new Uint8Array(data.mutable_serialized_data);\n data.immutable_serialized_data = new Uint8Array(data.immutable_serialized_data);\n }\n\n return this.access<IAssetRow>('assets', assetID, data);\n }\n\n deleteAsset(assetID: string): void {\n this.delete('assets', assetID);\n }\n\n getTemplate(collectionName: string, templateID: string, data?: ITemplateRow): ITemplateRow | null {\n if (data) {\n data.immutable_serialized_data = new Uint8Array(data.immutable_serialized_data);\n data.mutable_serialized_data = new Uint8Array(data.mutable_serialized_data ?? []);\n }\n\n return this.access<ITemplateRow>('templates', collectionName + ':' + templateID, data);\n }\n\n deleteTemplate(collectionName: string, templateID: string): void {\n this.delete('templates', collectionName + ':' + templateID);\n }\n\n getSchema(collectionName: string, schemaName: string, data?: ISchemaRow): ISchemaRow | null {\n return this.access<ISchemaRow>('schemas', collectionName + ':' + schemaName, data);\n }\n\n deleteSchema(collectionName: string, schemaName: string): void {\n this.delete('schemas', collectionName + ':' + schemaName);\n }\n\n getCollection(collectionName: string, data?: ICollectionRow): ICollectionRow | null {\n return this.access<ICollectionRow>('collections', collectionName, data);\n }\n\n deleteCollection(collectionName: string): void {\n this.delete('collections', collectionName);\n }\n\n getOffer(offerID: string, data?: IOfferRow): IOfferRow | null {\n return this.access<IOfferRow>('offers', offerID, data);\n }\n\n deleteOffer(offerID: string): void {\n this.delete('offers', offerID);\n }\n\n private access<T>(namespace: any, identifier: any, data?: T): T | null {\n if (typeof data === 'undefined') {\n const cache = this.cache.get(namespace + ':' + identifier);\n\n return cache === null ? null : cache;\n }\n\n this.cache.put(namespace + ':' + identifier, data, 15 * 60 * 1000);\n\n return data;\n }\n\n private delete(namespace: any, identifier: any): void {\n this.cache.remove(namespace + ':' + identifier);\n }\n}\n","import RpcAsset from './Asset';\nimport { IAssetRow, IOfferRow } from './RpcCache';\nimport RpcApi from './index';\n\nexport default class RpcOffer {\n readonly id: string;\n\n private readonly _data: Promise<IOfferRow>;\n private readonly _senderAssets: Promise<Array<string | RpcAsset>>;\n private readonly _recipientAssets: Promise<Array<string | RpcAsset>>;\n\n constructor(private readonly api: RpcApi, id: string, data?: IOfferRow, senderAssets?: RpcAsset[], receiverAssets?: RpcAsset[], cache: boolean = true) {\n this.id = id;\n\n this._data = new Promise(async (resolve, reject) => {\n if (data) {\n resolve(data);\n } else {\n try {\n resolve(await this.api.queue.fetchOffer(id, cache));\n } catch (e) {\n reject(e);\n }\n }\n });\n\n this._senderAssets = new Promise(async (resolve, reject) => {\n if (senderAssets) {\n resolve(senderAssets);\n } else {\n try {\n const row: IOfferRow = await this._data;\n const inventory: IAssetRow[] = await this.api.queue.fetchAccountAssets(row.sender);\n\n return resolve(row.sender_asset_ids.map((assetID) => {\n const asset = inventory.find((assetRow) => assetRow.asset_id === assetID);\n\n return asset ? new RpcAsset(this.api, row.sender, assetID, asset, undefined, undefined, undefined, cache) : assetID;\n }));\n } catch (e) {\n return reject(e);\n }\n }\n });\n\n this._recipientAssets = new Promise(async (resolve, reject) => {\n if (receiverAssets) {\n resolve(receiverAssets);\n } else {\n try {\n const row: IOfferRow = await this._data;\n const inventory: IAssetRow[] = await this.api.queue.fetchAccountAssets(row.recipient);\n\n return resolve(row.recipient_asset_ids.map((assetID) => {\n const asset = inventory.find((assetRow) => assetRow.asset_id === assetID);\n\n return asset ? new RpcAsset(this.api, row.recipient, assetID, asset, undefined, undefined, undefined, cache) : assetID;\n }));\n } catch (e) {\n return reject(e);\n }\n }\n });\n }\n\n async sender(): Promise<string> {\n return (await this._data).sender;\n }\n\n async recipient(): Promise<string> {\n return (await this._data).recipient;\n }\n\n async senderAssets(): Promise<Array<RpcAsset | string>> {\n return await this._senderAssets;\n }\n\n async recipientAssets(): Promise<Array<RpcAsset | string>> {\n return await this._recipientAssets;\n }\n\n async memo(): Promise<string> {\n return (await this._data).memo;\n }\n\n async toObject(): Promise<object> {\n return {\n offer_id: this.id,\n sender: {\n account: await this.sender(),\n assets: await Promise.all((await this.senderAssets()).map(async (asset) => typeof asset === 'string' ? asset : await asset.toObject()))\n },\n recipient: {\n account: await this.recipient(),\n assets: await Promise.all((await this.recipientAssets()).map(async (asset) => typeof asset === 'string' ? asset : await asset.toObject()))\n },\n memo: await this.memo()\n };\n }\n}\n","import { SchemaFormatType } from '../../Actions/Generator';\nimport { IAssetRow, ICollectionRow, IOfferRow, ISchemaRow, ITemplateRow } from './RpcCache';\nimport RpcApi from './index';\n\n// Raw row of the v2 templates2 table (mutable template data), joined into\n// ITemplateRow before caching.\ntype Template2Row = { template_id: number, schema_name: string, mutable_serialized_data: number[] };\n\nexport default class RpcQueue {\n private elements: any[] = [];\n private interval: any = null;\n\n private preloadedCollections: {[key: string]: number} = {};\n\n constructor(private readonly api: RpcApi, private readonly requestLimit: number = 4) { }\n\n async fetchAsset(owner: string, assetID: string, useCache: boolean = true): Promise<IAssetRow> {\n return await this.fetch_single_row<IAssetRow>('assets', owner, assetID, (data?: IAssetRow) => {\n return (useCache || typeof data !== 'undefined') ? this.api.cache.getAsset(assetID, data) : null;\n });\n }\n\n async fetchAccountAssets(account: string): Promise<IAssetRow[]> {\n const rows = await this.fetch_all_rows<IAssetRow>('assets', account, 'asset_id');\n\n return rows.map((asset) => {\n return <IAssetRow>this.api.cache.getAsset(asset.asset_id, asset);\n });\n }\n\n async fetchTemplate(collectionName: string, templateID: string, useCache: boolean = true): Promise<ITemplateRow> {\n const cached = useCache ? this.api.cache.getTemplate(collectionName, templateID) : null;\n\n if (cached) {\n return cached;\n }\n\n const [row, mutableRow] = await Promise.all([\n this.fetch_optional_row<ITemplateRow>('templates', collectionName, templateID),\n this.fetch_optional_row<Template2Row>('templates2', collectionName, templateID)\n ]);\n\n if (!row) {\n throw new Error('Row not found for template ' + collectionName + ':' + templateID);\n }\n\n (<any>row).mutable_serialized_data = mutableRow ? mutableRow.mutable_serialized_data : [];\n\n return <ITemplateRow>this.api.cache.getTemplate(collectionName, templateID, row);\n }\n\n async fetchSchemaFormatTypes(collectionName: string, schemaName: string): Promise<SchemaFormatType[]> {\n const row = await this.fetch_optional_row<{schema_name: string, format_type: SchemaFormatType[]}>(\n 'schematypes', collectionName, schemaName\n );\n\n return row ? row.format_type : [];\n }\n\n async fetchSchema(collectionName: string, schemaName: string, useCache: boolean = true): Promise<ISchemaRow> {\n return await this.fetch_single_row<ISchemaRow>('schemas', collectionName, schemaName, (data?: ISchemaRow) => {\n return (useCache || typeof data !== 'undefined') ? this.api.cache.getSchema(collectionName, schemaName, data) : null;\n });\n }\n\n async fetchCollection(collectionName: string, useCache: boolean = true): Promise<ICollectionRow> {\n return await this.fetch_single_row<ICollectionRow>('collections', this.api.contract, collectionName, (data?: ICollectionRow) => {\n return (useCache || typeof data !== 'undefined') ? this.api.cache.getCollection(collectionName, data) : null;\n });\n }\n\n async fetchCollectionSchemas(collectionName: string): Promise<ISchemaRow[]> {\n const rows = await this.fetch_all_rows<ISchemaRow>('schemas', collectionName, 'schema_name');\n\n return rows.map((schema) => {\n return <ISchemaRow>this.api.cache.getSchema(collectionName, schema.schema_name, schema);\n });\n }\n\n async fetchCollectionTemplates(collectionName: string): Promise<ITemplateRow[]> {\n const [rows, mutableRows] = await Promise.all([\n this.fetch_all_rows<ITemplateRow>('templates', collectionName, 'template_id'),\n this.fetch_all_rows<Template2Row>('templates2', collectionName, 'template_id')\n ]);\n\n const mutableData = new Map(mutableRows.map((row) => [String(row.template_id), row.mutable_serialized_data]));\n\n return rows.map((template) => {\n (<any>template).mutable_serialized_data = mutableData.get(String(template.template_id)) ?? [];\n\n return <ITemplateRow>this.api.cache.getTemplate(collectionName, String(template.template_id), template);\n });\n }\n\n async preloadCollection(collectionName: string, useCache: boolean = true): Promise<void> {\n if (!useCache || !this.preloadedCollections[collectionName] || this.preloadedCollections[collectionName] + 15 * 60 * 1000 < Date.now()) {\n await this.fetchCollectionSchemas(collectionName);\n await this.fetchCollectionTemplates(collectionName);\n }\n }\n\n async fetchOffer(offerID: string, useCache: boolean = true): Promise<IOfferRow> {\n return await this.fetch_single_row<IOfferRow>('offers', this.api.contract, offerID, (data?: IOfferRow) => {\n return (useCache || typeof data !== 'undefined') ? this.api.cache.getOffer(offerID, data) : null;\n });\n }\n\n async fetchAccountOffers(account: string): Promise<IOfferRow[]> {\n const rows: any[][] = await Promise.all([\n this.fetch_all_rows<IOfferRow>(\n 'offers', this.api.contract, 'offer_sender', account, account, 2, 'name'\n ),\n this.fetch_all_rows<IOfferRow>(\n 'offers', this.api.contract, 'offer_recipient', account, account, 3, 'name'\n )\n ]);\n\n const offers: IOfferRow[] = rows[0].concat(rows[1]);\n\n return offers.map((offer) => {\n return <IOfferRow>this.api.cache.getOffer(offer.offer_id, offer);\n });\n }\n\n private dequeue(): void {\n if (this.interval) {\n return;\n }\n\n this.interval = setInterval(async () => {\n if (this.elements.length > 0) {\n this.elements.shift()();\n } else {\n clearInterval(this.interval);\n this.interval = null;\n }\n }, Math.ceil(1000 / this.requestLimit));\n }\n\n // Like fetch_single_row but resolves null for a missing row instead of\n // rejecting; used for the v2 side tables (templates2, schematypes) whose\n // rows only exist once the corresponding v2 action has run.\n private async fetch_optional_row<T>(\n table: string, scope: string, match: any,\n indexPosition: number = 1, keyType: string = ''\n ): Promise<T | null> {\n return new Promise((resolve, reject) => {\n this.elements.push(async () => {\n try {\n const resp = await this.api.getTableRows({\n code: this.api.contract, table, scope,\n limit: 1, lower_bound: match, upper_bound: match,\n index_position: indexPosition, key_type: keyType\n });\n\n return resolve(resp.rows.length === 0 ? null : <T>resp.rows[0]);\n } catch (e) {\n return reject(e);\n }\n });\n\n this.dequeue();\n });\n }\n\n private async fetch_single_row<T>(\n table: string, scope: string, match: any,\n cacheFn: (data?: T) => T | null,\n indexPosition: number = 1, keyType: string = ''\n ): Promise<T> {\n return new Promise((resolve, reject) => {\n let data = cacheFn();\n\n if (data !== null) {\n return resolve(data);\n }\n\n this.elements.push(async () => {\n data = cacheFn();\n\n if (data !== null) {\n return resolve(data);\n }\n\n try {\n const options = {\n code: this.api.contract, table, scope,\n limit: 1, lower_bound: match, upper_bound: match,\n index_position: indexPosition, key_type: keyType\n };\n\n const resp = await this.api.getTableRows(options);\n\n if (resp.rows.length === 0) {\n return reject(new Error('Row not found for ' + JSON.stringify(options)));\n }\n\n return resolve(<T>cacheFn(resp.rows[0]));\n } catch (e) {\n return reject(e);\n }\n });\n\n this.dequeue();\n });\n }\n\n private async fetch_all_rows<T>(\n table: string, scope: string, tableKey: string,\n lowerBound: string = '', upperBound: string = '',\n indexPosition: number = 1, keyType: string = ''\n ): Promise<T[]> {\n return new Promise(async (resolve, reject) => {\n this.elements.push(async () => {\n const resp: { more: boolean, rows: any[] } = await this.api.getTableRows({\n code: this.api.contract, scope, table,\n lower_bound: lowerBound, upper_bound: upperBound, limit: 1000,\n index_position: indexPosition, key_type: keyType\n });\n\n if (resp.more && indexPosition === 1) {\n this.elements.unshift(async () => {\n try {\n const next = await this.fetch_all_rows(\n table, scope, tableKey,\n resp.rows[resp.rows.length - 1][tableKey],\n upperBound, indexPosition, keyType\n );\n\n if (next.length > 0) {\n next.shift();\n }\n\n resolve(resp.rows.concat(next));\n } catch (e) {\n reject(e);\n }\n });\n\n this.dequeue();\n } else {\n resolve(resp.rows);\n }\n });\n\n this.dequeue();\n });\n }\n}\n","import RpcActionGenerator from '../../Actions/Rpc';\nimport RpcError from '../../Errors/RpcError';\nimport RpcAsset from './Asset';\nimport RpcCache, { IConfigRow } from './RpcCache';\nimport RpcCollection from './Collection';\nimport RpcOffer from './Offer';\nimport RpcQueue from './Queue';\nimport RpcSchema from './Schema';\nimport RpcTemplate from './Template';\n\ntype Fetch = (input?: Request | string, init?: RequestInit) => Promise<Response>;\ntype ApiArgs = { fetch?: Fetch, rateLimit?: number };\n\nexport default class RpcApi {\n readonly queue: RpcQueue;\n readonly cache: RpcCache;\n\n readonly action: RpcActionGenerator;\n\n readonly endpoint: string;\n readonly contract: string;\n\n private readonly fetchBuiltin: Fetch;\n\n private readonly _config: Promise<IConfigRow>;\n\n constructor(endpoint: string, contract: string, args: ApiArgs = {rateLimit: 4}) {\n this.endpoint = endpoint;\n this.contract = contract;\n\n if (args.fetch) {\n this.fetchBuiltin = args.fetch;\n } else {\n // Bound because browser fetch is a Window-branded method: called\n // bare (this === undefined) it throws Illegal invocation.\n this.fetchBuiltin = <Fetch>globalThis.fetch.bind(globalThis);\n }\n\n this.queue = new RpcQueue(this, args.rateLimit);\n this.cache = new RpcCache();\n this.action = new RpcActionGenerator(this);\n\n this._config = new Promise((async (resolve, reject) => {\n try {\n const resp = await this.getTableRows({\n code: this.contract, scope: this.contract, table: 'config'\n });\n\n if (resp.rows.length !== 1) {\n return reject('invalid config');\n }\n\n return resolve(resp.rows[0]);\n } catch (e) {\n reject(e);\n }\n }));\n }\n\n async config(): Promise<IConfigRow> {\n return await this._config;\n }\n\n async getAsset(owner: string, id: string, cache: boolean = true): Promise<RpcAsset> {\n if (!cache) {\n this.cache.deleteAsset(id);\n }\n\n const data = await this.queue.fetchAsset(owner, id, cache);\n\n return new RpcAsset(this, owner, id, data, undefined, undefined, undefined, cache);\n }\n\n async getTemplate(collectionName: string, templateID: string, cache: boolean = true): Promise<RpcTemplate> {\n if (!cache) {\n this.cache.deleteTemplate(collectionName, templateID);\n }\n\n const data = await this.queue.fetchTemplate(collectionName, templateID, cache);\n\n return new RpcTemplate(this, collectionName, templateID, data, undefined, cache);\n }\n\n async getCollection(collectionName: string, cache: boolean = true): Promise<RpcCollection> {\n if (!cache) {\n this.cache.deleteCollection(collectionName);\n }\n\n const data = await this.queue.fetchCollection(collectionName, cache);\n\n return new RpcCollection(this, collectionName, data, cache);\n }\n\n async getCollectionTemplates(collectionName: string): Promise<RpcTemplate[]> {\n return (await this.queue.fetchCollectionTemplates(collectionName)).map((templateRow) => {\n return new RpcTemplate(this, collectionName, String(templateRow.template_id), templateRow, undefined);\n });\n }\n\n async getCollectionsSchemas(collectionName: string): Promise<RpcSchema[]> {\n return (await this.queue.fetchCollectionSchemas(collectionName)).map((schemaRow) => {\n return new RpcSchema(this, collectionName, schemaRow.schema_name, undefined);\n });\n }\n\n async getSchema(collectionName: string, schemaName: string, cache: boolean = true): Promise<RpcSchema> {\n if (!cache) {\n this.cache.deleteSchema(collectionName, schemaName);\n }\n\n const data = await this.queue.fetchSchema(collectionName, schemaName, cache);\n\n return new RpcSchema(this, collectionName, schemaName, data, cache);\n }\n\n async getOffer(offerID: string, cache: boolean = true): Promise<RpcOffer> {\n if (!cache) {\n this.cache.deleteOffer(offerID);\n }\n\n const data = await this.queue.fetchOffer(offerID, cache);\n\n return new RpcOffer(this, offerID, data, undefined, undefined, cache);\n }\n\n async getAccountOffers(account: string): Promise<RpcOffer[]> {\n return (await this.queue.fetchAccountOffers(account)).map((offerRow) => {\n return new RpcOffer(this, offerRow.offer_id, offerRow, undefined, undefined);\n });\n }\n\n async getAccountAssets(account: string): Promise<RpcAsset[]> {\n return (await this.queue.fetchAccountAssets(account)).map((assetRow) => {\n return new RpcAsset(this, account, assetRow.asset_id, assetRow, undefined, undefined, undefined);\n });\n }\n\n async getCollectionInventory(collectionName: string, account: string): Promise<RpcAsset[]> {\n await this.queue.preloadCollection(collectionName, true);\n\n return (await this.queue.fetchAccountAssets(account))\n .filter(assetRow => assetRow.collection_name === collectionName)\n .map((assetRow) => {\n return new RpcAsset(this, account, assetRow.asset_id, assetRow, undefined, undefined, undefined);\n });\n }\n\n async preloadCollection(collectionName: string, cache: boolean = true): Promise<void> {\n await this.queue.preloadCollection(collectionName, cache);\n }\n\n async getTableRows({\n code, scope, table, table_key = '', lower_bound = '', upper_bound = '',\n index_position = 1, key_type = ''\n }: any): Promise<any> {\n return await this.fetchRpc('/v1/chain/get_table_rows', {\n code, scope, table, table_key,\n lower_bound, upper_bound, index_position,\n key_type, limit: 101, reverse: false, show_payer: false, json: true\n });\n }\n\n async fetchRpc(path: string, body: any): Promise<any> {\n let response;\n let json;\n\n try {\n const f = this.fetchBuiltin;\n\n response = await f(this.endpoint + path, {\n body: JSON.stringify(body),\n method: 'POST'\n });\n\n json = await response.json();\n } catch (e: any) {\n e.isFetchError = true;\n\n throw e;\n }\n\n if ((json.processed && json.processed.except) || !response.ok) {\n throw new RpcError(json);\n }\n\n return json;\n }\n}\n","import DeserializationError from '../../Errors/DeserializationError';\nimport SerializationError from '../../Errors/SerializationError';\nimport SerializationState from '../State';\nimport { ITypeParser } from './index';\n\nexport default class FixedParser implements ITypeParser {\n constructor(readonly size: number) {\n }\n\n deserialize(state: SerializationState): any {\n state.position += this.size;\n\n const data = state.data.slice(state.position - this.size, state.position);\n\n if (data.length !== this.size) {\n throw new DeserializationError('FixedParser: read past end');\n }\n\n return data;\n }\n\n serialize(data: any): Uint8Array {\n if (data.length !== this.size) {\n throw new SerializationError(`input data does not conform fixed size`);\n }\n\n return data;\n }\n}\n","import SerializationState from '../State';\nimport FixedParser from './FixedParser';\n\nexport default class BooleanParser extends FixedParser {\n constructor() {\n super(1);\n }\n\n deserialize(state: SerializationState): number {\n const data: Uint8Array = super.deserialize(state);\n\n return data[0] === 1 ? 1 : 0;\n }\n\n serialize(data: boolean): Uint8Array {\n return super.serialize(new Uint8Array([data ? 1 : 0]));\n }\n}\n","import DeserializationError from '../../Errors/DeserializationError';\nimport { concat_byte_arrays, varint_decode, varint_encode } from '../Binary';\nimport SerializationState from '../State';\nimport { ITypeParser } from './index';\n\nexport default class VariableParser implements ITypeParser {\n deserialize(state: SerializationState): any {\n const rawLength = varint_decode(state);\n\n if (rawLength > BigInt(state.data.length - state.position)) {\n throw new DeserializationError(`VariableParser: read past end`);\n }\n\n const length = Number(rawLength);\n state.position += length;\n\n const data = state.data.slice(state.position - length, state.position);\n\n if (data.length !== length) {\n throw new DeserializationError(`VariableParser: read past end`);\n }\n\n return data;\n }\n\n serialize(data: any): Uint8Array {\n return concat_byte_arrays([varint_encode(data.length), data]);\n }\n}\n","import SerializationState from '../State';\nimport VariableParser from './VariableParser';\n\nexport class ByteParser extends VariableParser {\n deserialize(state: SerializationState): Uint8Array {\n return super.deserialize(state);\n }\n\n serialize(data: Uint8Array): Uint8Array {\n return super.serialize(data);\n }\n}\n","import SerializationState from '../State';\nimport FixedParser from './FixedParser';\n\nexport default class FixedIntegerParser extends FixedParser {\n deserialize(state: SerializationState): number | string {\n const data: Uint8Array = super.deserialize(state).reverse();\n let n = 0n;\n\n for (const byte of data) {\n n = n << 8n;\n n = n + BigInt(byte);\n }\n\n if (this.size <= 6) {\n return Number(n);\n }\n\n return n.toString();\n }\n\n serialize(data: any): Uint8Array {\n let n = BigInt(data);\n const buffer: number[] = [];\n\n for (let i = 0; i < this.size; i++) {\n buffer.push(Number(n & 0xFFn));\n n = n >> 8n;\n }\n\n return super.serialize(new Uint8Array(buffer));\n }\n}\n","const fp = require('../../../lib/float');\n\nimport SerializationState from '../State';\nimport FixedParser from './FixedParser';\n\nexport default class FloatingParser extends FixedParser {\n constructor(private readonly isDouble: boolean) {\n super(isDouble ? 8 : 4);\n }\n\n deserialize(state: SerializationState): number {\n if (this.isDouble) {\n return fp.readDoubleLE(super.deserialize(state));\n }\n\n return fp.readFloatLE(super.deserialize(state));\n }\n\n serialize(data: number): Uint8Array {\n // tslint:disable-next-line:prefer-const\n let bytes: number[] = [];\n\n if (this.isDouble) {\n fp.writeDoubleLE(bytes, data);\n\n return super.serialize(new Uint8Array(bytes));\n }\n\n fp.writeFloatLE(bytes, data);\n\n return super.serialize(new Uint8Array(bytes));\n }\n}\n","import { base58_decode, base58_encode } from '../Binary';\nimport SerializationState from '../State';\nimport VariableParser from './VariableParser';\n\nexport default class IPFSParser extends VariableParser {\n deserialize(state: SerializationState): any {\n return base58_encode(super.deserialize(state));\n }\n\n serialize(data: string): Uint8Array {\n return super.serialize(base58_decode(data));\n }\n}\n","import SerializationState from '../State';\nimport VariableParser from './VariableParser';\n\nexport default class StringParser extends VariableParser {\n deserialize(state: SerializationState): any {\n return new TextDecoder().decode(super.deserialize(state));\n }\n\n serialize(data: string): Uint8Array {\n return super.serialize(new TextEncoder().encode(data));\n }\n}\n","import DeserializationError from '../../Errors/DeserializationError';\nimport SerializationError from '../../Errors/SerializationError';\nimport { varint_decode, varint_encode, zigzag_decode, zigzag_encode } from '../Binary';\nimport SerializationState from '../State';\nimport { ITypeParser } from './index';\n\nexport default class VariableIntegerParser implements ITypeParser {\n constructor(readonly size: number, private readonly unsigned: boolean) {\n }\n\n deserialize(state: SerializationState): number | string {\n let n = varint_decode(state);\n\n if (!this.unsigned) {\n n = zigzag_decode(n);\n }\n\n if (n >= 2n ** BigInt(this.size * 8 - (this.unsigned ? 0 : 1))) {\n throw new DeserializationError('number \\'' + n.toString() + '\\' too large for given type');\n }\n\n if (!this.unsigned && n < -(2n ** BigInt(this.size * 8 - 1))) {\n throw new DeserializationError('number \\'' + n.toString() + '\\' too small for given type');\n }\n\n if (this.size <= 6) {\n return Number(n);\n }\n\n return n.toString();\n }\n\n serialize(data: any): Uint8Array {\n let n = BigInt(data);\n\n if (n >= 2n ** BigInt(this.size * 8 - (this.unsigned ? 0 : 1))) {\n throw new SerializationError('number \\'' + n.toString() + '\\' too large for given type');\n }\n\n if (!this.unsigned && n < -(2n ** BigInt(this.size * 8 - 1))) {\n throw new SerializationError('number \\'' + n.toString() + '\\' too small for given type');\n }\n\n if (!this.unsigned) {\n n = zigzag_encode(n);\n }\n\n return varint_encode(n);\n }\n}\n","import { ITypeParser } from './TypeParser';\nimport BooleanParser from './TypeParser/BooleanParser';\nimport { ByteParser } from './TypeParser/ByteParser';\nimport FixedIntegerParser from './TypeParser/FixedIntegerParser';\nimport FloatingParser from './TypeParser/FloatingParser';\nimport IPFSParser from './TypeParser/IPFSParser';\nimport StringParser from './TypeParser/StringParser';\nimport VariableIntegerParser from './TypeParser/VariableIntegerParser';\n\n// tslint:disable:object-literal-sort-keys\nexport const ParserTypes: { [id: string]: ITypeParser } = {\n int8: new VariableIntegerParser(1, false),\n int16: new VariableIntegerParser(2, false),\n int32: new VariableIntegerParser(4, false),\n int64: new VariableIntegerParser(8, false),\n\n uint8: new VariableIntegerParser(1, true),\n uint16: new VariableIntegerParser(2, true),\n uint32: new VariableIntegerParser(4, true),\n uint64: new VariableIntegerParser(8, true),\n\n fixed8: new FixedIntegerParser(1),\n fixed16: new FixedIntegerParser(2),\n fixed32: new FixedIntegerParser(4),\n fixed64: new FixedIntegerParser(8),\n\n bool: new BooleanParser(),\n\n bytes: new ByteParser(),\n string: new StringParser(),\n image: new StringParser(),\n\n ipfs: new IPFSParser(),\n float: new FloatingParser(false),\n double: new FloatingParser(true)\n};\n","import ExplorerApi from './API/Explorer';\nimport RpcApi from './API/Rpc';\n\n// AtomicHub's public per-network hosts, baked in as convenient defaults; each\n// host serves both the API layer and chain RPC (the api/rpc split is kept so\n// the shapes survive if the hosts ever diverge). Any compatible deployment\n// can still be passed straight to the constructors.\n\nexport type AtomicHubNetwork = 'wax' | 'wax-testnet' | 'vaulta' | 'xpr' | 'xpr-testnet' | 'jungle4';\n\nexport const NETWORK_ENDPOINTS: Record<AtomicHubNetwork, {api: string, rpc: string}> = {\n 'wax': {\n api: 'https://wax.api.atomicassets.io',\n rpc: 'https://wax.api.atomicassets.io'\n },\n 'wax-testnet': {\n api: 'https://test.wax.api.atomicassets.io',\n rpc: 'https://test.wax.api.atomicassets.io'\n },\n 'vaulta': {\n api: 'https://vaulta.api.atomicassets.io',\n rpc: 'https://vaulta.api.atomicassets.io'\n },\n 'xpr': {\n api: 'https://xpr.api.atomicassets.io',\n rpc: 'https://xpr.api.atomicassets.io'\n },\n 'xpr-testnet': {\n api: 'https://test.xpr.api.atomicassets.io',\n rpc: 'https://test.xpr.api.atomicassets.io'\n },\n 'jungle4': {\n api: 'https://jungle4.api.atomicassets.io',\n rpc: 'https://jungle4.api.atomicassets.io'\n }\n};\n\nexport function explorerApiForNetwork(\n network: AtomicHubNetwork, options?: ConstructorParameters<typeof ExplorerApi>[2]\n): ExplorerApi {\n return new ExplorerApi(NETWORK_ENDPOINTS[network].api, 'atomicassets', options ?? {});\n}\n\nexport function rpcApiForNetwork(\n network: AtomicHubNetwork, contract: string = 'atomicassets', options?: ConstructorParameters<typeof RpcApi>[2]\n): RpcApi {\n return new RpcApi(NETWORK_ENDPOINTS[network].rpc, contract, options);\n}\n","export default class RpcError extends Error { }\n","export enum OfferState {\n Pending,\n Invalid,\n Unknown,\n Accepted,\n Declined,\n Canceled\n}\n\nexport enum OrderParam {\n Asc = 'asc',\n Desc = 'desc'\n}\n\nexport enum AssetsSort {\n AssetId = 'asset_id',\n Updated = 'updated',\n Transferred = 'transferred',\n Minted = 'minted',\n TemplateMint = 'template_mint',\n Name = 'name'\n}\n\nexport enum CollectionsSort {\n Created = 'created',\n CollectionName = 'collection_name'\n}\n\nexport enum OffersSort {\n Created = 'created',\n Updated = 'updated'\n}\n\nexport enum SchemasSort {\n Created = 'created',\n SchemaName = 'schema_name'\n}\n\nexport enum TemplatesSort {\n Created = 'created',\n Name = 'name'\n}\n\nexport enum TransfersSort {\n Created = 'created'\n}\n","// Every action name the atomicassets contract (v1 plus v2) declares, so\n// consumers can reference actions without hand-maintained string enums.\nexport const AtomicAssetsActionNames = [\n 'acceptauswap',\n 'acceptoffer',\n 'addcolauth',\n 'addconftoken',\n 'addnotifyacc',\n 'admincoledit',\n 'announcedepo',\n 'backasset',\n 'burnasset',\n 'canceloffer',\n 'createauswap',\n 'createcol',\n 'createoffer',\n 'createschema',\n 'createtempl',\n 'createtempl2',\n 'declineoffer',\n 'deltemplate',\n 'extendschema',\n 'forbidnotify',\n 'init',\n 'locktemplate',\n 'logbackasset',\n 'logburnasset',\n 'logmint',\n 'lognewoffer',\n 'lognewtempl',\n 'logrampayer',\n 'logsetdata',\n 'logsetdatatl',\n 'logtransfer',\n 'mintasset',\n 'payofferram',\n 'redtemplmax',\n 'rejectauswap',\n 'remcolauth',\n 'remnotifyacc',\n 'setassetdata',\n 'setcoldata',\n 'setlastpayer',\n 'setmarketfee',\n 'setrampayer',\n 'setschematyp',\n 'settempldata',\n 'setversion',\n 'transfer',\n 'withdraw'\n] as const;\n\nexport type AtomicAssetsActionName = typeof AtomicAssetsActionNames[number];\n\n// Name-keyed map of the same actions, for consumers that reference actions as\n// a value namespace (AtomicAssetsActions.settempldata). Mirrors the shape of\n// @atomichub/atomicmarket's AtomicMarketActions.\nexport const AtomicAssetsActions = Object.fromEntries(\n AtomicAssetsActionNames.map((name) => [name, name])\n) as { readonly [K in AtomicAssetsActionName]: K };\n","import { Format, SchemaFormatType } from '../Actions/Generator';\n\nexport type MergedSchemaFormat = Array<Format & { mediatype: string | null, info: string | null }>;\n\n// Derives a per-field mediatype/info for a schema format, preferring the\n// explicit v2 schematypes entries (set via setschematyp) and falling back to\n// a field-name/type heuristic. Every renderer of schema formats needs the\n// identical rule or media fields display inconsistently, so it lives here\n// rather than in each consumer.\nexport function mergeSchemaFormatTypes(format: Format[], types: SchemaFormatType[]): MergedSchemaFormat {\n return format.map((field) => {\n const type = types.find((x) => x.name === field.name);\n\n const checkName = (match: string): boolean =>\n field.name.toLowerCase().startsWith(match) || field.name.toLowerCase().endsWith(match);\n\n let derivedType: string | null = null;\n\n if (field.name === 'name') {\n derivedType = 'name';\n }\n\n if (checkName('image') || checkName('img') || field.type === 'image') {\n derivedType = 'image';\n }\n\n if (checkName('video')) {\n derivedType = 'video';\n }\n\n if (checkName('audio')) {\n derivedType = 'audio';\n }\n\n return {\n ...field,\n mediatype: type?.mediatype || derivedType,\n info: type?.info || null\n };\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,iBAAAA,UAAAC,SAAA;AAAA;AAUA,QAAI,YAAY;AAChB,QAAI;AAAJ,QAAsB;AAAtB,QAAyC;AAAzC,QAA8D;AAC9D,QAAI;AAAJ,QAAsB;AAAtB,QAAyC;AAAzC,QAA8D;AAI9D,IAAC,OAAO,iBAAiB,eAAgB,WAAU;AAC/C,UAAI,QAAQ,IAAI,aAAa,CAAC;AAC9B,UAAI,OAAO,IAAI,WAAW,MAAM,MAAM;AAEtC,YAAM,CAAC,IAAI;AACX,kBAAY,KAAK,CAAC,MAAM;AAExB,yBAAmB,SAASC,kBAAkB,KAAK,KAAM;AACrD,cAAM,OAAO;AACb,YAAI,MAAM,KAAK,MAAM,IAAI,IAAI,OAAQ,QAAO;AAC5C,aAAK,CAAC,IAAI,IAAI,KAAK;AAAG,aAAK,CAAC,IAAI,IAAI,KAAK;AAAG,aAAK,CAAC,IAAI,IAAI,KAAK;AAAE,aAAK,CAAC,IAAI,IAAI,GAAG;AAElF,eAAO,MAAM,CAAC;AAAA,MAClB;AAEA,4BAAsB,SAASC,qBAAqB,KAAK,KAAM;AAC3D,cAAM,OAAO;AACb,YAAI,MAAM,KAAK,MAAM,IAAI,IAAI,OAAQ,QAAO;AAC5C,aAAK,CAAC,IAAI,IAAI,KAAK;AAAG,aAAK,CAAC,IAAI,IAAI,KAAK;AAAG,aAAK,CAAC,IAAI,IAAI,KAAK;AAAG,aAAK,CAAC,IAAI,IAAI,GAAG;AAEnF,eAAO,MAAM,CAAC;AAAA,MAClB;AAEA,0BAAoB,SAASC,mBAAmB,KAAK,GAAG,KAAM;AAC1D,cAAM,OAAO;AACb,cAAM,CAAC,IAAI;AACX,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,GAAG,IAAI,KAAK,CAAC;AAAA,MAEvF;AAEA,6BAAuB,SAASC,sBAAsB,KAAK,GAAG,KAAM;AAChE,cAAM,OAAO;AACb,cAAM,CAAC,IAAI;AACX,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,KAAK,IAAI,KAAK,CAAC;AAAG,YAAI,GAAG,IAAI,KAAK,CAAC;AAAA,MAEvF;AAAA,IACJ,GAAG;AAEH,IAAC,OAAO,iBAAiB,eAAgB,WAAU;AAC/C,UAAI,QAAQ,IAAI,aAAa,CAAC;AAC9B,UAAI,OAAO,IAAI,WAAW,MAAM,MAAM;AAEtC,yBAAmB,SAASC,kBAAkB,KAAK,KAAM;AACrD,cAAM,OAAO;AACb,YAAI,MAAM,KAAK,MAAM,IAAI,IAAI,OAAQ,QAAO;AAG5C,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AACrF,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AACrF,eAAO,MAAM,CAAC;AAAA,MAClB;AAEA,4BAAsB,SAASC,qBAAqB,KAAK,KAAM;AAC3D,cAAM,OAAO;AACb,YAAI,MAAM,KAAK,MAAM,IAAI,IAAI,OAAQ,QAAO;AAG5C,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AACrF,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AAAG,aAAK,CAAC,IAAI,IAAI,MAAI,CAAC;AACrF,eAAO,MAAM,CAAC;AAAA,MAClB;AAEA,0BAAoB,SAASC,mBAAmB,KAAK,GAAG,KAAM;AAC1D,cAAM,OAAO;AACb,cAAM,CAAC,IAAI;AACX,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAC7F,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAA,MACjG;AAEA,6BAAuB,SAASC,sBAAsB,KAAK,GAAG,KAAM;AAChE,cAAM,OAAO;AACb,cAAM,CAAC,IAAI;AACX,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAC7F,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAG,YAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAAA,MACjG;AAAA,IACJ,GAAG;AAKH,aAAS,SAAU,KAAK,MAAM,MAAO;AACjC,UAAI,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,IAAI;AACnE,aAAQ,SAAS,WACN,IAAI,MAAO,KAAK,MAAO,KAAK,MAAO,MACnC,IAAI,MAAO,KAAK,MAAO,KAAK,MAAO;AAAA,IAClD;AAEA,aAAS,UAAW,KAAK,GAAG,MAAM,MAAO;AACrC,UAAI,IAAK,MAAM,KAAM,KAAM,IAAK,KAAK,KAAM,KAAM,IAAK,KAAK,IAAK,KAAM,IAAK,IAAK;AAChF,MAAC,SAAS,UACH,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,MAC/D,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI;AAAA,IAC1E;AAGA,aAAS,gBAAiB,KAAK,IAAI,IAAI,MAAM,MAAO;AAChD,UAAI,SAAS,QAAQ;AACjB,kBAAU,KAAK,IAAI,MAAM,IAAI;AAC7B,kBAAU,KAAK,IAAI,OAAO,GAAG,IAAI;AAAA,MACrC,OACK;AACD,kBAAU,KAAK,IAAI,MAAM,IAAI;AAC7B,kBAAU,KAAK,IAAI,OAAO,GAAG,IAAI;AAAA,MACrC;AAAA,IACJ;AAKA,QAAI,QAAQ,IAAI,MAAM;AAAG,SAAS,IAAE,GAAG,IAAE,MAAM,IAAK,OAAM,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AAA1C;AAClC,QAAI,QAAQ,IAAI,MAAM;AAAG,SAAS,IAAE,GAAG,IAAE,MAAM,IAAK,OAAM,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;AAA3C;AAClC,aAAS,KAAM,KAAM;AACjB,aAAQ,OAAO,IAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG;AAAA,IAG/C;AASA,QAAI,YAAa,IAAI;AACrB,QAAI,YAAa,IAAI;AACrB,QAAI,YAAa,IAAI;AACrB,QAAI,YAAa,IAAI,YAAY;AACjC,QAAI,cAAc,KAAK,KAAK;AAC5B,aAAS,WAAY,KAAK,QAAQ,MAAO;AACrC,UAAI,KAAK,SAAS,KAAK,QAAQ,IAAI;AACnC,UAAI,KAAK,SAAS,KAAK,SAAS,GAAG,IAAI;AACvC,UAAI,UAAU;AACd,MAAC,SAAS,UAAW,WAAW,IAAI,UAAU,OAAO,WAAW,IAAI,UAAU;AAE9E,UAAI,YAAY,WAAW,WAAc,YAAY;AACrD,UAAI,YAAY,WAAW,gBAAgB;AAC3C,UAAI,OAAQ,YAAY,MAAO;AAE/B,UAAI;AACJ,UAAI,aAAa,GAAO;AAIpB,gBAAQ,WAAY,WAAW,KAAK,MAAM,IAAG,IAAI,IAAK;AAAA,MAC1D,WACS,WAAW,MAAO;AAGvB,gBAAS,YAAY,KAAM,IAAI,WAAW,aAAa,KAAK,WAAW,IAAI,IAAI;AAAA,MACnF,OACK;AAED,gBAAQ,WAAW,MAAM;AAAA,MAC7B;AAEA,aAAO,OAAO;AAAA,IAClB;AAaA,QAAI,YAAY,KAAK,IAAI,GAAG,GAAG;AAC/B,QAAI,aAAa,KAAK,IAAI,GAAG,IAAI;AACjC,aAAS,UAAW,KAAK,QAAQ,MAAO;AACpC,UAAI,OAAO,SAAS,KAAK,QAAQ,IAAI;AACrC,UAAI,WAAY,OAAO;AACvB,UAAI,YAAY,OAAO,gBAAgB;AACvC,UAAI,OAAQ,QAAQ,MAAO;AAE3B,UAAI;AACJ,UAAI,aAAa,GAAO;AACpB,gBAAQ,WAAW,WAAW,YAAY,IAAI,aAAa;AAAA,MAC/D,WACS,WAAW,KAAM;AACtB,iBAAS,IAAI,WAAW,aAAa,KAAK,WAAW,GAAG;AAAA,MAC5D,OACK;AACD,gBAAQ,WAAW,MAAM;AAAA,MAC7B;AAEA,aAAO,OAAO;AAAA,IAElB;AAOA,QAAI,SAAS,EAAE,KAAK,GAAG,MAAM,EAAE;AAC/B,aAAS,UAAW,GAAI;AACpB,UAAI,MAAM;AAEV,UAAI,KAAK,GAAG;AACR,cAAM,eAAe,GAAG,CAAC;AACzB,aAAK,KAAK,CAAC,GAAG;AAEd,YAAI,KAAK,GAAG;AAAE,eAAK;AAAG,iBAAO;AAAA,QAAE;AAAA,MACnC,WACS,IAAI,GAAG;AACZ,cAAM,eAAe,GAAG,CAAC;AAEzB,YAAI,OAAO,KAAM,MAAK,KAAK,GAAG;AAAA,aACzB;AAAE,eAAK,KAAK,MAAM,GAAG;AAAG,eAAK,KAAK,GAAG;AAAA,QAAG;AAC7C,cAAM,CAAC;AAAA,MACX;AAIA,aAAO,MAAM;AACb,aAAO,OAAO;AACd,aAAO;AAAA,IACX;AAMA,QAAI,SAAS,KAAK,IAAI,GAAG,GAAG;AAC5B,aAAS,eAAgB,GAAG,GAAI;AAC5B,UAAI,IAAI;AAER,aAAO,IAAI,SAAS,GAAG;AAAE,aAAK;AAAQ,aAAK;AAAA,MAAI;AAC/C,aAAO,IAAI,sBAAsB,GAAG;AAAE,aAAK;AAAqB,aAAK;AAAA,MAAG;AACxE,aAAO,IAAI,QAAU,GAAG;AAAE,aAAK;AAAS,aAAK;AAAA,MAAG;AAChD,aAAO,IAAI,KAAO,GAAG;AAAE,aAAK;AAAM,aAAK;AAAA,MAAE;AACzC,aAAO,IAAI,IAAI,GAAG;AAAE,aAAK;AAAG,aAAK;AAAA,MAAE;AAEnC,aAAO;AAAA,IACX;AAKA,aAAS,cAAe,GAAG,OAAQ;AAC/B,WAAK;AAGL,aAAS,IAAI,KAAK,MAAM,CAAC,MAAM,OAAS,IAAI,IAAM,IAAI,MAAM;AAAA,IAChE;AAKA,aAAS,WAAY,KAAK,GAAG,QAAQ,MAAO;AACxC,UAAI,MAAM,MAAM,OAAO;AACvB,UAAI,IAAI,GAAG;AAAE,eAAO;AAAY,YAAI,CAAC;AAAA,MAAG;AAExC,UAAI,EAAG,KAAK,IAAI,WAAW;AACvB,YAAI,MAAM,GAAG;AACT,iBAAQ,IAAE,IAAI,IAAK,aAAa;AAAA,QACpC,WACS,MAAM,UAAU;AACrB,iBAAO,OAAO;AAAA,QAClB,OACK;AACD,iBAAO;AAAA,QACX;AACA,kBAAU,KAAK,MAAM,QAAQ,IAAI;AAAA,MACrC,OACK;AACD,eAAO,UAAU,CAAC;AAClB,aAAK,OAAO;AAEZ,YAAI,KAAK,OAAO,GAAG;AACf,cAAI,KAAK,OAAO,KAAK;AACjB,iBAAK,OAAO;AACZ,iBAAK,MAAM;AAAA,UACf,OAAO;AACH,iBAAK,OAAO,cAAc,KAAK,MAAM,KAAK,KAAK,KAAK,GAAG,CAAC;AACxD,iBAAK,MAAM;AACX,gBAAI,KAAK,QAAQ,SAAU;AAAE,mBAAK,QAAQ;AAAU,mBAAK,OAAO;AAAA,YAAE;AAAA,UACtE;AAAA,QACJ,OAAO;AACH,eAAK,OAAO,cAAc,KAAK,OAAO,GAAG,OAAQ;AAEjD,cAAI,KAAK,QAAQ,SAAU;AAAE,iBAAK,QAAQ;AAAU,iBAAK,OAAO;AAAA,UAAE;AAClE,cAAI,KAAK,MAAM,KAAK;AAChB,iBAAK,OAAO;AACZ,iBAAK,MAAM;AAAA,UACf;AAAA,QACJ;AAEA,eAAO,OAAQ,KAAK,OAAO,KAAM,KAAK;AACtC,kBAAU,KAAK,MAAM,QAAQ,IAAI;AAAA,MACrC;AAAA,IACJ;AAMA,QAAI,YAAY,IAAI,WAAW,CAAC;AAChC,QAAI,QAAQ,KAAK,IAAI,GAAG,EAAE;AAC1B,aAAS,YAAa,KAAK,GAAG,QAAQ,MAAO;AACzC,UAAI,MAAM,UAAU,SAAS,OAAO;AACpC,UAAI,IAAI,GAAG;AAAE,eAAO;AAAY,YAAI,CAAC;AAAA,MAAG;AAExC,UAAI,EAAG,KAAK,IAAI,WAAW;AACvB,YAAI,MAAM,GAAG;AACT,qBAAY,IAAE,IAAI,IAAK,aAAa;AACpC,oBAAU;AAAA,QACd,WACS,MAAM,UAAU;AACrB,qBAAY,OAAO;AACnB,oBAAU;AAAA,QACd,OACK;AACD,qBAAW;AACX,oBAAU;AAAA,QACd;AACA,wBAAgB,KAAK,UAAU,SAAS,QAAQ,IAAI;AAAA,MACxD,OACK;AACD,eAAO,UAAU,CAAC;AAClB,aAAK,OAAO;AAEZ,YAAI,KAAK,OAAO,GAAG;AAGf,eAAK,QAAQ,KAAK,KAAK,KAAK,GAAG;AAC/B,eAAK,MAAM;AAAA,QACf,OACK;AAED,eAAK,QAAQ,KAAK,OAAO,KAAK;AAAA,QAClC;AAEA,mBAAW,OAAQ,KAAK,OAAO,KAAO,KAAK,OAAO;AAClD,kBAAU,KAAK,SAAS;AACxB,wBAAgB,KAAK,UAAU,SAAS,QAAQ,IAAI;AAAA,MACxD;AAAA,IACJ;AAGC,KAAC,SAAS,UAAU;AACjB,UAAIT,WAAU,OAAOC,YAAW,YAAYA,QAAO,WAAW;AAE9D,MAAAD,SAAQ,WAAW;AACnB,MAAAA,SAAQ,YAAY;AACpB,MAAAA,SAAQ,kBAAkB;AAE1B,MAAAA,SAAQ,YAAY;AACpB,MAAAA,SAAQ,aAAa;AACrB,MAAAA,SAAQ,aAAa;AACrB,MAAAA,SAAQ,cAAc;AAGtB,MAAAA,SAAQ,iBAAiB,SAAU,OAAQ;AACvC,QAAAA,SAAQ,mBAAmB;AAC3B,YAAI,OAAO;AAGP,cAAI,SAAS,OAAQ,CAAAA,SAAQ,cAAc,YAAY,sBAAsB;AAC7E,UAAAA,SAAQ,eAAe,YAAY,uBAAuB;AAC1D,cAAI,SAAS,OAAQ,CAAAA,SAAQ,cAAc,YAAY,mBAAmB;AAC1E,UAAAA,SAAQ,eAAe,YAAY,oBAAoB;AAEvD,UAAAA,SAAQ,eAAe,YAAY,sBAAsB;AACzD,UAAAA,SAAQ,gBAAgB,YAAY,uBAAuB;AAC3D,UAAAA,SAAQ,eAAe,YAAY,mBAAmB;AACtD,UAAAA,SAAQ,gBAAgB,YAAY,oBAAoB;AAAA,QAC5D,OACK;AACD,UAAAA,SAAQ,mBAAmB;AAC3B,UAAAA,SAAQ,cAAc,SAAS,YAAa,KAAK,QAAS;AAAE,mBAAOA,SAAQ,UAAU,KAAK,UAAU,GAAG,IAAI;AAAA,UAAG;AAC9G,UAAAA,SAAQ,eAAe,SAAS,aAAc,KAAK,GAAG,QAAS;AAAE,YAAAA,SAAQ,WAAW,KAAK,GAAG,UAAU,GAAG,IAAI;AAAA,UAAG;AAChH,UAAAA,SAAQ,cAAc,SAAS,YAAa,KAAK,QAAS;AAAE,mBAAOA,SAAQ,UAAU,KAAK,UAAU,GAAG,MAAM;AAAA,UAAG;AAChH,UAAAA,SAAQ,eAAe,SAAS,aAAc,KAAK,GAAG,QAAS;AAAE,YAAAA,SAAQ,WAAW,KAAK,GAAG,UAAU,GAAG,MAAM;AAAA,UAAG;AAElH,UAAAA,SAAQ,eAAe,SAAS,aAAc,KAAK,QAAS;AAAE,mBAAOA,SAAQ,WAAW,KAAK,UAAU,GAAG,IAAI;AAAA,UAAG;AACjH,UAAAA,SAAQ,gBAAgB,SAAS,cAAe,KAAK,GAAG,QAAS;AAAE,YAAAA,SAAQ,YAAY,KAAK,GAAG,UAAU,GAAG,IAAI;AAAA,UAAG;AACnH,UAAAA,SAAQ,eAAe,SAAS,aAAc,KAAK,QAAS;AAAE,mBAAOA,SAAQ,WAAW,KAAK,UAAU,GAAG,MAAM;AAAA,UAAG;AACnH,UAAAA,SAAQ,gBAAgB,SAAS,cAAe,KAAK,GAAG,QAAS;AAAE,YAAAA,SAAQ,YAAY,KAAK,GAAG,UAAU,GAAG,MAAM;AAAA,UAAG;AAAA,QACzH;AAAA,MACJ;AAGA,MAAAA,SAAQ,cAAc,WAAW;AAAE,eAAO;AAAA,MAAU;AACpD,MAAAA,SAAQ,cAAc,SAAS,OAAO;AAAE,oBAAY;AAAA,MAAM;AAI1D,MAAAA,SAAQ,eAAe,KAAK;AAC5B,MAAAA,SAAQ,eAAe,oBAAoB,oBAAoB,SAAS;AAGxE,cAAQ,YAAYA;AAAA,IAExB,GAAG,KAAKA,QAAI;AAAA;AAAA;;;AC9ZZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAAU;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAqB,qBAArB,cAAgD,MAAM;AAEtD;;;AC8CO,IAAM,mBAA+C;AAAA,EACxD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EAEN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AACd;AAKO,SAAS,mBACZ,KAA6B,OACjB;AACZ,QAAM,SAAuB,CAAC;AAE9B,aAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAChC,UAAM,OAAO,MAAM,GAAG;AAEtB,QAAI,OAAO,SAAS,aAAa;AAC7B,YAAM,IAAI,mBAAmB,8BAA+B,MAAM,GAAI;AAAA,IAC1E;AAEA,UAAM,UAAU,iBAAiB,IAAI;AAErC,QAAI,OAAO,YAAY,aAAa;AAChC,YAAM,IAAI,mBAAmB,mBAAoB,OAAO,kBAAoB,MAAM,GAAI;AAAA,IAC1F;AAEA,WAAO,KAAK,EAAC,KAAK,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,EAAC,CAAC;AAAA,EACjD;AAEA,SAAO;AACX;AAMO,IAAM,gBAAN,MAAoB;AAAA,EACvB,YAAqB,UAAkB;AAAlB;AAAA,EACrB;AAAA,EAEA,aAAa,iBAA4C;AACrD,WAAO,KAAK,QAAQ,gBAAgB,EAAC,gBAAe,CAAC;AAAA,EACzD;AAAA,EAEA,YAAY,UAAqC;AAC7C,WAAO,KAAK,QAAQ,eAAe,EAAC,SAAQ,CAAC;AAAA,EACjD;AAAA,EAEA,WAAW,iBAAyB,gBAA2C;AAC3E,WAAO,KAAK,QAAQ,cAAc,EAAC,iBAAiB,eAAc,CAAC;AAAA,EACvE;AAAA,EAEA,aAAa,gBAAwB,cAAyC;AAC1E,WAAO,KAAK,QAAQ,gBAAgB,EAAC,gBAAgB,aAAY,CAAC;AAAA,EACtE;AAAA,EAEA,aAAa,iBAAyB,gBAA2C;AAC7E,WAAO,KAAK,QAAQ,gBAAgB,EAAC,iBAAiB,eAAc,CAAC;AAAA,EACzE;AAAA,EAEA,aAAa,6BAA0D;AACnE,WAAO,KAAK,QAAQ,gBAAgB,EAAC,4BAA2B,CAAC;AAAA,EACrE;AAAA,EAEA,aAAa,OAAe,oBAA+C;AACvE,WAAO,KAAK,QAAQ,gBAAgB,EAAC,OAAO,mBAAkB,CAAC;AAAA,EACnE;AAAA,EAEA,UAAU,OAAe,aAAqB,UAAkB,eAA0C;AACtG,WAAO,KAAK,QAAQ,aAAa,EAAC,OAAO,aAAa,UAAU,cAAa,CAAC;AAAA,EAClF;AAAA,EAEA,UAAU,aAAqB,UAAqC;AAChE,WAAO,KAAK,QAAQ,aAAa,EAAC,aAAa,SAAQ,CAAC;AAAA,EAC5D;AAAA,EAEA,YAAY,UAAqC;AAC7C,WAAO,KAAK,QAAQ,eAAe,EAAC,SAAQ,CAAC;AAAA,EACjD;AAAA,EAEA,aAAa,iBAAyB,YAAoB,OAAmC;AACzF,WAAO,KAAK,QAAQ,gBAAgB,EAAC,iBAAiB,YAAY,MAAK,CAAC;AAAA,EAC5E;AAAA,EAEA,UACI,QAAgB,iBAAyB,cACzC,qBAA+B,iBAA2B,YAAoB,MAC7D;AACjB,WAAO,KAAK,QAAQ,aAAa;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,YACI,QAAgB,WAAmB,kBAA4B,qBAA+B,MAC7E;AACjB,WAAO,KAAK,QAAQ,eAAe,EAAC,QAAQ,WAAW,kBAAkB,qBAAqB,KAAI,CAAC;AAAA,EACvG;AAAA,EAEA,YACI,oBAA4B,iBAAyB,aACrD,cAAuB,UAAmB,YAAoB,gBAC7C;AACjB,WAAO,KAAK,QAAQ,eAAe;AAAA,MAC/B;AAAA,MAAoB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,IAC1F,CAAC;AAAA,EACL;AAAA,EAEA,aACI,oBAA4B,iBAAyB,aACrD,cAAuB,UAAmB,YAAoB,gBAA8B,cAC3E;AACjB,WAAO,KAAK,QAAQ,gBAAgB;AAAA,MAChC;AAAA,MAAoB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,MAAgB;AAAA,IAC1G,CAAC;AAAA,EACL;AAAA,EAEA,aACI,oBAA4B,iBAAyB,aAAqB,eACzD;AACjB,WAAO,KAAK,QAAQ,gBAAgB,EAAC,oBAAoB,iBAAiB,aAAa,cAAa,CAAC;AAAA,EACzG;AAAA,EAEA,aAAa,UAAqC;AAC9C,WAAO,KAAK,QAAQ,gBAAgB,EAAC,SAAQ,CAAC;AAAA,EAClD;AAAA,EAEA,YAAY,mBAA2B,iBAAyB,aAAwC;AACpG,WAAO,KAAK,QAAQ,eAAe,EAAC,mBAAmB,iBAAiB,YAAW,CAAC;AAAA,EACxF;AAAA,EAEA,aACI,mBAA2B,iBAAyB,aAAqB,yBACxD;AACjB,WAAO,KAAK,QAAQ,gBAAgB,EAAC,mBAAmB,iBAAiB,aAAa,wBAAuB,CAAC;AAAA,EAClH;AAAA,EAEA,aAAa,iBAA4C;AACrD,WAAO,KAAK,QAAQ,gBAAgB,EAAC,gBAAe,CAAC;AAAA,EACzD;AAAA,EAEA,OAA0B;AACtB,WAAO,KAAK,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAClC;AAAA,EAEA,aAAa,mBAA2B,iBAAyB,aAAwC;AACrG,WAAO,KAAK,QAAQ,gBAAgB,EAAC,mBAAmB,iBAAiB,YAAW,CAAC;AAAA,EACzF;AAAA,EAEA,UACI,mBAA2B,iBAAyB,aAAqB,aACzE,iBAAyB,gBAA8B,cAA4B,gBAClE;AACjB,WAAO,KAAK,QAAQ,aAAa;AAAA,MAC7B;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAa;AAAA,MAAiB;AAAA,MAAgB;AAAA,MAAc;AAAA,IACjH,CAAC;AAAA,EACL;AAAA,EAEA,YAAY,OAAe,UAAqC;AAC5D,WAAO,KAAK,QAAQ,eAAe,EAAC,OAAO,SAAQ,CAAC;AAAA,EACxD;AAAA,EAEA,YACI,mBAA2B,iBAAyB,aAAqB,gBACxD;AACjB,WAAO,KAAK,QAAQ,eAAe,EAAC,mBAAmB,iBAAiB,aAAa,eAAc,CAAC;AAAA,EACxG;AAAA,EAEA,aAAa,iBAA4C;AACrD,WAAO,KAAK,QAAQ,gBAAgB,EAAC,gBAAe,CAAC;AAAA,EACzD;AAAA,EAEA,WAAW,iBAAyB,mBAA8C;AAC9E,WAAO,KAAK,QAAQ,cAAc,EAAC,iBAAiB,kBAAiB,CAAC;AAAA,EAC1E;AAAA,EAEA,aAAa,iBAAyB,mBAA8C;AAChF,WAAO,KAAK,QAAQ,gBAAgB,EAAC,iBAAiB,kBAAiB,CAAC;AAAA,EAC5E;AAAA,EAEA,aACI,mBAA2B,aAAqB,UAAkB,kBACjD;AACjB,WAAO,KAAK,QAAQ,gBAAgB,EAAC,mBAAmB,aAAa,UAAU,iBAAgB,CAAC;AAAA,EACpG;AAAA,EAEA,WAAW,iBAAyB,MAAuC;AACvE,WAAO,KAAK,QAAQ,cAAc,EAAC,iBAAiB,KAAI,CAAC;AAAA,EAC7D;AAAA,EAEA,aAAa,OAAe,iBAA4C;AACpE,WAAO,KAAK,QAAQ,gBAAgB,EAAC,OAAO,gBAAe,CAAC;AAAA,EAChE;AAAA,EAEA,aAAa,iBAAyB,YAAuC;AACzE,WAAO,KAAK,QAAQ,gBAAgB,EAAC,iBAAiB,WAAU,CAAC;AAAA,EACrE;AAAA,EAEA,YAAY,WAAmB,UAAqC;AAChE,WAAO,KAAK,QAAQ,eAAe,EAAC,WAAW,SAAQ,CAAC;AAAA,EAC5D;AAAA,EAEA,aACI,mBAA2B,iBAAyB,aAAqB,kBACxD;AACjB,WAAO,KAAK,QAAQ,gBAAgB,EAAC,mBAAmB,iBAAiB,aAAa,iBAAgB,CAAC;AAAA,EAC3G;AAAA,EAEA,aACI,mBAA2B,iBAAyB,aAAqB,oBACxD;AACjB,UAAM,aAAa,mBAAmB;AAAA,MAClC,CAAC,EAAC,MAAM,WAAW,KAAI,OAAO,EAAC,MAAM,WAAW,MAAM,QAAQ,GAAE;AAAA,IACpE;AAEA,WAAO,KAAK,QAAQ,gBAAgB;AAAA,MAChC;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa,oBAAoB;AAAA,IACzE,CAAC;AAAA,EACL;AAAA,EAEA,WAAW,aAAwC;AAC/C,WAAO,KAAK,QAAQ,cAAc,EAAC,YAAW,CAAC;AAAA,EACnD;AAAA,EAEA,SAAS,cAAsB,YAAoB,WAAqB,MAAiC;AACrG,WAAO,KAAK,QAAQ,YAAY,EAAC,MAAM,cAAc,IAAI,YAAY,WAAW,KAAI,CAAC;AAAA,EACzF;AAAA,EAEA,SAAS,OAAe,mBAA8C;AAClE,WAAO,KAAK,QAAQ,YAAY,EAAC,OAAO,kBAAiB,CAAC;AAAA,EAC9D;AAAA,EAEU,QAAQ,MAAc,MAA8B;AAC1D,WAAO,EAAC,SAAS,KAAK,UAAU,MAAM,KAAI;AAAA,EAC9C;AACJ;AAEO,IAAM,kBAAN,MAAsB;AAAA,EAGzB,YAAqB,UAAkB;AAAlB;AACjB,SAAK,UAAU,IAAI,cAAc,QAAQ;AAAA,EAC7C;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAuD;AACjH,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,eAAe,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,YAAY,eAA2C,UAAgD;AACzG,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,QAAQ,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,WAAW,eAA2C,iBAAyB,gBAAsD;AACvI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,WAAW,iBAAiB,cAAc,CAAC;AAAA,EAClG;AAAA,EAEA,MAAM,aAAa,eAA2C,gBAAwB,cAAoD;AACtI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,gBAAgB,YAAY,CAAC;AAAA,EACjG;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAyB,gBAAsD;AACzI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,iBAAiB,cAAc,CAAC;AAAA,EACpG;AAAA,EAEA,MAAM,aAAa,eAA2C,6BAAqE;AAC/H,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,2BAA2B,CAAC;AAAA,EAChG;AAAA,EAEA,MAAM,aAAa,eAA2C,OAAe,oBAA0D;AACnI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,OAAO,kBAAkB,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAM,UACF,eAA2C,OAAe,aAAqB,UAAkB,eACrE;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,UAAU,OAAO,aAAa,UAAU,aAAa,CAAC;AAAA,EAC7G;AAAA,EAEA,MAAM,UAAU,eAA2C,aAAqB,UAAgD;AAC5H,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,UAAU,aAAa,QAAQ,CAAC;AAAA,EACvF;AAAA,EAEA,MAAM,YAAY,eAA2C,UAAgD;AACzG,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,QAAQ,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,aACF,eAA2C,iBAAyB,YAAoB,OAC5D;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,iBAAiB,YAAY,KAAK,CAAC;AAAA,EACvG;AAAA,EAEA,MAAM,UACF,eAA2C,QAAgB,iBAAyB,cACpF,qBAA+B,iBAA2B,YAAoB,MAClD;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAQ;AAAA,MAAiB;AAAA,MAAc;AAAA,MAAqB;AAAA,MAAiB;AAAA,MAAY;AAAA,IAC7F,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,YACF,eAA2C,QAAgB,WAC3D,kBAA4B,qBAA+B,MAC/B;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,QAAQ,WAAW,kBAAkB,qBAAqB,IAAI,CAAC;AAAA,EAClI;AAAA,EAEA,MAAM,YACF,eAA2C,oBAA4B,iBAAyB,aAChG,cAAuB,UAAmB,YAAoB,gBAClC;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAoB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,IAC1F,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,aACF,eAA2C,oBAA4B,iBAAyB,aAChG,cAAuB,UAAmB,YAAoB,gBAA8B,cAChE;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAoB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,MAAgB;AAAA,IAC1G,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,aACF,eAA2C,oBAC3C,iBAAyB,aAAqB,eAClB;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,oBAAoB,iBAAiB,aAAa,aAAa,CAAC;AAAA,EACpI;AAAA,EAEA,MAAM,aAAa,eAA2C,UAAgD;AAC1G,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,QAAQ,CAAC;AAAA,EAC7E;AAAA,EAEA,MAAM,YACF,eAA2C,mBAA2B,iBAAyB,aACnE;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,mBAAmB,iBAAiB,WAAW,CAAC;AAAA,EACnH;AAAA,EAEA,MAAM,aACF,eAA2C,mBAC3C,iBAAyB,aAAqB,yBAClB;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,IACrD,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAuD;AACjH,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,eAAe,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,KAAK,eAAyE;AAChF,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,aACF,eAA2C,mBAA2B,iBAAyB,aACnE;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,mBAAmB,iBAAiB,WAAW,CAAC;AAAA,EACpH;AAAA,EAEA,MAAM,UACF,eAA2C,mBAA2B,iBAAyB,aAAqB,aACpH,iBAAyB,gBAA8B,cAA4B,gBACvD;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAAa;AAAA,MAAiB;AAAA,MAAgB;AAAA,MAAc;AAAA,IACjH,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,YAAY,eAA2C,OAAe,UAAgD;AACxH,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,OAAO,QAAQ,CAAC;AAAA,EACnF;AAAA,EAEA,MAAM,YACF,eAA2C,mBAC3C,iBAAyB,aAAqB,gBAClB;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,mBAAmB,iBAAiB,aAAa,cAAc,CAAC;AAAA,EACnI;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAuD;AACjH,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,eAAe,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,WAAW,eAA2C,iBAAyB,mBAAyD;AAC1I,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,WAAW,iBAAiB,iBAAiB,CAAC;AAAA,EACrG;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAyB,mBAAyD;AAC5I,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,iBAAiB,iBAAiB,CAAC;AAAA,EACvG;AAAA,EAEA,MAAM,aACF,eAA2C,mBAC3C,aAAqB,UAAkB,kBACX;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,mBAAmB,aAAa,UAAU,gBAAgB,CAAC;AAAA,EAC/H;AAAA,EAEA,MAAM,WAAW,eAA2C,iBAAyB,MAAkD;AACnI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,WAAW,iBAAiB,IAAI,CAAC;AAAA,EACxF;AAAA,EAEA,MAAM,aAAa,eAA2C,OAAe,iBAAuD;AAChI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,OAAO,eAAe,CAAC;AAAA,EAC3F;AAAA,EAEA,MAAM,aAAa,eAA2C,iBAAyB,YAAkD;AACrI,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,iBAAiB,UAAU,CAAC;AAAA,EAChG;AAAA,EAEA,MAAM,YAAY,eAA2C,WAAmB,UAAgD;AAC5H,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,YAAY,WAAW,QAAQ,CAAC;AAAA,EACvF;AAAA,EAEA,MAAM,aACF,eAA2C,mBAC3C,iBAAyB,aAAqB,kBAClB;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,aAAa,mBAAmB,iBAAiB,aAAa,gBAAgB,CAAC;AAAA,EACtI;AAAA,EAEA,MAAM,aACF,eAA2C,mBAC3C,iBAAyB,aAAqB,oBAClB;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ;AAAA,MAC/C;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,IACrD,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,WAAW,eAA2C,aAAmD;AAC3G,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,WAAW,WAAW,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,SACF,eAA2C,cAAsB,YAAoB,WAAqB,MAC9E;AAC5B,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,SAAS,cAAc,YAAY,WAAW,IAAI,CAAC;AAAA,EAC1G;AAAA,EAEA,MAAM,SAAS,eAA2C,OAAe,mBAAyD;AAC9H,WAAO,KAAK,WAAW,eAAe,KAAK,QAAQ,SAAS,OAAO,iBAAiB,CAAC;AAAA,EACzF;AAAA,EAEU,WAAW,eAA2C,QAAgD;AAC5G,WAAO,CAAC,EAAC,SAAS,OAAO,SAAS,MAAM,OAAO,MAAM,eAAe,MAAM,OAAO,KAAI,CAAC;AAAA,EAC1F;AAAA,EAEU,MAAM,eAA2C,MAAc,MAAgC;AACrG,WAAO,CAAC,EAAC,SAAS,KAAK,UAAU,MAAM,eAAe,KAAI,CAAC;AAAA,EAC/D;AACJ;AAEO,SAAS,eAAe,KAAU,QAAoC;AACzE,QAAM,QAAkC,CAAC;AACzC,QAAM,SAAuB,CAAC;AAE9B,aAAW,OAAO,QAAQ;AACtB,UAAM,IAAI,IAAI,IAAI,IAAI;AAAA,EAC1B;AAEA,QAAM,OAAO,OAAO,KAAK,GAAG;AAC5B,aAAW,OAAO,MAAM;AACpB,QAAI,OAAO,MAAM,GAAG,MAAM,aAAa;AACnC,YAAM,IAAI,mBAAmB,6BAA6B;AAAA,IAC9D;AAEA,WAAO,KAAK,EAAC,KAAK,OAAO,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAC,CAAC;AAAA,EACpD;AAEA,SAAO;AACX;AAMO,SAAS,4BAA4B,MAAmD;AAC3F,QAAM,SAAiC,CAAC;AAExC,aAAW,OAAO,MAAM;AACpB,UAAM,MAAM,SAAS,MAAM,IAAI,MAAM,IAAI;AACzC,UAAM,QAAQ,WAAW,MAAM,IAAI,QAAQ,IAAI;AAK/C,QAAI,CAAC,UAAU,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG;AAC5C,aAAO,eAAe,QAAQ,KAAK,EAAE,OAAO,OAAO,MAAM,CAAC,CAAC,GAAG,YAAY,MAAM,UAAU,MAAM,cAAc,KAAK,CAAC;AAAA,IACxH,WAAW,CAAC,aAAa,YAAY,EAAE,QAAQ,MAAM,CAAC,CAAC,KAAK,GAAG;AAC3D,aAAO,eAAe,QAAQ,KAAK;AAAA,QAC/B,OAAQ,MAAM,CAAC,EAAe,IAAI,CAAC,UAAU,OAAO,KAAK,CAAC;AAAA,QAC1D,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,cAAc;AAAA,MAClB,CAAC;AAAA,IACL,OAAO;AACH,aAAO,eAAe,QAAQ,KAAK,EAAE,OAAO,MAAM,CAAC,GAAG,YAAY,MAAM,UAAU,MAAM,cAAc,KAAK,CAAC;AAAA,IAChH;AAAA,EACJ;AAEA,SAAO;AACX;;;AChlBA,IAAqB,0BAArB,cAAqD,gBAAgB;AAAA,EAGjE,YAAY,UAA2B,KAAkB;AACrD,UAAM,QAAQ;AADqB;AAGnC,SAAK,SAAS,IAAI,UAAU;AAAA,EAChC;AAAA,EAEA,MAAM,UACF,eAA2C,QAAgB,iBAC3D,cAAuB,qBAA+B,iBAA2B,YAAoB,MACzE;AAC5B,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAQ;AAAA,MAAiB;AAAA,MAAc;AAAA,MAAqB;AAAA,MAAiB;AAAA,MAC5F,eAAe,OAAO,MAAM,KAAK,QAAQ,iBAAiB;AAAA,IAC9D;AAAA,EACJ;AAAA,EAEA,MAAM,YACF,eAA2C,oBAC3C,iBAAyB,aACzB,cAAuB,UAAmB,YAAoB,gBAClC;AAC5B,UAAM,SAAS,MAAM,KAAK,IAAI,UAAU,iBAAiB,WAAW;AAEpE,UAAM,0BAA0B,eAAe,gBAAgB,OAAO,MAAM;AAE5E,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAoB;AAAA,MAAiB;AAAA,MACpD;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,MAAM,UACF,eAA2C,mBAC3C,iBAAyB,aAAqB,aAC9C,WAAmB,gBAAwB,cAAsB,gBACrC;AAC5B,UAAM,SAAS,MAAM,KAAK,IAAI,UAAU,iBAAiB,WAAW;AAEpE,UAAM,0BAA0B,eAAe,gBAAgB,OAAO,MAAM;AAC5E,UAAM,wBAAwB,eAAe,cAAc,OAAO,MAAM;AAExE,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAChE;AAAA,MAAW;AAAA,MAAyB;AAAA,MAAuB;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAM,aACF,eAA2C,mBAA2B,OAAe,UAAkB,cAC3E;AAC5B,UAAM,QAAQ,MAAM,KAAK,IAAI,SAAS,QAAQ;AAE9C,UAAM,wBAAwB,eAAe,cAAc,MAAM,OAAO,MAAM;AAE9E,WAAO,MAAM,aAAa,eAAe,mBAAmB,OAAO,UAAU,qBAAqB;AAAA,EACtG;AAAA,EAEA,MAAM,WAAW,eAA2C,iBAAyB,MAA4C;AAC7H,UAAM,QAAQ,eAAe,OAAO,MAAM,KAAK,QAAQ,iBAAiB;AAExE,WAAO,MAAM,WAAW,eAAe,iBAAiB,KAAK;AAAA,EACjE;AACJ;;;AClEA,IAAqB,qBAArB,cAAgD,gBAAgB;AAAA,EAC5D,YAAqB,KAAa;AAC9B,UAAM,IAAI,QAAQ;AADD;AAAA,EAErB;AAAA,EAEA,MAAM,UACF,eAA2C,QAAgB,iBAC3D,cAAuB,qBAA+B,iBAA2B,YAAoB,MACzE;AAC5B,UAAM,SAAS,MAAM,KAAK,IAAI,OAAO;AAErC,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAQ;AAAA,MAAiB;AAAA,MAAc;AAAA,MAAqB;AAAA,MAAiB;AAAA,MAC5F,eAAe,MAAM,OAAO,iBAAiB;AAAA,IACjD;AAAA,EACJ;AAAA,EAEA,MAAM,YACF,eAA2C,oBAC3C,iBAAyB,aACzB,cAAuB,UAAmB,YAAoB,gBAClC;AAC5B,UAAM,SAAS,MAAM,KAAK,IAAI,UAAU,iBAAiB,WAAW;AAEpE,UAAM,0BAA0B,eAAe,gBAAgB,MAAM,OAAO,UAAU,CAAC;AAEvF,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAoB;AAAA,MAAiB;AAAA,MACpD;AAAA,MAAc;AAAA,MAAU;AAAA,MAAY;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,MAAM,UACF,eAA2C,mBAC3C,iBAAyB,aAAqB,aAC9C,WAAmB,gBAAwB,cAAsB,gBACrC;AAC5B,UAAM,WAAW,MAAM,KAAK,IAAI,YAAY,iBAAiB,OAAO,WAAW,CAAC;AAEhF,UAAM,0BAA0B,eAAe,gBAAgB,OAAO,MAAM,SAAS,OAAO,GAAG,UAAU,CAAC;AAC1G,UAAM,wBAAwB,eAAe,cAAc,OAAO,MAAM,SAAS,OAAO,GAAG,UAAU,CAAC;AAEtG,WAAO,MAAM;AAAA,MACT;AAAA,MAAe;AAAA,MAAmB;AAAA,MAAiB;AAAA,MAAa;AAAA,MAChE;AAAA,MAAW;AAAA,MAAyB;AAAA,MAAuB;AAAA,IAC/D;AAAA,EACJ;AAAA,EAEA,MAAM,aACF,eAA2C,mBAA2B,OAAe,UAAkB,cAC3E;AAC5B,UAAM,QAAQ,MAAM,KAAK,IAAI,SAAS,OAAO,QAAQ;AACrD,UAAM,SAAS,MAAM,MAAM,OAAO;AAElC,UAAM,wBAAwB,eAAe,cAAc,MAAM,OAAO,UAAU,CAAC;AAEnF,WAAO,MAAM,aAAa,eAAe,mBAAmB,OAAO,UAAU,qBAAqB;AAAA,EACtG;AAAA,EAEA,MAAM,WAAW,eAA2C,iBAAyB,MAA4C;AAC7H,UAAM,QAAQ,eAAe,OAAO,MAAM,KAAK,IAAI,OAAO,GAAG,iBAAiB;AAE9E,WAAO,MAAM,WAAW,eAAe,iBAAiB,KAAK;AAAA,EACjE;AACJ;;;ACpEA,IAAqB,WAArB,cAAsC,MAAM;AAAA,EAGxC,YAAqB,SAAuB,QAAgB;AACxD,UAAM,OAAO;AADI;AAAuB;AAF5C,sBAAa;AAAA,EAIb;AACJ;;;ACyBA,SAAS,iBAAiB,SAA+B,MAAyC;AAC9F,QAAM,aAAsC,CAAC;AAE7C,aAAW,OAAO,MAAM;AACpB,UAAM,WAAW,IAAI,QAAQ;AAE7B,QAAI,OAAO,IAAI,UAAU,UAAU;AAC/B,iBAAW,WAAW,aAAa,IAAI,GAAG,IAAI,OAAO,IAAI,KAAK;AAAA,IAClE,WAAW,OAAO,IAAI,UAAU,WAAW;AACvC,iBAAW,WAAW,WAAW,IAAI,GAAG,IAAI,IAAI,QAAQ,SAAS;AAAA,IACrE,OAAO;AACH,iBAAW,WAAW,MAAM,IAAI,GAAG,IAAI,IAAI;AAAA,IAC/C;AAAA,EACJ;AAEA,SAAO,OAAO,OAAO,CAAC,GAAG,SAAS,UAAU;AAChD;AAEA,IAAqB,cAArB,MAAiC;AAAA,EAQ7B,YAAY,UAAkB,WAAmB,MAAe;AAC5D,SAAK,WAAW;AAChB,SAAK,YAAY;AAEjB,QAAI,KAAK,OAAO;AACZ,WAAK,eAAe,KAAK;AAAA,IAC7B,OAAO;AAGH,WAAK,eAAsB,WAAW,MAAM,KAAK,UAAU;AAAA,IAC/D;AAEA,SAAK,UAAU,YAAY;AACvB,aAAO,IAAI,yBAAyB,MAAM,KAAK,UAAU,GAAG,UAAU,IAAI;AAAA,IAC9E,GAAG;AAAA,EACP;AAAA,EAEA,MAAM,YAA8B;AAChC,WAAO,MAAM,KAAK,cAAuB,cAAc,CAAC,CAAC;AAAA,EAC7D;AAAA,EAEA,MAAM,UAAU,UAA2B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAAK,OAAoB,CAAC,GAAsB;AAC7H,WAAO,MAAM,KAAK,cAAc,cAAc,EAAC,MAAM,OAAO,GAAG,iBAAiB,SAAS,IAAI,EAAC,CAAC;AAAA,EACnG;AAAA,EAEA,MAAM,YAAY,SAA0B,OAAoB,CAAC,GAAoB;AACjF,WAAO,MAAM,KAAK,cAAc,cAAc,iBAAiB,SAAS,IAAI,CAAC;AAAA,EACjF;AAAA,EAEA,MAAM,SAAS,IAA6B;AACxC,WAAO,MAAM,KAAK,cAAc,gBAAgB,IAAI,CAAC,CAAC;AAAA,EAC1D;AAAA,EAEA,MAAM,cAAc,IAAkC;AAClD,WAAO,MAAM,KAAK,cAAc,gBAAgB,KAAK,UAAU,CAAC,CAAC;AAAA,EACrE;AAAA,EAEA,MAAM,aAAa,IAAY,OAAe,GAAG,QAAgB,KAAK,QAAgB,QAAyB;AAC3G,WAAO,MAAM,KAAK,cAAc,gBAAgB,KAAK,SAAS,EAAC,MAAM,OAAO,MAAK,CAAC;AAAA,EACtF;AAAA,EAEA,MAAM,eAAe,UAA+B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAA6B;AACnH,WAAO,MAAM,KAAK,cAAc,mBAAmB,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,iBAAiB,UAA+B,CAAC,GAAoB;AACvE,WAAO,MAAM,KAAK,cAAc,mBAAmB,OAAO;AAAA,EAC9D;AAAA,EAEA,MAAM,cAAc,MAAoC;AACpD,WAAO,MAAM,KAAK,cAAc,qBAAqB,MAAM,CAAC,CAAC;AAAA,EACjE;AAAA,EAEA,MAAM,mBAAmB,MAAyC;AAC9D,WAAO,MAAM,KAAK,cAAc,qBAAqB,OAAO,UAAU,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,kBAAkB,MAAc,OAAe,GAAG,QAAgB,KAAK,QAAgB,QAAyB;AAClH,WAAO,MAAM,KAAK,cAAc,qBAAqB,OAAO,SAAS,EAAC,MAAM,OAAO,MAAK,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAM,WAAW,UAA2B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAA4B;AAC1G,WAAO,MAAM,KAAK,cAAc,eAAe,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,aAAa,UAA2B,CAAC,GAAoB;AAC/D,WAAO,MAAM,KAAK,cAAc,eAAe,OAAO;AAAA,EAC1D;AAAA,EAEA,MAAM,UAAU,YAAoB,MAAmC;AACnE,WAAO,MAAM,KAAK,cAAc,iBAAiB,aAAa,MAAM,MAAM,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,eAAe,YAAoB,MAAqC;AAC1E,WAAO,MAAM,KAAK,cAAc,iBAAiB,aAAa,MAAM,OAAO,UAAU,CAAC,CAAC;AAAA,EAC3F;AAAA,EAEA,MAAM,cAAc,YAAoB,MAAc,OAAe,GAAG,QAAgB,KAAK,QAAgB,QAAyB;AAClI,WAAO,MAAM,KAAK,cAAc,iBAAiB,aAAa,MAAM,OAAO,SAAS,EAAC,MAAM,OAAO,MAAK,CAAC;AAAA,EAC5G;AAAA,EAEA,MAAM,aAAa,UAA6B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAAK,OAAoB,CAAC,GAAyB;AACrI,WAAO,MAAM,KAAK,cAAc,iBAAiB,EAAC,MAAM,OAAO,GAAG,iBAAiB,SAAS,IAAI,EAAC,CAAC;AAAA,EACtG;AAAA,EAEA,MAAM,eAAe,UAA6B,CAAC,GAAG,OAAoB,CAAC,GAAoB;AAC3F,WAAO,MAAM,KAAK,cAAc,iBAAiB,iBAAiB,SAAS,IAAI,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,YAAY,YAAoB,IAAgC;AAClE,WAAO,MAAM,KAAK,cAAc,mBAAmB,aAAa,MAAM,IAAI,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,MAAM,iBAAiB,YAAoB,MAAuC;AAC9E,WAAO,MAAM,KAAK,cAAc,mBAAmB,aAAa,MAAM,OAAO,UAAU,CAAC,CAAC;AAAA,EAC7F;AAAA,EAEA,MAAM,gBAAgB,YAAoB,IAAY,OAAe,GAAG,QAAgB,KAAK,QAAgB,QAAyB;AAClI,WAAO,MAAM,KAAK,cAAc,mBAAmB,aAAa,MAAM,KAAK,SAAS,EAAC,MAAM,OAAO,MAAK,CAAC;AAAA,EAC5G;AAAA,EAEA,MAAM,aAAa,UAA6B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAA2B;AAC7G,WAAO,MAAM,KAAK,cAAc,iBAAiB,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAC9E;AAAA,EAEA,MAAM,eAAe,UAA6B,CAAC,GAAoB;AACnE,WAAO,MAAM,KAAK,cAAc,iBAAiB,OAAO;AAAA,EAC5D;AAAA,EAEA,MAAM,UAAU,UAA0B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAAwB;AACpG,WAAO,MAAM,KAAK,cAAc,cAAc,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,YAAY,UAA0B,CAAC,GAAoB;AAC7D,WAAO,MAAM,KAAK,cAAc,cAAc,OAAO;AAAA,EACzD;AAAA,EAEA,MAAM,SAAS,IAA6B;AACxC,WAAO,MAAM,KAAK,cAAc,gBAAgB,IAAI,CAAC,CAAC;AAAA,EAC1D;AAAA,EAEA,MAAM,YAAY,UAA4B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAAwD;AACxI,WAAO,MAAM,KAAK,cAAc,gBAAgB,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAC7E;AAAA,EAEA,MAAM,SAAS,UAA4B,CAAC,GAAG,OAAe,GAAG,QAAgB,KAAwD;AACrI,WAAO,MAAM,KAAK,cAAc,aAAa,EAAC,MAAM,OAAO,GAAG,QAAO,CAAC;AAAA,EAC1E;AAAA,EAEA,MAAM,cAAc,UAA4B,CAAC,GAAoB;AACjE,WAAO,MAAM,KAAK,cAAc,gBAAgB,OAAO;AAAA,EAC3D;AAAA,EAEA,MAAM,WAAW,SAAiB,UAA6C,CAAC,GAA2B;AACvG,WAAO,MAAM,KAAK,cAAc,kBAAkB,SAAS,OAAO;AAAA,EACtE;AAAA,EAEA,MAAM,qBAAqB,SAAiB,YAAsD;AAC9F,WAAO,MAAM,KAAK,cAAc,kBAAkB,UAAU,MAAM,YAAY,CAAC,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,gBAAgB,SAAiB,UAA6C,CAAC,GAA2B;AAC5G,WAAO,MAAM,KAAK,cAAc,eAAe,SAAS,OAAO;AAAA,EACnE;AAAA,EAEA,MAAM,cAAiB,MAAc,MAAuB;AACxD,QAAI,UAAU;AAEd,UAAM,IAAI,KAAK;AACf,UAAM,cAAc,OAAO,KAAK,IAAI,EAAE,IAAI,CAAC,QAAQ;AAC/C,UAAI,QAAQ,KAAK,GAAG;AAEpB,UAAI,UAAU,MAAM;AAChB,gBAAQ;AAAA,MACZ;AAEA,UAAI,UAAU,OAAO;AACjB,gBAAQ;AAAA,MACZ;AAEA,aAAO,MAAM,MAAM,mBAAmB,KAAK;AAAA,IAC/C,CAAC,EAAE,KAAK,GAAG;AAEX,QAAI;AACA,UAAK,YAAY,SAAS,KAAO;AAC7B,mBAAW,MAAM,EAAE,KAAK,WAAW,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,IAAI,MAAM,cAAc,GAAG;AAAA,MACtH,OACK;AACD,mBAAW,MAAM;AAAA,UACb,KAAK,WAAW,MAAM,KAAK,YAAY;AAAA,UACvC;AAAA,YACI,SAAS;AAAA,cACL,UAAU;AAAA,cACV,gBAAgB;AAAA,YACpB;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,KAAK,UAAU,IAAI;AAAA,UAC7B;AAAA,QACJ;AAAA,MACJ;AAEA,aAAO,MAAM,SAAS,KAAK;AAAA,IAC/B,SAAS,GAAQ;AACb,YAAM,IAAI,SAAS,EAAE,SAAS,GAAG;AAAA,IACrC;AAEA,QAAI,SAAS,WAAW,KAAK;AACzB,YAAM,IAAI,SAAS,KAAK,SAAS,SAAS,MAAM;AAAA,IACpD;AAEA,QAAI,CAAC,KAAK,SAAS;AACf,YAAM,IAAI,SAAS,KAAK,SAAS,SAAS,MAAM;AAAA,IACpD;AAEA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,cAAc,MAAc,MAA4B;AAC1D,UAAM,MAAM,MAAM,KAAK,cAAsB,OAAO,WAAW,IAAI;AAEnE,WAAO,SAAS,KAAK,EAAE;AAAA,EAC3B;AACJ;;;ACnQA,IAAqB,WAArB,cAAsC,MAAM;AAAA,EAGxC,YAAY,MAAW;AACnB,QAAI,KAAK,SAAS,KAAK,MAAM,WAAW,KAAK,MAAM,QAAQ,UAAU,KAAK,MAAM,QAAQ,CAAC,EAAE,SAAS;AAChG,YAAM,KAAK,MAAM,QAAQ,CAAC,EAAE,OAAO;AAAA,IACvC,WAAW,KAAK,aAAa,KAAK,UAAU,UAAU,KAAK,UAAU,OAAO,SAAS;AACjF,YAAM,KAAK,UAAU,OAAO,OAAO;AAAA,IACvC,OAAO;AACH,YAAM,KAAK,OAAO;AAAA,IACtB;AAEA,SAAK,OAAO;AAAA,EAChB;AACJ;;;ACdA,IAAqB,cAArB,cAAyC,MAAM;AAE/C;;;ACFA,IAAqB,uBAArB,cAAkD,MAAM;AAExD;;;ACDA,IAAqB,YAArB,MAA+B;AAAA,EAO3B,YAA6B,UAAkB;AAAlB;AACzB,QAAI,SAAS,UAAU,KAAK;AACxB,YAAM,IAAI,UAAU,mBAAmB;AAAA,IAC3C;AACA,SAAK,WAAW,IAAI,WAAW,GAAG;AAElC,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,KAAK;AAC3C,WAAK,SAAS,CAAC,IAAI;AAAA,IACvB;AAEA,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,YAAM,IAAI,SAAS,OAAO,CAAC;AAC3B,YAAM,KAAK,EAAE,WAAW,CAAC;AACzB,UAAI,KAAK,SAAS,EAAE,MAAM,KAAK;AAC3B,cAAM,IAAI,UAAU,IAAI,eAAe;AAAA,MAC3C;AACA,WAAK,SAAS,EAAE,IAAI;AAAA,IACxB;AAEA,SAAK,OAAO,SAAS;AACrB,SAAK,SAAS,SAAS,OAAO,CAAC;AAC/B,SAAK,SAAS,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG;AAChD,SAAK,UAAU,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI;AAAA,EACrD;AAAA,EAEA,OAAO,QAA4B;AAC/B,QAAI,OAAO,WAAW,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,SAAS;AACb,UAAM,OAAO,OAAO;AAEpB,WAAO,WAAW,QAAQ,OAAO,MAAM,MAAM,GAAG;AAC5C;AACA;AAAA,IACJ;AAGA,UAAM,QAAS,OAAO,UAAU,KAAK,UAAU,MAAO;AACtD,UAAM,MAAM,IAAI,WAAW,IAAI;AAE/B,WAAO,WAAW,MAAM;AACpB,UAAI,QAAQ,OAAO,MAAM;AAEzB,UAAI,IAAI;AACR,eAAS,MAAM,OAAO,IAAI,UAAU,KAAK,IAAI,WAAY,QAAQ,IAAK,OAAO,KAAK;AAC9E,iBAAU,MAAM,IAAI,GAAG,MAAO;AAC9B,YAAI,GAAG,IAAK,QAAQ,KAAK,SAAU;AACnC,gBAAS,QAAQ,KAAK,SAAU;AAAA,MACpC;AACA,UAAI,UAAU,GAAG;AACb,cAAM,IAAI,MAAM,gBAAgB;AAAA,MACpC;AACA,eAAS;AACT;AAAA,IACJ;AAGA,QAAI,MAAM,OAAO;AACjB,WAAO,QAAQ,QAAQ,IAAI,GAAG,MAAM,GAAG;AACnC;AAAA,IACJ;AAGA,QAAI,MAAM,KAAK,OAAO,OAAO,MAAM;AACnC,WAAO,MAAM,MAAM,EAAE,KAAK;AACtB,aAAO,KAAK,SAAS,OAAO,IAAI,GAAG,CAAC;AAAA,IACxC;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,QAA4B;AAC/B,UAAM,SAAS,KAAK,aAAa,MAAM;AACvC,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAEA,UAAM,IAAI,MAAM,aAAa,KAAK,OAAO,YAAY;AAAA,EACzD;AAAA;AAAA;AAAA,EAIQ,aAAa,QAAmC;AACpD,QAAI,OAAO,WAAW,GAAG;AACrB,aAAO,IAAI,WAAW,CAAC;AAAA,IAC3B;AACA,QAAI,MAAM;AAEV,QAAI,OAAO,GAAG,MAAM,KAAK;AACrB,aAAO;AAAA,IACX;AAGA,QAAI,SAAS;AACb,QAAI,SAAS;AACb,WAAO,OAAO,GAAG,MAAM,KAAK,QAAQ;AAChC;AACA;AAAA,IACJ;AAGA,UAAM,QAAU,OAAO,SAAS,OAAO,KAAK,SAAU,MAAO;AAC7D,UAAM,OAAO,IAAI,WAAW,IAAI;AAGhC,WAAO,OAAO,GAAG,GAAG;AAEhB,UAAI,QAAQ,KAAK,SAAS,OAAO,WAAW,GAAG,CAAC;AAEhD,UAAI,UAAU,KAAK;AACf,eAAO;AAAA,MACX;AACA,UAAI,IAAI;AACR,eAAS,MAAM,OAAO,IAAI,UAAU,KAAK,IAAI,WAAY,QAAQ,IAAK,OAAO,KAAK;AAC9E,iBAAU,KAAK,OAAO,KAAK,GAAG,MAAO;AACrC,aAAK,GAAG,IAAK,QAAQ,QAAS;AAC9B,gBAAS,QAAQ,QAAS;AAAA,MAC9B;AACA,UAAI,UAAU,GAAG;AACb,cAAM,IAAI,MAAM,gBAAgB;AAAA,MACpC;AACA,eAAS;AACT;AAAA,IACJ;AAGA,QAAI,OAAO,GAAG,MAAM,KAAK;AACrB,aAAO;AAAA,IACX;AAEA,QAAI,MAAM,OAAO;AACjB,WAAO,QAAQ,QAAQ,KAAK,GAAG,MAAM,GAAG;AACpC;AAAA,IACJ;AAEA,UAAM,MAAM,IAAI,WAAW,UAAU,OAAO,IAAI;AAChD,QAAI,KAAK,GAAM,GAAG,MAAM;AAExB,QAAI,IAAI;AACR,WAAO,QAAQ,MAAM;AACjB,UAAI,GAAG,IAAI,KAAK,KAAK;AAAA,IACzB;AAEA,WAAO;AAAA,EACX;AACJ;;;ACxJO,SAAS,cAAc,OAAwB;AAClD,QAAM,QAAkB,CAAC;AACzB,MAAI,IAAI,OAAO,KAAK;AAEpB,MAAI,IAAI,IAAI;AACR,UAAM,IAAI,mBAAmB,4BAA4B;AAAA,EAC7D;AAEA,SAAO,MAAM;AACT,UAAM,OAAO,IAAI;AAEjB,QAAI,KAAK;AAET,QAAI,MAAM,IAAI;AACV,YAAM,KAAK,OAAO,IAAI,CAAC;AAEvB;AAAA,IACJ;AAEA,UAAM,KAAK,OAAO,IAAI,IAAI,GAAG;AAAA,EACjC;AAEA,SAAO,IAAI,WAAW,KAAK;AAC/B;AAKA,IAAM,mBAAmB;AAElB,SAAS,cAAc,OAAmC;AAC7D,MAAI,SAAS;AAEb,WAAS,IAAI,GAAG,MAAM,KAAK;AACvB,QAAI,KAAK,kBAAkB;AACvB,YAAM,IAAI,qBAAqB,uCAAuC;AAAA,IAC1E;AAEA,QAAI,MAAM,YAAY,MAAM,KAAK,QAAQ;AACrC,YAAM,IAAI,qBAAqB,0BAA0B;AAAA,IAC7D;AAEA,UAAM,OAAO,OAAO,MAAM,KAAK,MAAM,QAAQ,CAAC;AAC9C,UAAM,YAAY;AAElB,QAAI,OAAO,MAAM;AACb,eAAS,UAAU,QAAQ,OAAO,IAAI,CAAC;AAEvC;AAAA,IACJ;AAEA,aAAS,WAAW,OAAO,UAAU,OAAO,IAAI,CAAC;AAAA,EACrD;AAEA,SAAO;AACX;AAmCO,SAAS,cAAc,OAAoB;AAC9C,QAAM,IAAI,OAAO,KAAK;AAEtB,MAAI,IAAI,IAAI;AACR,YAAQ,IAAI,MAAM,CAAC,KAAK;AAAA,EAC5B;AAEA,SAAO,IAAI;AACf;AAEO,SAAS,cAAc,OAAoB;AAC9C,QAAM,IAAI,OAAO,KAAK;AAEtB,MAAI,IAAI,OAAO,IAAI;AACf,WAAO,IAAI;AAAA,EACf;AAEA,SAAO,IAAI,KAAK,CAAC,KAAK;AAC1B;AAEA,IAAM,OAAO,IAAI,UAAU,4DAA4D;AAEhF,SAAS,cAAc,MAA0B;AACpD,SAAO,KAAK,OAAO,IAAI;AAC3B;AAEO,SAAS,cAAc,MAA0B;AACpD,SAAO,KAAK,OAAO,IAAI;AAC3B;AAEO,SAAS,WAAW,KAAyB;AAGhD,MAAI,CAAC,sBAAsB,KAAK,GAAG,GAAG;AAClC,UAAM,IAAI,qBAAqB,oBAAoB;AAAA,EACvD;AAEA,QAAM,QAAQ,IAAI,MAAM,OAAO;AAE/B,MAAI,CAAC,OAAO;AACR,WAAO,IAAI,WAAW,CAAC;AAAA,EAC3B;AAEA,SAAO,IAAI,WAAW,MAAM,IAAI,CAAC,SAAS,SAAS,MAAM,EAAE,CAAC,CAAC;AACjE;AAMO,SAAS,mBAAmB,KAA+B;AAE9D,QAAM,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,QAAQ,CAAC,CAAC;AAEzE,MAAI,SAAS;AACb,aAAW,SAAS,KAAK;AACrB,SAAK,IAAI,OAAO,MAAM;AACtB,cAAU,MAAM;AAAA,EACpB;AAEA,SAAO;AACX;;;ACvJA,IAAqB,gBAArB,MAAsD;AAAA,EAGlD,YAA6B,YAAgC;AAAhC;AAF7B,SAAiB,WAAW;AAAA,EAG5B;AAAA,EAEA,YAAY,OAA2B,oBAA6B,OAAY;AAC5E,UAAM,SAAc,CAAC;AAErB,WAAO,MAAM,WAAW,MAAM,KAAK,QAAQ;AACvC,YAAM,aAAa,cAAc,KAAK;AAEtC,UAAI,eAAe,IAAI;AACnB;AAAA,MACJ;AAEA,YAAM,YAAY,KAAK,aAAa,OAAO,UAAU,GAAG,CAAC,iBAAiB;AAE1E,UAAI,WAAW;AAIX,eAAO,eAAe,QAAQ,UAAU,MAAM;AAAA,UAC1C,OAAO,UAAU,MAAM,YAAY,KAAK;AAAA,UACxC,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,cAAc;AAAA,QAClB,CAAC;AAAA,MACL;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,QAAyB;AAC/B,UAAM,OAAqB,CAAC;AAE5B,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC7C,YAAM,YAAY,KAAK,WAAW,CAAC;AAEnC,UAAI,OAAO,OAAO,UAAU,IAAI,MAAM,aAAa;AAC/C;AAAA,MACJ;AAEA,WAAK,KAAK,cAAc,IAAI,KAAK,QAAQ,CAAC;AAC1C,WAAK,KAAK,UAAU,MAAM,UAAU,OAAO,UAAU,IAAI,CAAC,CAAC;AAAA,IAC/D;AAEA,SAAK,KAAK,cAAc,CAAC,CAAC;AAE1B,WAAO,mBAAmB,IAAI;AAAA,EAClC;AAAA,EAEQ,aAAa,YAAoB,aAAsB,MAAoC;AAC/F,UAAM,cAAc,aAAa,KAAK;AAEtC,QAAI,eAAe,KAAK,WAAW,QAAQ;AACvC,UAAI,YAAY;AACZ,cAAM,IAAI,YAAY,2BAA2B;AAAA,MACrD;AAEA;AAAA,IACJ;AAEA,WAAO,KAAK,WAAW,OAAO,WAAW,CAAC;AAAA,EAC9C;AACJ;;;ACvEA,IAAqB,qBAArB,MAAwC;AAAA,EACpC,YAAqB,MAAyB,WAAmB,GAAG;AAA/C;AAAyB;AAAA,EAC9C;AACJ;;;ACQO,SAAS,YAAY,MAA6B;AACrD,MAAI,OAAO,SAAS,UAAU;AAC1B,WAAO,WAAW,KAAK,WAAW,KAAK,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI;AAAA,EACvE;AAEA,MAAI,gBAAgB,YAAY;AAC5B,WAAO;AAAA,EACX;AAEA,SAAO,IAAI,WAAW,IAAI;AAC9B;AAEO,SAAS,UAAU,QAAa,QAA6B;AAChE,QAAM,OAAO,OAAO,UAAU,MAAM;AAGpC,MAAI,kBAAkB,eAAe;AACjC,WAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AAAA,EACxC;AAEA,SAAO;AACX;AAKO,SAAS,YAAY,MAAiB,QAAyC;AAClF,MAAI,QAAQ,YAAY,IAAI;AAE5B,MAAI,kBAAkB,eAAe;AACjC,YAAQ,mBAAmB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;AAAA,EACxD;AAEA,QAAM,QAAQ,IAAI,mBAAmB,OAAO,CAAC;AAE7C,SAAO,OAAO,YAAY,KAAK;AACnC;;;ACzCA,IAAqB,cAArB,MAAoD;AAAA,EAGhD,YAAY,MAAc;AACtB,QAAI,OAAO,YAAY,IAAI,MAAM,aAAa;AAC1C,YAAM,IAAI,YAAY,mBAAmB,IAAI,eAAe;AAAA,IAChE;AAEA,SAAK,SAAS,YAAY,IAAI;AAAA,EAClC;AAAA,EAEA,YAAY,OAAgC;AACxC,WAAO,KAAK,OAAO,YAAY,KAAK;AAAA,EACxC;AAAA,EAEA,UAAU,OAAwB;AAC9B,WAAO,KAAK,OAAO,UAAU,KAAK;AAAA,EACtC;AACJ;;;ACnBA,IAAqB,eAArB,MAAqD;AAAA,EACjD,YAA6B,SAAkB;AAAlB;AAAA,EAC7B;AAAA,EAEA,YAAY,OAAgC;AACxC,UAAM,YAAY,cAAc,KAAK;AAErC,QAAI,YAAY,OAAO,MAAM,KAAK,SAAS,MAAM,QAAQ,GAAG;AACxD,YAAM,IAAI,qBAAqB,6CAA6C;AAAA,IAChF;AAEA,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,QAAe,CAAC;AAEtB,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,YAAM,KAAK,KAAK,QAAQ,YAAY,KAAK,CAAC;AAAA,IAC9C;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,OAA0B;AAChC,UAAM,OAAqB,CAAC,cAAc,MAAM,MAAM,CAAC;AAEvD,eAAW,WAAW,OAAO;AACzB,WAAK,KAAK,KAAK,QAAQ,UAAU,OAAO,CAAC;AAAA,IAC7C;AAEA,WAAO,mBAAmB,IAAI;AAAA,EAClC;AACJ;;;AChBA,SAAS,kBAAkB,UAAkB,QAA+B;AACxE,QAAM,aAAiC,CAAC;AACxC,MAAI,SAAS,OAAO,QAAQ;AAE5B,MAAI,OAAO,WAAW,aAAa;AAC/B,aAAS,CAAC;AAAA,EACd;AAEA,SAAO,OAAO,QAAQ;AAEtB,aAAW,SAAS,QAAQ;AACxB,eAAW,KAAK,EAAC,MAAM,MAAM,MAAM,OAAO,iBAAiB,MAAM,MAAM,MAAM,EAAC,CAAC;AAAA,EACnF;AAEA,SAAO,IAAI,cAAc,UAAU;AACvC;AAEA,SAAS,iBAAiB,MAAc,QAA+B;AACnE,MAAI,KAAK,SAAS,IAAI,GAAG;AACrB,WAAO,IAAI,aAAa,iBAAiB,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,GAAG,MAAM,CAAC;AAAA,EACxF;AAGA,MAAI,KAAK,WAAW,SAAS,KAAK,KAAK,SAAS,GAAG,GAAG;AAClD,UAAM,WAAW,SAAS,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,GAAG,EAAE;AAEhE,QAAI,MAAM,QAAQ,GAAG;AACjB,YAAM,IAAI,YAAY,iBAAiB,IAAI,GAAG;AAAA,IAClD;AAEA,WAAO,kBAAkB,UAAU,MAAM;AAAA,EAC7C;AAEA,SAAO,IAAI,YAAY,IAAI;AAC/B;AAEO,SAAS,aAAa,QAAiC;AAC1D,QAAM,eAA6B,CAAC;AAEpC,aAAW,gBAAgB,QAAQ;AAC/B,UAAM,WAAW,OAAO,aAAa,WAAW,cAAc,IAAI,aAAa;AAE/E,QAAI,OAAO,aAAa,QAAQ,MAAM,aAAa;AAC/C,mBAAa,QAAQ,IAAI,CAAC;AAAA,IAC9B;AAEA,iBAAa,QAAQ,EAAE,KAAK,YAAY;AAAA,EAC5C;AAEA,SAAO,kBAAkB,GAAG,YAAY;AAC5C;AAEA,IAAM,oBAAoB,oBAAI,IAAqB;AACnD,IAAM,kCAAkC;AAOjC,SAAS,mBAAmB,QAAiC;AAChE,QAAM,MAAM,KAAK,UAAU,MAAM;AAEjC,MAAI,SAAS,kBAAkB,IAAI,GAAG;AAEtC,MAAI,CAAC,QAAQ;AACT,aAAS,aAAa,MAAM;AAE5B,QAAI,kBAAkB,QAAQ,iCAAiC;AAC3D,YAAM,YAAY,kBAAkB,KAAK,EAAE,KAAK,EAAE;AAElD,UAAI,cAAc,QAAW;AACzB,0BAAkB,OAAO,SAAS;AAAA,MACtC;AAAA,IACJ;AAEA,sBAAkB,IAAI,KAAK,MAAM;AAAA,EACrC;AAEA,SAAO;AACX;;;AC9FA,IAAqB,gBAArB,MAAmC;AAAA,EAK/B,YAA6B,KAAa,MAAc,MAAuB,QAAiB,MAAM;AAAzE;AACzB,SAAK,OAAO;AAEZ,SAAK,QAAQ,IAAI,QAAQ,OAAO,SAAS,WAAW;AAChD,UAAI,MAAM;AACN,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,YAAI;AACA,kBAAQ,MAAM,IAAI,MAAM,gBAAgB,MAAM,KAAK,CAAC;AAAA,QACxD,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAA0B;AAC5B,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,cAAgC;AAClC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,qBAAwC;AAC1C,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,iBAAoC;AACtC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,YAA6B;AAC/B,WAAO,QAAQ,MAAM,KAAK,OAAO,UAAU;AAAA,EAC/C;AAAA,EAEA,MAAM,OAAqB;AACvB,WAAO,aAAa,MAAM,KAAK,OAAO,iBAAiB,cAAc,MAAM,KAAK,IAAI,OAAO,GAAG,iBAAiB,CAAC;AAAA,EACpH;AAAA,EAEA,MAAM,WAA4B;AAC9B,WAAO;AAAA,MACH,iBAAiB,KAAK;AAAA,MAEtB,QAAQ,MAAM,KAAK,OAAO;AAAA,MAC1B,aAAa,MAAM,KAAK,YAAY;AAAA,MACpC,oBAAoB,MAAM,KAAK,mBAAmB;AAAA,MAClD,gBAAgB,MAAM,KAAK,eAAe;AAAA,MAC1C,WAAW,MAAM,KAAK,UAAU;AAAA,MAEhC,MAAM,MAAM,KAAK,KAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;;;ACzDA,IAAqB,YAArB,MAA+B;AAAA,EAS3B,YAA6B,KAAa,YAAoB,MAAc,MAAmB,QAAiB,MAAM;AAAzF;AAF7B,SAAQ,eAAmD;AAGvD,SAAK,aAAa;AAClB,SAAK,OAAO;AAEZ,SAAK,QAAQ,IAAI,QAAQ,OAAO,SAAS,WAAW;AAChD,UAAI,MAAM;AACN,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,YAAI;AACA,kBAAQ,MAAM,IAAI,MAAM,YAAY,YAAY,MAAM,KAAK,CAAC;AAAA,QAChE,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,cAAc,IAAI,QAAQ,OAAO,SAAS,WAAW;AACtD,UAAI;AACA,gBAAQ,IAAI,cAAc,KAAK,YAAY,QAAW,KAAK,CAAC;AAAA,MAChE,SAAS,GAAG;AACR,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAA2B;AAC7B,WAAO,cAAc,MAAM,KAAK,OAAO,MAAM;AAAA,EACjD;AAAA,EAEA,MAAM,YAAqC;AACvC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA;AAAA;AAAA,EAIA,MAAM,cAA2C;AAC7C,QAAI,CAAC,KAAK,cAAc;AACpB,WAAK,eAAe,KAAK,IAAI,MAAM,uBAAuB,KAAK,YAAY,KAAK,IAAI;AAAA,IACxF;AAEA,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,WAA4B;AAC9B,WAAO;AAAA,MACH,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,MAClB,QAAQ,MAAM,KAAK,UAAU;AAAA,IACjC;AAAA,EACJ;AACJ;;;AC5DA,IAAqB,cAArB,MAAiC;AAAA,EAQ7B,YAA6B,KAAa,YAAoB,IAAY,MAAqB,QAAoB,QAAiB,MAAM;AAA7G;AACzB,SAAK,aAAa;AAClB,SAAK,KAAK;AAEV,SAAK,QAAQ,IAAI,QAAQ,OAAO,SAAS,WAAW;AAChD,UAAI,MAAM;AACN,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,YAAI;AACA,kBAAQ,MAAM,IAAI,MAAM,cAAc,YAAY,IAAI,KAAK,CAAC;AAAA,QAChE,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,UAAU,IAAI,QAAQ,OAAO,SAAS,WAAW;AAClD,UAAI,QAAQ;AACR,gBAAQ,MAAM;AAAA,MAClB,OAAO;AACH,YAAI;AACA,gBAAM,MAAM,MAAM,KAAK;AAEvB,kBAAQ,IAAI,UAAU,KAAK,KAAK,YAAY,IAAI,aAAa,QAAW,KAAK,CAAC;AAAA,QAClF,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAA6B;AAC/B,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,gBAAiC;AACnC,UAAM,SAAS,MAAM,KAAK;AAE1B,WAAO,aAAa,MAAM,KAAK,OAAO,2BAA2B,MAAM,OAAO,OAAO,CAAC;AAAA,EAC1F;AAAA;AAAA;AAAA,EAIA,MAAM,cAA+B;AACjC,UAAM,SAAS,MAAM,KAAK;AAE1B,WAAO,aAAa,MAAM,KAAK,OAAO,yBAAyB,MAAM,OAAO,OAAO,CAAC;AAAA,EACxF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAwB;AAC1B,WAAO,OAAO,OAAO,CAAC,GAAG,MAAM,KAAK,YAAY,GAAG,MAAM,KAAK,cAAc,CAAC;AAAA,EACjF;AAAA,EAEA,MAAM,iBAAmC;AACrC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,aAA+B;AACjC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,YAA6B;AAC/B,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,cAA+B;AACjC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,WAA4B;AAC9B,WAAO;AAAA,MACH,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,MAElB,QAAQ,OAAO,MAAM,KAAK,OAAO,GAAG,SAAS;AAAA,MAC7C,eAAe,MAAM,KAAK,cAAc;AAAA,MACxC,aAAa,MAAM,KAAK,YAAY;AAAA,MACpC,cAAc,MAAM,KAAK,eAAe;AAAA,MACxC,UAAU,MAAM,KAAK,WAAW;AAAA,MAChC,WAAW,MAAM,KAAK,UAAU;AAAA,MAChC,aAAa,MAAM,KAAK,YAAY;AAAA,IACxC;AAAA,EACJ;AACJ;;;AC5FA,IAAqB,WAArB,MAA8B;AAAA,EAS1B,YACqB,KACjB,OACA,IACA,MACA,YACA,QACA,UACA,QAAiB,MACnB;AARmB;AASjB,SAAK,QAAQ;AACb,SAAK,KAAK;AAEV,SAAK,QAAQ,IAAI,QAAQ,OAAO,SAAS,WAAW;AAChD,UAAI,MAAM;AACN,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,YAAI;AACA,kBAAQ,MAAM,IAAI,MAAM,WAAW,OAAO,IAAI,KAAK,CAAC;AAAA,QACxD,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,YAAY,IAAI,QAAQ,OAAO,SAAS,WAAW;AACpD,UAAI,UAAU;AACV,gBAAQ,QAAQ;AAAA,MACpB,OAAO;AACH,YAAI;AACA,gBAAM,MAAM,MAAM,KAAK;AAEvB,cAAI,OAAO,IAAI,WAAW,IAAI,GAAG;AAC7B,mBAAO,QAAQ,IAAI;AAAA,UACvB;AAEA,kBAAQ,IAAI,YAAY,KAAK,IAAI,iBAAiB,IAAI,aAAa,QAAW,QAAW,KAAK,CAAC;AAAA,QACnG,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,cAAc,IAAI,QAAQ,OAAO,SAAS,WAAW;AACtD,UAAI,YAAY;AACZ,gBAAQ,UAAU;AAAA,MACtB,OAAO;AACH,YAAI;AACA,gBAAM,MAAM,MAAM,KAAK;AAEvB,kBAAQ,IAAI,cAAc,KAAK,IAAI,iBAAiB,QAAW,KAAK,CAAC;AAAA,QACzE,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,UAAU,IAAI,QAAQ,OAAO,SAAS,WAAW;AAClD,UAAI,QAAQ;AACR,gBAAQ,MAAM;AAAA,MAClB,OAAO;AACH,YAAI;AACA,gBAAM,MAAM,MAAM,KAAK;AAEvB,kBAAQ,IAAI,UAAU,KAAK,IAAI,iBAAiB,IAAI,aAAa,QAAW,KAAK,CAAC;AAAA,QACtF,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,WAAwC;AAC1C,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,aAAqC;AACvC,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,SAA6B;AAC/B,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,eAAkC;AACpC,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,gBAAiC;AACnC,UAAM,SAAS,MAAM,KAAK,OAAO;AACjC,UAAM,MAAM,MAAM,KAAK;AAEvB,WAAO,YAAY,IAAI,2BAA2B,MAAM,OAAO,OAAO,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAM,cAA+B;AACjC,UAAM,SAAS,MAAM,KAAK,OAAO;AACjC,UAAM,MAAM,MAAM,KAAK;AAEvB,WAAO,YAAY,IAAI,yBAAyB,MAAM,OAAO,OAAO,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OAAwB;AAC1B,UAAM,cAAc,MAAM,KAAK,YAAY;AAC3C,UAAM,gBAAgB,MAAM,KAAK,cAAc;AAE/C,UAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAM,eAAe,WAAW,MAAM,SAAS,KAAK,IAAI,CAAC;AAEzD,WAAO,OAAO,OAAO,CAAC,GAAG,aAAa,eAAe,YAAY;AAAA,EACrE;AAAA,EAEA,MAAM,WAA4B;AAC9B,UAAM,WAAW,MAAM,KAAK,SAAS;AACrC,UAAM,aAAa,MAAM,KAAK,WAAW;AACzC,UAAM,SAAS,MAAM,KAAK,OAAO;AAEjC,WAAO;AAAA,MACH,UAAU,KAAK;AAAA,MAEf,YAAY,MAAM,WAAW,SAAS;AAAA,MACtC,QAAQ,MAAM,OAAO,SAAS;AAAA,MAC9B,UAAU,WAAW,MAAM,SAAS,SAAS,IAAI;AAAA,MAEjD,cAAc,MAAM,KAAK,aAAa;AAAA,MACtC,eAAe,MAAM,KAAK,cAAc;AAAA,MACxC,aAAa,MAAM,KAAK,YAAY;AAAA,MACpC,MAAM,MAAM,KAAK,KAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;;;ACjJO,IAAM,cAAN,MAAoC;AAAA,EAGvC,cAAc;AACV,SAAK,QAAQ,CAAC;AAAA,EAClB;AAAA,EAEA,IAAa,KAAuB;AAChC,UAAM,MAAM,KAAK,MAAM,GAAG;AAE1B,QAAI,OAAO,QAAQ,aAAa;AAC5B,aAAO;AAAA,IACX;AAEA,UAAM,CAAC,OAAO,OAAO,IAAI;AAEzB,QAAI,oBAAI,KAAK,IAAI,SAAS;AACtB,aAAO,KAAK,MAAM,GAAG;AACrB,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,KAAa,OAAY,SAAuB;AAChD,UAAM,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO;AAE7C,SAAK,MAAM,GAAG,IAAI,CAAC,OAAO,OAAO;AAAA,EACrC;AAAA,EAEA,OAAO,KAAmB;AACtB,WAAO,KAAK,MAAM,GAAG;AAAA,EACzB;AACJ;;;ACoBA,IAAqB,WAArB,MAA8B;AAAA,EAG1B,cAAc;AACV,SAAK,QAAQ,IAAI,YAAY;AAAA,EACjC;AAAA,EAEA,SAAS,SAAiB,MAAoC;AAC1D,QAAI,MAAM;AACN,WAAK,0BAA0B,IAAI,WAAW,KAAK,uBAAuB;AAC1E,WAAK,4BAA4B,IAAI,WAAW,KAAK,yBAAyB;AAAA,IAClF;AAEA,WAAO,KAAK,OAAkB,UAAU,SAAS,IAAI;AAAA,EACzD;AAAA,EAEA,YAAY,SAAuB;AAC/B,SAAK,OAAO,UAAU,OAAO;AAAA,EACjC;AAAA,EAEA,YAAY,gBAAwB,YAAoB,MAA0C;AAC9F,QAAI,MAAM;AACN,WAAK,4BAA4B,IAAI,WAAW,KAAK,yBAAyB;AAC9E,WAAK,0BAA0B,IAAI,WAAW,KAAK,2BAA2B,CAAC,CAAC;AAAA,IACpF;AAEA,WAAO,KAAK,OAAqB,aAAa,iBAAiB,MAAM,YAAY,IAAI;AAAA,EACzF;AAAA,EAEA,eAAe,gBAAwB,YAA0B;AAC7D,SAAK,OAAO,aAAa,iBAAiB,MAAM,UAAU;AAAA,EAC9D;AAAA,EAEA,UAAU,gBAAwB,YAAoB,MAAsC;AACxF,WAAO,KAAK,OAAmB,WAAW,iBAAiB,MAAM,YAAY,IAAI;AAAA,EACrF;AAAA,EAEA,aAAa,gBAAwB,YAA0B;AAC3D,SAAK,OAAO,WAAW,iBAAiB,MAAM,UAAU;AAAA,EAC5D;AAAA,EAEA,cAAc,gBAAwB,MAA8C;AAChF,WAAO,KAAK,OAAuB,eAAe,gBAAgB,IAAI;AAAA,EAC1E;AAAA,EAEA,iBAAiB,gBAA8B;AAC3C,SAAK,OAAO,eAAe,cAAc;AAAA,EAC7C;AAAA,EAEA,SAAS,SAAiB,MAAoC;AAC1D,WAAO,KAAK,OAAkB,UAAU,SAAS,IAAI;AAAA,EACzD;AAAA,EAEA,YAAY,SAAuB;AAC/B,SAAK,OAAO,UAAU,OAAO;AAAA,EACjC;AAAA,EAEQ,OAAU,WAAgB,YAAiB,MAAoB;AACnE,QAAI,OAAO,SAAS,aAAa;AAC7B,YAAM,QAAQ,KAAK,MAAM,IAAI,YAAY,MAAM,UAAU;AAEzD,aAAO,UAAU,OAAO,OAAO;AAAA,IACnC;AAEA,SAAK,MAAM,IAAI,YAAY,MAAM,YAAY,MAAM,KAAK,KAAK,GAAI;AAEjE,WAAO;AAAA,EACX;AAAA,EAEQ,OAAO,WAAgB,YAAuB;AAClD,SAAK,MAAM,OAAO,YAAY,MAAM,UAAU;AAAA,EAClD;AACJ;;;AC/HA,IAAqB,WAArB,MAA8B;AAAA,EAO1B,YAA6B,KAAa,IAAY,MAAkB,cAA2B,gBAA6B,QAAiB,MAAM;AAA1H;AACzB,SAAK,KAAK;AAEV,SAAK,QAAQ,IAAI,QAAQ,OAAO,SAAS,WAAW;AAChD,UAAI,MAAM;AACN,gBAAQ,IAAI;AAAA,MAChB,OAAO;AACH,YAAI;AACA,kBAAQ,MAAM,KAAK,IAAI,MAAM,WAAW,IAAI,KAAK,CAAC;AAAA,QACtD,SAAS,GAAG;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,gBAAgB,IAAI,QAAQ,OAAO,SAAS,WAAW;AACxD,UAAI,cAAc;AACd,gBAAQ,YAAY;AAAA,MACxB,OAAO;AACH,YAAI;AACA,gBAAM,MAAiB,MAAM,KAAK;AAClC,gBAAM,YAAyB,MAAM,KAAK,IAAI,MAAM,mBAAmB,IAAI,MAAM;AAEjF,iBAAO,QAAQ,IAAI,iBAAiB,IAAI,CAAC,YAAY;AACjD,kBAAM,QAAQ,UAAU,KAAK,CAAC,aAAa,SAAS,aAAa,OAAO;AAExE,mBAAO,QAAQ,IAAI,SAAS,KAAK,KAAK,IAAI,QAAQ,SAAS,OAAO,QAAW,QAAW,QAAW,KAAK,IAAI;AAAA,UAChH,CAAC,CAAC;AAAA,QACN,SAAS,GAAG;AACR,iBAAO,OAAO,CAAC;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ,CAAC;AAED,SAAK,mBAAmB,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC3D,UAAI,gBAAgB;AAChB,gBAAQ,cAAc;AAAA,MAC1B,OAAO;AACH,YAAI;AACA,gBAAM,MAAiB,MAAM,KAAK;AAClC,gBAAM,YAAyB,MAAM,KAAK,IAAI,MAAM,mBAAmB,IAAI,SAAS;AAEpF,iBAAO,QAAQ,IAAI,oBAAoB,IAAI,CAAC,YAAY;AACpD,kBAAM,QAAQ,UAAU,KAAK,CAAC,aAAa,SAAS,aAAa,OAAO;AAExE,mBAAO,QAAQ,IAAI,SAAS,KAAK,KAAK,IAAI,WAAW,SAAS,OAAO,QAAW,QAAW,QAAW,KAAK,IAAI;AAAA,UACnH,CAAC,CAAC;AAAA,QACN,SAAS,GAAG;AACR,iBAAO,OAAO,CAAC;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAA0B;AAC5B,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,YAA6B;AAC/B,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,eAAkD;AACpD,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,kBAAqD;AACvD,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,OAAwB;AAC1B,YAAQ,MAAM,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAM,WAA4B;AAC9B,WAAO;AAAA,MACH,UAAU,KAAK;AAAA,MACf,QAAQ;AAAA,QACJ,SAAS,MAAM,KAAK,OAAO;AAAA,QAC3B,QAAQ,MAAM,QAAQ,KAAK,MAAM,KAAK,aAAa,GAAG,IAAI,OAAO,UAAU,OAAO,UAAU,WAAW,QAAQ,MAAM,MAAM,SAAS,CAAC,CAAC;AAAA,MAC1I;AAAA,MACA,WAAW;AAAA,QACP,SAAS,MAAM,KAAK,UAAU;AAAA,QAC9B,QAAQ,MAAM,QAAQ,KAAK,MAAM,KAAK,gBAAgB,GAAG,IAAI,OAAO,UAAU,OAAO,UAAU,WAAW,QAAQ,MAAM,MAAM,SAAS,CAAC,CAAC;AAAA,MAC7I;AAAA,MACA,MAAM,MAAM,KAAK,KAAK;AAAA,IAC1B;AAAA,EACJ;AACJ;;;AC3FA,IAAqB,WAArB,MAA8B;AAAA,EAM1B,YAA6B,KAA8B,eAAuB,GAAG;AAAxD;AAA8B;AAL3D,SAAQ,WAAkB,CAAC;AAC3B,SAAQ,WAAgB;AAExB,SAAQ,uBAAgD,CAAC;AAAA,EAE8B;AAAA,EAEvF,MAAM,WAAW,OAAe,SAAiB,WAAoB,MAA0B;AAC3F,WAAO,MAAM,KAAK,iBAA4B,UAAU,OAAO,SAAS,CAAC,SAAqB;AAC1F,aAAQ,YAAY,OAAO,SAAS,cAAe,KAAK,IAAI,MAAM,SAAS,SAAS,IAAI,IAAI;AAAA,IAChG,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,mBAAmB,SAAuC;AAC5D,UAAM,OAAO,MAAM,KAAK,eAA0B,UAAU,SAAS,UAAU;AAE/E,WAAO,KAAK,IAAI,CAAC,UAAU;AACvB,aAAkB,KAAK,IAAI,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,IACnE,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,cAAc,gBAAwB,YAAoB,WAAoB,MAA6B;AAC7G,UAAM,SAAS,WAAW,KAAK,IAAI,MAAM,YAAY,gBAAgB,UAAU,IAAI;AAEnF,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAEA,UAAM,CAAC,KAAK,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,MACxC,KAAK,mBAAiC,aAAa,gBAAgB,UAAU;AAAA,MAC7E,KAAK,mBAAiC,cAAc,gBAAgB,UAAU;AAAA,IAClF,CAAC;AAED,QAAI,CAAC,KAAK;AACN,YAAM,IAAI,MAAM,gCAAgC,iBAAiB,MAAM,UAAU;AAAA,IACrF;AAEA,IAAM,IAAK,0BAA0B,aAAa,WAAW,0BAA0B,CAAC;AAExF,WAAqB,KAAK,IAAI,MAAM,YAAY,gBAAgB,YAAY,GAAG;AAAA,EACnF;AAAA,EAEA,MAAM,uBAAuB,gBAAwB,YAAiD;AAClG,UAAM,MAAM,MAAM,KAAK;AAAA,MACnB;AAAA,MAAe;AAAA,MAAgB;AAAA,IACnC;AAEA,WAAO,MAAM,IAAI,cAAc,CAAC;AAAA,EACpC;AAAA,EAEA,MAAM,YAAY,gBAAwB,YAAoB,WAAoB,MAA2B;AACzG,WAAO,MAAM,KAAK,iBAA6B,WAAW,gBAAgB,YAAY,CAAC,SAAsB;AACzG,aAAQ,YAAY,OAAO,SAAS,cAAe,KAAK,IAAI,MAAM,UAAU,gBAAgB,YAAY,IAAI,IAAI;AAAA,IACpH,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,gBAAgB,gBAAwB,WAAoB,MAA+B;AAC7F,WAAO,MAAM,KAAK,iBAAiC,eAAe,KAAK,IAAI,UAAU,gBAAgB,CAAC,SAA0B;AAC5H,aAAQ,YAAY,OAAO,SAAS,cAAe,KAAK,IAAI,MAAM,cAAc,gBAAgB,IAAI,IAAI;AAAA,IAC5G,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,uBAAuB,gBAA+C;AACxE,UAAM,OAAO,MAAM,KAAK,eAA2B,WAAW,gBAAgB,aAAa;AAE3F,WAAO,KAAK,IAAI,CAAC,WAAW;AACxB,aAAmB,KAAK,IAAI,MAAM,UAAU,gBAAgB,OAAO,aAAa,MAAM;AAAA,IAC1F,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,yBAAyB,gBAAiD;AAC5E,UAAM,CAAC,MAAM,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1C,KAAK,eAA6B,aAAa,gBAAgB,aAAa;AAAA,MAC5E,KAAK,eAA6B,cAAc,gBAAgB,aAAa;AAAA,IACjF,CAAC;AAED,UAAM,cAAc,IAAI,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,WAAW,GAAG,IAAI,uBAAuB,CAAC,CAAC;AAE5G,WAAO,KAAK,IAAI,CAAC,aAAa;AAC1B,MAAM,SAAU,0BAA0B,YAAY,IAAI,OAAO,SAAS,WAAW,CAAC,KAAK,CAAC;AAE5F,aAAqB,KAAK,IAAI,MAAM,YAAY,gBAAgB,OAAO,SAAS,WAAW,GAAG,QAAQ;AAAA,IAC1G,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,kBAAkB,gBAAwB,WAAoB,MAAqB;AACrF,QAAI,CAAC,YAAY,CAAC,KAAK,qBAAqB,cAAc,KAAK,KAAK,qBAAqB,cAAc,IAAI,KAAK,KAAK,MAAO,KAAK,IAAI,GAAG;AACpI,YAAM,KAAK,uBAAuB,cAAc;AAChD,YAAM,KAAK,yBAAyB,cAAc;AAAA,IACtD;AAAA,EACJ;AAAA,EAEA,MAAM,WAAW,SAAiB,WAAoB,MAA0B;AAC5E,WAAO,MAAM,KAAK,iBAA4B,UAAU,KAAK,IAAI,UAAU,SAAS,CAAC,SAAqB;AACtG,aAAQ,YAAY,OAAO,SAAS,cAAe,KAAK,IAAI,MAAM,SAAS,SAAS,IAAI,IAAI;AAAA,IAChG,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,mBAAmB,SAAuC;AAC5D,UAAM,OAAgB,MAAM,QAAQ,IAAI;AAAA,MACpC,KAAK;AAAA,QACD;AAAA,QAAU,KAAK,IAAI;AAAA,QAAU;AAAA,QAAgB;AAAA,QAAS;AAAA,QAAS;AAAA,QAAG;AAAA,MACtE;AAAA,MACA,KAAK;AAAA,QACD;AAAA,QAAU,KAAK,IAAI;AAAA,QAAU;AAAA,QAAmB;AAAA,QAAS;AAAA,QAAS;AAAA,QAAG;AAAA,MACzE;AAAA,IACJ,CAAC;AAED,UAAM,SAAsB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;AAElD,WAAO,OAAO,IAAI,CAAC,UAAU;AACzB,aAAkB,KAAK,IAAI,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,IACnE,CAAC;AAAA,EACL;AAAA,EAEQ,UAAgB;AACpB,QAAI,KAAK,UAAU;AACf;AAAA,IACJ;AAEA,SAAK,WAAW,YAAY,YAAY;AACpC,UAAI,KAAK,SAAS,SAAS,GAAG;AAC1B,aAAK,SAAS,MAAM,EAAE;AAAA,MAC1B,OAAO;AACH,sBAAc,KAAK,QAAQ;AAC3B,aAAK,WAAW;AAAA,MACpB;AAAA,IACJ,GAAG,KAAK,KAAK,MAAO,KAAK,YAAY,CAAC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBACV,OAAe,OAAe,OAC9B,gBAAwB,GAAG,UAAkB,IAC5B;AACjB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,WAAK,SAAS,KAAK,YAAY;AAC3B,YAAI;AACA,gBAAM,OAAO,MAAM,KAAK,IAAI,aAAa;AAAA,YACrC,MAAM,KAAK,IAAI;AAAA,YAAU;AAAA,YAAO;AAAA,YAChC,OAAO;AAAA,YAAG,aAAa;AAAA,YAAO,aAAa;AAAA,YAC3C,gBAAgB;AAAA,YAAe,UAAU;AAAA,UAC7C,CAAC;AAED,iBAAO,QAAQ,KAAK,KAAK,WAAW,IAAI,OAAU,KAAK,KAAK,CAAC,CAAC;AAAA,QAClE,SAAS,GAAG;AACR,iBAAO,OAAO,CAAC;AAAA,QACnB;AAAA,MACJ,CAAC;AAED,WAAK,QAAQ;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EAEA,MAAc,iBACV,OAAe,OAAe,OAC9B,SACA,gBAAwB,GAAG,UAAkB,IACnC;AACV,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,UAAI,OAAO,QAAQ;AAEnB,UAAI,SAAS,MAAM;AACf,eAAO,QAAQ,IAAI;AAAA,MACvB;AAEA,WAAK,SAAS,KAAK,YAAY;AAC3B,eAAO,QAAQ;AAEf,YAAI,SAAS,MAAM;AACf,iBAAO,QAAQ,IAAI;AAAA,QACvB;AAEA,YAAI;AACA,gBAAM,UAAU;AAAA,YACZ,MAAM,KAAK,IAAI;AAAA,YAAU;AAAA,YAAO;AAAA,YAChC,OAAO;AAAA,YAAG,aAAa;AAAA,YAAO,aAAa;AAAA,YAC3C,gBAAgB;AAAA,YAAe,UAAU;AAAA,UAC7C;AAEA,gBAAM,OAAO,MAAM,KAAK,IAAI,aAAa,OAAO;AAEhD,cAAI,KAAK,KAAK,WAAW,GAAG;AACxB,mBAAO,OAAO,IAAI,MAAM,uBAAuB,KAAK,UAAU,OAAO,CAAC,CAAC;AAAA,UAC3E;AAEA,iBAAO,QAAW,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC;AAAA,QAC3C,SAAS,GAAG;AACR,iBAAO,OAAO,CAAC;AAAA,QACnB;AAAA,MACJ,CAAC;AAED,WAAK,QAAQ;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EAEA,MAAc,eACV,OAAe,OAAe,UAC9B,aAAqB,IAAI,aAAqB,IAC9C,gBAAwB,GAAG,UAAkB,IACjC;AACZ,WAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC1C,WAAK,SAAS,KAAK,YAAY;AAC3B,cAAM,OAAuC,MAAM,KAAK,IAAI,aAAa;AAAA,UACrE,MAAM,KAAK,IAAI;AAAA,UAAU;AAAA,UAAO;AAAA,UAChC,aAAa;AAAA,UAAY,aAAa;AAAA,UAAY,OAAO;AAAA,UACzD,gBAAgB;AAAA,UAAe,UAAU;AAAA,QAC7C,CAAC;AAED,YAAI,KAAK,QAAQ,kBAAkB,GAAG;AAClC,eAAK,SAAS,QAAQ,YAAY;AAC9B,gBAAI;AACA,oBAAM,OAAO,MAAM,KAAK;AAAA,gBACpB;AAAA,gBAAO;AAAA,gBAAO;AAAA,gBACd,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC,EAAE,QAAQ;AAAA,gBACxC;AAAA,gBAAY;AAAA,gBAAe;AAAA,cAC/B;AAEA,kBAAI,KAAK,SAAS,GAAG;AACjB,qBAAK,MAAM;AAAA,cACf;AAEA,sBAAQ,KAAK,KAAK,OAAO,IAAI,CAAC;AAAA,YAClC,SAAS,GAAG;AACR,qBAAO,CAAC;AAAA,YACZ;AAAA,UACJ,CAAC;AAED,eAAK,QAAQ;AAAA,QACjB,OAAO;AACH,kBAAQ,KAAK,IAAI;AAAA,QACrB;AAAA,MACJ,CAAC;AAED,WAAK,QAAQ;AAAA,IACjB,CAAC;AAAA,EACL;AACJ;;;AC3OA,IAAqB,SAArB,MAA4B;AAAA,EAaxB,YAAY,UAAkB,UAAkB,OAAgB,EAAC,WAAW,EAAC,GAAG;AAC5E,SAAK,WAAW;AAChB,SAAK,WAAW;AAEhB,QAAI,KAAK,OAAO;AACZ,WAAK,eAAe,KAAK;AAAA,IAC7B,OAAO;AAGH,WAAK,eAAsB,WAAW,MAAM,KAAK,UAAU;AAAA,IAC/D;AAEA,SAAK,QAAQ,IAAI,SAAS,MAAM,KAAK,SAAS;AAC9C,SAAK,QAAQ,IAAI,SAAS;AAC1B,SAAK,SAAS,IAAI,mBAAmB,IAAI;AAEzC,SAAK,UAAU,IAAI,SAAS,OAAO,SAAS,WAAW;AACnD,UAAI;AACA,cAAM,OAAO,MAAM,KAAK,aAAa;AAAA,UACjC,MAAM,KAAK;AAAA,UAAU,OAAO,KAAK;AAAA,UAAU,OAAO;AAAA,QACtD,CAAC;AAED,YAAI,KAAK,KAAK,WAAW,GAAG;AACxB,iBAAO,OAAO,gBAAgB;AAAA,QAClC;AAEA,eAAO,QAAQ,KAAK,KAAK,CAAC,CAAC;AAAA,MAC/B,SAAS,GAAG;AACR,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ,EAAE;AAAA,EACN;AAAA,EAEA,MAAM,SAA8B;AAChC,WAAO,MAAM,KAAK;AAAA,EACtB;AAAA,EAEA,MAAM,SAAS,OAAe,IAAY,QAAiB,MAAyB;AAChF,QAAI,CAAC,OAAO;AACR,WAAK,MAAM,YAAY,EAAE;AAAA,IAC7B;AAEA,UAAM,OAAO,MAAM,KAAK,MAAM,WAAW,OAAO,IAAI,KAAK;AAEzD,WAAO,IAAI,SAAS,MAAM,OAAO,IAAI,MAAM,QAAW,QAAW,QAAW,KAAK;AAAA,EACrF;AAAA,EAEA,MAAM,YAAY,gBAAwB,YAAoB,QAAiB,MAA4B;AACvG,QAAI,CAAC,OAAO;AACR,WAAK,MAAM,eAAe,gBAAgB,UAAU;AAAA,IACxD;AAEA,UAAM,OAAO,MAAM,KAAK,MAAM,cAAc,gBAAgB,YAAY,KAAK;AAE7E,WAAO,IAAI,YAAY,MAAM,gBAAgB,YAAY,MAAM,QAAW,KAAK;AAAA,EACnF;AAAA,EAEA,MAAM,cAAc,gBAAwB,QAAiB,MAA8B;AACvF,QAAI,CAAC,OAAO;AACR,WAAK,MAAM,iBAAiB,cAAc;AAAA,IAC9C;AAEA,UAAM,OAAO,MAAM,KAAK,MAAM,gBAAgB,gBAAgB,KAAK;AAEnE,WAAO,IAAI,cAAc,MAAM,gBAAgB,MAAM,KAAK;AAAA,EAC9D;AAAA,EAEA,MAAM,uBAAuB,gBAAgD;AACzE,YAAQ,MAAM,KAAK,MAAM,yBAAyB,cAAc,GAAG,IAAI,CAAC,gBAAgB;AACpF,aAAO,IAAI,YAAY,MAAM,gBAAgB,OAAO,YAAY,WAAW,GAAG,aAAa,MAAS;AAAA,IACxG,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,sBAAsB,gBAA8C;AACtE,YAAQ,MAAM,KAAK,MAAM,uBAAuB,cAAc,GAAG,IAAI,CAAC,cAAc;AAChF,aAAO,IAAI,UAAU,MAAM,gBAAgB,UAAU,aAAa,MAAS;AAAA,IAC/E,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,UAAU,gBAAwB,YAAoB,QAAiB,MAA0B;AACnG,QAAI,CAAC,OAAO;AACR,WAAK,MAAM,aAAa,gBAAgB,UAAU;AAAA,IACtD;AAEA,UAAM,OAAO,MAAM,KAAK,MAAM,YAAY,gBAAgB,YAAY,KAAK;AAE3E,WAAO,IAAI,UAAU,MAAM,gBAAgB,YAAY,MAAM,KAAK;AAAA,EACtE;AAAA,EAEA,MAAM,SAAS,SAAiB,QAAiB,MAAyB;AACtE,QAAI,CAAC,OAAO;AACR,WAAK,MAAM,YAAY,OAAO;AAAA,IAClC;AAEA,UAAM,OAAO,MAAM,KAAK,MAAM,WAAW,SAAS,KAAK;AAEvD,WAAO,IAAI,SAAS,MAAM,SAAS,MAAM,QAAW,QAAW,KAAK;AAAA,EACxE;AAAA,EAEA,MAAM,iBAAiB,SAAsC;AACzD,YAAQ,MAAM,KAAK,MAAM,mBAAmB,OAAO,GAAG,IAAI,CAAC,aAAa;AACpE,aAAO,IAAI,SAAS,MAAM,SAAS,UAAU,UAAU,QAAW,MAAS;AAAA,IAC/E,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,iBAAiB,SAAsC;AACzD,YAAQ,MAAM,KAAK,MAAM,mBAAmB,OAAO,GAAG,IAAI,CAAC,aAAa;AACpE,aAAO,IAAI,SAAS,MAAM,SAAS,SAAS,UAAU,UAAU,QAAW,QAAW,MAAS;AAAA,IACnG,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,uBAAuB,gBAAwB,SAAsC;AACvF,UAAM,KAAK,MAAM,kBAAkB,gBAAgB,IAAI;AAEvD,YAAQ,MAAM,KAAK,MAAM,mBAAmB,OAAO,GAC9C,OAAO,cAAY,SAAS,oBAAoB,cAAc,EAC9D,IAAI,CAAC,aAAa;AACf,aAAO,IAAI,SAAS,MAAM,SAAS,SAAS,UAAU,UAAU,QAAW,QAAW,MAAS;AAAA,IACnG,CAAC;AAAA,EACT;AAAA,EAEA,MAAM,kBAAkB,gBAAwB,QAAiB,MAAqB;AAClF,UAAM,KAAK,MAAM,kBAAkB,gBAAgB,KAAK;AAAA,EAC5D;AAAA,EAEA,MAAM,aAAa;AAAA,IAChB;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO,YAAY;AAAA,IAAI,cAAc;AAAA,IAAI,cAAc;AAAA,IACpE,iBAAiB;AAAA,IAAG,WAAW;AAAA,EACnC,GAAsB;AACjB,WAAO,MAAM,KAAK,SAAS,4BAA4B;AAAA,MACnD;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MACpB;AAAA,MAAa;AAAA,MAAa;AAAA,MAC1B;AAAA,MAAU,OAAO;AAAA,MAAK,SAAS;AAAA,MAAO,YAAY;AAAA,MAAO,MAAM;AAAA,IACnE,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,SAAS,MAAc,MAAyB;AAClD,QAAI;AACJ,QAAI;AAEJ,QAAI;AACA,YAAM,IAAI,KAAK;AAEf,iBAAW,MAAM,EAAE,KAAK,WAAW,MAAM;AAAA,QACrC,MAAM,KAAK,UAAU,IAAI;AAAA,QACzB,QAAQ;AAAA,MACZ,CAAC;AAED,aAAO,MAAM,SAAS,KAAK;AAAA,IAC/B,SAAS,GAAQ;AACb,QAAE,eAAe;AAEjB,YAAM;AAAA,IACV;AAEA,QAAK,KAAK,aAAa,KAAK,UAAU,UAAW,CAAC,SAAS,IAAI;AAC3D,YAAM,IAAI,SAAS,IAAI;AAAA,IAC3B;AAEA,WAAO;AAAA,EACX;AACJ;;;ACtLA,IAAqB,cAArB,MAAwD;AAAA,EACpD,YAAqB,MAAc;AAAd;AAAA,EACrB;AAAA,EAEA,YAAY,OAAgC;AACxC,UAAM,YAAY,KAAK;AAEvB,UAAM,OAAO,MAAM,KAAK,MAAM,MAAM,WAAW,KAAK,MAAM,MAAM,QAAQ;AAExE,QAAI,KAAK,WAAW,KAAK,MAAM;AAC3B,YAAM,IAAI,qBAAqB,4BAA4B;AAAA,IAC/D;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,MAAuB;AAC7B,QAAI,KAAK,WAAW,KAAK,MAAM;AAC3B,YAAM,IAAI,mBAAmB,wCAAwC;AAAA,IACzE;AAEA,WAAO;AAAA,EACX;AACJ;;;ACzBA,IAAqB,gBAArB,cAA2C,YAAY;AAAA,EACnD,cAAc;AACV,UAAM,CAAC;AAAA,EACX;AAAA,EAEA,YAAY,OAAmC;AAC3C,UAAM,OAAmB,MAAM,YAAY,KAAK;AAEhD,WAAO,KAAK,CAAC,MAAM,IAAI,IAAI;AAAA,EAC/B;AAAA,EAEA,UAAU,MAA2B;AACjC,WAAO,MAAM,UAAU,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;AAAA,EACzD;AACJ;;;ACZA,IAAqB,iBAArB,MAA2D;AAAA,EACvD,YAAY,OAAgC;AACxC,UAAM,YAAY,cAAc,KAAK;AAErC,QAAI,YAAY,OAAO,MAAM,KAAK,SAAS,MAAM,QAAQ,GAAG;AACxD,YAAM,IAAI,qBAAqB,+BAA+B;AAAA,IAClE;AAEA,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,YAAY;AAElB,UAAM,OAAO,MAAM,KAAK,MAAM,MAAM,WAAW,QAAQ,MAAM,QAAQ;AAErE,QAAI,KAAK,WAAW,QAAQ;AACxB,YAAM,IAAI,qBAAqB,+BAA+B;AAAA,IAClE;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU,MAAuB;AAC7B,WAAO,mBAAmB,CAAC,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;AAAA,EAChE;AACJ;;;ACzBO,IAAM,aAAN,cAAyB,eAAe;AAAA,EAC3C,YAAY,OAAuC;AAC/C,WAAO,MAAM,YAAY,KAAK;AAAA,EAClC;AAAA,EAEA,UAAU,MAA8B;AACpC,WAAO,MAAM,UAAU,IAAI;AAAA,EAC/B;AACJ;;;ACRA,IAAqB,qBAArB,cAAgD,YAAY;AAAA,EACxD,YAAY,OAA4C;AACpD,UAAM,OAAmB,MAAM,YAAY,KAAK,EAAE,QAAQ;AAC1D,QAAI,IAAI;AAER,eAAW,QAAQ,MAAM;AACrB,UAAI,KAAK;AACT,UAAI,IAAI,OAAO,IAAI;AAAA,IACvB;AAEA,QAAI,KAAK,QAAQ,GAAG;AAChB,aAAO,OAAO,CAAC;AAAA,IACnB;AAEA,WAAO,EAAE,SAAS;AAAA,EACtB;AAAA,EAEA,UAAU,MAAuB;AAC7B,QAAI,IAAI,OAAO,IAAI;AACnB,UAAM,SAAmB,CAAC;AAE1B,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,KAAK;AAChC,aAAO,KAAK,OAAO,IAAI,KAAK,CAAC;AAC7B,UAAI,KAAK;AAAA,IACb;AAEA,WAAO,MAAM,UAAU,IAAI,WAAW,MAAM,CAAC;AAAA,EACjD;AACJ;;;AC/BA,IAAM,KAAK;AAKX,IAAqB,iBAArB,cAA4C,YAAY;AAAA,EACpD,YAA6B,UAAmB;AAC5C,UAAM,WAAW,IAAI,CAAC;AADG;AAAA,EAE7B;AAAA,EAEA,YAAY,OAAmC;AAC3C,QAAI,KAAK,UAAU;AACf,aAAO,GAAG,aAAa,MAAM,YAAY,KAAK,CAAC;AAAA,IACnD;AAEA,WAAO,GAAG,YAAY,MAAM,YAAY,KAAK,CAAC;AAAA,EAClD;AAAA,EAEA,UAAU,MAA0B;AAEhC,QAAI,QAAkB,CAAC;AAEvB,QAAI,KAAK,UAAU;AACf,SAAG,cAAc,OAAO,IAAI;AAE5B,aAAO,MAAM,UAAU,IAAI,WAAW,KAAK,CAAC;AAAA,IAChD;AAEA,OAAG,aAAa,OAAO,IAAI;AAE3B,WAAO,MAAM,UAAU,IAAI,WAAW,KAAK,CAAC;AAAA,EAChD;AACJ;;;AC5BA,IAAqB,aAArB,cAAwC,eAAe;AAAA,EACnD,YAAY,OAAgC;AACxC,WAAO,cAAc,MAAM,YAAY,KAAK,CAAC;AAAA,EACjD;AAAA,EAEA,UAAU,MAA0B;AAChC,WAAO,MAAM,UAAU,cAAc,IAAI,CAAC;AAAA,EAC9C;AACJ;;;ACTA,IAAqB,eAArB,cAA0C,eAAe;AAAA,EACrD,YAAY,OAAgC;AACxC,WAAO,IAAI,YAAY,EAAE,OAAO,MAAM,YAAY,KAAK,CAAC;AAAA,EAC5D;AAAA,EAEA,UAAU,MAA0B;AAChC,WAAO,MAAM,UAAU,IAAI,YAAY,EAAE,OAAO,IAAI,CAAC;AAAA,EACzD;AACJ;;;ACLA,IAAqB,wBAArB,MAAkE;AAAA,EAC9D,YAAqB,MAA+B,UAAmB;AAAlD;AAA+B;AAAA,EACpD;AAAA,EAEA,YAAY,OAA4C;AACpD,QAAI,IAAI,cAAc,KAAK;AAE3B,QAAI,CAAC,KAAK,UAAU;AAChB,UAAI,cAAc,CAAC;AAAA,IACvB;AAEA,QAAI,KAAK,MAAM,OAAO,KAAK,OAAO,KAAK,KAAK,WAAW,IAAI,EAAE,GAAG;AAC5D,YAAM,IAAI,qBAAqB,aAAc,EAAE,SAAS,IAAI,4BAA6B;AAAA,IAC7F;AAEA,QAAI,CAAC,KAAK,YAAY,IAAI,EAAE,MAAM,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI;AAC1D,YAAM,IAAI,qBAAqB,aAAc,EAAE,SAAS,IAAI,4BAA6B;AAAA,IAC7F;AAEA,QAAI,KAAK,QAAQ,GAAG;AAChB,aAAO,OAAO,CAAC;AAAA,IACnB;AAEA,WAAO,EAAE,SAAS;AAAA,EACtB;AAAA,EAEA,UAAU,MAAuB;AAC7B,QAAI,IAAI,OAAO,IAAI;AAEnB,QAAI,KAAK,MAAM,OAAO,KAAK,OAAO,KAAK,KAAK,WAAW,IAAI,EAAE,GAAG;AAC5D,YAAM,IAAI,mBAAmB,aAAc,EAAE,SAAS,IAAI,4BAA6B;AAAA,IAC3F;AAEA,QAAI,CAAC,KAAK,YAAY,IAAI,EAAE,MAAM,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI;AAC1D,YAAM,IAAI,mBAAmB,aAAc,EAAE,SAAS,IAAI,4BAA6B;AAAA,IAC3F;AAEA,QAAI,CAAC,KAAK,UAAU;AAChB,UAAI,cAAc,CAAC;AAAA,IACvB;AAEA,WAAO,cAAc,CAAC;AAAA,EAC1B;AACJ;;;ACvCO,IAAM,cAA6C;AAAA,EACtD,MAAM,IAAI,sBAAsB,GAAG,KAAK;AAAA,EACxC,OAAO,IAAI,sBAAsB,GAAG,KAAK;AAAA,EACzC,OAAO,IAAI,sBAAsB,GAAG,KAAK;AAAA,EACzC,OAAO,IAAI,sBAAsB,GAAG,KAAK;AAAA,EAEzC,OAAO,IAAI,sBAAsB,GAAG,IAAI;AAAA,EACxC,QAAQ,IAAI,sBAAsB,GAAG,IAAI;AAAA,EACzC,QAAQ,IAAI,sBAAsB,GAAG,IAAI;AAAA,EACzC,QAAQ,IAAI,sBAAsB,GAAG,IAAI;AAAA,EAEzC,QAAQ,IAAI,mBAAmB,CAAC;AAAA,EAChC,SAAS,IAAI,mBAAmB,CAAC;AAAA,EACjC,SAAS,IAAI,mBAAmB,CAAC;AAAA,EACjC,SAAS,IAAI,mBAAmB,CAAC;AAAA,EAEjC,MAAM,IAAI,cAAc;AAAA,EAExB,OAAO,IAAI,WAAW;AAAA,EACtB,QAAQ,IAAI,aAAa;AAAA,EACzB,OAAO,IAAI,aAAa;AAAA,EAExB,MAAM,IAAI,WAAW;AAAA,EACrB,OAAO,IAAI,eAAe,KAAK;AAAA,EAC/B,QAAQ,IAAI,eAAe,IAAI;AACnC;;;ACzBO,IAAM,oBAA0E;AAAA,EACnF,OAAO;AAAA,IACH,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,eAAe;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACH,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,eAAe;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AAAA,EACA,WAAW;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AACJ;AAEO,SAAS,sBACZ,SAA2B,SAChB;AACX,SAAO,IAAI,YAAY,kBAAkB,OAAO,EAAE,KAAK,gBAAgB,WAAW,CAAC,CAAC;AACxF;AAEO,SAAS,iBACZ,SAA2B,WAAmB,gBAAgB,SACxD;AACN,SAAO,IAAI,OAAO,kBAAkB,OAAO,EAAE,KAAK,UAAU,OAAO;AACvE;;;AC/CA,IAAqBC,YAArB,cAAsC,MAAM;AAAE;;;ACAvC,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AANQ,SAAAA;AAAA,GAAA;AASL,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,iBAAc;AACd,EAAAA,YAAA,YAAS;AACT,EAAAA,YAAA,kBAAe;AACf,EAAAA,YAAA,UAAO;AANC,SAAAA;AAAA,GAAA;AASL,IAAK,kBAAL,kBAAKC,qBAAL;AACH,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,oBAAiB;AAFT,SAAAA;AAAA,GAAA;AAKL,IAAK,aAAL,kBAAKC,gBAAL;AACH,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,aAAU;AAFF,SAAAA;AAAA,GAAA;AAKL,IAAK,cAAL,kBAAKC,iBAAL;AACH,EAAAA,aAAA,aAAU;AACV,EAAAA,aAAA,gBAAa;AAFL,SAAAA;AAAA,GAAA;AAKL,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AAFC,SAAAA;AAAA,GAAA;AAKL,IAAK,gBAAL,kBAAKC,mBAAL;AACH,EAAAA,eAAA,aAAU;AADF,SAAAA;AAAA,GAAA;;;ACzCL,IAAM,0BAA0B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAOO,IAAM,sBAAsB,OAAO;AAAA,EACtC,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;AACtD;;;AClDO,SAAS,uBAAuB,QAAkB,OAA+C;AACpG,SAAO,OAAO,IAAI,CAAC,UAAU;AACzB,UAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AAEpD,UAAM,YAAY,CAAC,UACf,MAAM,KAAK,YAAY,EAAE,WAAW,KAAK,KAAK,MAAM,KAAK,YAAY,EAAE,SAAS,KAAK;AAEzF,QAAI,cAA6B;AAEjC,QAAI,MAAM,SAAS,QAAQ;AACvB,oBAAc;AAAA,IAClB;AAEA,QAAI,UAAU,OAAO,KAAK,UAAU,KAAK,KAAK,MAAM,SAAS,SAAS;AAClE,oBAAc;AAAA,IAClB;AAEA,QAAI,UAAU,OAAO,GAAG;AACpB,oBAAc;AAAA,IAClB;AAEA,QAAI,UAAU,OAAO,GAAG;AACpB,oBAAc;AAAA,IAClB;AAEA,WAAO;AAAA,MACH,GAAG;AAAA,MACH,WAAW,MAAM,aAAa;AAAA,MAC9B,MAAM,MAAM,QAAQ;AAAA,IACxB;AAAA,EACJ,CAAC;AACL;","names":["exports","module","readFloat32Array","readFloat32ArrayRev","writeFloat32Array","writeFloat32ArrayRev","readFloat64Array","readFloat64ArrayRev","writeFloat64Array","writeFloat64ArrayRev","RpcError","RpcError","OfferState","OrderParam","AssetsSort","CollectionsSort","OffersSort","SchemasSort","TemplatesSort","TransfersSort"]}
|