diff --git a/bindings/assembly/nearEntry.ts b/bindings/assembly/nearEntry.ts index bb8228da39..443e2034eb 100644 --- a/bindings/assembly/nearEntry.ts +++ b/bindings/assembly/nearEntry.ts @@ -162,11 +162,11 @@ class Obj extends Value { } toString(): string { - let objs: string[] = [] + let objs: string[] = []; for (let i: i32 = 0; i < this.keys.length; i++){ objs.push("\"" +this.keys[i]+"\":"+ this._obj.get(this.keys[i]).toString()); } - return "{"+ objs.join(",") + "}" + return "{"+ objs.join(",") + "}"; } has(key: string): bool { @@ -254,11 +254,12 @@ class Handler extends ThrowingJSONHandler { @global() class JSON { - // private static handler: Handler = new Handler(); + private static handler: Handler = new Handler(); + private static decoder: JSONDecoder = new JSONDecoder(JSON.handler); static parse(str: Uint8Array ): Obj { - let decoder = new JSONDecoder(new Handler()); - decoder.deserialize(str); - let res = decoder.handler.peek as Obj; + JSON.decoder.deserialize(str); + let res = JSON.decoder.handler.peek as Obj; + JSON.decoder.handler.reset(); return res; } } @@ -315,12 +316,11 @@ function encode(encoder: JSONEncoder, value: T, name: string | null = ""): JS return encoder; } +//@ts-ignore @inline function getStr(val: Value, name: String): string { assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null"); return (val)._str; - - } function decodeArray(val: Value, name: string): Array { diff --git a/bindings/dist/transformerBundle.js b/bindings/dist/transformerBundle.js index 7af6e42403..9086e5ca6e 100644 --- a/bindings/dist/transformerBundle.js +++ b/bindings/dist/transformerBundle.js @@ -1,9604 +1 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["transformer"] = factory(); - else - root["transformer"] = factory(); -})(typeof self !== 'undefined' ? self : this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.ts"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../node_modules/long/src/long.js": -/*!****************************************!*\ - !*** ../node_modules/long/src/long.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = Long; - -/** - * wasm optimizations, to do native i64 multiplication and divide - */ -var wasm = null; - -try { - wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ - 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 - ])), {}).exports; -} catch (e) { - // no wasm support :( -} - -/** - * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. - * See the from* functions below for more convenient ways of constructing Longs. - * @exports Long - * @class A Long class for representing a 64 bit two's-complement integer value. - * @param {number} low The low (signed) 32 bits of the long - * @param {number} high The high (signed) 32 bits of the long - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @constructor - */ -function Long(low, high, unsigned) { - - /** - * The low 32 bits as a signed value. - * @type {number} - */ - this.low = low | 0; - - /** - * The high 32 bits as a signed value. - * @type {number} - */ - this.high = high | 0; - - /** - * Whether unsigned or not. - * @type {boolean} - */ - this.unsigned = !!unsigned; -} - -// The internal representation of a long is the two given signed, 32-bit values. -// We use 32-bit pieces because these are the size of integers on which -// Javascript performs bit-operations. For operations like addition and -// multiplication, we split each number into 16 bit pieces, which can easily be -// multiplied within Javascript's floating-point representation without overflow -// or change in sign. -// -// In the algorithms below, we frequently reduce the negative case to the -// positive case by negating the input(s) and then post-processing the result. -// Note that we must ALWAYS check specially whether those values are MIN_VALUE -// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as -// a positive number, it overflows back into a negative). Not handling this -// case would often result in infinite recursion. -// -// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* -// methods on which they depend. - -/** - * An indicator used to reliably determine if an object is a Long or not. - * @type {boolean} - * @const - * @private - */ -Long.prototype.__isLong__; - -Object.defineProperty(Long.prototype, "__isLong__", { value: true }); - -/** - * @function - * @param {*} obj Object - * @returns {boolean} - * @inner - */ -function isLong(obj) { - return (obj && obj["__isLong__"]) === true; -} - -/** - * Tests if the specified object is a Long. - * @function - * @param {*} obj Object - * @returns {boolean} - */ -Long.isLong = isLong; - -/** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @inner - */ -var INT_CACHE = {}; - -/** - * A cache of the Long representations of small unsigned integer values. - * @type {!Object} - * @inner - */ -var UINT_CACHE = {}; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromInt(value, unsigned) { - var obj, cachedObj, cache; - if (unsigned) { - value >>>= 0; - if (cache = (0 <= value && value < 256)) { - cachedObj = UINT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true); - if (cache) - UINT_CACHE[value] = obj; - return obj; - } else { - value |= 0; - if (cache = (-128 <= value && value < 128)) { - cachedObj = INT_CACHE[value]; - if (cachedObj) - return cachedObj; - } - obj = fromBits(value, value < 0 ? -1 : 0, false); - if (cache) - INT_CACHE[value] = obj; - return obj; - } -} - -/** - * Returns a Long representing the given 32 bit integer value. - * @function - * @param {number} value The 32 bit integer in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromInt = fromInt; - -/** - * @param {number} value - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromNumber(value, unsigned) { - if (isNaN(value)) - return unsigned ? UZERO : ZERO; - if (unsigned) { - if (value < 0) - return UZERO; - if (value >= TWO_PWR_64_DBL) - return MAX_UNSIGNED_VALUE; - } else { - if (value <= -TWO_PWR_63_DBL) - return MIN_VALUE; - if (value + 1 >= TWO_PWR_63_DBL) - return MAX_VALUE; - } - if (value < 0) - return fromNumber(-value, unsigned).neg(); - return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); -} - -/** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * @function - * @param {number} value The number in question - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromNumber = fromNumber; - -/** - * @param {number} lowBits - * @param {number} highBits - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromBits(lowBits, highBits, unsigned) { - return new Long(lowBits, highBits, unsigned); -} - -/** - * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is - * assumed to use 32 bits. - * @function - * @param {number} lowBits The low 32 bits - * @param {number} highBits The high 32 bits - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} The corresponding Long value - */ -Long.fromBits = fromBits; - -/** - * @function - * @param {number} base - * @param {number} exponent - * @returns {number} - * @inner - */ -var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) - -/** - * @param {string} str - * @param {(boolean|number)=} unsigned - * @param {number=} radix - * @returns {!Long} - * @inner - */ -function fromString(str, unsigned, radix) { - if (str.length === 0) - throw Error('empty string'); - if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") - return ZERO; - if (typeof unsigned === 'number') { - // For goog.math.long compatibility - radix = unsigned, - unsigned = false; - } else { - unsigned = !! unsigned; - } - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - - var p; - if ((p = str.indexOf('-')) > 0) - throw Error('interior hyphen'); - else if (p === 0) { - return fromString(str.substring(1), unsigned, radix).neg(); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 8)); - - var result = ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i), - value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = fromNumber(pow_dbl(radix, size)); - result = result.mul(power).add(fromNumber(value)); - } else { - result = result.mul(radixToPower); - result = result.add(fromNumber(value)); - } - } - result.unsigned = unsigned; - return result; -} - -/** - * Returns a Long representation of the given string, written using the specified radix. - * @function - * @param {string} str The textual representation of the Long - * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed - * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 - * @returns {!Long} The corresponding Long value - */ -Long.fromString = fromString; - -/** - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val - * @param {boolean=} unsigned - * @returns {!Long} - * @inner - */ -function fromValue(val, unsigned) { - if (typeof val === 'number') - return fromNumber(val, unsigned); - if (typeof val === 'string') - return fromString(val, unsigned); - // Throws for non-objects, converts non-instanceof Long: - return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); -} - -/** - * Converts the specified value to a Long using the appropriate from* function for its type. - * @function - * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {!Long} - */ -Long.fromValue = fromValue; - -// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be -// no runtime penalty for these. - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_16_DBL = 1 << 16; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_24_DBL = 1 << 24; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; - -/** - * @type {number} - * @const - * @inner - */ -var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; - -/** - * @type {!Long} - * @const - * @inner - */ -var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); - -/** - * @type {!Long} - * @inner - */ -var ZERO = fromInt(0); - -/** - * Signed zero. - * @type {!Long} - */ -Long.ZERO = ZERO; - -/** - * @type {!Long} - * @inner - */ -var UZERO = fromInt(0, true); - -/** - * Unsigned zero. - * @type {!Long} - */ -Long.UZERO = UZERO; - -/** - * @type {!Long} - * @inner - */ -var ONE = fromInt(1); - -/** - * Signed one. - * @type {!Long} - */ -Long.ONE = ONE; - -/** - * @type {!Long} - * @inner - */ -var UONE = fromInt(1, true); - -/** - * Unsigned one. - * @type {!Long} - */ -Long.UONE = UONE; - -/** - * @type {!Long} - * @inner - */ -var NEG_ONE = fromInt(-1); - -/** - * Signed negative one. - * @type {!Long} - */ -Long.NEG_ONE = NEG_ONE; - -/** - * @type {!Long} - * @inner - */ -var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false); - -/** - * Maximum signed value. - * @type {!Long} - */ -Long.MAX_VALUE = MAX_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true); - -/** - * Maximum unsigned value. - * @type {!Long} - */ -Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; - -/** - * @type {!Long} - * @inner - */ -var MIN_VALUE = fromBits(0, 0x80000000|0, false); - -/** - * Minimum signed value. - * @type {!Long} - */ -Long.MIN_VALUE = MIN_VALUE; - -/** - * @alias Long.prototype - * @inner - */ -var LongPrototype = Long.prototype; - -/** - * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. - * @returns {number} - */ -LongPrototype.toInt = function toInt() { - return this.unsigned ? this.low >>> 0 : this.low; -}; - -/** - * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). - * @returns {number} - */ -LongPrototype.toNumber = function toNumber() { - if (this.unsigned) - return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); - return this.high * TWO_PWR_32_DBL + (this.low >>> 0); -}; - -/** - * Converts the Long to a string written in the specified radix. - * @param {number=} radix Radix (2-36), defaults to 10 - * @returns {string} - * @override - * @throws {RangeError} If `radix` is out of range - */ -LongPrototype.toString = function toString(radix) { - radix = radix || 10; - if (radix < 2 || 36 < radix) - throw RangeError('radix'); - if (this.isZero()) - return '0'; - if (this.isNegative()) { // Unsigned Longs are never negative - if (this.eq(MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = fromNumber(radix), - div = this.div(radixLong), - rem1 = div.mul(radixLong).sub(this); - return div.toString(radix) + rem1.toInt().toString(radix); - } else - return '-' + this.neg().toString(radix); - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), - rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower), - intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, - digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) - return digits + result; - else { - while (digits.length < 6) - digits = '0' + digits; - result = '' + digits + result; - } - } -}; - -/** - * Gets the high 32 bits as a signed integer. - * @returns {number} Signed high bits - */ -LongPrototype.getHighBits = function getHighBits() { - return this.high; -}; - -/** - * Gets the high 32 bits as an unsigned integer. - * @returns {number} Unsigned high bits - */ -LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { - return this.high >>> 0; -}; - -/** - * Gets the low 32 bits as a signed integer. - * @returns {number} Signed low bits - */ -LongPrototype.getLowBits = function getLowBits() { - return this.low; -}; - -/** - * Gets the low 32 bits as an unsigned integer. - * @returns {number} Unsigned low bits - */ -LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { - return this.low >>> 0; -}; - -/** - * Gets the number of bits needed to represent the absolute value of this Long. - * @returns {number} - */ -LongPrototype.getNumBitsAbs = function getNumBitsAbs() { - if (this.isNegative()) // Unsigned Longs are never negative - return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); - var val = this.high != 0 ? this.high : this.low; - for (var bit = 31; bit > 0; bit--) - if ((val & (1 << bit)) != 0) - break; - return this.high != 0 ? bit + 33 : bit + 1; -}; - -/** - * Tests if this Long's value equals zero. - * @returns {boolean} - */ -LongPrototype.isZero = function isZero() { - return this.high === 0 && this.low === 0; -}; - -/** - * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. - * @returns {boolean} - */ -LongPrototype.eqz = LongPrototype.isZero; - -/** - * Tests if this Long's value is negative. - * @returns {boolean} - */ -LongPrototype.isNegative = function isNegative() { - return !this.unsigned && this.high < 0; -}; - -/** - * Tests if this Long's value is positive. - * @returns {boolean} - */ -LongPrototype.isPositive = function isPositive() { - return this.unsigned || this.high >= 0; -}; - -/** - * Tests if this Long's value is odd. - * @returns {boolean} - */ -LongPrototype.isOdd = function isOdd() { - return (this.low & 1) === 1; -}; - -/** - * Tests if this Long's value is even. - * @returns {boolean} - */ -LongPrototype.isEven = function isEven() { - return (this.low & 1) === 0; -}; - -/** - * Tests if this Long's value equals the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.equals = function equals(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) - return false; - return this.high === other.high && this.low === other.low; -}; - -/** - * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.eq = LongPrototype.equals; - -/** - * Tests if this Long's value differs from the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.notEquals = function notEquals(other) { - return !this.eq(/* validates */ other); -}; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.neq = LongPrototype.notEquals; - -/** - * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ne = LongPrototype.notEquals; - -/** - * Tests if this Long's value is less than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThan = function lessThan(other) { - return this.comp(/* validates */ other) < 0; -}; - -/** - * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lt = LongPrototype.lessThan; - -/** - * Tests if this Long's value is less than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { - return this.comp(/* validates */ other) <= 0; -}; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.lte = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.le = LongPrototype.lessThanOrEqual; - -/** - * Tests if this Long's value is greater than the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThan = function greaterThan(other) { - return this.comp(/* validates */ other) > 0; -}; - -/** - * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gt = LongPrototype.greaterThan; - -/** - * Tests if this Long's value is greater than or equal the specified's. - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { - return this.comp(/* validates */ other) >= 0; -}; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.gte = LongPrototype.greaterThanOrEqual; - -/** - * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. - * @function - * @param {!Long|number|string} other Other value - * @returns {boolean} - */ -LongPrototype.ge = LongPrototype.greaterThanOrEqual; - -/** - * Compares this Long's value with the specified's. - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.compare = function compare(other) { - if (!isLong(other)) - other = fromValue(other); - if (this.eq(other)) - return 0; - var thisNeg = this.isNegative(), - otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) - return -1; - if (!thisNeg && otherNeg) - return 1; - // At this point the sign bits are the same - if (!this.unsigned) - return this.sub(other).isNegative() ? -1 : 1; - // Both are positive if at least one is unsigned - return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; -}; - -/** - * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. - * @function - * @param {!Long|number|string} other Other value - * @returns {number} 0 if they are the same, 1 if the this is greater and -1 - * if the given one is greater - */ -LongPrototype.comp = LongPrototype.compare; - -/** - * Negates this Long's value. - * @returns {!Long} Negated Long - */ -LongPrototype.negate = function negate() { - if (!this.unsigned && this.eq(MIN_VALUE)) - return MIN_VALUE; - return this.not().add(ONE); -}; - -/** - * Negates this Long's value. This is an alias of {@link Long#negate}. - * @function - * @returns {!Long} Negated Long - */ -LongPrototype.neg = LongPrototype.negate; - -/** - * Returns the sum of this and the specified Long. - * @param {!Long|number|string} addend Addend - * @returns {!Long} Sum - */ -LongPrototype.add = function add(addend) { - if (!isLong(addend)) - addend = fromValue(addend); - - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = addend.high >>> 16; - var b32 = addend.high & 0xFFFF; - var b16 = addend.low >>> 16; - var b00 = addend.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the difference of this and the specified Long. - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.subtract = function subtract(subtrahend) { - if (!isLong(subtrahend)) - subtrahend = fromValue(subtrahend); - return this.add(subtrahend.neg()); -}; - -/** - * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. - * @function - * @param {!Long|number|string} subtrahend Subtrahend - * @returns {!Long} Difference - */ -LongPrototype.sub = LongPrototype.subtract; - -/** - * Returns the product of this and the specified Long. - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.multiply = function multiply(multiplier) { - if (this.isZero()) - return ZERO; - if (!isLong(multiplier)) - multiplier = fromValue(multiplier); - - // use wasm support if present - if (wasm) { - var low = wasm.mul(this.low, - this.high, - multiplier.low, - multiplier.high); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (multiplier.isZero()) - return ZERO; - if (this.eq(MIN_VALUE)) - return multiplier.isOdd() ? MIN_VALUE : ZERO; - if (multiplier.eq(MIN_VALUE)) - return this.isOdd() ? MIN_VALUE : ZERO; - - if (this.isNegative()) { - if (multiplier.isNegative()) - return this.neg().mul(multiplier.neg()); - else - return this.neg().mul(multiplier).neg(); - } else if (multiplier.isNegative()) - return this.mul(multiplier.neg()).neg(); - - // If both longs are small, use float multiplication - if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) - return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high >>> 16; - var a32 = this.high & 0xFFFF; - var a16 = this.low >>> 16; - var a00 = this.low & 0xFFFF; - - var b48 = multiplier.high >>> 16; - var b32 = multiplier.high & 0xFFFF; - var b16 = multiplier.low >>> 16; - var b00 = multiplier.low & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); -}; - -/** - * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. - * @function - * @param {!Long|number|string} multiplier Multiplier - * @returns {!Long} Product - */ -LongPrototype.mul = LongPrototype.multiply; - -/** - * Returns this Long divided by the specified. The result is signed if this Long is signed or - * unsigned if this Long is unsigned. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.divide = function divide(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - if (divisor.isZero()) - throw Error('division by zero'); - - // use wasm support if present - if (wasm) { - // guard against signed division overflow: the largest - // negative number / -1 would be 1 larger than the largest - // positive number, due to two's complement. - if (!this.unsigned && - this.high === -0x80000000 && - divisor.low === -1 && divisor.high === -1) { - // be consistent with non-wasm code path - return this; - } - var low = (this.unsigned ? wasm.div_u : wasm.div_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - if (this.isZero()) - return this.unsigned ? UZERO : ZERO; - var approx, rem, res; - if (!this.unsigned) { - // This section is only relevant for signed longs and is derived from the - // closure library as a whole. - if (this.eq(MIN_VALUE)) { - if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) - return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - else if (divisor.eq(MIN_VALUE)) - return ONE; - else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shr(1); - approx = halfThis.div(divisor).shl(1); - if (approx.eq(ZERO)) { - return divisor.isNegative() ? ONE : NEG_ONE; - } else { - rem = this.sub(divisor.mul(approx)); - res = approx.add(rem.div(divisor)); - return res; - } - } - } else if (divisor.eq(MIN_VALUE)) - return this.unsigned ? UZERO : ZERO; - if (this.isNegative()) { - if (divisor.isNegative()) - return this.neg().div(divisor.neg()); - return this.neg().div(divisor).neg(); - } else if (divisor.isNegative()) - return this.div(divisor.neg()).neg(); - res = ZERO; - } else { - // The algorithm below has not been made for unsigned longs. It's therefore - // required to take special care of the MSB prior to running it. - if (!divisor.unsigned) - divisor = divisor.toUnsigned(); - if (divisor.gt(this)) - return UZERO; - if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true - return UONE; - res = UZERO; - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - rem = this; - while (rem.gte(divisor)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2), - delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - approxRes = fromNumber(approx), - approxRem = approxRes.mul(divisor); - while (approxRem.isNegative() || approxRem.gt(rem)) { - approx -= delta; - approxRes = fromNumber(approx, this.unsigned); - approxRem = approxRes.mul(divisor); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) - approxRes = ONE; - - res = res.add(approxRes); - rem = rem.sub(approxRem); - } - return res; -}; - -/** - * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Quotient - */ -LongPrototype.div = LongPrototype.divide; - -/** - * Returns this Long modulo the specified. - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.modulo = function modulo(divisor) { - if (!isLong(divisor)) - divisor = fromValue(divisor); - - // use wasm support if present - if (wasm) { - var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)( - this.low, - this.high, - divisor.low, - divisor.high - ); - return fromBits(low, wasm.get_high(), this.unsigned); - } - - return this.sub(this.div(divisor).mul(divisor)); -}; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.mod = LongPrototype.modulo; - -/** - * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. - * @function - * @param {!Long|number|string} divisor Divisor - * @returns {!Long} Remainder - */ -LongPrototype.rem = LongPrototype.modulo; - -/** - * Returns the bitwise NOT of this Long. - * @returns {!Long} - */ -LongPrototype.not = function not() { - return fromBits(~this.low, ~this.high, this.unsigned); -}; - -/** - * Returns the bitwise AND of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.and = function and(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low & other.low, this.high & other.high, this.unsigned); -}; - -/** - * Returns the bitwise OR of this Long and the specified. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.or = function or(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low | other.low, this.high | other.high, this.unsigned); -}; - -/** - * Returns the bitwise XOR of this Long and the given one. - * @param {!Long|number|string} other Other Long - * @returns {!Long} - */ -LongPrototype.xor = function xor(other) { - if (!isLong(other)) - other = fromValue(other); - return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftLeft = function shiftLeft(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); - else - return fromBits(0, this.low << (numBits - 32), this.unsigned); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shl = LongPrototype.shiftLeft; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRight = function shiftRight(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - if ((numBits &= 63) === 0) - return this; - else if (numBits < 32) - return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); - else - return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); -}; - -/** - * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr = LongPrototype.shiftRight; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { - if (isLong(numBits)) - numBits = numBits.toInt(); - numBits &= 63; - if (numBits === 0) - return this; - else { - var high = this.high; - if (numBits < 32) { - var low = this.low; - return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned); - } else if (numBits === 32) - return fromBits(high, 0, this.unsigned); - else - return fromBits(high >>> (numBits - 32), 0, this.unsigned); - } -}; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shru = LongPrototype.shiftRightUnsigned; - -/** - * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. - * @function - * @param {number|!Long} numBits Number of bits - * @returns {!Long} Shifted Long - */ -LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; - -/** - * Converts this Long to signed. - * @returns {!Long} Signed long - */ -LongPrototype.toSigned = function toSigned() { - if (!this.unsigned) - return this; - return fromBits(this.low, this.high, false); -}; - -/** - * Converts this Long to unsigned. - * @returns {!Long} Unsigned long - */ -LongPrototype.toUnsigned = function toUnsigned() { - if (this.unsigned) - return this; - return fromBits(this.low, this.high, true); -}; - -/** - * Converts this Long to its byte representation. - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {!Array.} Byte representation - */ -LongPrototype.toBytes = function toBytes(le) { - return le ? this.toBytesLE() : this.toBytesBE(); -}; - -/** - * Converts this Long to its little endian byte representation. - * @returns {!Array.} Little endian byte representation - */ -LongPrototype.toBytesLE = function toBytesLE() { - var hi = this.high, - lo = this.low; - return [ - lo & 0xff, - lo >>> 8 & 0xff, - lo >>> 16 & 0xff, - lo >>> 24 , - hi & 0xff, - hi >>> 8 & 0xff, - hi >>> 16 & 0xff, - hi >>> 24 - ]; -}; - -/** - * Converts this Long to its big endian byte representation. - * @returns {!Array.} Big endian byte representation - */ -LongPrototype.toBytesBE = function toBytesBE() { - var hi = this.high, - lo = this.low; - return [ - hi >>> 24 , - hi >>> 16 & 0xff, - hi >>> 8 & 0xff, - hi & 0xff, - lo >>> 24 , - lo >>> 16 & 0xff, - lo >>> 8 & 0xff, - lo & 0xff - ]; -}; - -/** - * Creates a Long from its byte representation. - * @param {!Array.} bytes Byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @param {boolean=} le Whether little or big endian, defaults to big endian - * @returns {Long} The corresponding Long value - */ -Long.fromBytes = function fromBytes(bytes, unsigned, le) { - return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); -}; - -/** - * Creates a Long from its little endian byte representation. - * @param {!Array.} bytes Little endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { - return new Long( - bytes[0] | - bytes[1] << 8 | - bytes[2] << 16 | - bytes[3] << 24, - bytes[4] | - bytes[5] << 8 | - bytes[6] << 16 | - bytes[7] << 24, - unsigned - ); -}; - -/** - * Creates a Long from its big endian byte representation. - * @param {!Array.} bytes Big endian byte representation - * @param {boolean=} unsigned Whether unsigned or not, defaults to signed - * @returns {Long} The corresponding Long value - */ -Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { - return new Long( - bytes[4] << 24 | - bytes[5] << 16 | - bytes[6] << 8 | - bytes[7], - bytes[0] << 24 | - bytes[1] << 16 | - bytes[2] << 8 | - bytes[3], - unsigned - ); -}; - - -/***/ }), - -/***/ "../node_modules/webpack/buildin/global.js": -/*!*************************************************!*\ - !*** ../node_modules/webpack/buildin/global.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), - -/***/ "../src/ast.ts": -/*!*********************!*\ - !*** ../src/ast.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Abstract syntax tree representing a source file once parsed. - * @module ast - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ./common */ "../src/common.ts"); -var tokenizer_1 = __webpack_require__(/*! ./tokenizer */ "../src/tokenizer.ts"); -exports.Token = tokenizer_1.Token; -exports.Range = tokenizer_1.Range; -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Indicates the kind of a node. */ -var NodeKind; -(function (NodeKind) { - NodeKind[NodeKind["SOURCE"] = 0] = "SOURCE"; - // types - NodeKind[NodeKind["NAMEDTYPE"] = 1] = "NAMEDTYPE"; - NodeKind[NodeKind["FUNCTIONTYPE"] = 2] = "FUNCTIONTYPE"; - NodeKind[NodeKind["TYPENAME"] = 3] = "TYPENAME"; - NodeKind[NodeKind["TYPEPARAMETER"] = 4] = "TYPEPARAMETER"; - NodeKind[NodeKind["PARAMETER"] = 5] = "PARAMETER"; - // expressions - NodeKind[NodeKind["IDENTIFIER"] = 6] = "IDENTIFIER"; - NodeKind[NodeKind["ASSERTION"] = 7] = "ASSERTION"; - NodeKind[NodeKind["BINARY"] = 8] = "BINARY"; - NodeKind[NodeKind["CALL"] = 9] = "CALL"; - NodeKind[NodeKind["CLASS"] = 10] = "CLASS"; - NodeKind[NodeKind["COMMA"] = 11] = "COMMA"; - NodeKind[NodeKind["ELEMENTACCESS"] = 12] = "ELEMENTACCESS"; - NodeKind[NodeKind["FALSE"] = 13] = "FALSE"; - NodeKind[NodeKind["FUNCTION"] = 14] = "FUNCTION"; - NodeKind[NodeKind["INSTANCEOF"] = 15] = "INSTANCEOF"; - NodeKind[NodeKind["LITERAL"] = 16] = "LITERAL"; - NodeKind[NodeKind["NEW"] = 17] = "NEW"; - NodeKind[NodeKind["NULL"] = 18] = "NULL"; - NodeKind[NodeKind["PARENTHESIZED"] = 19] = "PARENTHESIZED"; - NodeKind[NodeKind["PROPERTYACCESS"] = 20] = "PROPERTYACCESS"; - NodeKind[NodeKind["TERNARY"] = 21] = "TERNARY"; - NodeKind[NodeKind["SUPER"] = 22] = "SUPER"; - NodeKind[NodeKind["THIS"] = 23] = "THIS"; - NodeKind[NodeKind["TRUE"] = 24] = "TRUE"; - NodeKind[NodeKind["CONSTRUCTOR"] = 25] = "CONSTRUCTOR"; - NodeKind[NodeKind["UNARYPOSTFIX"] = 26] = "UNARYPOSTFIX"; - NodeKind[NodeKind["UNARYPREFIX"] = 27] = "UNARYPREFIX"; - // statements - NodeKind[NodeKind["BLOCK"] = 28] = "BLOCK"; - NodeKind[NodeKind["BREAK"] = 29] = "BREAK"; - NodeKind[NodeKind["CONTINUE"] = 30] = "CONTINUE"; - NodeKind[NodeKind["DO"] = 31] = "DO"; - NodeKind[NodeKind["EMPTY"] = 32] = "EMPTY"; - NodeKind[NodeKind["EXPORT"] = 33] = "EXPORT"; - NodeKind[NodeKind["EXPORTDEFAULT"] = 34] = "EXPORTDEFAULT"; - NodeKind[NodeKind["EXPORTIMPORT"] = 35] = "EXPORTIMPORT"; - NodeKind[NodeKind["EXPRESSION"] = 36] = "EXPRESSION"; - NodeKind[NodeKind["FOR"] = 37] = "FOR"; - NodeKind[NodeKind["IF"] = 38] = "IF"; - NodeKind[NodeKind["IMPORT"] = 39] = "IMPORT"; - NodeKind[NodeKind["RETURN"] = 40] = "RETURN"; - NodeKind[NodeKind["SWITCH"] = 41] = "SWITCH"; - NodeKind[NodeKind["THROW"] = 42] = "THROW"; - NodeKind[NodeKind["TRY"] = 43] = "TRY"; - NodeKind[NodeKind["VARIABLE"] = 44] = "VARIABLE"; - NodeKind[NodeKind["VOID"] = 45] = "VOID"; - NodeKind[NodeKind["WHILE"] = 46] = "WHILE"; - // declaration statements - NodeKind[NodeKind["CLASSDECLARATION"] = 47] = "CLASSDECLARATION"; - NodeKind[NodeKind["ENUMDECLARATION"] = 48] = "ENUMDECLARATION"; - NodeKind[NodeKind["ENUMVALUEDECLARATION"] = 49] = "ENUMVALUEDECLARATION"; - NodeKind[NodeKind["FIELDDECLARATION"] = 50] = "FIELDDECLARATION"; - NodeKind[NodeKind["FUNCTIONDECLARATION"] = 51] = "FUNCTIONDECLARATION"; - NodeKind[NodeKind["IMPORTDECLARATION"] = 52] = "IMPORTDECLARATION"; - NodeKind[NodeKind["INDEXSIGNATUREDECLARATION"] = 53] = "INDEXSIGNATUREDECLARATION"; - NodeKind[NodeKind["INTERFACEDECLARATION"] = 54] = "INTERFACEDECLARATION"; - NodeKind[NodeKind["METHODDECLARATION"] = 55] = "METHODDECLARATION"; - NodeKind[NodeKind["NAMESPACEDECLARATION"] = 56] = "NAMESPACEDECLARATION"; - NodeKind[NodeKind["TYPEDECLARATION"] = 57] = "TYPEDECLARATION"; - NodeKind[NodeKind["VARIABLEDECLARATION"] = 58] = "VARIABLEDECLARATION"; - // special - NodeKind[NodeKind["DECORATOR"] = 59] = "DECORATOR"; - NodeKind[NodeKind["EXPORTMEMBER"] = 60] = "EXPORTMEMBER"; - NodeKind[NodeKind["SWITCHCASE"] = 61] = "SWITCHCASE"; - NodeKind[NodeKind["COMMENT"] = 62] = "COMMENT"; -})(NodeKind = exports.NodeKind || (exports.NodeKind = {})); -/** Checks if a node represents a constant value. */ -function nodeIsConstantValue(kind) { - switch (kind) { - case NodeKind.LITERAL: - case NodeKind.NULL: - case NodeKind.TRUE: - case NodeKind.FALSE: return true; - } - return false; -} -exports.nodeIsConstantValue = nodeIsConstantValue; -/** Checks if a node might be callable. */ -function nodeIsCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.ASSERTION: // if kind=NONNULL - case NodeKind.CALL: - case NodeKind.ELEMENTACCESS: - case NodeKind.PARENTHESIZED: - case NodeKind.PROPERTYACCESS: - case NodeKind.SUPER: return true; - } - return false; -} -exports.nodeIsCallable = nodeIsCallable; -/** Checks if a node might be callable with generic arguments. */ -function nodeIsGenericCallable(kind) { - switch (kind) { - case NodeKind.IDENTIFIER: - case NodeKind.PROPERTYACCESS: return true; - } - return false; -} -exports.nodeIsGenericCallable = nodeIsGenericCallable; -/** Base class of all nodes. */ -var Node = /** @class */ (function () { - function Node() { - } - // types - Node.createTypeName = function (name, range) { - var typeName = new TypeName(); - typeName.range = range; - typeName.identifier = name; - typeName.next = null; - return typeName; - }; - Node.createSimpleTypeName = function (name, range) { - return Node.createTypeName(Node.createIdentifierExpression(name, range), range); - }; - Node.createNamedType = function (name, typeArguments, isNullable, range) { - var type = new NamedTypeNode(); - type.range = range; - type.name = name; - type.typeArguments = typeArguments; - type.isNullable = isNullable; - return type; - }; - Node.createFunctionType = function (parameters, returnType, explicitThisType, isNullable, range) { - var type = new FunctionTypeNode(); - type.range = range; - type.parameters = parameters; - type.returnType = returnType; - type.explicitThisType = explicitThisType; - type.isNullable = isNullable; - return type; - }; - Node.createOmittedType = function (range) { - return Node.createNamedType(Node.createSimpleTypeName("", range), null, false, range); - }; - Node.createTypeParameter = function (name, extendsType, defaultType, range) { - var elem = new TypeParameterNode(); - elem.range = range; - elem.name = name; - elem.extendsType = extendsType; - elem.defaultType = defaultType; - return elem; - }; - Node.createParameter = function (name, type, initializer, kind, range) { - var elem = new ParameterNode(); - elem.range = range; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.parameterKind = kind; - return elem; - }; - // special - Node.createDecorator = function (name, args, range) { - var stmt = new DecoratorNode(); - stmt.range = range; - stmt.name = name; - stmt.arguments = args; - stmt.decoratorKind = decoratorNameToKind(name); - return stmt; - }; - Node.createComment = function (text, kind, range) { - var node = new CommentNode(); - node.range = range; - node.commentKind = kind; - node.text = text; - return node; - }; - // expressions - Node.createIdentifierExpression = function (name, range, isQuoted) { - if (isQuoted === void 0) { isQuoted = false; } - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = name; // TODO: extract from range - expr.symbol = name; // TODO: Symbol.for(name) - expr.isQuoted = isQuoted; - return expr; - }; - Node.createEmptyIdentifierExpression = function (range) { - var expr = new IdentifierExpression(); - expr.range = range; - expr.text = ""; - return expr; - }; - Node.createArrayLiteralExpression = function (elements, range) { - var expr = new ArrayLiteralExpression(); - expr.range = range; - expr.elementExpressions = elements; - return expr; - }; - Node.createAssertionExpression = function (assertionKind, expression, toType, range) { - var expr = new AssertionExpression(); - expr.range = range; - expr.assertionKind = assertionKind; - expr.expression = expression; - expr.toType = toType; - return expr; - }; - Node.createBinaryExpression = function (operator, left, right, range) { - var expr = new BinaryExpression(); - expr.range = range; - expr.operator = operator; - expr.left = left; - expr.right = right; - return expr; - }; - Node.createCallExpression = function (expression, typeArgs, args, range) { - var expr = new CallExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createClassExpression = function (declaration) { - var expr = new ClassExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createCommaExpression = function (expressions, range) { - var expr = new CommaExpression(); - expr.range = range; - expr.expressions = expressions; - return expr; - }; - Node.createConstructorExpression = function (range) { - var expr = new ConstructorExpression(); - expr.range = range; - return expr; - }; - Node.createElementAccessExpression = function (expression, element, range) { - var expr = new ElementAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.elementExpression = element; - return expr; - }; - Node.createFalseExpression = function (range) { - var expr = new FalseExpression(); - expr.range = range; - return expr; - }; - Node.createFloatLiteralExpression = function (value, range) { - var expr = new FloatLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createFunctionExpression = function (declaration) { - var expr = new FunctionExpression(); - expr.range = declaration.range; - expr.declaration = declaration; - return expr; - }; - Node.createInstanceOfExpression = function (expression, isType, range) { - var expr = new InstanceOfExpression(); - expr.range = range; - expr.expression = expression; - expr.isType = isType; - return expr; - }; - Node.createIntegerLiteralExpression = function (value, range) { - var expr = new IntegerLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createNewExpression = function (expression, typeArgs, args, range) { - var expr = new NewExpression(); - expr.range = range; - expr.expression = expression; - expr.typeArguments = typeArgs; - expr.arguments = args; - return expr; - }; - Node.createNullExpression = function (range) { - var expr = new NullExpression(); - expr.range = range; - return expr; - }; - Node.createObjectLiteralExpression = function (names, values, range) { - var expr = new ObjectLiteralExpression(); - expr.range = range; - expr.names = names; - expr.values = values; - return expr; - }; - Node.createParenthesizedExpression = function (expression, range) { - var expr = new ParenthesizedExpression(); - expr.range = range; - expr.expression = expression; - return expr; - }; - Node.createPropertyAccessExpression = function (expression, property, range) { - var expr = new PropertyAccessExpression(); - expr.range = range; - expr.expression = expression; - expr.property = property; - return expr; - }; - Node.createRegexpLiteralExpression = function (pattern, flags, range) { - var expr = new RegexpLiteralExpression(); - expr.range = range; - expr.pattern = pattern; - expr.patternFlags = flags; - return expr; - }; - Node.createTernaryExpression = function (condition, ifThen, ifElse, range) { - var expr = new TernaryExpression(); - expr.range = range; - expr.condition = condition; - expr.ifThen = ifThen; - expr.ifElse = ifElse; - return expr; - }; - Node.createStringLiteralExpression = function (value, range) { - var expr = new StringLiteralExpression(); - expr.range = range; - expr.value = value; - return expr; - }; - Node.createSuperExpression = function (range) { - var expr = new SuperExpression(); - expr.range = range; - return expr; - }; - Node.createThisExpression = function (range) { - var expr = new ThisExpression(); - expr.range = range; - return expr; - }; - Node.createTrueExpression = function (range) { - var expr = new TrueExpression(); - expr.range = range; - return expr; - }; - Node.createUnaryPostfixExpression = function (operator, operand, range) { - var expr = new UnaryPostfixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - Node.createUnaryPrefixExpression = function (operator, operand, range) { - var expr = new UnaryPrefixExpression(); - expr.range = range; - expr.operator = operator; - expr.operand = operand; - return expr; - }; - // statements - Node.createBlockStatement = function (statements, range) { - var stmt = new BlockStatement(); - stmt.range = range; - stmt.statements = statements; - return stmt; - }; - Node.createBreakStatement = function (label, range) { - var stmt = new BreakStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createClassDeclaration = function (identifier, typeParameters, extendsType, // can't be a function - implementsTypes, // can't be functions - members, decorators, flags, range) { - var stmt = new ClassDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = identifier; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.implementsTypes = implementsTypes; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createContinueStatement = function (label, range) { - var stmt = new ContinueStatement(); - stmt.range = range; - stmt.label = label; - return stmt; - }; - Node.createDoStatement = function (statement, condition, range) { - var stmt = new DoStatement(); - stmt.range = range; - stmt.statement = statement; - stmt.condition = condition; - return stmt; - }; - Node.createEmptyStatement = function (range) { - var stmt = new EmptyStatement(); - stmt.range = range; - return stmt; - }; - Node.createEnumDeclaration = function (name, members, decorators, flags, range) { - var stmt = new EnumDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.values = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createEnumValueDeclaration = function (name, value, flags, range) { - var stmt = new EnumValueDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.value = value; - return stmt; - }; - Node.createExportStatement = function (members, path, isDeclare, range) { - var stmt = new ExportStatement(); - stmt.range = range; - stmt.members = members; - stmt.path = path; - if (path) { - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - } - else { - stmt.normalizedPath = null; - stmt.internalPath = null; - } - stmt.isDeclare = isDeclare; - return stmt; - }; - Node.createExportDefaultStatement = function (declaration, range) { - var stmt = new ExportDefaultStatement(); - stmt.declaration = declaration; - stmt.range = range; - return stmt; - }; - Node.createExportImportStatement = function (name, externalName, range) { - var stmt = new ExportImportStatement(); - stmt.range = range; - stmt.name = name; - stmt.externalName = externalName; - return stmt; - }; - Node.createExportMember = function (name, externalName, range) { - var elem = new ExportMember(); - elem.range = range; - elem.localName = name; - if (!externalName) - externalName = name; - elem.exportedName = externalName; - return elem; - }; - Node.createExpressionStatement = function (expression) { - var stmt = new ExpressionStatement(); - stmt.range = expression.range; - stmt.expression = expression; - return stmt; - }; - Node.createIfStatement = function (condition, ifTrue, ifFalse, range) { - var stmt = new IfStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.ifTrue = ifTrue; - stmt.ifFalse = ifFalse; - return stmt; - }; - Node.createImportStatement = function (decls, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = decls; - stmt.namespaceName = null; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { // relative in project - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { // absolute in library - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportStatementWithWildcard = function (identifier, path, range) { - var stmt = new ImportStatement(); - stmt.range = range; - stmt.declarations = null; - stmt.namespaceName = identifier; - stmt.path = path; - var normalizedPath = util_1.normalizePath(path.value); - if (path.value.startsWith(".")) { - stmt.normalizedPath = util_1.resolvePath(normalizedPath, range.source.normalizedPath); - } - else { - if (!normalizedPath.startsWith(common_1.LIBRARY_PREFIX)) { - normalizedPath = common_1.LIBRARY_PREFIX + normalizedPath; - } - stmt.normalizedPath = normalizedPath; - } - stmt.internalPath = mangleInternalPath(stmt.normalizedPath); - return stmt; - }; - Node.createImportDeclaration = function (foreignName, name, range) { - var elem = new ImportDeclaration(); - elem.range = range; - elem.foreignName = foreignName; - if (!name) - name = foreignName; - elem.name = name; - return elem; - }; - Node.createInterfaceDeclaration = function (name, typeParameters, extendsType, // can't be a function - members, decorators, flags, range) { - var stmt = new InterfaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.extendsType = extendsType; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createFieldDeclaration = function (name, type, initializer, decorators, flags, range) { - var stmt = new FieldDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.type = type; - stmt.initializer = initializer; - stmt.decorators = decorators; - return stmt; - }; - Node.createForStatement = function (initializer, condition, incrementor, statement, range) { - var stmt = new ForStatement(); - stmt.range = range; - stmt.initializer = initializer; - stmt.condition = condition; - stmt.incrementor = incrementor; - stmt.statement = statement; - return stmt; - }; - Node.createFunctionDeclaration = function (name, typeParameters, signature, body, decorators, flags, arrowKind, range) { - var stmt = new FunctionDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - stmt.arrowKind = arrowKind; - return stmt; - }; - Node.createIndexSignatureDeclaration = function (keyType, valueType, range) { - var elem = new IndexSignatureDeclaration(); - elem.range = range; - elem.keyType = keyType; - elem.valueType = valueType; - return elem; - }; - Node.createMethodDeclaration = function (name, typeParameters, signature, body, decorators, flags, range) { - var stmt = new MethodDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.signature = signature; - stmt.body = body; - stmt.decorators = decorators; - return stmt; - }; - Node.createNamespaceDeclaration = function (name, members, decorators, flags, range) { - var stmt = new NamespaceDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.members = members; - stmt.decorators = decorators; - return stmt; - }; - Node.createReturnStatement = function (value, range) { - var stmt = new ReturnStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createSwitchStatement = function (condition, cases, range) { - var stmt = new SwitchStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.cases = cases; - return stmt; - }; - Node.createSwitchCase = function (label, statements, range) { - var elem = new SwitchCase(); - elem.range = range; - elem.label = label; - elem.statements = statements; - return elem; - }; - Node.createThrowStatement = function (value, range) { - var stmt = new ThrowStatement(); - stmt.range = range; - stmt.value = value; - return stmt; - }; - Node.createTryStatement = function (statements, catchVariable, catchStatements, finallyStatements, range) { - var stmt = new TryStatement(); - stmt.range = range; - stmt.statements = statements; - stmt.catchVariable = catchVariable; - stmt.catchStatements = catchStatements; - stmt.finallyStatements = finallyStatements; - return stmt; - }; - Node.createTypeDeclaration = function (name, typeParameters, alias, decorators, flags, range) { - var stmt = new TypeDeclaration(); - stmt.range = range; - stmt.flags = flags; - stmt.name = name; - stmt.typeParameters = typeParameters; - stmt.type = alias; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableStatement = function (declarations, decorators, range) { - var stmt = new VariableStatement(); - stmt.range = range; - stmt.declarations = declarations; - stmt.decorators = decorators; - return stmt; - }; - Node.createVariableDeclaration = function (name, type, initializer, decorators, flags, range) { - var elem = new VariableDeclaration(); - elem.range = range; - elem.flags = flags; - elem.name = name; - elem.type = type; - elem.initializer = initializer; - elem.decorators = decorators; // inherited - return elem; - }; - Node.createVoidStatement = function (expression, range) { - var stmt = new VoidStatement(); - stmt.range = range; - stmt.expression = expression; - return stmt; - }; - Node.createWhileStatement = function (condition, statement, range) { - var stmt = new WhileStatement(); - stmt.range = range; - stmt.condition = condition; - stmt.statement = statement; - return stmt; - }; - return Node; -}()); -exports.Node = Node; -// types -var TypeNode = /** @class */ (function (_super) { - __extends(TypeNode, _super); - function TypeNode() { - return _super !== null && _super.apply(this, arguments) || this; - } - return TypeNode; -}(Node)); -exports.TypeNode = TypeNode; -/** Represents a type name. */ -var TypeName = /** @class */ (function (_super) { - __extends(TypeName, _super); - function TypeName() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPENAME; - return _this; - } - return TypeName; -}(Node)); -exports.TypeName = TypeName; -/** Represents a named type. */ -var NamedTypeNode = /** @class */ (function (_super) { - __extends(NamedTypeNode, _super); - function NamedTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMEDTYPE; - return _this; - } - return NamedTypeNode; -}(TypeNode)); -exports.NamedTypeNode = NamedTypeNode; -/** Represents a function type. */ -var FunctionTypeNode = /** @class */ (function (_super) { - __extends(FunctionTypeNode, _super); - function FunctionTypeNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONTYPE; - return _this; - } - return FunctionTypeNode; -}(TypeNode)); -exports.FunctionTypeNode = FunctionTypeNode; -/** Represents a type parameter. */ -var TypeParameterNode = /** @class */ (function (_super) { - __extends(TypeParameterNode, _super); - function TypeParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEPARAMETER; - return _this; - } - return TypeParameterNode; -}(Node)); -exports.TypeParameterNode = TypeParameterNode; -/** Represents the kind of a parameter. */ -var ParameterKind; -(function (ParameterKind) { - /** No specific flags. */ - ParameterKind[ParameterKind["DEFAULT"] = 0] = "DEFAULT"; - /** Is an optional parameter. */ - ParameterKind[ParameterKind["OPTIONAL"] = 1] = "OPTIONAL"; - /** Is a rest parameter. */ - ParameterKind[ParameterKind["REST"] = 2] = "REST"; -})(ParameterKind = exports.ParameterKind || (exports.ParameterKind = {})); -/** Represents a function parameter. */ -var ParameterNode = /** @class */ (function (_super) { - __extends(ParameterNode, _super); - function ParameterNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARAMETER; - /** Implicit field declaration, if applicable. */ - _this.implicitFieldDeclaration = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - ParameterNode.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - ParameterNode.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - ParameterNode.prototype.set = function (flag) { this.flags |= flag; }; - return ParameterNode; -}(Node)); -exports.ParameterNode = ParameterNode; -// special -/** Built-in decorator kinds. */ -var DecoratorKind; -(function (DecoratorKind) { - DecoratorKind[DecoratorKind["CUSTOM"] = 0] = "CUSTOM"; - DecoratorKind[DecoratorKind["GLOBAL"] = 1] = "GLOBAL"; - DecoratorKind[DecoratorKind["OPERATOR"] = 2] = "OPERATOR"; - DecoratorKind[DecoratorKind["OPERATOR_BINARY"] = 3] = "OPERATOR_BINARY"; - DecoratorKind[DecoratorKind["OPERATOR_PREFIX"] = 4] = "OPERATOR_PREFIX"; - DecoratorKind[DecoratorKind["OPERATOR_POSTFIX"] = 5] = "OPERATOR_POSTFIX"; - DecoratorKind[DecoratorKind["UNMANAGED"] = 6] = "UNMANAGED"; - DecoratorKind[DecoratorKind["SEALED"] = 7] = "SEALED"; - DecoratorKind[DecoratorKind["INLINE"] = 8] = "INLINE"; - DecoratorKind[DecoratorKind["EXTERNAL"] = 9] = "EXTERNAL"; - DecoratorKind[DecoratorKind["BUILTIN"] = 10] = "BUILTIN"; - DecoratorKind[DecoratorKind["LAZY"] = 11] = "LAZY"; - DecoratorKind[DecoratorKind["UNSAFE"] = 12] = "UNSAFE"; -})(DecoratorKind = exports.DecoratorKind || (exports.DecoratorKind = {})); -/** Returns the kind of the specified decorator. Defaults to {@link DecoratorKind.CUSTOM}. */ -function decoratorNameToKind(name) { - // @global, @inline, @operator, @sealed, @unmanaged - if (name.kind == NodeKind.IDENTIFIER) { - var nameStr = name.text; - assert(nameStr.length); - switch (nameStr.charCodeAt(0)) { - case 98 /* b */: { - if (nameStr == "builtin") - return DecoratorKind.BUILTIN; - break; - } - case 101 /* e */: { - if (nameStr == "external") - return DecoratorKind.EXTERNAL; - break; - } - case 103 /* g */: { - if (nameStr == "global") - return DecoratorKind.GLOBAL; - break; - } - case 105 /* i */: { - if (nameStr == "inline") - return DecoratorKind.INLINE; - break; - } - case 108 /* l */: { - if (nameStr == "lazy") - return DecoratorKind.LAZY; - break; - } - case 111 /* o */: { - if (nameStr == "operator") - return DecoratorKind.OPERATOR; - break; - } - case 115 /* s */: { - if (nameStr == "sealed") - return DecoratorKind.SEALED; - break; - } - case 117 /* u */: { - if (nameStr == "unmanaged") - return DecoratorKind.UNMANAGED; - if (nameStr == "unsafe") - return DecoratorKind.UNSAFE; - break; - } - } - } - else if (name.kind == NodeKind.PROPERTYACCESS && - name.expression.kind == NodeKind.IDENTIFIER) { - var nameStr = name.expression.text; - assert(nameStr.length); - var propStr = name.property.text; - assert(propStr.length); - // @operator.binary, @operator.prefix, @operator.postfix - if (nameStr == "operator") { - switch (propStr.charCodeAt(0)) { - case 98 /* b */: { - if (propStr == "binary") - return DecoratorKind.OPERATOR_BINARY; - break; - } - case 112 /* p */: { - switch (propStr) { - case "prefix": return DecoratorKind.OPERATOR_PREFIX; - case "postfix": return DecoratorKind.OPERATOR_POSTFIX; - } - break; - } - } - } - } - return DecoratorKind.CUSTOM; -} -exports.decoratorNameToKind = decoratorNameToKind; -/** Represents a decorator. */ -var DecoratorNode = /** @class */ (function (_super) { - __extends(DecoratorNode, _super); - function DecoratorNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DECORATOR; - return _this; - } - return DecoratorNode; -}(Node)); -exports.DecoratorNode = DecoratorNode; -/** Comment kinds. */ -var CommentKind; -(function (CommentKind) { - /** Line comment. */ - CommentKind[CommentKind["LINE"] = 0] = "LINE"; - /** Triple-slash comment. */ - CommentKind[CommentKind["TRIPLE"] = 1] = "TRIPLE"; - /** Block comment. */ - CommentKind[CommentKind["BLOCK"] = 2] = "BLOCK"; -})(CommentKind = exports.CommentKind || (exports.CommentKind = {})); -/** Represents a comment. */ -var CommentNode = /** @class */ (function (_super) { - __extends(CommentNode, _super); - function CommentNode() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMENT; - return _this; - } - return CommentNode; -}(Node)); -exports.CommentNode = CommentNode; -// expressions -/** Base class of all expression nodes. */ -var Expression = /** @class */ (function (_super) { - __extends(Expression, _super); - function Expression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Expression; -}(Node)); -exports.Expression = Expression; -/** Represents an identifier expression. */ -var IdentifierExpression = /** @class */ (function (_super) { - __extends(IdentifierExpression, _super); - function IdentifierExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IDENTIFIER; - return _this; - } - return IdentifierExpression; -}(Expression)); -exports.IdentifierExpression = IdentifierExpression; -/** Indicates the kind of a literal. */ -var LiteralKind; -(function (LiteralKind) { - LiteralKind[LiteralKind["FLOAT"] = 0] = "FLOAT"; - LiteralKind[LiteralKind["INTEGER"] = 1] = "INTEGER"; - LiteralKind[LiteralKind["STRING"] = 2] = "STRING"; - LiteralKind[LiteralKind["REGEXP"] = 3] = "REGEXP"; - LiteralKind[LiteralKind["ARRAY"] = 4] = "ARRAY"; - LiteralKind[LiteralKind["OBJECT"] = 5] = "OBJECT"; -})(LiteralKind = exports.LiteralKind || (exports.LiteralKind = {})); -/** Base class of all literal expressions. */ -var LiteralExpression = /** @class */ (function (_super) { - __extends(LiteralExpression, _super); - function LiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.LITERAL; - return _this; - } - return LiteralExpression; -}(Expression)); -exports.LiteralExpression = LiteralExpression; -/** Represents an `[]` literal expression. */ -var ArrayLiteralExpression = /** @class */ (function (_super) { - __extends(ArrayLiteralExpression, _super); - function ArrayLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.ARRAY; - return _this; - } - return ArrayLiteralExpression; -}(LiteralExpression)); -exports.ArrayLiteralExpression = ArrayLiteralExpression; -/** Indicates the kind of an assertion. */ -var AssertionKind; -(function (AssertionKind) { - AssertionKind[AssertionKind["PREFIX"] = 0] = "PREFIX"; - AssertionKind[AssertionKind["AS"] = 1] = "AS"; - AssertionKind[AssertionKind["NONNULL"] = 2] = "NONNULL"; -})(AssertionKind = exports.AssertionKind || (exports.AssertionKind = {})); -/** Represents an assertion expression. */ -var AssertionExpression = /** @class */ (function (_super) { - __extends(AssertionExpression, _super); - function AssertionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ASSERTION; - return _this; - } - return AssertionExpression; -}(Expression)); -exports.AssertionExpression = AssertionExpression; -/** Represents a binary expression. */ -var BinaryExpression = /** @class */ (function (_super) { - __extends(BinaryExpression, _super); - function BinaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BINARY; - return _this; - } - return BinaryExpression; -}(Expression)); -exports.BinaryExpression = BinaryExpression; -/** Represents a call expression. */ -var CallExpression = /** @class */ (function (_super) { - __extends(CallExpression, _super); - function CallExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CALL; - return _this; - } - Object.defineProperty(CallExpression.prototype, "typeArgumentsRange", { - /** Gets the type arguments range for reporting. */ - get: function () { - var typeArguments = this.typeArguments; - var numTypeArguments; - if (typeArguments && (numTypeArguments = typeArguments.length)) { - return tokenizer_1.Range.join(typeArguments[0].range, typeArguments[numTypeArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(CallExpression.prototype, "argumentsRange", { - /** Gets the arguments range for reporting. */ - get: function () { - var args = this.arguments; - var numArguments = args.length; - if (numArguments) { - return tokenizer_1.Range.join(args[0].range, args[numArguments - 1].range); - } - return this.expression.range; - }, - enumerable: true, - configurable: true - }); - return CallExpression; -}(Expression)); -exports.CallExpression = CallExpression; -/** Represents a class expression using the 'class' keyword. */ -var ClassExpression = /** @class */ (function (_super) { - __extends(ClassExpression, _super); - function ClassExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASS; - return _this; - } - return ClassExpression; -}(Expression)); -exports.ClassExpression = ClassExpression; -/** Represents a comma expression composed of multiple expressions. */ -var CommaExpression = /** @class */ (function (_super) { - __extends(CommaExpression, _super); - function CommaExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.COMMA; - return _this; - } - return CommaExpression; -}(Expression)); -exports.CommaExpression = CommaExpression; -/** Represents a `constructor` expression. */ -var ConstructorExpression = /** @class */ (function (_super) { - __extends(ConstructorExpression, _super); - function ConstructorExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONSTRUCTOR; - _this.text = "constructor"; - _this.symbol = common_1.CommonSymbols.constructor; - return _this; - } - return ConstructorExpression; -}(IdentifierExpression)); -exports.ConstructorExpression = ConstructorExpression; -/** Represents an element access expression, e.g., array access. */ -var ElementAccessExpression = /** @class */ (function (_super) { - __extends(ElementAccessExpression, _super); - function ElementAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ELEMENTACCESS; - return _this; - } - return ElementAccessExpression; -}(Expression)); -exports.ElementAccessExpression = ElementAccessExpression; -/** Represents a float literal expression. */ -var FloatLiteralExpression = /** @class */ (function (_super) { - __extends(FloatLiteralExpression, _super); - function FloatLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.FLOAT; - return _this; - } - return FloatLiteralExpression; -}(LiteralExpression)); -exports.FloatLiteralExpression = FloatLiteralExpression; -/** Represents a function expression using the 'function' keyword. */ -var FunctionExpression = /** @class */ (function (_super) { - __extends(FunctionExpression, _super); - function FunctionExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTION; - return _this; - } - return FunctionExpression; -}(Expression)); -exports.FunctionExpression = FunctionExpression; -/** Represents an `instanceof` expression. */ -var InstanceOfExpression = /** @class */ (function (_super) { - __extends(InstanceOfExpression, _super); - function InstanceOfExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INSTANCEOF; - return _this; - } - return InstanceOfExpression; -}(Expression)); -exports.InstanceOfExpression = InstanceOfExpression; -/** Represents an integer literal expression. */ -var IntegerLiteralExpression = /** @class */ (function (_super) { - __extends(IntegerLiteralExpression, _super); - function IntegerLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.INTEGER; - return _this; - } - return IntegerLiteralExpression; -}(LiteralExpression)); -exports.IntegerLiteralExpression = IntegerLiteralExpression; -/** Represents a `new` expression. Like a call but with its own kind. */ -var NewExpression = /** @class */ (function (_super) { - __extends(NewExpression, _super); - function NewExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NEW; - return _this; - } - return NewExpression; -}(CallExpression)); -exports.NewExpression = NewExpression; -/** Represents a `null` expression. */ -var NullExpression = /** @class */ (function (_super) { - __extends(NullExpression, _super); - function NullExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NULL; - _this.text = "null"; - _this.symbol = common_1.CommonSymbols.null_; - return _this; - } - return NullExpression; -}(IdentifierExpression)); -exports.NullExpression = NullExpression; -/** Represents an object literal expression. */ -var ObjectLiteralExpression = /** @class */ (function (_super) { - __extends(ObjectLiteralExpression, _super); - function ObjectLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.OBJECT; - return _this; - } - return ObjectLiteralExpression; -}(LiteralExpression)); -exports.ObjectLiteralExpression = ObjectLiteralExpression; -/** Represents a parenthesized expression. */ -var ParenthesizedExpression = /** @class */ (function (_super) { - __extends(ParenthesizedExpression, _super); - function ParenthesizedExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PARENTHESIZED; - return _this; - } - return ParenthesizedExpression; -}(Expression)); -exports.ParenthesizedExpression = ParenthesizedExpression; -/** Represents a property access expression. */ -var PropertyAccessExpression = /** @class */ (function (_super) { - __extends(PropertyAccessExpression, _super); - function PropertyAccessExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.PROPERTYACCESS; - return _this; - } - return PropertyAccessExpression; -}(Expression)); -exports.PropertyAccessExpression = PropertyAccessExpression; -/** Represents a regular expression literal expression. */ -var RegexpLiteralExpression = /** @class */ (function (_super) { - __extends(RegexpLiteralExpression, _super); - function RegexpLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.REGEXP; - return _this; - } - return RegexpLiteralExpression; -}(LiteralExpression)); -exports.RegexpLiteralExpression = RegexpLiteralExpression; -/** Represents a ternary expression, i.e., short if notation. */ -var TernaryExpression = /** @class */ (function (_super) { - __extends(TernaryExpression, _super); - function TernaryExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TERNARY; - return _this; - } - return TernaryExpression; -}(Expression)); -exports.TernaryExpression = TernaryExpression; -/** Represents a string literal expression. */ -var StringLiteralExpression = /** @class */ (function (_super) { - __extends(StringLiteralExpression, _super); - function StringLiteralExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.literalKind = LiteralKind.STRING; - return _this; - } - return StringLiteralExpression; -}(LiteralExpression)); -exports.StringLiteralExpression = StringLiteralExpression; -/** Represents a `super` expression. */ -var SuperExpression = /** @class */ (function (_super) { - __extends(SuperExpression, _super); - function SuperExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SUPER; - _this.text = "super"; - _this.symbol = common_1.CommonSymbols.super_; - return _this; - } - return SuperExpression; -}(IdentifierExpression)); -exports.SuperExpression = SuperExpression; -/** Represents a `this` expression. */ -var ThisExpression = /** @class */ (function (_super) { - __extends(ThisExpression, _super); - function ThisExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THIS; - _this.text = "this"; - _this.symbol = common_1.CommonSymbols.this_; - return _this; - } - return ThisExpression; -}(IdentifierExpression)); -exports.ThisExpression = ThisExpression; -/** Represents a `true` expression. */ -var TrueExpression = /** @class */ (function (_super) { - __extends(TrueExpression, _super); - function TrueExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRUE; - _this.text = "true"; - _this.symbol = common_1.CommonSymbols.true_; - return _this; - } - return TrueExpression; -}(IdentifierExpression)); -exports.TrueExpression = TrueExpression; -/** Represents a `false` expression. */ -var FalseExpression = /** @class */ (function (_super) { - __extends(FalseExpression, _super); - function FalseExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FALSE; - _this.text = "false"; - _this.symbol = common_1.CommonSymbols.false_; - return _this; - } - return FalseExpression; -}(IdentifierExpression)); -exports.FalseExpression = FalseExpression; -/** Base class of all unary expressions. */ -var UnaryExpression = /** @class */ (function (_super) { - __extends(UnaryExpression, _super); - function UnaryExpression() { - return _super !== null && _super.apply(this, arguments) || this; - } - return UnaryExpression; -}(Expression)); -exports.UnaryExpression = UnaryExpression; -/** Represents a unary postfix expression, e.g. a postfix increment. */ -var UnaryPostfixExpression = /** @class */ (function (_super) { - __extends(UnaryPostfixExpression, _super); - function UnaryPostfixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPOSTFIX; - return _this; - } - return UnaryPostfixExpression; -}(UnaryExpression)); -exports.UnaryPostfixExpression = UnaryPostfixExpression; -/** Represents a unary prefix expression, e.g. a negation. */ -var UnaryPrefixExpression = /** @class */ (function (_super) { - __extends(UnaryPrefixExpression, _super); - function UnaryPrefixExpression() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.UNARYPREFIX; - return _this; - } - return UnaryPrefixExpression; -}(UnaryExpression)); -exports.UnaryPrefixExpression = UnaryPrefixExpression; -// statements -/** Base class of all statement nodes. */ -var Statement = /** @class */ (function (_super) { - __extends(Statement, _super); - function Statement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return Statement; -}(Node)); -exports.Statement = Statement; -/** Indicates the specific kind of a source. */ -var SourceKind; -(function (SourceKind) { - /** User-provided file. */ - SourceKind[SourceKind["USER"] = 0] = "USER"; - /** User-provided entry file. */ - SourceKind[SourceKind["USER_ENTRY"] = 1] = "USER_ENTRY"; - /** Library-provided file. */ - SourceKind[SourceKind["LIBRARY"] = 2] = "LIBRARY"; - /** Library-provided entry file. */ - SourceKind[SourceKind["LIBRARY_ENTRY"] = 3] = "LIBRARY_ENTRY"; -})(SourceKind = exports.SourceKind || (exports.SourceKind = {})); -/** A top-level source node. */ -var Source = /** @class */ (function (_super) { - __extends(Source, _super); - /** Constructs a new source node. */ - function Source(normalizedPath, text, kind) { - var _this = _super.call(this) || this; - _this.kind = NodeKind.SOURCE; - _this.parent = null; - /** Tokenizer reference. */ - _this.tokenizer = null; - /** Source map index. */ - _this.debugInfoIndex = -1; - /** Re-exported sources. */ - _this.exportPaths = null; - _this.sourceKind = kind; - _this.normalizedPath = normalizedPath; - var internalPath = mangleInternalPath(_this.normalizedPath); - _this.internalPath = internalPath; - var pos = internalPath.lastIndexOf(common_1.PATH_DELIMITER); - _this.simplePath = pos >= 0 ? internalPath.substring(pos + 1) : internalPath; - _this.statements = new Array(); - _this.range = new tokenizer_1.Range(_this, 0, text.length); - _this.text = text; - return _this; - } - Object.defineProperty(Source.prototype, "isLibrary", { - get: function () { - var kind = this.sourceKind; - return kind == SourceKind.LIBRARY || kind == SourceKind.LIBRARY_ENTRY; - }, - enumerable: true, - configurable: true - }); - return Source; -}(Node)); -exports.Source = Source; -/** Base class of all declaration statements. */ -var DeclarationStatement = /** @class */ (function (_super) { - __extends(DeclarationStatement, _super); - function DeclarationStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - /** Array of decorators. */ - _this.decorators = null; - /** Common flags indicating specific traits. */ - _this.flags = common_1.CommonFlags.NONE; - return _this; - } - /** Tests if this node has the specified flag or flags. */ - DeclarationStatement.prototype.is = function (flag) { return (this.flags & flag) == flag; }; - /** Tests if this node has one of the specified flags. */ - DeclarationStatement.prototype.isAny = function (flag) { return (this.flags & flag) != 0; }; - /** Sets a specific flag or flags. */ - DeclarationStatement.prototype.set = function (flag) { this.flags |= flag; }; - return DeclarationStatement; -}(Statement)); -exports.DeclarationStatement = DeclarationStatement; -/** Represents an index signature declaration. */ -var IndexSignatureDeclaration = /** @class */ (function (_super) { - __extends(IndexSignatureDeclaration, _super); - function IndexSignatureDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INDEXSIGNATUREDECLARATION; - return _this; - } - return IndexSignatureDeclaration; -}(DeclarationStatement)); -exports.IndexSignatureDeclaration = IndexSignatureDeclaration; -/** Base class of all variable-like declaration statements. */ -var VariableLikeDeclarationStatement = /** @class */ (function (_super) { - __extends(VariableLikeDeclarationStatement, _super); - function VariableLikeDeclarationStatement() { - return _super !== null && _super.apply(this, arguments) || this; - } - return VariableLikeDeclarationStatement; -}(DeclarationStatement)); -exports.VariableLikeDeclarationStatement = VariableLikeDeclarationStatement; -/** Represents a block statement. */ -var BlockStatement = /** @class */ (function (_super) { - __extends(BlockStatement, _super); - function BlockStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BLOCK; - return _this; - } - return BlockStatement; -}(Statement)); -exports.BlockStatement = BlockStatement; -/** Represents a `break` statement. */ -var BreakStatement = /** @class */ (function (_super) { - __extends(BreakStatement, _super); - function BreakStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.BREAK; - return _this; - } - return BreakStatement; -}(Statement)); -exports.BreakStatement = BreakStatement; -/** Represents a `class` declaration. */ -var ClassDeclaration = /** @class */ (function (_super) { - __extends(ClassDeclaration, _super); - function ClassDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CLASSDECLARATION; - return _this; - } - Object.defineProperty(ClassDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - return ClassDeclaration; -}(DeclarationStatement)); -exports.ClassDeclaration = ClassDeclaration; -/** Represents a `continue` statement. */ -var ContinueStatement = /** @class */ (function (_super) { - __extends(ContinueStatement, _super); - function ContinueStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.CONTINUE; - return _this; - } - return ContinueStatement; -}(Statement)); -exports.ContinueStatement = ContinueStatement; -/** Represents a `do` statement. */ -var DoStatement = /** @class */ (function (_super) { - __extends(DoStatement, _super); - function DoStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.DO; - return _this; - } - return DoStatement; -}(Statement)); -exports.DoStatement = DoStatement; -/** Represents an empty statement, i.e., a semicolon terminating nothing. */ -var EmptyStatement = /** @class */ (function (_super) { - __extends(EmptyStatement, _super); - function EmptyStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EMPTY; - return _this; - } - return EmptyStatement; -}(Statement)); -exports.EmptyStatement = EmptyStatement; -/** Represents an `enum` declaration. */ -var EnumDeclaration = /** @class */ (function (_super) { - __extends(EnumDeclaration, _super); - function EnumDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMDECLARATION; - return _this; - } - return EnumDeclaration; -}(DeclarationStatement)); -exports.EnumDeclaration = EnumDeclaration; -/** Represents a value of an `enum` declaration. */ -var EnumValueDeclaration = /** @class */ (function (_super) { - __extends(EnumValueDeclaration, _super); - function EnumValueDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.ENUMVALUEDECLARATION; - return _this; - } - return EnumValueDeclaration; -}(VariableLikeDeclarationStatement)); -exports.EnumValueDeclaration = EnumValueDeclaration; -/** Represents an `export import` statement of an interface. */ -var ExportImportStatement = /** @class */ (function (_super) { - __extends(ExportImportStatement, _super); - function ExportImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTIMPORT; - return _this; - } - return ExportImportStatement; -}(Node)); -exports.ExportImportStatement = ExportImportStatement; -/** Represents a member of an `export` statement. */ -var ExportMember = /** @class */ (function (_super) { - __extends(ExportMember, _super); - function ExportMember() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTMEMBER; - return _this; - } - return ExportMember; -}(Node)); -exports.ExportMember = ExportMember; -/** Represents an `export` statement. */ -var ExportStatement = /** @class */ (function (_super) { - __extends(ExportStatement, _super); - function ExportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORT; - return _this; - } - return ExportStatement; -}(Statement)); -exports.ExportStatement = ExportStatement; -/** Represents an `export default` statement. */ -var ExportDefaultStatement = /** @class */ (function (_super) { - __extends(ExportDefaultStatement, _super); - function ExportDefaultStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPORTDEFAULT; - return _this; - } - return ExportDefaultStatement; -}(Statement)); -exports.ExportDefaultStatement = ExportDefaultStatement; -/** Represents an expression that is used as a statement. */ -var ExpressionStatement = /** @class */ (function (_super) { - __extends(ExpressionStatement, _super); - function ExpressionStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.EXPRESSION; - return _this; - } - return ExpressionStatement; -}(Statement)); -exports.ExpressionStatement = ExpressionStatement; -/** Represents a field declaration within a `class`. */ -var FieldDeclaration = /** @class */ (function (_super) { - __extends(FieldDeclaration, _super); - function FieldDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FIELDDECLARATION; - /** Parameter index if declared as a constructor parameter, otherwise `-1`. */ - _this.parameterIndex = -1; - return _this; - } - return FieldDeclaration; -}(VariableLikeDeclarationStatement)); -exports.FieldDeclaration = FieldDeclaration; -/** Represents a `for` statement. */ -var ForStatement = /** @class */ (function (_super) { - __extends(ForStatement, _super); - function ForStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FOR; - return _this; - } - return ForStatement; -}(Statement)); -exports.ForStatement = ForStatement; -/** Indicates the kind of an array function. */ -var ArrowKind; -(function (ArrowKind) { - /** Not an arrow function. */ - ArrowKind[ArrowKind["NONE"] = 0] = "NONE"; - /** Parenthesized parameter list. */ - ArrowKind[ArrowKind["ARROW_PARENTHESIZED"] = 1] = "ARROW_PARENTHESIZED"; - /** Single parameter without parenthesis. */ - ArrowKind[ArrowKind["ARROW_SINGLE"] = 2] = "ARROW_SINGLE"; -})(ArrowKind = exports.ArrowKind || (exports.ArrowKind = {})); -/** Represents a `function` declaration. */ -var FunctionDeclaration = /** @class */ (function (_super) { - __extends(FunctionDeclaration, _super); - function FunctionDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.FUNCTIONDECLARATION; - return _this; - } - Object.defineProperty(FunctionDeclaration.prototype, "isGeneric", { - get: function () { - var typeParameters = this.typeParameters; - return typeParameters != null && typeParameters.length > 0; - }, - enumerable: true, - configurable: true - }); - /** Clones this function declaration. */ - FunctionDeclaration.prototype.clone = function () { - return Node.createFunctionDeclaration(this.name, this.typeParameters, this.signature, this.body, this.decorators, this.flags, this.arrowKind, this.range); - }; - return FunctionDeclaration; -}(DeclarationStatement)); -exports.FunctionDeclaration = FunctionDeclaration; -/** Represents an `if` statement. */ -var IfStatement = /** @class */ (function (_super) { - __extends(IfStatement, _super); - function IfStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IF; - return _this; - } - return IfStatement; -}(Statement)); -exports.IfStatement = IfStatement; -/** Represents an `import` declaration part of an {@link ImportStatement}. */ -var ImportDeclaration = /** @class */ (function (_super) { - __extends(ImportDeclaration, _super); - function ImportDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORTDECLARATION; - return _this; - } - return ImportDeclaration; -}(DeclarationStatement)); -exports.ImportDeclaration = ImportDeclaration; -/** Represents an `import` statement. */ -var ImportStatement = /** @class */ (function (_super) { - __extends(ImportStatement, _super); - function ImportStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.IMPORT; - return _this; - } - return ImportStatement; -}(Statement)); -exports.ImportStatement = ImportStatement; -/** Represents an `interfarce` declaration. */ -var InterfaceDeclaration = /** @class */ (function (_super) { - __extends(InterfaceDeclaration, _super); - function InterfaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.INTERFACEDECLARATION; - return _this; - } - return InterfaceDeclaration; -}(ClassDeclaration)); -exports.InterfaceDeclaration = InterfaceDeclaration; -/** Represents a method declaration within a `class`. */ -var MethodDeclaration = /** @class */ (function (_super) { - __extends(MethodDeclaration, _super); - function MethodDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.METHODDECLARATION; - return _this; - } - return MethodDeclaration; -}(FunctionDeclaration)); -exports.MethodDeclaration = MethodDeclaration; -/** Represents a `namespace` declaration. */ -var NamespaceDeclaration = /** @class */ (function (_super) { - __extends(NamespaceDeclaration, _super); - function NamespaceDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.NAMESPACEDECLARATION; - return _this; - } - return NamespaceDeclaration; -}(DeclarationStatement)); -exports.NamespaceDeclaration = NamespaceDeclaration; -/** Represents a `return` statement. */ -var ReturnStatement = /** @class */ (function (_super) { - __extends(ReturnStatement, _super); - function ReturnStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.RETURN; - return _this; - } - return ReturnStatement; -}(Statement)); -exports.ReturnStatement = ReturnStatement; -/** Represents a single `case` within a `switch` statement. */ -var SwitchCase = /** @class */ (function (_super) { - __extends(SwitchCase, _super); - function SwitchCase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCHCASE; - return _this; - } - return SwitchCase; -}(Node)); -exports.SwitchCase = SwitchCase; -/** Represents a `switch` statement. */ -var SwitchStatement = /** @class */ (function (_super) { - __extends(SwitchStatement, _super); - function SwitchStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.SWITCH; - return _this; - } - return SwitchStatement; -}(Statement)); -exports.SwitchStatement = SwitchStatement; -/** Represents a `throw` statement. */ -var ThrowStatement = /** @class */ (function (_super) { - __extends(ThrowStatement, _super); - function ThrowStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.THROW; - return _this; - } - return ThrowStatement; -}(Statement)); -exports.ThrowStatement = ThrowStatement; -/** Represents a `try` statement. */ -var TryStatement = /** @class */ (function (_super) { - __extends(TryStatement, _super); - function TryStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TRY; - return _this; - } - return TryStatement; -}(Statement)); -exports.TryStatement = TryStatement; -/** Represents a `type` declaration. */ -var TypeDeclaration = /** @class */ (function (_super) { - __extends(TypeDeclaration, _super); - function TypeDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.TYPEDECLARATION; - return _this; - } - return TypeDeclaration; -}(DeclarationStatement)); -exports.TypeDeclaration = TypeDeclaration; -/** Represents a variable declaration part of a {@link VariableStatement}. */ -var VariableDeclaration = /** @class */ (function (_super) { - __extends(VariableDeclaration, _super); - function VariableDeclaration() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLEDECLARATION; - return _this; - } - return VariableDeclaration; -}(VariableLikeDeclarationStatement)); -exports.VariableDeclaration = VariableDeclaration; -/** Represents a variable statement wrapping {@link VariableDeclaration}s. */ -var VariableStatement = /** @class */ (function (_super) { - __extends(VariableStatement, _super); - function VariableStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VARIABLE; - return _this; - } - return VariableStatement; -}(Statement)); -exports.VariableStatement = VariableStatement; -/** Represents a void statement dropping an expression's value. */ -var VoidStatement = /** @class */ (function (_super) { - __extends(VoidStatement, _super); - function VoidStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.VOID; - return _this; - } - return VoidStatement; -}(Statement)); -exports.VoidStatement = VoidStatement; -/** Represents a `while` statement. */ -var WhileStatement = /** @class */ (function (_super) { - __extends(WhileStatement, _super); - function WhileStatement() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.kind = NodeKind.WHILE; - return _this; - } - return WhileStatement; -}(Statement)); -exports.WhileStatement = WhileStatement; -/** Finds the first decorator matching the specified kind. */ -function findDecorator(kind, decorators) { - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - var decorator = decorators[i]; - if (decorator.decoratorKind == kind) - return decorator; - } - } - return null; -} -exports.findDecorator = findDecorator; -/** Mangles an external to an internal path. */ -function mangleInternalPath(path) { - if (path.endsWith(".ts")) - path = path.substring(0, path.length - 3); - return path; -} -exports.mangleInternalPath = mangleInternalPath; -/** Tests if the specified type node represents an omitted type. */ -function isTypeOmitted(type) { - if (type.kind == NodeKind.NAMEDTYPE) { - var name = type.name; - return !(name.next || name.identifier.text.length); - } - return false; -} -exports.isTypeOmitted = isTypeOmitted; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7Ozs7Ozs7Ozs7Ozs7O0FBRVIsbUNBS2tCO0FBRWxCLHlDQUlxQjtBQVFaLGdCQVhQLGlCQUFLLENBV087QUFBRSxnQkFUZCxpQkFBSyxDQVNjO0FBTnJCLCtCQUlnQjtBQUloQixvQ0FBb0M7QUFDcEMsSUFBWSxRQTJFWDtBQTNFRCxXQUFZLFFBQVE7SUFFbEIsMkNBQU0sQ0FBQTtJQUVOLFFBQVE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtJQUNaLCtDQUFRLENBQUE7SUFDUix5REFBYSxDQUFBO0lBQ2IsaURBQVMsQ0FBQTtJQUVULGNBQWM7SUFDZCxtREFBVSxDQUFBO0lBQ1YsaURBQVMsQ0FBQTtJQUNULDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0osMENBQUssQ0FBQTtJQUNMLDBDQUFLLENBQUE7SUFDTCwwREFBYSxDQUFBO0lBQ2IsMENBQUssQ0FBQTtJQUNMLGdEQUFRLENBQUE7SUFDUixvREFBVSxDQUFBO0lBQ1YsOENBQU8sQ0FBQTtJQUNQLHNDQUFHLENBQUE7SUFDSCx3Q0FBSSxDQUFBO0lBQ0osMERBQWEsQ0FBQTtJQUNiLDREQUFjLENBQUE7SUFDZCw4Q0FBTyxDQUFBO0lBQ1AsMENBQUssQ0FBQTtJQUNMLHdDQUFJLENBQUE7SUFDSix3Q0FBSSxDQUFBO0lBQ0osc0RBQVcsQ0FBQTtJQUNYLHdEQUFZLENBQUE7SUFDWixzREFBVyxDQUFBO0lBRVgsYUFBYTtJQUNiLDBDQUFLLENBQUE7SUFDTCwwQ0FBSyxDQUFBO0lBQ0wsZ0RBQVEsQ0FBQTtJQUNSLG9DQUFFLENBQUE7SUFDRiwwQ0FBSyxDQUFBO0lBQ0wsNENBQU0sQ0FBQTtJQUNOLDBEQUFhLENBQUE7SUFDYix3REFBWSxDQUFBO0lBQ1osb0RBQVUsQ0FBQTtJQUNWLHNDQUFH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R0FPNUM7QUFQWSx3Q0FBYztBQVMzQiw2REFBNkQ7QUFDN0QsU0FBZ0IsYUFBYSxDQUFDLElBQW1CLEVBQUUsVUFBa0M7SUFDbkYsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pELElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLFNBQVMsQ0FBQyxhQUFhLElBQUksSUFBSTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztTQUN2RDtLQUNGO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBUkQsc0NBUUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBSEQsZ0RBR0M7QUFFRCxtRUFBbUU7QUFDbkUsU0FBZ0IsYUFBYSxDQUFDLElBQWM7SUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFJLEdBQW1CLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDdEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQU5ELHNDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBYnN0cmFjdCBzeW50YXggdHJlZSByZXByZXNlbnRpbmcgYSBzb3VyY2UgZmlsZSBvbmNlIHBhcnNlZC5cbiAqIEBtb2R1bGUgYXN0XG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBDb21tb25GbGFncyxcbiAgQ29tbW9uU3ltYm9scyxcbiAgUEFUSF9ERUxJTUlURVIsXG4gIExJQlJBUllfUFJFRklYXG59IGZyb20gXCIuL2NvbW1vblwiO1xuXG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5pemVyLFxuICBSYW5nZVxufSBmcm9tIFwiLi90b2tlbml6ZXJcIjtcblxuaW1wb3J0IHtcbiAgbm9ybWFsaXplUGF0aCxcbiAgcmVzb2x2ZVBhdGgsXG4gIENoYXJDb2RlXG59IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IHsgVG9rZW4sIFJhbmdlIH07XG5cbi8qKiBJbmRpY2F0ZXMgdGhlIGtpbmQgb2YgYSBub2RlLiAqL1xuZXhwb3J0IGVudW0gTm9kZUtpbmQge1xuXG4gIFNPVVJDRSxcblxuICAvLyB0eXBlc1xuICBOQU1FRFRZUEUsXG4gIEZVTkNUSU9OVFlQRSxcbiAgVFlQRU5BTUUsXG4gIFRZUEVQQVJBTUVURVIsXG4gIFBBUkFNRVRFUixcblxuICAvLyBleHByZXNzaW9uc1xuICBJREVOVElGSUVSLFxuICBBU1NFUlRJT04sXG4gIEJJTkFSWSxcbiAgQ0FMTCxcbiAgQ0xBU1MsXG4gIENPTU1BLFxuICBFTEVNRU5UQUNDRVNTLFxuICBGQUxTRSxcbiAgRlVOQ1RJT04sXG4gIElOU1RBTkNFT0YsXG4gIExJVEVSQUwsXG4gIE5FVyxcbiAgTlVMTCxcbiAgUEFSRU5USEVTSVpFRCxcbiAgUFJPUEVSVFlBQ0NFU1MsXG4gIFRFUk5BUlksXG4gIFNVUEVSLFxuICBUSElTLFxuICBUUlVFLFxuICBDT05TVFJVQ1RPUixcbiAgVU5BUllQT1NURklYLFxuICBVTkFSWVBSRUZJWCxcblxuICAvLyBzdGF0ZW1lbnRzXG4gIEJMT0NLLFxuICBCUkVBSyxcbiAgQ09OVElOVUUsXG4gIERPLFxuICBFTVBUWSxcbiAgRVhQT1JULFxuICBFWFBPUlRERUZBVUxULFxuICBFWFBPUlRJTVBPUlQsXG4gIEVYUFJFU1NJT04sXG4gIEZPUixcbiAgSUYsXG4gIElNUE9SVCxcbiAgUkVUVVJOLFxuICBTV0lUQ0gsXG4gIFRIUk9XLFxuICBUUlksXG4gIFZBUklBQkxFLFxuICBWT0lELFxuICBXSElMRSxcblxuICAvLyBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzXG4gIENMQVNTREVDTEFSQVRJT04sXG4gIEVOVU1ERUNMQVJBVElPTixcbiAgRU5VTVZBTFVFREVDTEFSQVRJT04sXG4gIEZJRUxEREVDTEFSQVRJT04sXG4gIEZVTkNUSU9OREVDTEFSQVRJT04sXG4gIElNUE9SVERFQ0xBUkFUSU9OLFxuICBJTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OLFxuICBJTlRFUkZBQ0VERUNMQVJBVElPTixcbiAgTUVUSE9EREVDTEFSQVRJT04sXG4gIE5BTUVTUEFDRURFQ0xBUkFUSU9OLFxuICBUWVBFREVDTEFSQVRJT04sXG4gIFZBUklBQkxFREVDTEFSQVRJT04sXG5cbiAgLy8gc3BlY2lhbFxuICBERUNPUkFUT1IsXG4gIEVYUE9SVE1FTUJFUixcbiAgU1dJVENIQ0FTRSxcbiAgQ09NTUVOVFxufVxuXG4vKiogQ2hlY2tzIGlmIGEgbm9kZSByZXByZXNlbnRzIGEgY29uc3RhbnQgdmFsdWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzQ29uc3RhbnRWYWx1ZShraW5kOiBOb2RlS2luZCk6IGJvb2wge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE5vZGVLaW5kLkxJVEVSQUw6XG4gICAgY2FzZSBOb2RlS2luZC5OVUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuVFJVRTpcbiAgICBjYXNlIE5vZGVLaW5kLkZBTFNFOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGVJc0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLkFTU0VSVElPTjogLy8gaWYga2luZD1OT05OVUxMXG4gICAgY2FzZSBOb2RlS2luZC5DQUxMOlxuICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlBBUkVOVEhFU0laRUQ6XG4gICAgY2FzZSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUzpcbiAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBDaGVja3MgaWYgYSBub2RlIG1pZ2h0IGJlIGNhbGxhYmxlIHdpdGggZ2VuZXJpYyBhcmd1bWVudHMuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZUlzR2VuZXJpY0NhbGxhYmxlKGtpbmQ6IE5vZGVLaW5kKTogYm9vbCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjpcbiAgICBjYXNlIE5vZGVLaW5kLlBST1BFUlRZQUNDRVNTOiByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlIHtcblxuICAvKiogTm9kZSBraW5kIGluZGljYXRvci4gKi9cbiAga2luZDogTm9kZUtpbmQ7XG4gIC8qKiBTb3VyY2UgcmFuZ2UuICovXG4gIHJhbmdlOiBSYW5nZTtcblxuICAvLyB0eXBlc1xuXG4gIHN0YXRpYyBjcmVhdGVUeXBlTmFtZShcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHZhciB0eXBlTmFtZSA9IG5ldyBUeXBlTmFtZSgpO1xuICAgIHR5cGVOYW1lLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZU5hbWUuaWRlbnRpZmllciA9IG5hbWU7XG4gICAgdHlwZU5hbWUubmV4dCA9IG51bGw7XG4gICAgcmV0dXJuIHR5cGVOYW1lO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNpbXBsZVR5cGVOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZU5hbWUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZVR5cGVOYW1lKE5vZGUuY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24obmFtZSwgcmFuZ2UpLCByYW5nZSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTmFtZWRUeXBlKFxuICAgIG5hbWU6IFR5cGVOYW1lLFxuICAgIHR5cGVBcmd1bWVudHM6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGlzTnVsbGFibGU6IGJvb2wsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHZhciB0eXBlID0gbmV3IE5hbWVkVHlwZU5vZGUoKTtcbiAgICB0eXBlLnJhbmdlID0gcmFuZ2U7XG4gICAgdHlwZS5uYW1lID0gbmFtZTtcbiAgICB0eXBlLnR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRnVuY3Rpb25UeXBlKFxuICAgIHBhcmFtZXRlcnM6IFBhcmFtZXRlck5vZGVbXSxcbiAgICByZXR1cm5UeXBlOiBUeXBlTm9kZSxcbiAgICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICBpc051bGxhYmxlOiBib29sLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvblR5cGVOb2RlIHtcbiAgICB2YXIgdHlwZSA9IG5ldyBGdW5jdGlvblR5cGVOb2RlKCk7XG4gICAgdHlwZS5yYW5nZSA9IHJhbmdlO1xuICAgIHR5cGUucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG4gICAgdHlwZS5yZXR1cm5UeXBlID0gcmV0dXJuVHlwZTtcbiAgICB0eXBlLmV4cGxpY2l0VGhpc1R5cGUgPSBleHBsaWNpdFRoaXNUeXBlO1xuICAgIHR5cGUuaXNOdWxsYWJsZSA9IGlzTnVsbGFibGU7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT21pdHRlZFR5cGUoXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE5hbWVkVHlwZU5vZGUge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZU5hbWVkVHlwZShcbiAgICAgIE5vZGUuY3JlYXRlU2ltcGxlVHlwZU5hbWUoXCJcIiwgcmFuZ2UpLFxuICAgICAgbnVsbCxcbiAgICAgIGZhbHNlLFxuICAgICAgcmFuZ2VcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVR5cGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsLFxuICAgIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVHlwZVBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFR5cGVQYXJhbWV0ZXJOb2RlKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubmFtZSA9IG5hbWU7XG4gICAgZWxlbS5leHRlbmRzVHlwZSA9IGV4dGVuZHNUeXBlO1xuICAgIGVsZW0uZGVmYXVsdFR5cGUgPSBkZWZhdWx0VHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVQYXJhbWV0ZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGtpbmQ6IFBhcmFtZXRlcktpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFBhcmFtZXRlck5vZGUge1xuICAgIHZhciBlbGVtID0gbmV3IFBhcmFtZXRlck5vZGUoKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLnBhcmFtZXRlcktpbmQgPSBraW5kO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgLy8gc3BlY2lhbFxuXG4gIHN0YXRpYyBjcmVhdGVEZWNvcmF0b3IoXG4gICAgbmFtZTogRXhwcmVzc2lvbixcbiAgICBhcmdzOiBFeHByZXNzaW9uW10gfCBudWxsLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBEZWNvcmF0b3JOb2RlIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEZWNvcmF0b3JOb2RlKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHN0bXQuZGVjb3JhdG9yS2luZCA9IGRlY29yYXRvck5hbWVUb0tpbmQobmFtZSk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWVudChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAga2luZDogQ29tbWVudEtpbmQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1lbnROb2RlIHtcbiAgICB2YXIgbm9kZSA9IG5ldyBDb21tZW50Tm9kZSgpO1xuICAgIG5vZGUucmFuZ2UgPSByYW5nZTtcbiAgICBub2RlLmNvbW1lbnRLaW5kID0ga2luZDtcbiAgICBub2RlLnRleHQgPSB0ZXh0O1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gZXhwcmVzc2lvbnNcblxuICBzdGF0aWMgY3JlYXRlSWRlbnRpZmllckV4cHJlc3Npb24oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBpc1F1b3RlZDogYm9vbCA9IGZhbHNlXG4gICk6IElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJZGVudGlmaWVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnRleHQgPSBuYW1lOyAvLyBUT0RPOiBleHRyYWN0IGZyb20gcmFuZ2VcbiAgICBleHByLnN5bWJvbCA9IG5hbWU7IC8vIFRPRE86IFN5bWJvbC5mb3IobmFtZSlcbiAgICBleHByLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW1wdHlJZGVudGlmaWVyRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IElkZW50aWZpZXJFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIudGV4dCA9IFwiXCI7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBlbGVtZW50czogKEV4cHJlc3Npb24gfCBudWxsKVtdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBBcnJheUxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBBcnJheUxpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZWxlbWVudEV4cHJlc3Npb25zID0gZWxlbWVudHM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQXNzZXJ0aW9uRXhwcmVzc2lvbihcbiAgICBhc3NlcnRpb25LaW5kOiBBc3NlcnRpb25LaW5kLFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEFzc2VydGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEFzc2VydGlvbkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5hc3NlcnRpb25LaW5kID0gYXNzZXJ0aW9uS2luZDtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIudG9UeXBlID0gdG9UeXBlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUJpbmFyeUV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIGxlZnQ6IEV4cHJlc3Npb24sXG4gICAgcmlnaHQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEJpbmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEJpbmFyeUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5vcGVyYXRvciA9IG9wZXJhdG9yO1xuICAgIGV4cHIubGVmdCA9IGxlZnQ7XG4gICAgZXhwci5yaWdodCA9IHJpZ2h0O1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNhbGxFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgdHlwZUFyZ3M6IFR5cGVOb2RlW10gfCBudWxsLFxuICAgIGFyZ3M6IEV4cHJlc3Npb25bXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ2FsbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENhbGxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUNsYXNzRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogQ2xhc3NEZWNsYXJhdGlvblxuICApOiBDbGFzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IENsYXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29tbWFFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb25zOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbW1hRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29tbWFFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbnMgPSBleHByZXNzaW9ucztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDb25zdHJ1Y3RvckV4cHJlc3Npb24oXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENvbnN0cnVjdG9yRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgQ29uc3RydWN0b3JFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgZWxlbWVudDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci5lbGVtZW50RXhwcmVzc2lvbiA9IGVsZW1lbnQ7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmFsc2VFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGYWxzZUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZhbHNlRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGbG9hdExpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBmNjQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihcbiAgICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvblxuICApOiBGdW5jdGlvbkV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IEZ1bmN0aW9uRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSBkZWNsYXJhdGlvbi5yYW5nZTtcbiAgICBleHByLmRlY2xhcmF0aW9uID0gZGVjbGFyYXRpb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2VPZkV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICBpc1R5cGU6IFR5cGVOb2RlLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnN0YW5jZU9mRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgSW5zdGFuY2VPZkV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICBleHByLmlzVHlwZSA9IGlzVHlwZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgdmFsdWU6IEk2NCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgZXhwci52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5ld0V4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICB0eXBlQXJnczogVHlwZU5vZGVbXSB8IG51bGwsXG4gICAgYXJnczogRXhwcmVzc2lvbltdLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOZXdFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBOZXdFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgZXhwci50eXBlQXJndW1lbnRzID0gdHlwZUFyZ3M7XG4gICAgZXhwci5hcmd1bWVudHMgPSBhcmdzO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU51bGxFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOdWxsRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgTnVsbEV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oXG4gICAgbmFtZXM6IElkZW50aWZpZXJFeHByZXNzaW9uW10sXG4gICAgdmFsdWVzOiBFeHByZXNzaW9uW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm5hbWVzID0gbmFtZXM7XG4gICAgZXhwci52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUGFyZW50aGVzaXplZEV4cHJlc3Npb24oXG4gICAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLmV4cHJlc3Npb24gPSBleHByZXNzaW9uO1xuICAgIGV4cHIucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihcbiAgICBwYXR0ZXJuOiBzdHJpbmcsXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFJlZ2V4cExpdGVyYWxFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIucGF0dGVybiA9IHBhdHRlcm47XG4gICAgZXhwci5wYXR0ZXJuRmxhZ3MgPSBmbGFncztcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUZXJuYXJ5RXhwcmVzc2lvbihcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgaWZUaGVuOiBFeHByZXNzaW9uLFxuICAgIGlmRWxzZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGVybmFyeUV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRlcm5hcnlFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIGV4cHIuaWZUaGVuID0gaWZUaGVuO1xuICAgIGV4cHIuaWZFbHNlID0gaWZFbHNlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uIHtcbiAgICB2YXIgZXhwciA9IG5ldyBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLnZhbHVlID0gdmFsdWU7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlU3VwZXJFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBTdXBlckV4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFN1cGVyRXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaGlzRXhwcmVzc2lvbihcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhpc0V4cHJlc3Npb24ge1xuICAgIHZhciBleHByID0gbmV3IFRoaXNFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRydWVFeHByZXNzaW9uKFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBUcnVlRXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVHJ1ZUV4cHJlc3Npb24oKTtcbiAgICBleHByLnJhbmdlID0gcmFuZ2U7XG4gICAgcmV0dXJuIGV4cHI7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVW5hcnlQb3N0Zml4RXhwcmVzc2lvbihcbiAgICBvcGVyYXRvcjogVG9rZW4sXG4gICAgb3BlcmFuZDogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbigpO1xuICAgIGV4cHIucmFuZ2UgPSByYW5nZTtcbiAgICBleHByLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgZXhwci5vcGVyYW5kID0gb3BlcmFuZDtcbiAgICByZXR1cm4gZXhwcjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVVbmFyeVByZWZpeEV4cHJlc3Npb24oXG4gICAgb3BlcmF0b3I6IFRva2VuLFxuICAgIG9wZXJhbmQ6IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFVuYXJ5UHJlZml4RXhwcmVzc2lvbiB7XG4gICAgdmFyIGV4cHIgPSBuZXcgVW5hcnlQcmVmaXhFeHByZXNzaW9uKCk7XG4gICAgZXhwci5yYW5nZSA9IHJhbmdlO1xuICAgIGV4cHIub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICBleHByLm9wZXJhbmQgPSBvcGVyYW5kO1xuICAgIHJldHVybiBleHByO1xuICB9XG5cbiAgLy8gc3RhdGVtZW50c1xuXG4gIHN0YXRpYyBjcmVhdGVCbG9ja1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQmxvY2tTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJsb2NrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQnJlYWtTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEJyZWFrU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVDbGFzc0RlY2xhcmF0aW9uKFxuICAgIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBpbXBsZW1lbnRzVHlwZXM6IE5hbWVkVHlwZU5vZGVbXSB8IG51bGwsIC8vIGNhbid0IGJlIGZ1bmN0aW9uc1xuICAgIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W10sXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IENsYXNzRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IENsYXNzRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IGlkZW50aWZpZXI7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10LmltcGxlbWVudHNUeXBlcyA9IGltcGxlbWVudHNUeXBlcztcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoXG4gICAgbGFiZWw6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogQ29udGludWVTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IENvbnRpbnVlU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQubGFiZWwgPSBsYWJlbDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEb1N0YXRlbWVudChcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudCxcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IERvU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBEb1N0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlbWVudChcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRW1wdHlTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEVtcHR5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUVudW1EZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICBtZW1iZXJzOiBFbnVtVmFsdWVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtRGVjbGFyYXRpb24ge1xuICAgIHZhciBzdG10ID0gbmV3IEVudW1EZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnZhbHVlcyA9IG1lbWJlcnM7XG4gICAgc3RtdC5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFbnVtVmFsdWVEZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFbnVtVmFsdWVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRW51bVZhbHVlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC52YWx1ZSA9IHZhbHVlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydFN0YXRlbWVudChcbiAgICBtZW1iZXJzOiBFeHBvcnRNZW1iZXJbXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGlzRGVjbGFyZTogYm9vbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBsZXQgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVQYXRoKHBhdGgudmFsdWUpO1xuICAgICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmVcbiAgICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoLFxuICAgICAgICAgIHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHsgLy8gYWJzb2x1dGVcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKExJQlJBUllfUFJFRklYKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgICAgfVxuICAgICAgICBzdG10Lm5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplZFBhdGg7XG4gICAgICB9XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG51bGw7XG4gICAgICBzdG10LmludGVybmFsUGF0aCA9IG51bGw7XG4gICAgfVxuICAgIHN0bXQuaXNEZWNsYXJlID0gaXNEZWNsYXJlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoXG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBFeHBvcnREZWZhdWx0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnREZWZhdWx0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5kZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogRXhwb3J0SW1wb3J0U3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LmV4dGVybmFsTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHBvcnRNZW1iZXIoXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgZXh0ZXJuYWxOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEV4cG9ydE1lbWJlciB7XG4gICAgdmFyIGVsZW0gPSBuZXcgRXhwb3J0TWVtYmVyKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0ubG9jYWxOYW1lID0gbmFtZTtcbiAgICBpZiAoIWV4dGVybmFsTmFtZSkgZXh0ZXJuYWxOYW1lID0gbmFtZTtcbiAgICBlbGVtLmV4cG9ydGVkTmFtZSA9IGV4dGVybmFsTmFtZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb25cbiAgKTogRXhwcmVzc2lvblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgRXhwcmVzc2lvblN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSBleHByZXNzaW9uLnJhbmdlO1xuICAgIHN0bXQuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSWZTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGlmVHJ1ZTogU3RhdGVtZW50LFxuICAgIGlmRmFsc2U6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IElmU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBJZlN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LmlmVHJ1ZSA9IGlmVHJ1ZTtcbiAgICBzdG10LmlmRmFsc2UgPSBpZkZhbHNlO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUltcG9ydFN0YXRlbWVudChcbiAgICBkZWNsczogSW1wb3J0RGVjbGFyYXRpb25bXSB8IG51bGwsXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gZGVjbHM7XG4gICAgc3RtdC5uYW1lc3BhY2VOYW1lID0gbnVsbDtcbiAgICBzdG10LnBhdGggPSBwYXRoO1xuICAgIHZhciBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZVBhdGgocGF0aC52YWx1ZSk7XG4gICAgaWYgKHBhdGgudmFsdWUuc3RhcnRzV2l0aChcIi5cIikpIHsgLy8gcmVsYXRpdmUgaW4gcHJvamVjdFxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7IC8vIGFic29sdXRlIGluIGxpYnJhcnlcbiAgICAgIGlmICghbm9ybWFsaXplZFBhdGguc3RhcnRzV2l0aChMSUJSQVJZX1BSRUZJWCkpIHtcbiAgICAgICAgbm9ybWFsaXplZFBhdGggPSBMSUJSQVJZX1BSRUZJWCArIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgfVxuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIH1cbiAgICBzdG10LmludGVybmFsUGF0aCA9IG1hbmdsZUludGVybmFsUGF0aChzdG10Lm5vcm1hbGl6ZWRQYXRoKTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbXBvcnRTdGF0ZW1lbnRXaXRoV2lsZGNhcmQoXG4gICAgaWRlbnRpZmllcjogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgcGF0aDogU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEltcG9ydFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW1wb3J0U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZGVjbGFyYXRpb25zID0gbnVsbDtcbiAgICBzdG10Lm5hbWVzcGFjZU5hbWUgPSBpZGVudGlmaWVyO1xuICAgIHN0bXQucGF0aCA9IHBhdGg7XG4gICAgdmFyIG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoLnZhbHVlKTtcbiAgICBpZiAocGF0aC52YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgc3RtdC5ub3JtYWxpemVkUGF0aCA9IHJlc29sdmVQYXRoKFxuICAgICAgICBub3JtYWxpemVkUGF0aCxcbiAgICAgICAgcmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW5vcm1hbGl6ZWRQYXRoLnN0YXJ0c1dpdGgoTElCUkFSWV9QUkVGSVgpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXRoID0gTElCUkFSWV9QUkVGSVggKyBub3JtYWxpemVkUGF0aDtcbiAgICAgIH1cbiAgICAgIHN0bXQubm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gICAgc3RtdC5pbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgoc3RtdC5ub3JtYWxpemVkUGF0aCk7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgZm9yZWlnbk5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uIHwgbnVsbCxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogSW1wb3J0RGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEltcG9ydERlY2xhcmF0aW9uKCk7XG4gICAgZWxlbS5yYW5nZSA9IHJhbmdlO1xuICAgIGVsZW0uZm9yZWlnbk5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmb3JlaWduTmFtZTtcbiAgICBlbGVtLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiBlbGVtO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUludGVyZmFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGwsIC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgICBtZW1iZXJzOiBEZWNsYXJhdGlvblN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgSW50ZXJmYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC50eXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzO1xuICAgIHN0bXQuZXh0ZW5kc1R5cGUgPSBleHRlbmRzVHlwZTtcbiAgICBzdG10Lm1lbWJlcnMgPSBtZW1iZXJzO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRmllbGREZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlOiBUeXBlTm9kZSB8IG51bGwsXG4gICAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGaWVsZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGaWVsZERlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZSA9IHR5cGU7XG4gICAgc3RtdC5pbml0aWFsaXplciA9IGluaXRpYWxpemVyO1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRm9yU3RhdGVtZW50KFxuICAgIGluaXRpYWxpemVyOiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGNvbmRpdGlvbjogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsLFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50LFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGb3JTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IEZvclN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7XG4gICAgc3RtdC5jb25kaXRpb24gPSBjb25kaXRpb247XG4gICAgc3RtdC5pbmNyZW1lbnRvciA9IGluY3JlbWVudG9yO1xuICAgIHN0bXQuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsLFxuICAgIHNpZ25hdHVyZTogRnVuY3Rpb25UeXBlTm9kZSxcbiAgICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIGFycm93S2luZDogQXJyb3dLaW5kLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBGdW5jdGlvbkRlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICBzdG10LmJvZHkgPSBib2R5O1xuICAgIHN0bXQuZGVjb3JhdG9ycyA9IGRlY29yYXRvcnM7XG4gICAgc3RtdC5hcnJvd0tpbmQgPSBhcnJvd0tpbmQ7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihcbiAgICBrZXlUeXBlOiBOYW1lZFR5cGVOb2RlLFxuICAgIHZhbHVlVHlwZTogVHlwZU5vZGUsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24ge1xuICAgIHZhciBlbGVtID0gbmV3IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24oKTtcbiAgICBlbGVtLnJhbmdlID0gcmFuZ2U7XG4gICAgZWxlbS5rZXlUeXBlID0ga2V5VHlwZTtcbiAgICBlbGVtLnZhbHVlVHlwZSA9IHZhbHVlVHlwZTtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVNZXRob2REZWNsYXJhdGlvbihcbiAgICBuYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbixcbiAgICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGwsXG4gICAgc2lnbmF0dXJlOiBGdW5jdGlvblR5cGVOb2RlLFxuICAgIGJvZHk6IFN0YXRlbWVudCB8IG51bGwsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IE1ldGhvZERlY2xhcmF0aW9uIHtcbiAgICB2YXIgc3RtdCA9IG5ldyBNZXRob2REZWNsYXJhdGlvbigpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmZsYWdzID0gZmxhZ3M7XG4gICAgc3RtdC5uYW1lID0gbmFtZTtcbiAgICBzdG10LnR5cGVQYXJhbWV0ZXJzID0gdHlwZVBhcmFtZXRlcnM7XG4gICAgc3RtdC5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgc3RtdC5ib2R5ID0gYm9keTtcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZU5hbWVzcGFjZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIG1lbWJlcnM6IFN0YXRlbWVudFtdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgZmxhZ3M6IENvbW1vbkZsYWdzLFxuICAgIHJhbmdlOiBSYW5nZVxuICApOiBOYW1lc3BhY2VEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgTmFtZXNwYWNlRGVjbGFyYXRpb24oKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5mbGFncyA9IGZsYWdzO1xuICAgIHN0bXQubmFtZSA9IG5hbWU7XG4gICAgc3RtdC5tZW1iZXJzID0gbWVtYmVycztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJldHVyblN0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbiB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFJldHVyblN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgUmV0dXJuU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoXG4gICAgY29uZGl0aW9uOiBFeHByZXNzaW9uLFxuICAgIGNhc2VzOiBTd2l0Y2hDYXNlW10sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFN3aXRjaFN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgU3dpdGNoU3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICAgIHN0bXQuY2FzZXMgPSBjYXNlcztcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVTd2l0Y2hDYXNlKFxuICAgIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogU3dpdGNoQ2FzZSB7XG4gICAgdmFyIGVsZW0gPSBuZXcgU3dpdGNoQ2FzZSgpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmxhYmVsID0gbGFiZWw7XG4gICAgZWxlbS5zdGF0ZW1lbnRzID0gc3RhdGVtZW50cztcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUaHJvd1N0YXRlbWVudChcbiAgICB2YWx1ZTogRXhwcmVzc2lvbixcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVGhyb3dTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFRocm93U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUcnlTdGF0ZW1lbnQoXG4gICAgc3RhdGVtZW50czogU3RhdGVtZW50W10sXG4gICAgY2F0Y2hWYXJpYWJsZTogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsLFxuICAgIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsLFxuICAgIGZpbmFsbHlTdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFRyeVN0YXRlbWVudCB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHJ5U3RhdGVtZW50KCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuc3RhdGVtZW50cyA9IHN0YXRlbWVudHM7XG4gICAgc3RtdC5jYXRjaFZhcmlhYmxlID0gY2F0Y2hWYXJpYWJsZTtcbiAgICBzdG10LmNhdGNoU3RhdGVtZW50cyA9IGNhdGNoU3RhdGVtZW50cztcbiAgICBzdG10LmZpbmFsbHlTdGF0ZW1lbnRzID0gZmluYWxseVN0YXRlbWVudHM7XG4gICAgcmV0dXJuIHN0bXQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVHlwZURlY2xhcmF0aW9uKFxuICAgIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uLFxuICAgIHR5cGVQYXJhbWV0ZXJzOiBUeXBlUGFyYW1ldGVyTm9kZVtdIHwgbnVsbCxcbiAgICBhbGlhczogVHlwZU5vZGUsXG4gICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbCxcbiAgICBmbGFnczogQ29tbW9uRmxhZ3MsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFR5cGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIHN0bXQgPSBuZXcgVHlwZURlY2xhcmF0aW9uKCk7XG4gICAgc3RtdC5yYW5nZSA9IHJhbmdlO1xuICAgIHN0bXQuZmxhZ3MgPSBmbGFncztcbiAgICBzdG10Lm5hbWUgPSBuYW1lO1xuICAgIHN0bXQudHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycztcbiAgICBzdG10LnR5cGUgPSBhbGlhcztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlU3RhdGVtZW50KFxuICAgIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdLFxuICAgIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZhcmlhYmxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBWYXJpYWJsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9ucztcbiAgICBzdG10LmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzO1xuICAgIHJldHVybiBzdG10O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oXG4gICAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb24sXG4gICAgdHlwZTogVHlwZU5vZGUgfCBudWxsLFxuICAgIGluaXRpYWxpemVyOiBFeHByZXNzaW9uIHwgbnVsbCxcbiAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsLFxuICAgIGZsYWdzOiBDb21tb25GbGFncyxcbiAgICByYW5nZTogUmFuZ2VcbiAgKTogVmFyaWFibGVEZWNsYXJhdGlvbiB7XG4gICAgdmFyIGVsZW0gPSBuZXcgVmFyaWFibGVEZWNsYXJhdGlvbigpO1xuICAgIGVsZW0ucmFuZ2UgPSByYW5nZTtcbiAgICBlbGVtLmZsYWdzID0gZmxhZ3M7XG4gICAgZWxlbS5uYW1lID0gbmFtZTtcbiAgICBlbGVtLnR5cGUgPSB0eXBlO1xuICAgIGVsZW0uaW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjtcbiAgICBlbGVtLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzOyAvLyBpbmhlcml0ZWRcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVWb2lkU3RhdGVtZW50KFxuICAgIGV4cHJlc3Npb246IEV4cHJlc3Npb24sXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFZvaWRTdGF0ZW1lbnQge1xuICAgIHZhciBzdG10ID0gbmV3IFZvaWRTdGF0ZW1lbnQoKTtcbiAgICBzdG10LnJhbmdlID0gcmFuZ2U7XG4gICAgc3RtdC5leHByZXNzaW9uID0gZXhwcmVzc2lvbjtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVXaGlsZVN0YXRlbWVudChcbiAgICBjb25kaXRpb246IEV4cHJlc3Npb24sXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQsXG4gICAgcmFuZ2U6IFJhbmdlXG4gICk6IFdoaWxlU3RhdGVtZW50IHtcbiAgICB2YXIgc3RtdCA9IG5ldyBXaGlsZVN0YXRlbWVudCgpO1xuICAgIHN0bXQucmFuZ2UgPSByYW5nZTtcbiAgICBzdG10LmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgICBzdG10LnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICByZXR1cm4gc3RtdDtcbiAgfVxufVxuXG4vLyB0eXBlc1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHlwZU5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAgLy8ga2luZCB2YXJpZXNcblxuICAvKiogV2hldGhlciBudWxsYWJsZSBvciBub3QuICovXG4gIGlzTnVsbGFibGU6IGJvb2w7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdHlwZSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVOYW1lIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFTkFNRTtcblxuICAvKiogSWRlbnRpZmllciBvZiB0aGlzIHBhcnQuICovXG4gIGlkZW50aWZpZXI6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogTmV4dCBwYXJ0IG9mIHRoZSB0eXBlIG5hbWUgb3IgYG51bGxgIGlmIHRoaXMgaXMgdGhlIGxhc3QgcGFydC4gKi9cbiAgbmV4dDogVHlwZU5hbWUgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG5hbWVkIHR5cGUuICovXG5leHBvcnQgY2xhc3MgTmFtZWRUeXBlTm9kZSBleHRlbmRzIFR5cGVOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVEVFlQRTtcblxuICAvKiogVHlwZSBuYW1lLiAqL1xuICBuYW1lOiBUeXBlTmFtZTtcbiAgLyoqIFR5cGUgYXJndW1lbnQgcmVmZXJlbmNlcy4gKi9cbiAgdHlwZUFyZ3VtZW50czogVHlwZU5vZGVbXSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvblR5cGVOb2RlIGV4dGVuZHMgVHlwZU5vZGUge1xuICBraW5kID0gTm9kZUtpbmQuRlVOQ1RJT05UWVBFO1xuXG4gIC8qKiBBY2NlcHRlZCBwYXJhbWV0ZXJzLiAqL1xuICBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJOb2RlW107XG4gIC8qKiBSZXR1cm4gdHlwZS4gKi9cbiAgcmV0dXJuVHlwZTogVHlwZU5vZGU7XG4gIC8qKiBFeHBsaWNpdGx5IHByb3ZpZGVkIHRoaXMgdHlwZSwgaWYgYW55LiAqL1xuICBleHBsaWNpdFRoaXNUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyBhIHR5cGUgcGFyYW1ldGVyLiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSO1xuXG4gIC8qKiBJZGVudGlmaWVyIHJlZmVyZW5jZS4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHRlbmRlZCB0eXBlIHJlZmVyZW5jZSwgaWYgYW55LiAqL1xuICBleHRlbmRzVHlwZTogTmFtZWRUeXBlTm9kZSB8IG51bGw7IC8vIGNhbid0IGJlIGEgZnVuY3Rpb25cbiAgLyoqIERlZmF1bHQgdHlwZSBpZiBvbWl0dGVkLCBpZiBhbnkuICovXG4gIGRlZmF1bHRUeXBlOiBOYW1lZFR5cGVOb2RlIHwgbnVsbDsgLy8gY2FuJ3QgYmUgYSBmdW5jdGlvblxufVxuXG4vKiogUmVwcmVzZW50cyB0aGUga2luZCBvZiBhIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBlbnVtIFBhcmFtZXRlcktpbmQge1xuICAvKiogTm8gc3BlY2lmaWMgZmxhZ3MuICovXG4gIERFRkFVTFQsXG4gIC8qKiBJcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuICovXG4gIE9QVElPTkFMLFxuICAvKiogSXMgYSByZXN0IHBhcmFtZXRlci4gKi9cbiAgUkVTVFxufVxuXG4vKiogUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4gKi9cbmV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJBTUVURVI7XG5cbiAgLyoqIFBhcmFtZXRlciBraW5kLiAqL1xuICBwYXJhbWV0ZXJLaW5kOiBQYXJhbWV0ZXJLaW5kO1xuICAvKiogUGFyYW1ldGVyIG5hbWUuICovXG4gIG5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xuICAvKiogUGFyYW1ldGVyIHR5cGUuICovXG4gIHR5cGU6IFR5cGVOb2RlO1xuICAvKiogSW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW1wbGljaXQgZmllbGQgZGVjbGFyYXRpb24sIGlmIGFwcGxpY2FibGUuICovXG4gIGltcGxpY2l0RmllbGREZWNsYXJhdGlvbjogRmllbGREZWNsYXJhdGlvbiB8IG51bGwgPSBudWxsO1xuICAvKiogQ29tbW9uIGZsYWdzIGluZGljYXRpbmcgc3BlY2lmaWMgdHJhaXRzLiAqL1xuICBmbGFnczogQ29tbW9uRmxhZ3MgPSBDb21tb25GbGFncy5OT05FO1xuXG4gIC8qKiBUZXN0cyBpZiB0aGlzIG5vZGUgaGFzIHRoZSBzcGVjaWZpZWQgZmxhZyBvciBmbGFncy4gKi9cbiAgaXMoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgPT0gZmxhZzsgfVxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyBvbmUgb2YgdGhlIHNwZWNpZmllZCBmbGFncy4gKi9cbiAgaXNBbnkoZmxhZzogQ29tbW9uRmxhZ3MpOiBib29sIHsgcmV0dXJuICh0aGlzLmZsYWdzICYgZmxhZykgIT0gMDsgfVxuICAvKiogU2V0cyBhIHNwZWNpZmljIGZsYWcgb3IgZmxhZ3MuICovXG4gIHNldChmbGFnOiBDb21tb25GbGFncyk6IHZvaWQgeyB0aGlzLmZsYWdzIHw9IGZsYWc7IH1cbn1cblxuLy8gc3BlY2lhbFxuXG4vKiogQnVpbHQtaW4gZGVjb3JhdG9yIGtpbmRzLiAqL1xuZXhwb3J0IGVudW0gRGVjb3JhdG9yS2luZCB7XG4gIENVU1RPTSxcbiAgR0xPQkFMLFxuICBPUEVSQVRPUixcbiAgT1BFUkFUT1JfQklOQVJZLFxuICBPUEVSQVRPUl9QUkVGSVgsXG4gIE9QRVJBVE9SX1BPU1RGSVgsXG4gIFVOTUFOQUdFRCxcbiAgU0VBTEVELFxuICBJTkxJTkUsXG4gIEVYVEVSTkFMLFxuICBCVUlMVElOLFxuICBMQVpZLFxuICBVTlNBRkVcbn1cblxuLyoqIFJldHVybnMgdGhlIGtpbmQgb2YgdGhlIHNwZWNpZmllZCBkZWNvcmF0b3IuIERlZmF1bHRzIHRvIHtAbGluayBEZWNvcmF0b3JLaW5kLkNVU1RPTX0uICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb3JhdG9yTmFtZVRvS2luZChuYW1lOiBFeHByZXNzaW9uKTogRGVjb3JhdG9yS2luZCB7XG4gIC8vIEBnbG9iYWwsIEBpbmxpbmUsIEBvcGVyYXRvciwgQHNlYWxlZCwgQHVubWFuYWdlZFxuICBpZiAobmFtZS5raW5kID09IE5vZGVLaW5kLklERU5USUZJRVIpIHtcbiAgICBsZXQgbmFtZVN0ciA9ICg8SWRlbnRpZmllckV4cHJlc3Npb24+bmFtZSkudGV4dDtcbiAgICBhc3NlcnQobmFtZVN0ci5sZW5ndGgpO1xuICAgIHN3aXRjaCAobmFtZVN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLmI6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJidWlsdGluXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkJVSUxUSU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZXh0ZXJuYWxcIikgcmV0dXJuIERlY29yYXRvcktpbmQuRVhURVJOQUw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwiZ2xvYmFsXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLkdMT0JBTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJpbmxpbmVcIikgcmV0dXJuIERlY29yYXRvcktpbmQuSU5MSU5FO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUubDoge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcImxhenlcIikgcmV0dXJuIERlY29yYXRvcktpbmQuTEFaWTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLm86IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJvcGVyYXRvclwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5PUEVSQVRPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgICAgaWYgKG5hbWVTdHIgPT0gXCJzZWFsZWRcIikgcmV0dXJuIERlY29yYXRvcktpbmQuU0VBTEVEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAobmFtZVN0ciA9PSBcInVubWFuYWdlZFwiKSByZXR1cm4gRGVjb3JhdG9yS2luZC5VTk1BTkFHRUQ7XG4gICAgICAgIGlmIChuYW1lU3RyID09IFwidW5zYWZlXCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLlVOU0FGRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKFxuICAgIG5hbWUua2luZCA9PSBOb2RlS2luZC5QUk9QRVJUWUFDQ0VTUyAmJlxuICAgICg8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5hbWUpLmV4cHJlc3Npb24ua2luZCA9PSBOb2RlS2luZC5JREVOVElGSUVSXG4gICkge1xuICAgIGxldCBuYW1lU3RyID0gKDxJZGVudGlmaWVyRXhwcmVzc2lvbj4oPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5leHByZXNzaW9uKS50ZXh0O1xuICAgIGFzc2VydChuYW1lU3RyLmxlbmd0aCk7XG4gICAgbGV0IHByb3BTdHIgPSAoPFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbj5uYW1lKS5wcm9wZXJ0eS50ZXh0O1xuICAgIGFzc2VydChwcm9wU3RyLmxlbmd0aCk7XG4gICAgLy8gQG9wZXJhdG9yLmJpbmFyeSwgQG9wZXJhdG9yLnByZWZpeCwgQG9wZXJhdG9yLnBvc3RmaXhcbiAgICBpZiAobmFtZVN0ciA9PSBcIm9wZXJhdG9yXCIpIHtcbiAgICAgIHN3aXRjaCAocHJvcFN0ci5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgICAgIGlmIChwcm9wU3RyID09IFwiYmluYXJ5XCIpIHJldHVybiBEZWNvcmF0b3JLaW5kLk9QRVJBVE9SX0JJTkFSWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgICAgICBzd2l0Y2ggKHByb3BTdHIpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwcmVmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUFJFRklYO1xuICAgICAgICAgICAgY2FzZSBcInBvc3RmaXhcIjogcmV0dXJuIERlY29yYXRvcktpbmQuT1BFUkFUT1JfUE9TVEZJWDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIERlY29yYXRvcktpbmQuQ1VTVE9NO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGRlY29yYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBEZWNvcmF0b3JOb2RlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5ERUNPUkFUT1I7XG5cbiAgLyoqIEJ1aWx0LWluIGtpbmQsIGlmIGFwcGxpY2FibGUuICovXG4gIGRlY29yYXRvcktpbmQ6IERlY29yYXRvcktpbmQ7XG4gIC8qKiBOYW1lIGV4cHJlc3Npb24uICovXG4gIG5hbWU6IEV4cHJlc3Npb247XG4gIC8qKiBBcmd1bWVudCBleHByZXNzaW9ucy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW10gfCBudWxsO1xufVxuXG4vKiogQ29tbWVudCBraW5kcy4gKi9cbmV4cG9ydCBlbnVtIENvbW1lbnRLaW5kIHtcbiAgLyoqIExpbmUgY29tbWVudC4gKi9cbiAgTElORSxcbiAgLyoqIFRyaXBsZS1zbGFzaCBjb21tZW50LiAqL1xuICBUUklQTEUsXG4gIC8qKiBCbG9jayBjb21tZW50LiAqL1xuICBCTE9DS1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1lbnQuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudE5vZGUgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkNPTU1FTlQ7XG5cbiAgLyoqIENvbW1lbnQga2luZC4gKi9cbiAgY29tbWVudEtpbmQ6IENvbW1lbnRLaW5kO1xuICAvKiogQ29tbWVudCB0ZXh0LiAqL1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8vIGV4cHJlc3Npb25zXG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBleHByZXNzaW9uIG5vZGVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4cHJlc3Npb24gZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogUmVwcmVzZW50cyBhbiBpZGVudGlmaWVyIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSWRlbnRpZmllckV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklERU5USUZJRVI7XG5cbiAgLyoqIFRleHR1YWwgbmFtZS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3ltYm9sLiAqL1xuICBzeW1ib2w6IHN0cmluZzsgLy8gVE9ETzogc3ltYm9sXG4gIC8qKiBXaGV0aGVyIHF1b3RlZCBvciBub3QuICovXG4gIGlzUXVvdGVkOiBib29sO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGEgbGl0ZXJhbC4gKi9cbmV4cG9ydCBlbnVtIExpdGVyYWxLaW5kIHtcbiAgRkxPQVQsXG4gIElOVEVHRVIsXG4gIFNUUklORyxcbiAgUkVHRVhQLFxuICBBUlJBWSxcbiAgT0JKRUNUXG59XG5cbi8qKiBCYXNlIGNsYXNzIG9mIGFsbCBsaXRlcmFsIGV4cHJlc3Npb25zLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5MSVRFUkFMO1xuXG4gIC8qKiBTcGVjaWZpYyBsaXRlcmFsIGtpbmQuICovXG4gIGxpdGVyYWxLaW5kOiBMaXRlcmFsS2luZDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYFtdYCBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5BUlJBWTtcblxuICAvKiogTmVzdGVkIGVsZW1lbnQgZXhwcmVzc2lvbnMuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uczogKEV4cHJlc3Npb24gfCBudWxsKVtdO1xufVxuXG4vKiogSW5kaWNhdGVzIHRoZSBraW5kIG9mIGFuIGFzc2VydGlvbi4gKi9cbmV4cG9ydCBlbnVtIEFzc2VydGlvbktpbmQge1xuICBQUkVGSVgsXG4gIEFTLFxuICBOT05OVUxMXG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGFzc2VydGlvbiBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIEFzc2VydGlvbkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkFTU0VSVElPTjtcblxuICAvKiogU3BlY2lmaWMga2luZCBvZiB0aGlzIGFzc2VydGlvbi4gKi9cbiAgYXNzZXJ0aW9uS2luZDogQXNzZXJ0aW9uS2luZDtcbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUYXJnZXQgdHlwZS4gKi9cbiAgdG9UeXBlOiBUeXBlTm9kZSB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYmluYXJ5IGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQmluYXJ5RXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQklOQVJZO1xuXG4gIC8qKiBPcGVyYXRvciB0b2tlbi4gKi9cbiAgb3BlcmF0b3I6IFRva2VuO1xuICAvKiogTGVmdC1oYW5kIHNpZGUgZXhwcmVzc2lvbiAqL1xuICBsZWZ0OiBFeHByZXNzaW9uO1xuICAvKiogUmlnaHQtaGFuZCBzaWRlIGV4cHJlc3Npb24uICovXG4gIHJpZ2h0OiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNhbGwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBDYWxsRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ0FMTDtcblxuICAvKiogQ2FsbGVkIGV4cHJlc3Npb24uIFVzdWFsbHkgYW4gaWRlbnRpZmllciBvciBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbi4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFByb3ZpZGVkIHR5cGUgYXJndW1lbnRzLiAqL1xuICB0eXBlQXJndW1lbnRzOiBUeXBlTm9kZVtdIHwgbnVsbDtcbiAgLyoqIFByb3ZpZGVkIGFyZ3VtZW50cy4gKi9cbiAgYXJndW1lbnRzOiBFeHByZXNzaW9uW107XG5cbiAgLyoqIEdldHMgdGhlIHR5cGUgYXJndW1lbnRzIHJhbmdlIGZvciByZXBvcnRpbmcuICovXG4gIGdldCB0eXBlQXJndW1lbnRzUmFuZ2UoKTogUmFuZ2Uge1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gdGhpcy50eXBlQXJndW1lbnRzO1xuICAgIHZhciBudW1UeXBlQXJndW1lbnRzOiBpMzI7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMgJiYgKG51bVR5cGVBcmd1bWVudHMgPSB0eXBlQXJndW1lbnRzLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBSYW5nZS5qb2luKHR5cGVBcmd1bWVudHNbMF0ucmFuZ2UsIHR5cGVBcmd1bWVudHNbbnVtVHlwZUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBhcmd1bWVudHMgcmFuZ2UgZm9yIHJlcG9ydGluZy4gKi9cbiAgZ2V0IGFyZ3VtZW50c1JhbmdlKCk6IFJhbmdlIHtcbiAgICB2YXIgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIHZhciBudW1Bcmd1bWVudHMgPSBhcmdzLmxlbmd0aDtcbiAgICBpZiAobnVtQXJndW1lbnRzKSB7XG4gICAgICByZXR1cm4gUmFuZ2Uuam9pbihhcmdzWzBdLnJhbmdlLCBhcmdzW251bUFyZ3VtZW50cyAtIDFdLnJhbmdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbi5yYW5nZTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzIGV4cHJlc3Npb24gdXNpbmcgdGhlICdjbGFzcycga2V5d29yZC4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0V4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLkNMQVNTO1xuXG4gIC8qKiBJbmxpbmUgY2xhc3MgZGVjbGFyYXRpb24uICovXG4gIGRlY2xhcmF0aW9uOiBDbGFzc0RlY2xhcmF0aW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGNvbW1hIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgbXVsdGlwbGUgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT01NQTtcblxuICAvKiogU2VxdWVudGlhbCBleHByZXNzaW9ucy4gKi9cbiAgZXhwcmVzc2lvbnM6IEV4cHJlc3Npb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29uc3RydWN0b3JgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgQ29uc3RydWN0b3JFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuQ09OU1RSVUNUT1I7XG4gIHRleHQgPSBcImNvbnN0cnVjdG9yXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuY29uc3RydWN0b3I7XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVsZW1lbnQgYWNjZXNzIGV4cHJlc3Npb24sIGUuZy4sIGFycmF5IGFjY2Vzcy4gKi9cbmV4cG9ydCBjbGFzcyBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUztcblxuICAvKiogRXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbiAgLyoqIEVsZW1lbnQgb2YgdGhlIGV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGVsZW1lbnRFeHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGZsb2F0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBGbG9hdExpdGVyYWxFeHByZXNzaW9uIGV4dGVuZHMgTGl0ZXJhbEV4cHJlc3Npb24ge1xuICBsaXRlcmFsS2luZCA9IExpdGVyYWxLaW5kLkZMT0FUO1xuXG4gIC8qKiBGbG9hdCB2YWx1ZS4gKi9cbiAgdmFsdWU6IGY2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmdW5jdGlvbiBleHByZXNzaW9uIHVzaW5nIHRoZSAnZnVuY3Rpb24nIGtleXdvcmQuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25FeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTjtcblxuICAvKiogSW5saW5lIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAqL1xuICBkZWNsYXJhdGlvbjogRnVuY3Rpb25EZWNsYXJhdGlvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGluc3RhbmNlb2ZgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VPZkV4cHJlc3Npb24gZXh0ZW5kcyBFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOU1RBTkNFT0Y7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYXNzZXJ0ZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBUeXBlIHRvIHRlc3QgZm9yLiAqL1xuICBpc1R5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBpbnRlZ2VyIGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuSU5URUdFUjtcblxuICAvKiogSW50ZWdlciB2YWx1ZS4gKi9cbiAgdmFsdWU6IEk2NDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmV3YCBleHByZXNzaW9uLiBMaWtlIGEgY2FsbCBidXQgd2l0aCBpdHMgb3duIGtpbmQuICovXG5leHBvcnQgY2xhc3MgTmV3RXhwcmVzc2lvbiBleHRlbmRzIENhbGxFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5FVztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbnVsbGAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBOdWxsRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLk5VTEw7XG4gIHRleHQgPSBcIm51bGxcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy5udWxsXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gb2JqZWN0IGxpdGVyYWwgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiBleHRlbmRzIExpdGVyYWxFeHByZXNzaW9uIHtcbiAgbGl0ZXJhbEtpbmQgPSBMaXRlcmFsS2luZC5PQkpFQ1Q7XG5cbiAgLyoqIEZpZWxkIG5hbWVzLiAqL1xuICBuYW1lczogSWRlbnRpZmllckV4cHJlc3Npb25bXTtcbiAgLyoqIEZpZWxkIHZhbHVlcy4gKi9cbiAgdmFsdWVzOiBFeHByZXNzaW9uW107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5QQVJFTlRIRVNJWkVEO1xuXG4gIC8qKiBFeHByZXNzaW9uIGluIHBhcmVudGhlc2lzLiAqL1xuICBleHByZXNzaW9uOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiBleHRlbmRzIEV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgYWNjZXNzZWQuICovXG4gIGV4cHJlc3Npb246IEV4cHJlc3Npb247XG4gIC8qKiBQcm9wZXJ0eSBvZiB0aGUgZXhwcmVzc2lvbiBiZWluZyBhY2Nlc3NlZC4gKi9cbiAgcHJvcGVydHk6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuUkVHRVhQO1xuXG4gIC8qKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gKi9cbiAgcGF0dGVybjogc3RyaW5nO1xuICAvKiogUmVndWxhciBleHByZXNzaW9uIGZsYWdzLiAqL1xuICBwYXR0ZXJuRmxhZ3M6IHN0cmluZztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB0ZXJuYXJ5IGV4cHJlc3Npb24sIGkuZS4sIHNob3J0IGlmIG5vdGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFRlcm5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5URVJOQVJZO1xuXG4gIC8qKiBDb25kaXRpb24gZXhwcmVzc2lvbi4gKi9cbiAgY29uZGl0aW9uOiBFeHByZXNzaW9uO1xuICAvKiogRXhwcmVzc2lvbiBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgdHJ1ZWAuICovXG4gIGlmVGhlbjogRXhwcmVzc2lvbjtcbiAgLyoqIEV4cHJlc3Npb24gZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYGZhbHNlYC4gKi9cbiAgaWZFbHNlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHN0cmluZyBsaXRlcmFsIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgU3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24gZXh0ZW5kcyBMaXRlcmFsRXhwcmVzc2lvbiB7XG4gIGxpdGVyYWxLaW5kID0gTGl0ZXJhbEtpbmQuU1RSSU5HO1xuXG4gIC8qKiBTdHJpbmcgdmFsdWUgd2l0aG91dCBxdW90ZXMuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHN1cGVyYCBleHByZXNzaW9uLiAqL1xuZXhwb3J0IGNsYXNzIFN1cGVyRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlNVUEVSO1xuICB0ZXh0ID0gXCJzdXBlclwiO1xuICBzeW1ib2wgPSBDb21tb25TeW1ib2xzLnN1cGVyXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhpc2AgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUaGlzRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRISVM7XG4gIHRleHQgPSBcInRoaXNcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50aGlzXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHJ1ZWAgZXhwcmVzc2lvbi4gKi9cbmV4cG9ydCBjbGFzcyBUcnVlRXhwcmVzc2lvbiBleHRlbmRzIElkZW50aWZpZXJFeHByZXNzaW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLlRSVUU7XG4gIHRleHQgPSBcInRydWVcIjtcbiAgc3ltYm9sID0gQ29tbW9uU3ltYm9scy50cnVlXztcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZmFsc2VgIGV4cHJlc3Npb24uICovXG5leHBvcnQgY2xhc3MgRmFsc2VFeHByZXNzaW9uIGV4dGVuZHMgSWRlbnRpZmllckV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuRkFMU0U7XG4gIHRleHQgPSBcImZhbHNlXCI7XG4gIHN5bWJvbCA9IENvbW1vblN5bWJvbHMuZmFsc2VfO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdW5hcnkgZXhwcmVzc2lvbnMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5hcnlFeHByZXNzaW9uIGV4dGVuZHMgRXhwcmVzc2lvbiB7XG5cbiAgLyoqIE9wZXJhdG9yIHRva2VuLiAqL1xuICBvcGVyYXRvcjogVG9rZW47XG4gIC8qKiBPcGVyYW5kIGV4cHJlc3Npb24uICovXG4gIG9wZXJhbmQ6IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcG9zdGZpeCBleHByZXNzaW9uLCBlLmcuIGEgcG9zdGZpeCBpbmNyZW1lbnQuICovXG5leHBvcnQgY2xhc3MgVW5hcnlQb3N0Zml4RXhwcmVzc2lvbiBleHRlbmRzIFVuYXJ5RXhwcmVzc2lvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5VTkFSWVBPU1RGSVg7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgdW5hcnkgcHJlZml4IGV4cHJlc3Npb24sIGUuZy4gYSBuZWdhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBVbmFyeVByZWZpeEV4cHJlc3Npb24gZXh0ZW5kcyBVbmFyeUV4cHJlc3Npb24ge1xuICBraW5kID0gTm9kZUtpbmQuVU5BUllQUkVGSVg7XG59XG5cbi8vIHN0YXRlbWVudHNcblxuLyoqIEJhc2UgY2xhc3Mgb2YgYWxsIHN0YXRlbWVudCBub2Rlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHsgfVxuXG4vKiogSW5kaWNhdGVzIHRoZSBzcGVjaWZpYyBraW5kIG9mIGEgc291cmNlLiAqL1xuZXhwb3J0IGVudW0gU291cmNlS2luZCB7XG4gIC8qKiBVc2VyLXByb3ZpZGVkIGZpbGUuICovXG4gIFVTRVIgPSAwLFxuICAvKiogVXNlci1wcm92aWRlZCBlbnRyeSBmaWxlLiAqL1xuICBVU0VSX0VOVFJZID0gMSxcbiAgLyoqIExpYnJhcnktcHJvdmlkZWQgZmlsZS4gKi9cbiAgTElCUkFSWSA9IDIsXG4gIC8qKiBMaWJyYXJ5LXByb3ZpZGVkIGVudHJ5IGZpbGUuICovXG4gIExJQlJBUllfRU5UUlkgPSAzXG59XG5cbi8qKiBBIHRvcC1sZXZlbCBzb3VyY2Ugbm9kZS4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2UgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLlNPVVJDRTtcbiAgcGFyZW50ID0gbnVsbDtcblxuICAvKiogU291cmNlIGtpbmQuICovXG4gIHNvdXJjZUtpbmQ6IFNvdXJjZUtpbmQ7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGguICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmc7XG4gIC8qKiBQYXRoIHVzZWQgaW50ZXJuYWxseS4gKi9cbiAgaW50ZXJuYWxQYXRoOiBzdHJpbmc7XG4gIC8qKiBTaW1wbGUgcGF0aCAobGFzdCBwYXJ0IHdpdGhvdXQgZXh0ZW5zaW9uKS4gKi9cbiAgc2ltcGxlUGF0aDogc3RyaW5nO1xuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xuICAvKiogRnVsbCBzb3VyY2UgdGV4dC4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogVG9rZW5pemVyIHJlZmVyZW5jZS4gKi9cbiAgdG9rZW5pemVyOiBUb2tlbml6ZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIFNvdXJjZSBtYXAgaW5kZXguICovXG4gIGRlYnVnSW5mb0luZGV4OiBpMzIgPSAtMTtcbiAgLyoqIFJlLWV4cG9ydGVkIHNvdXJjZXMuICovXG4gIGV4cG9ydFBhdGhzOiBTZXQ8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNvdXJjZSBub2RlLiAqL1xuICBjb25zdHJ1Y3Rvcihub3JtYWxpemVkUGF0aDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGtpbmQ6IFNvdXJjZUtpbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc291cmNlS2luZCA9IGtpbmQ7XG4gICAgdGhpcy5ub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoO1xuICAgIHZhciBpbnRlcm5hbFBhdGggPSBtYW5nbGVJbnRlcm5hbFBhdGgodGhpcy5ub3JtYWxpemVkUGF0aCk7XG4gICAgdGhpcy5pbnRlcm5hbFBhdGggPSBpbnRlcm5hbFBhdGg7XG4gICAgdmFyIHBvcyA9IGludGVybmFsUGF0aC5sYXN0SW5kZXhPZihQQVRIX0RFTElNSVRFUik7XG4gICAgdGhpcy5zaW1wbGVQYXRoID0gcG9zID49IDAgPyBpbnRlcm5hbFBhdGguc3Vic3RyaW5nKHBvcyArIDEpIDogaW50ZXJuYWxQYXRoO1xuICAgIHRoaXMuc3RhdGVtZW50cyA9IG5ldyBBcnJheSgpO1xuICAgIHRoaXMucmFuZ2UgPSBuZXcgUmFuZ2UodGhpcywgMCwgdGV4dC5sZW5ndGgpO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gIH1cblxuICBnZXQgaXNMaWJyYXJ5KCk6IGJvb2wge1xuICAgIHZhciBraW5kID0gdGhpcy5zb3VyY2VLaW5kO1xuICAgIHJldHVybiBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWSB8fCBraW5kID09IFNvdXJjZUtpbmQuTElCUkFSWV9FTlRSWTtcbiAgfVxufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGVjbGFyYXRpb24gc3RhdGVtZW50cy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWNsYXJhdGlvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIC8qKiBTaW1wbGUgbmFtZSBiZWluZyBkZWNsYXJlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBBcnJheSBvZiBkZWNvcmF0b3JzLiAqL1xuICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JOb2RlW10gfCBudWxsID0gbnVsbDtcbiAgLyoqIENvbW1vbiBmbGFncyBpbmRpY2F0aW5nIHNwZWNpZmljIHRyYWl0cy4gKi9cbiAgZmxhZ3M6IENvbW1vbkZsYWdzID0gQ29tbW9uRmxhZ3MuTk9ORTtcblxuICAvKiogVGVzdHMgaWYgdGhpcyBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIGZsYWcgb3IgZmxhZ3MuICovXG4gIGlzKGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpID09IGZsYWc7IH1cbiAgLyoqIFRlc3RzIGlmIHRoaXMgbm9kZSBoYXMgb25lIG9mIHRoZSBzcGVjaWZpZWQgZmxhZ3MuICovXG4gIGlzQW55KGZsYWc6IENvbW1vbkZsYWdzKTogYm9vbCB7IHJldHVybiAodGhpcy5mbGFncyAmIGZsYWcpICE9IDA7IH1cbiAgLyoqIFNldHMgYSBzcGVjaWZpYyBmbGFnIG9yIGZsYWdzLiAqL1xuICBzZXQoZmxhZzogQ29tbW9uRmxhZ3MpOiB2b2lkIHsgdGhpcy5mbGFncyB8PSBmbGFnOyB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGluZGV4IHNpZ25hdHVyZSBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU5ERVhTSUdOQVRVUkVERUNMQVJBVElPTjtcblxuICAvKiogS2V5IHR5cGUuICovXG4gIGtleVR5cGU6IE5hbWVkVHlwZU5vZGU7XG4gIC8qKiBWYWx1ZSB0eXBlLiAqL1xuICB2YWx1ZVR5cGU6IFR5cGVOb2RlO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgdmFyaWFibGUtbGlrZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhcmlhYmxlTGlrZURlY2xhcmF0aW9uU3RhdGVtZW50IGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuXG4gIC8qKiBWYXJpYWJsZSB0eXBlLiAqL1xuICB0eXBlOiBUeXBlTm9kZSB8IG51bGw7XG4gIC8qKiBWYXJpYWJsZSBpbml0aWFsaXplci4gKi9cbiAgaW5pdGlhbGl6ZXI6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGJsb2NrIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBCbG9ja1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5CTE9DSztcblxuICAvKiogQ29udGFpbmVkIHN0YXRlbWVudHMuICovXG4gIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBicmVha2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEJyZWFrU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkJSRUFLO1xuXG4gIC8qKiBUYXJnZXQgbGFiZWwsIGlmIGFwcGxpY2FibGUuICovXG4gIGxhYmVsOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGNsYXNzYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0RlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuQ0xBU1NERUNMQVJBVElPTjtcblxuICAvKiogQWNjZXB0ZWQgdHlwZSBwYXJhbWV0ZXJzLiAqL1xuICB0eXBlUGFyYW1ldGVyczogVHlwZVBhcmFtZXRlck5vZGVbXSB8IG51bGw7XG4gIC8qKiBCYXNlIGNsYXNzIHR5cGUgYmVpbmcgZXh0ZW5kZWQsIGlmIGFueS4gKi9cbiAgZXh0ZW5kc1R5cGU6IE5hbWVkVHlwZU5vZGUgfCBudWxsOyAvLyBjYW4ndCBiZSBhIGZ1bmN0aW9uXG4gIC8qKiBJbnRlcmZhY2UgdHlwZXMgYmVpbmcgaW1wbGVtZW50ZWQsIGlmIGFueS4gKi9cbiAgaW1wbGVtZW50c1R5cGVzOiBOYW1lZFR5cGVOb2RlW10gfCBudWxsOyAvLyBjYW4ndCBiZSBmdW5jdGlvbnNcbiAgLyoqIENsYXNzIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIG1lbWJlcnM6IERlY2xhcmF0aW9uU3RhdGVtZW50W107XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgY29udGludWVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBDb250aW51ZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5DT05USU5VRTtcblxuICAvKiogVGFyZ2V0IGxhYmVsLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBsYWJlbDogSWRlbnRpZmllckV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGBkb2Agc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIERvU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkRPO1xuXG4gIC8qKiBTdGF0ZW1lbnQgYmVpbmcgbG9vcGVkIG92ZXIuICovXG4gIHN0YXRlbWVudDogU3RhdGVtZW50O1xuICAvKiogQ29uZGl0aW9uIHdoZW4gdG8gcmVwZWF0LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG59XG5cbi8qKiBSZXByZXNlbnRzIGFuIGVtcHR5IHN0YXRlbWVudCwgaS5lLiwgYSBzZW1pY29sb24gdGVybWluYXRpbmcgbm90aGluZy4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTVBUWTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGVudW1gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1EZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjtcblxuICAvKiogRW51bSB2YWx1ZSBkZWNsYXJhdGlvbnMuICovXG4gIHZhbHVlczogRW51bVZhbHVlRGVjbGFyYXRpb25bXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YWx1ZSBvZiBhbiBgZW51bWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgRW51bVZhbHVlRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FTlVNVkFMVUVERUNMQVJBVElPTjtcbiAgLy8gbmFtZSBpcyBpbmhlcml0ZWRcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbi4gKi9cbiAgdmFsdWU6IEV4cHJlc3Npb24gfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGltcG9ydGAgc3RhdGVtZW50IG9mIGFuIGludGVyZmFjZS4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQgZXh0ZW5kcyBOb2RlIHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVElNUE9SVDtcblxuICAvKiogSWRlbnRpZmllciBiZWluZyBpbXBvcnRlZC4gKi9cbiAgbmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBJZGVudGlmaWVyIGJlaW5nIGV4cG9ydGVkLiAqL1xuICBleHRlcm5hbE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1lbWJlciBvZiBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0TWVtYmVyIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBPUlRNRU1CRVI7XG5cbiAgLyoqIExvY2FsIGlkZW50aWZpZXIuICovXG4gIGxvY2FsTmFtZTogSWRlbnRpZmllckV4cHJlc3Npb247XG4gIC8qKiBFeHBvcnRlZCBpZGVudGlmaWVyLiAqL1xuICBleHBvcnRlZE5hbWU6IElkZW50aWZpZXJFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0YCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwb3J0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVDtcblxuICAvKiogQXJyYXkgb2YgbWVtYmVycyBpZiBhIHNldCBvZiBuYW1lZCBleHBvcnRzLCBvciBgbnVsbGAgaWYgYSBmaWxlIGV4cG9ydC4gKi9cbiAgbWVtYmVyczogRXhwb3J0TWVtYmVyW10gfCBudWxsO1xuICAvKiogUGF0aCBiZWluZyBleHBvcnRlZCBmcm9tLCBpZiBhcHBsaWNhYmxlLiAqL1xuICBwYXRoOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBOb3JtYWxpemVkIHBhdGgsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQsIGlmIGBwYXRoYCBpcyBzZXQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmVkIGV4cG9ydC4gKi9cbiAgaXNEZWNsYXJlOiBib29sO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgZXhwb3J0IGRlZmF1bHRgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBFeHBvcnREZWZhdWx0U3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ7XG5cbiAgLyoqIERlY2xhcmF0aW9uIGJlaW5nIGV4cG9ydGVkIGFzIGRlZmF1bHQuICovXG4gIGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvblN0YXRlbWVudDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIHVzZWQgYXMgYSBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5FWFBSRVNTSU9OO1xuXG4gIC8qKiBFeHByZXNzaW9uIGJlaW5nIHVzZWQgYXMgYSBzdGF0ZW1lbnQuKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBmaWVsZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIEZpZWxkRGVjbGFyYXRpb24gZXh0ZW5kcyBWYXJpYWJsZUxpa2VEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OO1xuXG4gIC8qKiBQYXJhbWV0ZXIgaW5kZXggaWYgZGVjbGFyZWQgYXMgYSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIG90aGVyd2lzZSBgLTFgLiAqL1xuICBwYXJhbWV0ZXJJbmRleDogaTMyID0gLTE7XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYGZvcmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEZvclN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GT1I7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVyIHN0YXRlbWVudCwgaWYgcHJlc2VudC5cbiAgICogRWl0aGVyIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fSBvciB7QGxpbmsgRXhwcmVzc2lvblN0YXRlbWVudH0uXG4gICAqL1xuICBpbml0aWFsaXplcjogU3RhdGVtZW50IHwgbnVsbDtcbiAgLyoqIENvbmRpdGlvbiBleHByZXNzaW9uLCBpZiBwcmVzZW50LiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogSW5jcmVtZW50b3IgZXhwcmVzc2lvbiwgaWYgcHJlc2VudC4gKi9cbiAgaW5jcmVtZW50b3I6IEV4cHJlc3Npb24gfCBudWxsO1xuICAvKiogU3RhdGVtZW50IGJlaW5nIGxvb3BlZCBvdmVyLiAqL1xuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDtcbn1cblxuLyoqIEluZGljYXRlcyB0aGUga2luZCBvZiBhbiBhcnJheSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEFycm93S2luZCB7XG4gIC8qKiBOb3QgYW4gYXJyb3cgZnVuY3Rpb24uICovXG4gIE5PTkUsXG4gIC8qKiBQYXJlbnRoZXNpemVkIHBhcmFtZXRlciBsaXN0LiAqL1xuICBBUlJPV19QQVJFTlRIRVNJWkVELFxuICAvKiogU2luZ2xlIHBhcmFtZXRlciB3aXRob3V0IHBhcmVudGhlc2lzLiAqL1xuICBBUlJPV19TSU5HTEVcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgZnVuY3Rpb25gIGRlY2xhcmF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gZXh0ZW5kcyBEZWNsYXJhdGlvblN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5GVU5DVElPTkRFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogRnVuY3Rpb24gc2lnbmF0dXJlLiAqL1xuICBzaWduYXR1cmU6IEZ1bmN0aW9uVHlwZU5vZGU7XG4gIC8qKiBCb2R5IHN0YXRlbWVudC4gVXN1YWxseSBhIGJsb2NrLiAqL1xuICBib2R5OiBTdGF0ZW1lbnQgfCBudWxsO1xuICAvKiogQXJyb3cgZnVuY3Rpb24ga2luZCwgaWYgYXBwbGljYWJsZS4gKi9cbiAgYXJyb3dLaW5kOiBBcnJvd0tpbmQ7XG5cbiAgZ2V0IGlzR2VuZXJpYygpOiBib29sIHtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSB0aGlzLnR5cGVQYXJhbWV0ZXJzO1xuICAgIHJldHVybiB0eXBlUGFyYW1ldGVycyAhPSBudWxsICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQ2xvbmVzIHRoaXMgZnVuY3Rpb24gZGVjbGFyYXRpb24uICovXG4gIGNsb25lKCk6IEZ1bmN0aW9uRGVjbGFyYXRpb24ge1xuICAgIHJldHVybiBOb2RlLmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oXG4gICAgICB0aGlzLm5hbWUsXG4gICAgICB0aGlzLnR5cGVQYXJhbWV0ZXJzLFxuICAgICAgdGhpcy5zaWduYXR1cmUsXG4gICAgICB0aGlzLmJvZHksXG4gICAgICB0aGlzLmRlY29yYXRvcnMsXG4gICAgICB0aGlzLmZsYWdzLFxuICAgICAgdGhpcy5hcnJvd0tpbmQsXG4gICAgICB0aGlzLnJhbmdlXG4gICAgKTtcbiAgfVxufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaWZgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBJZlN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JRjtcblxuICAvKiogQ29uZGl0aW9uLiAqL1xuICBjb25kaXRpb246IEV4cHJlc3Npb247XG4gIC8qKiBTdGF0ZW1lbnQgZXhlY3V0ZWQgd2hlbiBjb25kaXRpb24gaXMgYHRydWVgLiAqL1xuICBpZlRydWU6IFN0YXRlbWVudDtcbiAgLyoqIFN0YXRlbWVudCBleGVjdXRlZCB3aGVuIGNvbmRpdGlvbiBpcyBgZmFsc2VgLiAqL1xuICBpZkZhbHNlOiBTdGF0ZW1lbnQgfCBudWxsO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW1wb3J0YCBkZWNsYXJhdGlvbiBwYXJ0IG9mIGFuIHtAbGluayBJbXBvcnRTdGF0ZW1lbnR9LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydERlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuSU1QT1JUREVDTEFSQVRJT047XG5cbiAgLyoqIElkZW50aWZpZXIgYmVpbmcgaW1wb3J0ZWQuICovXG4gIGZvcmVpZ25OYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gYGltcG9ydGAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIEltcG9ydFN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5JTVBPUlQ7XG5cbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMgb3IgYG51bGxgIGlmIGFuIGFzdGVyaXNrIGltcG9ydC4gKi9cbiAgZGVjbGFyYXRpb25zOiBJbXBvcnREZWNsYXJhdGlvbltdIHwgbnVsbDtcbiAgLyoqIE5hbWUgb2YgdGhlIGxvY2FsIG5hbWVzcGFjZSwgaWYgYW4gYXN0ZXJpc2sgaW1wb3J0LiAqL1xuICBuYW1lc3BhY2VOYW1lOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBQYXRoIGJlaW5nIGltcG9ydGVkIGZyb20uICovXG4gIHBhdGg6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uO1xuICAvKiogTm9ybWFsaXplZCBwYXRoLiAqL1xuICBub3JtYWxpemVkUGF0aDogc3RyaW5nO1xuICAvKiogTWFuZ2xlZCBpbnRlcm5hbCBwYXRoIGJlaW5nIHJlZmVyZW5jZWQuICovXG4gIGludGVybmFsUGF0aDogc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBgaW50ZXJmYXJjZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgSW50ZXJmYWNlRGVjbGFyYXRpb24gZXh0ZW5kcyBDbGFzc0RlY2xhcmF0aW9uIHtcbiAga2luZCA9IE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIG1ldGhvZCBkZWNsYXJhdGlvbiB3aXRoaW4gYSBgY2xhc3NgLiAqL1xuZXhwb3J0IGNsYXNzIE1ldGhvZERlY2xhcmF0aW9uIGV4dGVuZHMgRnVuY3Rpb25EZWNsYXJhdGlvbiB7XG4gIGtpbmQgPSBOb2RlS2luZC5NRVRIT0RERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgbmFtZXNwYWNlYCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VEZWNsYXJhdGlvbiBleHRlbmRzIERlY2xhcmF0aW9uU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLk5BTUVTUEFDRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBBcnJheSBvZiBuYW1lc3BhY2UgbWVtYmVycy4gKi9cbiAgbWVtYmVyczogU3RhdGVtZW50W107XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgYHJldHVybmAgc3RhdGVtZW50LiAqL1xuZXhwb3J0IGNsYXNzIFJldHVyblN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5SRVRVUk47XG5cbiAgLyoqIFZhbHVlIGV4cHJlc3Npb24gYmVpbmcgcmV0dXJuZWQsIGlmIHByZXNlbnQuICovXG4gIHZhbHVlOiBFeHByZXNzaW9uIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgYGNhc2VgIHdpdGhpbiBhIGBzd2l0Y2hgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDYXNlIGV4dGVuZHMgTm9kZSB7XG4gIGtpbmQgPSBOb2RlS2luZC5TV0lUQ0hDQVNFO1xuXG4gIC8qKiBMYWJlbCBleHByZXNzaW9uLiBgbnVsbGAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGNhc2UuICovXG4gIGxhYmVsOiBFeHByZXNzaW9uIHwgbnVsbDtcbiAgLyoqIENvbnRhaW5lZCBzdGF0ZW1lbnRzLiAqL1xuICBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgc3dpdGNoYCBzdGF0ZW1lbnQuICovXG5leHBvcnQgY2xhc3MgU3dpdGNoU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlNXSVRDSDtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIENvbnRhaW5lZCBjYXNlcy4gKi9cbiAgY2FzZXM6IFN3aXRjaENhc2VbXTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdGhyb3dgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUaHJvd1N0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5USFJPVztcblxuICAvKiogVmFsdWUgZXhwcmVzc2lvbiBiZWluZyB0aHJvd24uICovXG4gIHZhbHVlOiBFeHByZXNzaW9uO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIGB0cnlgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBUcnlTdGF0ZW1lbnQgZXh0ZW5kcyBTdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFJZO1xuXG4gIC8qKiBDb250YWluZWQgc3RhdGVtZW50cy4gKi9cbiAgc3RhdGVtZW50czogU3RhdGVtZW50W107XG4gIC8qKiBFeGNlcHRpb24gdmFyaWFibGUgbmFtZSwgaWYgYSBgY2F0Y2hgIGNsYXVzZSBpcyBwcmVzZW50LiAqL1xuICBjYXRjaFZhcmlhYmxlOiBJZGVudGlmaWVyRXhwcmVzc2lvbiB8IG51bGw7XG4gIC8qKiBTdGF0ZW1lbnRzIGJlaW5nIGV4ZWN1dGVkIG9uIGNhdGNoLCBpZiBhIGBjYXRjaGAgY2xhdXNlIGlzIHByZXNlbnQuICovXG4gIGNhdGNoU3RhdGVtZW50czogU3RhdGVtZW50W10gfCBudWxsO1xuICAvKiogU3RhdGVtZW50cyBiZWluZyBleGVjdXRlZCBhZnRlcndhcmRzLCBpZiBhIGBmaW5hbGx5YCBjbGF1c2UgaXMgcHJlc2VudC4gKi9cbiAgZmluYWxseVN0YXRlbWVudHM6IFN0YXRlbWVudFtdIHwgbnVsbDtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgdHlwZWAgZGVjbGFyYXRpb24uICovXG5leHBvcnQgY2xhc3MgVHlwZURlY2xhcmF0aW9uIGV4dGVuZHMgRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OO1xuXG4gIC8qKiBUeXBlIHBhcmFtZXRlcnMsIGlmIGFueS4gKi9cbiAgdHlwZVBhcmFtZXRlcnM6IFR5cGVQYXJhbWV0ZXJOb2RlW10gfCBudWxsO1xuICAvKiogVHlwZSBiZWluZyBhbGlhc2VkLiAqL1xuICB0eXBlOiBUeXBlTm9kZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBwYXJ0IG9mIGEge0BsaW5rIFZhcmlhYmxlU3RhdGVtZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGV4dGVuZHMgVmFyaWFibGVMaWtlRGVjbGFyYXRpb25TdGF0ZW1lbnQge1xuICBraW5kID0gTm9kZUtpbmQuVkFSSUFCTEVERUNMQVJBVElPTjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSB2YXJpYWJsZSBzdGF0ZW1lbnQgd3JhcHBpbmcge0BsaW5rIFZhcmlhYmxlRGVjbGFyYXRpb259cy4gKi9cbmV4cG9ydCBjbGFzcyBWYXJpYWJsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5WQVJJQUJMRTtcblxuICAvKiogQXJyYXkgb2YgZGVjb3JhdG9ycy4gKi9cbiAgZGVjb3JhdG9yczogRGVjb3JhdG9yTm9kZVtdIHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIG1lbWJlciBkZWNsYXJhdGlvbnMuICovXG4gIGRlY2xhcmF0aW9uczogVmFyaWFibGVEZWNsYXJhdGlvbltdO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHZvaWQgc3RhdGVtZW50IGRyb3BwaW5nIGFuIGV4cHJlc3Npb24ncyB2YWx1ZS4gKi9cbmV4cG9ydCBjbGFzcyBWb2lkU3RhdGVtZW50IGV4dGVuZHMgU3RhdGVtZW50IHtcbiAga2luZCA9IE5vZGVLaW5kLlZPSUQ7XG5cbiAgLyoqIEV4cHJlc3Npb24gYmVpbmcgZHJvcHBlZC4gKi9cbiAgZXhwcmVzc2lvbjogRXhwcmVzc2lvbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYSBgd2hpbGVgIHN0YXRlbWVudC4gKi9cbmV4cG9ydCBjbGFzcyBXaGlsZVN0YXRlbWVudCBleHRlbmRzIFN0YXRlbWVudCB7XG4gIGtpbmQgPSBOb2RlS2luZC5XSElMRTtcblxuICAvKiogQ29uZGl0aW9uIGV4cHJlc3Npb24uICovXG4gIGNvbmRpdGlvbjogRXhwcmVzc2lvbjtcbiAgLyoqIFN0YXRlbWVudCBiZWluZyBsb29wZWQgb3Zlci4gKi9cbiAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ7XG59XG5cbi8qKiBGaW5kcyB0aGUgZmlyc3QgZGVjb3JhdG9yIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQga2luZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGVjb3JhdG9yKGtpbmQ6IERlY29yYXRvcktpbmQsIGRlY29yYXRvcnM6IERlY29yYXRvck5vZGVbXSB8IG51bGwpOiBEZWNvcmF0b3JOb2RlIHwgbnVsbCB7XG4gIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgbGV0IGRlY29yYXRvciA9IGRlY29yYXRvcnNbaV07XG4gICAgICBpZiAoZGVjb3JhdG9yLmRlY29yYXRvcktpbmQgPT0ga2luZCkgcmV0dXJuIGRlY29yYXRvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKiBNYW5nbGVzIGFuIGV4dGVybmFsIHRvIGFuIGludGVybmFsIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuZ2xlSW50ZXJuYWxQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAzKTtcbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIHR5cGUgbm9kZSByZXByZXNlbnRzIGFuIG9taXR0ZWQgdHlwZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVPbWl0dGVkKHR5cGU6IFR5cGVOb2RlKTogYm9vbCB7XG4gIGlmICh0eXBlLmtpbmQgPT0gTm9kZUtpbmQuTkFNRURUWVBFKSB7XG4gICAgbGV0IG5hbWUgPSAoPE5hbWVkVHlwZU5vZGU+dHlwZSkubmFtZTtcbiAgICByZXR1cm4gIShuYW1lLm5leHQgfHwgbmFtZS5pZGVudGlmaWVyLnRleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/common.ts": -/*!************************!*\ - !*** ../src/common.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Common constants. - * @module common - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates traits of a {@link Node} or {@link Element}. */ -var CommonFlags; -(function (CommonFlags) { - /** No flags set. */ - CommonFlags[CommonFlags["NONE"] = 0] = "NONE"; - // Basic modifiers - /** Has an `import` modifier. */ - CommonFlags[CommonFlags["IMPORT"] = 1] = "IMPORT"; - /** Has an `export` modifier. */ - CommonFlags[CommonFlags["EXPORT"] = 2] = "EXPORT"; - /** Has a `declare` modifier. */ - CommonFlags[CommonFlags["DECLARE"] = 4] = "DECLARE"; - /** Has a `const` modifier. */ - CommonFlags[CommonFlags["CONST"] = 8] = "CONST"; - /** Has a `let` modifier. */ - CommonFlags[CommonFlags["LET"] = 16] = "LET"; - /** Has a `static` modifier. */ - CommonFlags[CommonFlags["STATIC"] = 32] = "STATIC"; - /** Has a `readonly` modifier. */ - CommonFlags[CommonFlags["READONLY"] = 64] = "READONLY"; - /** Has an `abstract` modifier. */ - CommonFlags[CommonFlags["ABSTRACT"] = 128] = "ABSTRACT"; - /** Has a `public` modifier. */ - CommonFlags[CommonFlags["PUBLIC"] = 256] = "PUBLIC"; - /** Has a `private` modifier. */ - CommonFlags[CommonFlags["PRIVATE"] = 512] = "PRIVATE"; - /** Has a `protected` modifier. */ - CommonFlags[CommonFlags["PROTECTED"] = 1024] = "PROTECTED"; - /** Has a `get` modifier. */ - CommonFlags[CommonFlags["GET"] = 2048] = "GET"; - /** Has a `set` modifier. */ - CommonFlags[CommonFlags["SET"] = 4096] = "SET"; - /** Has a definite assignment assertion `!` as in `x!: i32;`. */ - CommonFlags[CommonFlags["DEFINITE_ASSIGNMENT"] = 8192] = "DEFINITE_ASSIGNMENT"; - // Extended modifiers usually derived from basic modifiers - /** Is ambient, that is either declared or nested in a declared element. */ - CommonFlags[CommonFlags["AMBIENT"] = 16384] = "AMBIENT"; - /** Is generic. */ - CommonFlags[CommonFlags["GENERIC"] = 32768] = "GENERIC"; - /** Is part of a generic context. */ - CommonFlags[CommonFlags["GENERIC_CONTEXT"] = 65536] = "GENERIC_CONTEXT"; - /** Is an instance member. */ - CommonFlags[CommonFlags["INSTANCE"] = 131072] = "INSTANCE"; - /** Is a constructor. */ - CommonFlags[CommonFlags["CONSTRUCTOR"] = 262144] = "CONSTRUCTOR"; - /** Is a module export. */ - CommonFlags[CommonFlags["MODULE_EXPORT"] = 524288] = "MODULE_EXPORT"; - /** Is a module import. */ - CommonFlags[CommonFlags["MODULE_IMPORT"] = 1048576] = "MODULE_IMPORT"; - // Compilation states - /** Is resolved. */ - CommonFlags[CommonFlags["RESOLVED"] = 2097152] = "RESOLVED"; - /** Is compiled. */ - CommonFlags[CommonFlags["COMPILED"] = 4194304] = "COMPILED"; - /** Has a constant value and is therefore inlined. */ - CommonFlags[CommonFlags["INLINED"] = 8388608] = "INLINED"; - /** Is scoped. */ - CommonFlags[CommonFlags["SCOPED"] = 16777216] = "SCOPED"; - /** Is a trampoline. */ - CommonFlags[CommonFlags["TRAMPOLINE"] = 33554432] = "TRAMPOLINE"; - /** Is a virtual method. */ - CommonFlags[CommonFlags["VIRTUAL"] = 67108864] = "VIRTUAL"; - /** Is the main function. */ - CommonFlags[CommonFlags["MAIN"] = 134217728] = "MAIN"; - // Other - /** Is quoted. */ - CommonFlags[CommonFlags["QUOTED"] = 268435456] = "QUOTED"; -})(CommonFlags = exports.CommonFlags || (exports.CommonFlags = {})); -/** Path delimiter inserted between file system levels. */ -exports.PATH_DELIMITER = "/"; -/** Substitution used to indicate the parent directory. */ -exports.PARENT_SUBST = ".."; -/** Function name prefix used for getters. */ -exports.GETTER_PREFIX = "get:"; -/** Function name prefix used for setters. */ -exports.SETTER_PREFIX = "set:"; -/** Delimiter used between class names and instance members. */ -exports.INSTANCE_DELIMITER = "#"; -/** Delimiter used between class and namespace names and static members. */ -exports.STATIC_DELIMITER = "."; -/** Delimiter used between a function and its inner elements. */ -exports.INNER_DELIMITER = "~"; -/** Substitution used to indicate a library directory. */ -exports.LIBRARY_SUBST = "~lib"; -/** Library directory prefix. */ -exports.LIBRARY_PREFIX = exports.LIBRARY_SUBST + exports.PATH_DELIMITER; -/** Path index suffix. */ -exports.INDEX_SUFFIX = exports.PATH_DELIMITER + "index"; -/** Common compiler symbols. */ -var CommonSymbols; -(function (CommonSymbols) { - // special - CommonSymbols.EMPTY = ""; - // types - CommonSymbols.i8 = "i8"; - CommonSymbols.i16 = "i16"; - CommonSymbols.i32 = "i32"; - CommonSymbols.i64 = "i64"; - CommonSymbols.isize = "isize"; - CommonSymbols.u8 = "u8"; - CommonSymbols.u16 = "u16"; - CommonSymbols.u32 = "u32"; - CommonSymbols.u64 = "u64"; - CommonSymbols.usize = "usize"; - CommonSymbols.bool = "bool"; - CommonSymbols.f32 = "f32"; - CommonSymbols.f64 = "f64"; - CommonSymbols.v128 = "v128"; - CommonSymbols.i8x16 = "i8x16"; - CommonSymbols.u8x16 = "u8x16"; - CommonSymbols.i16x8 = "i16x8"; - CommonSymbols.u16x8 = "u16x8"; - CommonSymbols.i32x4 = "i32x4"; - CommonSymbols.u32x4 = "u32x4"; - CommonSymbols.i64x2 = "i64x2"; - CommonSymbols.u64x2 = "u64x2"; - CommonSymbols.f32x4 = "f32x4"; - CommonSymbols.f64x2 = "f64x2"; - CommonSymbols.void_ = "void"; - CommonSymbols.number = "number"; - CommonSymbols.boolean = "boolean"; - CommonSymbols.string = "string"; - CommonSymbols.native = "native"; - CommonSymbols.indexof = "indexof"; - CommonSymbols.valueof = "valueof"; - CommonSymbols.returnof = "returnof"; - // aliases - CommonSymbols.null_ = "null"; - CommonSymbols.true_ = "true"; - CommonSymbols.false_ = "false"; - // objects - CommonSymbols.this_ = "this"; - CommonSymbols.super_ = "super"; - CommonSymbols.constructor = "constructor"; - // constants - CommonSymbols.ASC_TARGET = "ASC_TARGET"; - CommonSymbols.ASC_NO_TREESHAKING = "ASC_NO_TREESHAKING"; - CommonSymbols.ASC_NO_ASSERT = "ASC_NO_ASSERT"; - CommonSymbols.ASC_MEMORY_BASE = "ASC_MEMORY_BASE"; - CommonSymbols.ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; - CommonSymbols.ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; - CommonSymbols.ASC_FEATURE_MUTABLE_GLOBAL = "ASC_FEATURE_MUTABLE_GLOBAL"; - CommonSymbols.ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; - CommonSymbols.ASC_FEATURE_BULK_MEMORY = "ASC_FEATURE_BULK_MEMORY"; - CommonSymbols.ASC_FEATURE_SIMD = "ASC_FEATURE_SIMD"; - CommonSymbols.ASC_FEATURE_THREADS = "ASC_FEATURE_THREADS"; - // classes - CommonSymbols.I8 = "I8"; - CommonSymbols.I16 = "I16"; - CommonSymbols.I32 = "I32"; - CommonSymbols.I64 = "I64"; - CommonSymbols.Isize = "Isize"; - CommonSymbols.U8 = "U8"; - CommonSymbols.U16 = "U16"; - CommonSymbols.U32 = "U32"; - CommonSymbols.U64 = "U64"; - CommonSymbols.Usize = "Usize"; - CommonSymbols.Bool = "Bool"; - CommonSymbols.F32 = "F32"; - CommonSymbols.F64 = "F64"; - CommonSymbols.V128 = "V128"; - CommonSymbols.String = "String"; - CommonSymbols.Array = "Array"; - CommonSymbols.FixedArray = "FixedArray"; - CommonSymbols.Set = "Set"; - CommonSymbols.Map = "Map"; - CommonSymbols.ArrayBufferView = "ArrayBufferView"; - CommonSymbols.ArrayBuffer = "ArrayBuffer"; - CommonSymbols.Math = "Math"; - CommonSymbols.Mathf = "Mathf"; - CommonSymbols.Int8Array = "Int8Array"; - CommonSymbols.Int16Array = "Int16Array"; - CommonSymbols.Int32Array = "Int32Array"; - CommonSymbols.Int64Array = "Int64Array"; - CommonSymbols.Uint8Array = "Uint8Array"; - CommonSymbols.Uint8ClampedArray = "Uint8ClampedArray"; - CommonSymbols.Uint16Array = "Uint16Array"; - CommonSymbols.Uint32Array = "Uint32Array"; - CommonSymbols.Uint64Array = "Uint64Array"; - CommonSymbols.Float32Array = "Float32Array"; - CommonSymbols.Float64Array = "Float64Array"; - // runtime - CommonSymbols.abort = "abort"; - CommonSymbols.pow = "pow"; - CommonSymbols.mod = "mod"; - CommonSymbols.alloc = "__alloc"; - CommonSymbols.realloc = "__realloc"; - CommonSymbols.free = "__free"; - CommonSymbols.retain = "__retain"; - CommonSymbols.release = "__release"; - CommonSymbols.collect = "__collect"; - CommonSymbols.typeinfo = "__typeinfo"; - CommonSymbols.instanceof_ = "__instanceof"; - CommonSymbols.visit = "__visit"; - CommonSymbols.allocArray = "__allocArray"; -})(CommonSymbols = exports.CommonSymbols || (exports.CommonSymbols = {})); -// shared -var feature_1 = __webpack_require__(/*! ../std/assembly/shared/feature */ "../std/assembly/shared/feature.ts"); -exports.Feature = feature_1.Feature; -var target_1 = __webpack_require__(/*! ../std/assembly/shared/target */ "../std/assembly/shared/target.ts"); -exports.Target = target_1.Target; -var typeinfo_1 = __webpack_require__(/*! ../std/assembly/shared/typeinfo */ "../std/assembly/shared/typeinfo.ts"); -exports.Typeinfo = typeinfo_1.Typeinfo; -exports.TypeinfoFlags = typeinfo_1.TypeinfoFlags; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHLENBQUEsS0FBSzs7QUFFUiw2REFBNkQ7QUFDN0QsSUFBWSxXQXlFWDtBQXpFRCxXQUFZLFdBQVc7SUFDckIsb0JBQW9CO0lBQ3BCLDZDQUFRLENBQUE7SUFFUixrQkFBa0I7SUFFbEIsZ0NBQWdDO0lBQ2hDLGlEQUFlLENBQUE7SUFDZixnQ0FBZ0M7SUFDaEMsaURBQWUsQ0FBQTtJQUNmLGdDQUFnQztJQUNoQyxtREFBZ0IsQ0FBQTtJQUNoQiw4QkFBOEI7SUFDOUIsK0NBQWMsQ0FBQTtJQUNkLDRCQUE0QjtJQUM1Qiw0Q0FBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLGtEQUFlLENBQUE7SUFDZixpQ0FBaUM7SUFDakMsc0RBQWlCLENBQUE7SUFDakIsa0NBQWtDO0lBQ2xDLHVEQUFpQixDQUFBO0lBQ2pCLCtCQUErQjtJQUMvQixtREFBZSxDQUFBO0lBQ2YsZ0NBQWdDO0lBQ2hDLHFEQUFnQixDQUFBO0lBQ2hCLGtDQUFrQztJQUNsQywwREFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsOENBQWEsQ0FBQTtJQUNiLDRCQUE0QjtJQUM1Qiw4Q0FBYSxDQUFBO0lBQ2IsZ0VBQWdFO0lBQ2hFLDhFQUE2QixDQUFBO0lBRTdCLDBEQUEwRDtJQUUxRCwyRUFBMkU7SUFDM0UsdURBQWlCLENBQUE7SUFDakIsa0JBQWtCO0lBQ2xCLHVEQUFpQixDQUFBO0lBQ2pCLG9DQUFvQztJQUNwQyx1RUFBeUIsQ0FBQTtJQUN6Qiw2QkFBNkI7SUFDN0IsMERBQWtCLENBQUE7SUFDbEIsd0JBQXdCO0lBQ3hCLGdFQUFxQixDQUFBO0lBQ3JCLDBCQUEwQjtJQUMxQixvRUFBdUIsQ0FBQTtJQUN2QiwwQkFBMEI7SUFDMUIscUVBQXVCLENBQUE7SUFFdkIscUJBQXFCO0lBRXJCLG1CQUFtQjtJQUNuQiwy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RDtBQUE5QywwQkFBQSxNQUFNLENBQUE7QUFDZiw0REFBMEU7QUFBakUsOEJBQUEsUUFBUSxDQUFBO0FBQUUsbUNBQUEsYUFBYSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gY29uc3RhbnRzLlxuICogQG1vZHVsZSBjb21tb25cbiAqLy8qKiovXG5cbi8qKiBJbmRpY2F0ZXMgdHJhaXRzIG9mIGEge0BsaW5rIE5vZGV9IG9yIHtAbGluayBFbGVtZW50fS4gKi9cbmV4cG9ydCBlbnVtIENvbW1vbkZsYWdzIHtcbiAgLyoqIE5vIGZsYWdzIHNldC4gKi9cbiAgTk9ORSA9IDAsXG5cbiAgLy8gQmFzaWMgbW9kaWZpZXJzXG5cbiAgLyoqIEhhcyBhbiBgaW1wb3J0YCBtb2RpZmllci4gKi9cbiAgSU1QT1JUID0gMSA8PCAwLFxuICAvKiogSGFzIGFuIGBleHBvcnRgIG1vZGlmaWVyLiAqL1xuICBFWFBPUlQgPSAxIDw8IDEsXG4gIC8qKiBIYXMgYSBgZGVjbGFyZWAgbW9kaWZpZXIuICovXG4gIERFQ0xBUkUgPSAxIDw8IDIsXG4gIC8qKiBIYXMgYSBgY29uc3RgIG1vZGlmaWVyLiAqL1xuICBDT05TVCA9IDEgPDwgMyxcbiAgLyoqIEhhcyBhIGBsZXRgIG1vZGlmaWVyLiAqL1xuICBMRVQgPSAxIDw8IDQsXG4gIC8qKiBIYXMgYSBgc3RhdGljYCBtb2RpZmllci4gKi9cbiAgU1RBVElDID0gMSA8PCA1LFxuICAvKiogSGFzIGEgYHJlYWRvbmx5YCBtb2RpZmllci4gKi9cbiAgUkVBRE9OTFkgPSAxIDw8IDYsXG4gIC8qKiBIYXMgYW4gYGFic3RyYWN0YCBtb2RpZmllci4gKi9cbiAgQUJTVFJBQ1QgPSAxIDw8IDcsXG4gIC8qKiBIYXMgYSBgcHVibGljYCBtb2RpZmllci4gKi9cbiAgUFVCTElDID0gMSA8PCA4LFxuICAvKiogSGFzIGEgYHByaXZhdGVgIG1vZGlmaWVyLiAqL1xuICBQUklWQVRFID0gMSA8PCA5LFxuICAvKiogSGFzIGEgYHByb3RlY3RlZGAgbW9kaWZpZXIuICovXG4gIFBST1RFQ1RFRCA9IDEgPDwgMTAsXG4gIC8qKiBIYXMgYSBgZ2V0YCBtb2RpZmllci4gKi9cbiAgR0VUID0gMSA8PCAxMSxcbiAgLyoqIEhhcyBhIGBzZXRgIG1vZGlmaWVyLiAqL1xuICBTRVQgPSAxIDw8IDEyLFxuICAvKiogSGFzIGEgZGVmaW5pdGUgYXNzaWdubWVudCBhc3NlcnRpb24gYCFgIGFzIGluIGB4ITogaTMyO2AuICovXG4gIERFRklOSVRFX0FTU0lHTk1FTlQgPSAxIDw8IDEzLFxuXG4gIC8vIEV4dGVuZGVkIG1vZGlmaWVycyB1c3VhbGx5IGRlcml2ZWQgZnJvbSBiYXNpYyBtb2RpZmllcnNcblxuICAvKiogSXMgYW1iaWVudCwgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb3IgbmVzdGVkIGluIGEgZGVjbGFyZWQgZWxlbWVudC4gKi9cbiAgQU1CSUVOVCA9IDEgPDwgMTQsXG4gIC8qKiBJcyBnZW5lcmljLiAqL1xuICBHRU5FUklDID0gMSA8PCAxNSxcbiAgLyoqIElzIHBhcnQgb2YgYSBnZW5lcmljIGNvbnRleHQuICovXG4gIEdFTkVSSUNfQ09OVEVYVCA9IDEgPDwgMTYsXG4gIC8qKiBJcyBhbiBpbnN0YW5jZSBtZW1iZXIuICovXG4gIElOU1RBTkNFID0gMSA8PCAxNyxcbiAgLyoqIElzIGEgY29uc3RydWN0b3IuICovXG4gIENPTlNUUlVDVE9SID0gMSA8PCAxOCxcbiAgLyoqIElzIGEgbW9kdWxlIGV4cG9ydC4gKi9cbiAgTU9EVUxFX0VYUE9SVCA9IDEgPDwgMTksXG4gIC8qKiBJcyBhIG1vZHVsZSBpbXBvcnQuICovXG4gIE1PRFVMRV9JTVBPUlQgPSAxIDw8IDIwLFxuXG4gIC8vIENvbXBpbGF0aW9uIHN0YXRlc1xuXG4gIC8qKiBJcyByZXNvbHZlZC4gKi9cbiAgUkVTT0xWRUQgPSAxIDw8IDIxLFxuICAvKiogSXMgY29tcGlsZWQuICovXG4gIENPTVBJTEVEID0gMSA8PCAyMixcbiAgLyoqIEhhcyBhIGNvbnN0YW50IHZhbHVlIGFuZCBpcyB0aGVyZWZvcmUgaW5saW5lZC4gKi9cbiAgSU5MSU5FRCA9IDEgPDwgMjMsXG4gIC8qKiBJcyBzY29wZWQuICovXG4gIFNDT1BFRCA9IDEgPDwgMjQsXG4gIC8qKiBJcyBhIHRyYW1wb2xpbmUuICovXG4gIFRSQU1QT0xJTkUgPSAxIDw8IDI1LFxuICAvKiogSXMgYSB2aXJ0dWFsIG1ldGhvZC4gKi9cbiAgVklSVFVBTCA9IDEgPDwgMjYsXG4gIC8qKiBJcyB0aGUgbWFpbiBmdW5jdGlvbi4gKi9cbiAgTUFJTiA9IDEgPDwgMjcsXG5cbiAgLy8gT3RoZXJcblxuICAvKiogSXMgcXVvdGVkLiAqL1xuICBRVU9URUQgPSAxIDw8IDI4XG59XG5cbi8qKiBQYXRoIGRlbGltaXRlciBpbnNlcnRlZCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGxldmVscy4gKi9cbmV4cG9ydCBjb25zdCBQQVRIX0RFTElNSVRFUiA9IFwiL1wiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAqL1xuZXhwb3J0IGNvbnN0IFBBUkVOVF9TVUJTVCA9IFwiLi5cIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBnZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IEdFVFRFUl9QUkVGSVggPSBcImdldDpcIjtcbi8qKiBGdW5jdGlvbiBuYW1lIHByZWZpeCB1c2VkIGZvciBzZXR0ZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFNFVFRFUl9QUkVGSVggPSBcInNldDpcIjtcbi8qKiBEZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGNsYXNzIG5hbWVzIGFuZCBpbnN0YW5jZSBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IElOU1RBTkNFX0RFTElNSVRFUiA9IFwiI1wiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gY2xhc3MgYW5kIG5hbWVzcGFjZSBuYW1lcyBhbmQgc3RhdGljIG1lbWJlcnMuICovXG5leHBvcnQgY29uc3QgU1RBVElDX0RFTElNSVRFUiA9IFwiLlwiO1xuLyoqIERlbGltaXRlciB1c2VkIGJldHdlZW4gYSBmdW5jdGlvbiBhbmQgaXRzIGlubmVyIGVsZW1lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IElOTkVSX0RFTElNSVRFUiA9IFwiflwiO1xuLyoqIFN1YnN0aXR1dGlvbiB1c2VkIHRvIGluZGljYXRlIGEgbGlicmFyeSBkaXJlY3RvcnkuICovXG5leHBvcnQgY29uc3QgTElCUkFSWV9TVUJTVCA9IFwifmxpYlwiO1xuLyoqIExpYnJhcnkgZGlyZWN0b3J5IHByZWZpeC4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX1BSRUZJWCA9IExJQlJBUllfU1VCU1QgKyBQQVRIX0RFTElNSVRFUjtcbi8qKiBQYXRoIGluZGV4IHN1ZmZpeC4gKi9cbmV4cG9ydCBjb25zdCBJTkRFWF9TVUZGSVggPSBQQVRIX0RFTElNSVRFUiArIFwiaW5kZXhcIjtcblxuLyoqIENvbW1vbiBjb21waWxlciBzeW1ib2xzLiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBDb21tb25TeW1ib2xzIHtcbiAgLy8gc3BlY2lhbFxuICBleHBvcnQgY29uc3QgRU1QVFkgPSBcIlwiO1xuICAvLyB0eXBlc1xuICBleHBvcnQgY29uc3QgaTggPSBcImk4XCI7XG4gIGV4cG9ydCBjb25zdCBpMTYgPSBcImkxNlwiO1xuICBleHBvcnQgY29uc3QgaTMyID0gXCJpMzJcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NCA9IFwiaTY0XCI7XG4gIGV4cG9ydCBjb25zdCBpc2l6ZSA9IFwiaXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IHU4ID0gXCJ1OFwiO1xuICBleHBvcnQgY29uc3QgdTE2ID0gXCJ1MTZcIjtcbiAgZXhwb3J0IGNvbnN0IHUzMiA9IFwidTMyXCI7XG4gIGV4cG9ydCBjb25zdCB1NjQgPSBcInU2NFwiO1xuICBleHBvcnQgY29uc3QgdXNpemUgPSBcInVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBib29sID0gXCJib29sXCI7XG4gIGV4cG9ydCBjb25zdCBmMzIgPSBcImYzMlwiO1xuICBleHBvcnQgY29uc3QgZjY0ID0gXCJmNjRcIjtcbiAgZXhwb3J0IGNvbnN0IHYxMjggPSBcInYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IGk4eDE2ID0gXCJpOHgxNlwiO1xuICBleHBvcnQgY29uc3QgdTh4MTYgPSBcInU4eDE2XCI7XG4gIGV4cG9ydCBjb25zdCBpMTZ4OCA9IFwiaTE2eDhcIjtcbiAgZXhwb3J0IGNvbnN0IHUxNng4ID0gXCJ1MTZ4OFwiO1xuICBleHBvcnQgY29uc3QgaTMyeDQgPSBcImkzMng0XCI7XG4gIGV4cG9ydCBjb25zdCB1MzJ4NCA9IFwidTMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGk2NHgyID0gXCJpNjR4MlwiO1xuICBleHBvcnQgY29uc3QgdTY0eDIgPSBcInU2NHgyXCI7XG4gIGV4cG9ydCBjb25zdCBmMzJ4NCA9IFwiZjMyeDRcIjtcbiAgZXhwb3J0IGNvbnN0IGY2NHgyID0gXCJmNjR4MlwiO1xuICBleHBvcnQgY29uc3Qgdm9pZF8gPSBcInZvaWRcIjtcbiAgZXhwb3J0IGNvbnN0IG51bWJlciA9IFwibnVtYmVyXCI7XG4gIGV4cG9ydCBjb25zdCBib29sZWFuID0gXCJib29sZWFuXCI7XG4gIGV4cG9ydCBjb25zdCBzdHJpbmcgPSBcInN0cmluZ1wiO1xuICBleHBvcnQgY29uc3QgbmF0aXZlID0gXCJuYXRpdmVcIjtcbiAgZXhwb3J0IGNvbnN0IGluZGV4b2YgPSBcImluZGV4b2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHZhbHVlb2YgPSBcInZhbHVlb2ZcIjtcbiAgZXhwb3J0IGNvbnN0IHJldHVybm9mID0gXCJyZXR1cm5vZlwiO1xuICAvLyBhbGlhc2VzXG4gIGV4cG9ydCBjb25zdCBudWxsXyA9IFwibnVsbFwiO1xuICBleHBvcnQgY29uc3QgdHJ1ZV8gPSBcInRydWVcIjtcbiAgZXhwb3J0IGNvbnN0IGZhbHNlXyA9IFwiZmFsc2VcIjtcbiAgLy8gb2JqZWN0c1xuICBleHBvcnQgY29uc3QgdGhpc18gPSBcInRoaXNcIjtcbiAgZXhwb3J0IGNvbnN0IHN1cGVyXyA9IFwic3VwZXJcIjtcbiAgZXhwb3J0IGNvbnN0IGNvbnN0cnVjdG9yID0gXCJjb25zdHJ1Y3RvclwiO1xuICAvLyBjb25zdGFudHNcbiAgZXhwb3J0IGNvbnN0IEFTQ19UQVJHRVQgPSBcIkFTQ19UQVJHRVRcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19OT19UUkVFU0hBS0lORyA9IFwiQVNDX05PX1RSRUVTSEFLSU5HXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTk9fQVNTRVJUID0gXCJBU0NfTk9fQVNTRVJUXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfTUVNT1JZX0JBU0UgPSBcIkFTQ19NRU1PUllfQkFTRVwiO1xuICBleHBvcnQgY29uc3QgQVNDX09QVElNSVpFX0xFVkVMID0gXCJBU0NfT1BUSU1JWkVfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19TSFJJTktfTEVWRUwgPSBcIkFTQ19TSFJJTktfTEVWRUxcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX01VVEFCTEVfR0xPQkFMID0gXCJBU0NfRkVBVFVSRV9NVVRBQkxFX0dMT0JBTFwiO1xuICBleHBvcnQgY29uc3QgQVNDX0ZFQVRVUkVfU0lHTl9FWFRFTlNJT04gPSBcIkFTQ19GRUFUVVJFX1NJR05fRVhURU5TSU9OXCI7XG4gIGV4cG9ydCBjb25zdCBBU0NfRkVBVFVSRV9CVUxLX01FTU9SWSA9IFwiQVNDX0ZFQVRVUkVfQlVMS19NRU1PUllcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1NJTUQgPSBcIkFTQ19GRUFUVVJFX1NJTURcIjtcbiAgZXhwb3J0IGNvbnN0IEFTQ19GRUFUVVJFX1RIUkVBRFMgPSBcIkFTQ19GRUFUVVJFX1RIUkVBRFNcIjtcbiAgLy8gY2xhc3Nlc1xuICBleHBvcnQgY29uc3QgSTggPSBcIkk4XCI7XG4gIGV4cG9ydCBjb25zdCBJMTYgPSBcIkkxNlwiO1xuICBleHBvcnQgY29uc3QgSTMyID0gXCJJMzJcIjtcbiAgZXhwb3J0IGNvbnN0IEk2NCA9IFwiSTY0XCI7XG4gIGV4cG9ydCBjb25zdCBJc2l6ZSA9IFwiSXNpemVcIjtcbiAgZXhwb3J0IGNvbnN0IFU4ID0gXCJVOFwiO1xuICBleHBvcnQgY29uc3QgVTE2ID0gXCJVMTZcIjtcbiAgZXhwb3J0IGNvbnN0IFUzMiA9IFwiVTMyXCI7XG4gIGV4cG9ydCBjb25zdCBVNjQgPSBcIlU2NFwiO1xuICBleHBvcnQgY29uc3QgVXNpemUgPSBcIlVzaXplXCI7XG4gIGV4cG9ydCBjb25zdCBCb29sID0gXCJCb29sXCI7XG4gIGV4cG9ydCBjb25zdCBGMzIgPSBcIkYzMlwiO1xuICBleHBvcnQgY29uc3QgRjY0ID0gXCJGNjRcIjtcbiAgZXhwb3J0IGNvbnN0IFYxMjggPSBcIlYxMjhcIjtcbiAgZXhwb3J0IGNvbnN0IFN0cmluZyA9IFwiU3RyaW5nXCI7XG4gIGV4cG9ydCBjb25zdCBBcnJheSA9IFwiQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IEZpeGVkQXJyYXkgPSBcIkZpeGVkQXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFNldCA9IFwiU2V0XCI7XG4gIGV4cG9ydCBjb25zdCBNYXAgPSBcIk1hcFwiO1xuICBleHBvcnQgY29uc3QgQXJyYXlCdWZmZXJWaWV3ID0gXCJBcnJheUJ1ZmZlclZpZXdcIjtcbiAgZXhwb3J0IGNvbnN0IEFycmF5QnVmZmVyID0gXCJBcnJheUJ1ZmZlclwiO1xuICBleHBvcnQgY29uc3QgTWF0aCA9IFwiTWF0aFwiO1xuICBleHBvcnQgY29uc3QgTWF0aGYgPSBcIk1hdGhmXCI7XG4gIGV4cG9ydCBjb25zdCBJbnQ4QXJyYXkgPSBcIkludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MTZBcnJheSA9IFwiSW50MTZBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50MzJBcnJheSA9IFwiSW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgSW50NjRBcnJheSA9IFwiSW50NjRBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhBcnJheSA9IFwiVWludDhBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDhDbGFtcGVkQXJyYXkgPSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBVaW50MTZBcnJheSA9IFwiVWludDE2QXJyYXlcIjtcbiAgZXhwb3J0IGNvbnN0IFVpbnQzMkFycmF5ID0gXCJVaW50MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgVWludDY0QXJyYXkgPSBcIlVpbnQ2NEFycmF5XCI7XG4gIGV4cG9ydCBjb25zdCBGbG9hdDMyQXJyYXkgPSBcIkZsb2F0MzJBcnJheVwiO1xuICBleHBvcnQgY29uc3QgRmxvYXQ2NEFycmF5ID0gXCJGbG9hdDY0QXJyYXlcIjtcbiAgLy8gcnVudGltZVxuICBleHBvcnQgY29uc3QgYWJvcnQgPSBcImFib3J0XCI7XG4gIGV4cG9ydCBjb25zdCBwb3cgPSBcInBvd1wiO1xuICBleHBvcnQgY29uc3QgbW9kID0gXCJtb2RcIjtcbiAgZXhwb3J0IGNvbnN0IGFsbG9jID0gXCJfX2FsbG9jXCI7XG4gIGV4cG9ydCBjb25zdCByZWFsbG9jID0gXCJfX3JlYWxsb2NcIjtcbiAgZXhwb3J0IGNvbnN0IGZyZWUgPSBcIl9fZnJlZVwiO1xuICBleHBvcnQgY29uc3QgcmV0YWluID0gXCJfX3JldGFpblwiO1xuICBleHBvcnQgY29uc3QgcmVsZWFzZSA9IFwiX19yZWxlYXNlXCI7XG4gIGV4cG9ydCBjb25zdCBjb2xsZWN0ID0gXCJfX2NvbGxlY3RcIjtcbiAgZXhwb3J0IGNvbnN0IHR5cGVpbmZvID0gXCJfX3R5cGVpbmZvXCI7XG4gIGV4cG9ydCBjb25zdCBpbnN0YW5jZW9mXyA9IFwiX19pbnN0YW5jZW9mXCI7XG4gIGV4cG9ydCBjb25zdCB2aXNpdCA9IFwiX192aXNpdFwiO1xuICBleHBvcnQgY29uc3QgYWxsb2NBcnJheSA9IFwiX19hbGxvY0FycmF5XCI7XG59XG5cbi8vIHNoYXJlZFxuZXhwb3J0IHsgRmVhdHVyZSB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL2ZlYXR1cmVcIjtcbmV4cG9ydCB7IFRhcmdldCB9IGZyb20gXCIuLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3RhcmdldFwiO1xuZXhwb3J0IHsgVHlwZWluZm8sIFR5cGVpbmZvRmxhZ3MgfSBmcm9tIFwiLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90eXBlaW5mb1wiO1xuIl19 - -/***/ }), - -/***/ "../src/diagnosticMessages.generated.ts": -/*!**********************************************!*\ - !*** ../src/diagnosticMessages.generated.ts ***! - \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Generated from diagnosticsMessages.json. Do not edit. - * @module diagnostics - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/* tslint:disable:max-line-length */ -/** Enum of available diagnostic codes. */ -var DiagnosticCode; -(function (DiagnosticCode) { - DiagnosticCode[DiagnosticCode["Operation_not_supported"] = 100] = "Operation_not_supported"; - DiagnosticCode[DiagnosticCode["Operation_is_unsafe"] = 101] = "Operation_is_unsafe"; - DiagnosticCode[DiagnosticCode["User_defined_0"] = 102] = "User_defined_0"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_requires_an_explicit_cast"] = 200] = "Conversion_from_type_0_to_1_requires_an_explicit_cast"; - DiagnosticCode[DiagnosticCode["Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"] = 201] = "Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_changed_to_type_1"] = 202] = "Type_0_cannot_be_changed_to_type_1"; - DiagnosticCode[DiagnosticCode["Type_0_cannot_be_reinterpreted_as_type_1"] = 203] = "Type_0_cannot_be_reinterpreted_as_type_1"; - DiagnosticCode[DiagnosticCode["Basic_type_0_cannot_be_nullable"] = 204] = "Basic_type_0_cannot_be_nullable"; - DiagnosticCode[DiagnosticCode["Cannot_export_a_mutable_global"] = 205] = "Cannot_export_a_mutable_global"; - DiagnosticCode[DiagnosticCode["Mutable_value_cannot_be_inlined"] = 206] = "Mutable_value_cannot_be_inlined"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"] = 207] = "Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa"; - DiagnosticCode[DiagnosticCode["Unmanaged_classes_cannot_implement_interfaces"] = 208] = "Unmanaged_classes_cannot_implement_interfaces"; - DiagnosticCode[DiagnosticCode["Invalid_regular_expression_flags"] = 209] = "Invalid_regular_expression_flags"; - DiagnosticCode[DiagnosticCode["Implementation_0_must_match_the_signature_1"] = 210] = "Implementation_0_must_match_the_signature_1"; - DiagnosticCode[DiagnosticCode["Class_0_is_sealed_and_cannot_be_extended"] = 211] = "Class_0_is_sealed_and_cannot_be_extended"; - DiagnosticCode[DiagnosticCode["Decorator_0_is_not_valid_here"] = 212] = "Decorator_0_is_not_valid_here"; - DiagnosticCode[DiagnosticCode["Duplicate_decorator"] = 213] = "Duplicate_decorator"; - DiagnosticCode[DiagnosticCode["An_allocator_must_be_present_to_use_0"] = 214] = "An_allocator_must_be_present_to_use_0"; - DiagnosticCode[DiagnosticCode["Optional_parameter_must_have_an_initializer"] = 215] = "Optional_parameter_must_have_an_initializer"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_must_not_require_any_arguments"] = 216] = "Constructor_of_class_0_must_not_require_any_arguments"; - DiagnosticCode[DiagnosticCode["Function_0_cannot_be_inlined_into_itself"] = 217] = "Function_0_cannot_be_inlined_into_itself"; - DiagnosticCode[DiagnosticCode["Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"] = 218] = "Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set"; - DiagnosticCode[DiagnosticCode["Optional_properties_are_not_supported"] = 219] = "Optional_properties_are_not_supported"; - DiagnosticCode[DiagnosticCode["Expression_must_be_a_compile_time_constant"] = 220] = "Expression_must_be_a_compile_time_constant"; - DiagnosticCode[DiagnosticCode["Module_cannot_have_multiple_start_functions"] = 221] = "Module_cannot_have_multiple_start_functions"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_value_between_1_and_2_inclusive"] = 222] = "_0_must_be_a_value_between_1_and_2_inclusive"; - DiagnosticCode[DiagnosticCode["_0_must_be_a_power_of_two"] = 223] = "_0_must_be_a_power_of_two"; - DiagnosticCode[DiagnosticCode["Expression_is_unsafe"] = 224] = "Expression_is_unsafe"; - DiagnosticCode[DiagnosticCode["Expression_is_never_null"] = 225] = "Expression_is_never_null"; - DiagnosticCode[DiagnosticCode["Unterminated_string_literal"] = 1002] = "Unterminated_string_literal"; - DiagnosticCode[DiagnosticCode["Identifier_expected"] = 1003] = "Identifier_expected"; - DiagnosticCode[DiagnosticCode["_0_expected"] = 1005] = "_0_expected"; - DiagnosticCode[DiagnosticCode["A_file_cannot_have_a_reference_to_itself"] = 1006] = "A_file_cannot_have_a_reference_to_itself"; - DiagnosticCode[DiagnosticCode["Trailing_comma_not_allowed"] = 1009] = "Trailing_comma_not_allowed"; - DiagnosticCode[DiagnosticCode["Unexpected_token"] = 1012] = "Unexpected_token"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_must_be_last_in_a_parameter_list"] = 1014] = "A_rest_parameter_must_be_last_in_a_parameter_list"; - DiagnosticCode[DiagnosticCode["Parameter_cannot_have_question_mark_and_initializer"] = 1015] = "Parameter_cannot_have_question_mark_and_initializer"; - DiagnosticCode[DiagnosticCode["A_required_parameter_cannot_follow_an_optional_parameter"] = 1016] = "A_required_parameter_cannot_follow_an_optional_parameter"; - DiagnosticCode[DiagnosticCode["Statements_are_not_allowed_in_ambient_contexts"] = 1036] = "Statements_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["Initializers_are_not_allowed_in_ambient_contexts"] = 1039] = "Initializers_are_not_allowed_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["_0_modifier_cannot_be_used_here"] = 1042] = "_0_modifier_cannot_be_used_here"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_be_optional"] = 1047] = "A_rest_parameter_cannot_be_optional"; - DiagnosticCode[DiagnosticCode["A_rest_parameter_cannot_have_an_initializer"] = 1048] = "A_rest_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_set_accessor_must_have_exactly_one_parameter"] = 1049] = "A_set_accessor_must_have_exactly_one_parameter"; - DiagnosticCode[DiagnosticCode["A_set_accessor_parameter_cannot_have_an_initializer"] = 1052] = "A_set_accessor_parameter_cannot_have_an_initializer"; - DiagnosticCode[DiagnosticCode["A_get_accessor_cannot_have_parameters"] = 1054] = "A_get_accessor_cannot_have_parameters"; - DiagnosticCode[DiagnosticCode["Enum_member_must_have_initializer"] = 1061] = "Enum_member_must_have_initializer"; - DiagnosticCode[DiagnosticCode["Type_parameters_cannot_appear_on_a_constructor_declaration"] = 1092] = "Type_parameters_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["Type_annotation_cannot_appear_on_a_constructor_declaration"] = 1093] = "Type_annotation_cannot_appear_on_a_constructor_declaration"; - DiagnosticCode[DiagnosticCode["An_accessor_cannot_have_type_parameters"] = 1094] = "An_accessor_cannot_have_type_parameters"; - DiagnosticCode[DiagnosticCode["A_set_accessor_cannot_have_a_return_type_annotation"] = 1095] = "A_set_accessor_cannot_have_a_return_type_annotation"; - DiagnosticCode[DiagnosticCode["Type_parameter_list_cannot_be_empty"] = 1098] = "Type_parameter_list_cannot_be_empty"; - DiagnosticCode[DiagnosticCode["A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"] = 1104] = "A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement"; - DiagnosticCode[DiagnosticCode["A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"] = 1105] = "A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement"; - DiagnosticCode[DiagnosticCode["A_return_statement_can_only_be_used_within_a_function_body"] = 1108] = "A_return_statement_can_only_be_used_within_a_function_body"; - DiagnosticCode[DiagnosticCode["Expression_expected"] = 1109] = "Expression_expected"; - DiagnosticCode[DiagnosticCode["Type_expected"] = 1110] = "Type_expected"; - DiagnosticCode[DiagnosticCode["A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"] = 1113] = "A_default_clause_cannot_appear_more_than_once_in_a_switch_statement"; - DiagnosticCode[DiagnosticCode["Duplicate_label_0"] = 1114] = "Duplicate_label_0"; - DiagnosticCode[DiagnosticCode["An_export_assignment_cannot_have_modifiers"] = 1120] = "An_export_assignment_cannot_have_modifiers"; - DiagnosticCode[DiagnosticCode["Octal_literals_are_not_allowed_in_strict_mode"] = 1121] = "Octal_literals_are_not_allowed_in_strict_mode"; - DiagnosticCode[DiagnosticCode["Digit_expected"] = 1124] = "Digit_expected"; - DiagnosticCode[DiagnosticCode["Hexadecimal_digit_expected"] = 1125] = "Hexadecimal_digit_expected"; - DiagnosticCode[DiagnosticCode["Unexpected_end_of_text"] = 1126] = "Unexpected_end_of_text"; - DiagnosticCode[DiagnosticCode["Invalid_character"] = 1127] = "Invalid_character"; - DiagnosticCode[DiagnosticCode["_case_or_default_expected"] = 1130] = "_case_or_default_expected"; - DiagnosticCode[DiagnosticCode["_super_must_be_followed_by_an_argument_list_or_member_access"] = 1034] = "_super_must_be_followed_by_an_argument_list_or_member_access"; - DiagnosticCode[DiagnosticCode["A_declare_modifier_cannot_be_used_in_an_already_ambient_context"] = 1038] = "A_declare_modifier_cannot_be_used_in_an_already_ambient_context"; - DiagnosticCode[DiagnosticCode["Type_argument_expected"] = 1140] = "Type_argument_expected"; - DiagnosticCode[DiagnosticCode["String_literal_expected"] = 1141] = "String_literal_expected"; - DiagnosticCode[DiagnosticCode["Line_break_not_permitted_here"] = 1142] = "Line_break_not_permitted_here"; - DiagnosticCode[DiagnosticCode["Declaration_expected"] = 1146] = "Declaration_expected"; - DiagnosticCode[DiagnosticCode["_const_declarations_must_be_initialized"] = 1155] = "_const_declarations_must_be_initialized"; - DiagnosticCode[DiagnosticCode["Unterminated_regular_expression_literal"] = 1161] = "Unterminated_regular_expression_literal"; - DiagnosticCode[DiagnosticCode["Interface_declaration_cannot_have_implements_clause"] = 1176] = "Interface_declaration_cannot_have_implements_clause"; - DiagnosticCode[DiagnosticCode["Binary_digit_expected"] = 1177] = "Binary_digit_expected"; - DiagnosticCode[DiagnosticCode["Octal_digit_expected"] = 1178] = "Octal_digit_expected"; - DiagnosticCode[DiagnosticCode["An_implementation_cannot_be_declared_in_ambient_contexts"] = 1183] = "An_implementation_cannot_be_declared_in_ambient_contexts"; - DiagnosticCode[DiagnosticCode["An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"] = 1198] = "An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive"; - DiagnosticCode[DiagnosticCode["Unterminated_Unicode_escape_sequence"] = 1199] = "Unterminated_Unicode_escape_sequence"; - DiagnosticCode[DiagnosticCode["Decorators_are_not_valid_here"] = 1206] = "Decorators_are_not_valid_here"; - DiagnosticCode[DiagnosticCode["_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"] = 1242] = "_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration"; - DiagnosticCode[DiagnosticCode["Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"] = 1245] = "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract"; - DiagnosticCode[DiagnosticCode["A_definite_assignment_assertion_is_not_permitted_in_this_context"] = 1255] = "A_definite_assignment_assertion_is_not_permitted_in_this_context"; - DiagnosticCode[DiagnosticCode["A_class_may_only_extend_another_class"] = 1311] = "A_class_may_only_extend_another_class"; - DiagnosticCode[DiagnosticCode["A_parameter_property_cannot_be_declared_using_a_rest_parameter"] = 1317] = "A_parameter_property_cannot_be_declared_using_a_rest_parameter"; - DiagnosticCode[DiagnosticCode["Duplicate_identifier_0"] = 2300] = "Duplicate_identifier_0"; - DiagnosticCode[DiagnosticCode["Cannot_find_name_0"] = 2304] = "Cannot_find_name_0"; - DiagnosticCode[DiagnosticCode["Module_0_has_no_exported_member_1"] = 2305] = "Module_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Generic_type_0_requires_1_type_argument_s"] = 2314] = "Generic_type_0_requires_1_type_argument_s"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_generic"] = 2315] = "Type_0_is_not_generic"; - DiagnosticCode[DiagnosticCode["Type_0_is_not_assignable_to_type_1"] = 2322] = "Type_0_is_not_assignable_to_type_1"; - DiagnosticCode[DiagnosticCode["Index_signature_is_missing_in_type_0"] = 2329] = "Index_signature_is_missing_in_type_0"; - DiagnosticCode[DiagnosticCode["_this_cannot_be_referenced_in_current_location"] = 2332] = "_this_cannot_be_referenced_in_current_location"; - DiagnosticCode[DiagnosticCode["_super_can_only_be_referenced_in_a_derived_class"] = 2335] = "_super_can_only_be_referenced_in_a_derived_class"; - DiagnosticCode[DiagnosticCode["Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"] = 2337] = "Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors"; - DiagnosticCode[DiagnosticCode["Property_0_does_not_exist_on_type_1"] = 2339] = "Property_0_does_not_exist_on_type_1"; - DiagnosticCode[DiagnosticCode["Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"] = 2349] = "Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures"; - DiagnosticCode[DiagnosticCode["Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"] = 2351] = "Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature"; - DiagnosticCode[DiagnosticCode["A_function_whose_declared_type_is_not_void_must_return_a_value"] = 2355] = "A_function_whose_declared_type_is_not_void_must_return_a_value"; - DiagnosticCode[DiagnosticCode["The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"] = 2357] = "The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"] = 2364] = "The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Operator_0_cannot_be_applied_to_types_1_and_2"] = 2365] = "Operator_0_cannot_be_applied_to_types_1_and_2"; - DiagnosticCode[DiagnosticCode["A_super_call_must_be_the_first_statement_in_the_constructor"] = 2376] = "A_super_call_must_be_the_first_statement_in_the_constructor"; - DiagnosticCode[DiagnosticCode["Constructors_for_derived_classes_must_contain_a_super_call"] = 2377] = "Constructors_for_derived_classes_must_contain_a_super_call"; - DiagnosticCode[DiagnosticCode["_get_and_set_accessor_must_have_the_same_type"] = 2380] = "_get_and_set_accessor_must_have_the_same_type"; - DiagnosticCode[DiagnosticCode["Constructor_implementation_is_missing"] = 2390] = "Constructor_implementation_is_missing"; - DiagnosticCode[DiagnosticCode["Function_implementation_is_missing_or_not_immediately_following_the_declaration"] = 2391] = "Function_implementation_is_missing_or_not_immediately_following_the_declaration"; - DiagnosticCode[DiagnosticCode["Multiple_constructor_implementations_are_not_allowed"] = 2392] = "Multiple_constructor_implementations_are_not_allowed"; - DiagnosticCode[DiagnosticCode["Duplicate_function_implementation"] = 2393] = "Duplicate_function_implementation"; - DiagnosticCode[DiagnosticCode["Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"] = 2395] = "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local"; - DiagnosticCode[DiagnosticCode["A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"] = 2434] = "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_property_1"] = 2460] = "Type_0_has_no_property_1"; - DiagnosticCode[DiagnosticCode["The_0_operator_cannot_be_applied_to_type_1"] = 2469] = "The_0_operator_cannot_be_applied_to_type_1"; - DiagnosticCode[DiagnosticCode["In_const_enum_declarations_member_initializer_must_be_constant_expression"] = 2474] = "In_const_enum_declarations_member_initializer_must_be_constant_expression"; - DiagnosticCode[DiagnosticCode["Export_declaration_conflicts_with_exported_declaration_of_0"] = 2484] = "Export_declaration_conflicts_with_exported_declaration_of_0"; - DiagnosticCode[DiagnosticCode["Object_is_possibly_null"] = 2531] = "Object_is_possibly_null"; - DiagnosticCode[DiagnosticCode["Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"] = 2540] = "Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property"; - DiagnosticCode[DiagnosticCode["The_target_of_an_assignment_must_be_a_variable_or_a_property_access"] = 2541] = "The_target_of_an_assignment_must_be_a_variable_or_a_property_access"; - DiagnosticCode[DiagnosticCode["Index_signature_in_type_0_only_permits_reading"] = 2542] = "Index_signature_in_type_0_only_permits_reading"; - DiagnosticCode[DiagnosticCode["Expected_0_arguments_but_got_1"] = 2554] = "Expected_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_at_least_0_arguments_but_got_1"] = 2555] = "Expected_at_least_0_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["Expected_0_type_arguments_but_got_1"] = 2558] = "Expected_0_type_arguments_but_got_1"; - DiagnosticCode[DiagnosticCode["A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"] = 2651] = "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"] = 2673] = "Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"] = 2674] = "Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration"; - DiagnosticCode[DiagnosticCode["Namespace_0_has_no_exported_member_1"] = 2694] = "Namespace_0_has_no_exported_member_1"; - DiagnosticCode[DiagnosticCode["Required_type_parameters_may_not_follow_optional_type_parameters"] = 2706] = "Required_type_parameters_may_not_follow_optional_type_parameters"; - DiagnosticCode[DiagnosticCode["Duplicate_property_0"] = 2718] = "Duplicate_property_0"; - DiagnosticCode[DiagnosticCode["Type_0_has_no_call_signatures"] = 2757] = "Type_0_has_no_call_signatures"; - DiagnosticCode[DiagnosticCode["File_0_not_found"] = 6054] = "File_0_not_found"; - DiagnosticCode[DiagnosticCode["Numeric_separators_are_not_allowed_here"] = 6188] = "Numeric_separators_are_not_allowed_here"; - DiagnosticCode[DiagnosticCode["Multiple_consecutive_numeric_separators_are_not_permitted"] = 6189] = "Multiple_consecutive_numeric_separators_are_not_permitted"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"] = 17009] = "_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class"; - DiagnosticCode[DiagnosticCode["_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"] = 17011] = "_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"; -})(DiagnosticCode = exports.DiagnosticCode || (exports.DiagnosticCode = {})); -/** Translates a diagnostic code to its respective string. */ -function diagnosticCodeToString(code) { - switch (code) { - case 100: return "Operation not supported."; - case 101: return "Operation is unsafe."; - case 102: return "User-defined: {0}"; - case 200: return "Conversion from type '{0}' to '{1}' requires an explicit cast."; - case 201: return "Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit."; - case 202: return "Type '{0}' cannot be changed to type '{1}'."; - case 203: return "Type '{0}' cannot be reinterpreted as type '{1}'."; - case 204: return "Basic type '{0}' cannot be nullable."; - case 205: return "Cannot export a mutable global."; - case 206: return "Mutable value cannot be inlined."; - case 207: return "Unmanaged classes cannot extend managed classes and vice-versa."; - case 208: return "Unmanaged classes cannot implement interfaces."; - case 209: return "Invalid regular expression flags."; - case 210: return "Implementation '{0}' must match the signature '{1}'."; - case 211: return "Class '{0}' is sealed and cannot be extended."; - case 212: return "Decorator '{0}' is not valid here."; - case 213: return "Duplicate decorator."; - case 214: return "An allocator must be present to use '{0}'."; - case 215: return "Optional parameter must have an initializer."; - case 216: return "Constructor of class '{0}' must not require any arguments."; - case 217: return "Function '{0}' cannot be inlined into itself."; - case 218: return "Cannot access method '{0}' without calling it as it requires 'this' to be set."; - case 219: return "Optional properties are not supported."; - case 220: return "Expression must be a compile-time constant."; - case 221: return "Module cannot have multiple start functions."; - case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; - case 223: return "'{0}' must be a power of two."; - case 224: return "Expression is unsafe."; - case 225: return "Expression is never 'null'."; - case 1002: return "Unterminated string literal."; - case 1003: return "Identifier expected."; - case 1005: return "'{0}' expected."; - case 1006: return "A file cannot have a reference to itself."; - case 1009: return "Trailing comma not allowed."; - case 1012: return "Unexpected token."; - case 1014: return "A rest parameter must be last in a parameter list."; - case 1015: return "Parameter cannot have question mark and initializer."; - case 1016: return "A required parameter cannot follow an optional parameter."; - case 1036: return "Statements are not allowed in ambient contexts."; - case 1039: return "Initializers are not allowed in ambient contexts."; - case 1042: return "'{0}' modifier cannot be used here."; - case 1047: return "A rest parameter cannot be optional."; - case 1048: return "A rest parameter cannot have an initializer."; - case 1049: return "A 'set' accessor must have exactly one parameter."; - case 1052: return "A 'set' accessor parameter cannot have an initializer."; - case 1054: return "A 'get' accessor cannot have parameters."; - case 1061: return "Enum member must have initializer."; - case 1092: return "Type parameters cannot appear on a constructor declaration."; - case 1093: return "Type annotation cannot appear on a constructor declaration."; - case 1094: return "An accessor cannot have type parameters."; - case 1095: return "A 'set' accessor cannot have a return type annotation."; - case 1098: return "Type parameter list cannot be empty."; - case 1104: return "A 'continue' statement can only be used within an enclosing iteration statement."; - case 1105: return "A 'break' statement can only be used within an enclosing iteration or switch statement."; - case 1108: return "A 'return' statement can only be used within a function body."; - case 1109: return "Expression expected."; - case 1110: return "Type expected."; - case 1113: return "A 'default' clause cannot appear more than once in a 'switch' statement."; - case 1114: return "Duplicate label '{0}'."; - case 1120: return "An export assignment cannot have modifiers."; - case 1121: return "Octal literals are not allowed in strict mode."; - case 1124: return "Digit expected."; - case 1125: return "Hexadecimal digit expected."; - case 1126: return "Unexpected end of text."; - case 1127: return "Invalid character."; - case 1130: return "'case' or 'default' expected."; - case 1034: return "'super' must be followed by an argument list or member access."; - case 1038: return "A 'declare' modifier cannot be used in an already ambient context."; - case 1140: return "Type argument expected."; - case 1141: return "String literal expected."; - case 1142: return "Line break not permitted here."; - case 1146: return "Declaration expected."; - case 1155: return "'const' declarations must be initialized."; - case 1161: return "Unterminated regular expression literal."; - case 1176: return "Interface declaration cannot have 'implements' clause."; - case 1177: return "Binary digit expected."; - case 1178: return "Octal digit expected."; - case 1183: return "An implementation cannot be declared in ambient contexts."; - case 1198: return "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."; - case 1199: return "Unterminated Unicode escape sequence."; - case 1206: return "Decorators are not valid here."; - case 1242: return "'abstract' modifier can only appear on a class, method, or property declaration."; - case 1245: return "Method '{0}' cannot have an implementation because it is marked abstract."; - case 1255: return "A definite assignment assertion '!' is not permitted in this context."; - case 1311: return "A class may only extend another class."; - case 1317: return "A parameter property cannot be declared using a rest parameter."; - case 2300: return "Duplicate identifier '{0}'."; - case 2304: return "Cannot find name '{0}'."; - case 2305: return "Module '{0}' has no exported member '{1}'."; - case 2314: return "Generic type '{0}' requires {1} type argument(s)."; - case 2315: return "Type '{0}' is not generic."; - case 2322: return "Type '{0}' is not assignable to type '{1}'."; - case 2329: return "Index signature is missing in type '{0}'."; - case 2332: return "'this' cannot be referenced in current location."; - case 2335: return "'super' can only be referenced in a derived class."; - case 2337: return "Super calls are not permitted outside constructors or in nested functions inside constructors."; - case 2339: return "Property '{0}' does not exist on type '{1}'."; - case 2349: return "Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."; - case 2351: return "Cannot use 'new' with an expression whose type lacks a construct signature."; - case 2355: return "A function whose declared type is not 'void' must return a value."; - case 2357: return "The operand of an increment or decrement operator must be a variable or a property access."; - case 2364: return "The left-hand side of an assignment expression must be a variable or a property access."; - case 2365: return "Operator '{0}' cannot be applied to types '{1}' and '{2}'."; - case 2376: return "A 'super' call must be the first statement in the constructor."; - case 2377: return "Constructors for derived classes must contain a 'super' call."; - case 2380: return "'get' and 'set' accessor must have the same type."; - case 2390: return "Constructor implementation is missing."; - case 2391: return "Function implementation is missing or not immediately following the declaration."; - case 2392: return "Multiple constructor implementations are not allowed."; - case 2393: return "Duplicate function implementation."; - case 2395: return "Individual declarations in merged declaration '{0}' must be all exported or all local."; - case 2434: return "A namespace declaration cannot be located prior to a class or function with which it is merged."; - case 2460: return "Type '{0}' has no property '{1}'."; - case 2469: return "The '{0}' operator cannot be applied to type '{1}'."; - case 2474: return "In 'const' enum declarations member initializer must be constant expression."; - case 2484: return "Export declaration conflicts with exported declaration of '{0}'."; - case 2531: return "Object is possibly 'null'."; - case 2540: return "Cannot assign to '{0}' because it is a constant or a read-only property."; - case 2541: return "The target of an assignment must be a variable or a property access."; - case 2542: return "Index signature in type '{0}' only permits reading."; - case 2554: return "Expected {0} arguments, but got {1}."; - case 2555: return "Expected at least {0} arguments, but got {1}."; - case 2558: return "Expected {0} type arguments, but got {1}."; - case 2651: return "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."; - case 2673: return "Constructor of class '{0}' is private and only accessible within the class declaration."; - case 2674: return "Constructor of class '{0}' is protected and only accessible within the class declaration."; - case 2694: return "Namespace '{0}' has no exported member '{1}'."; - case 2706: return "Required type parameters may not follow optional type parameters."; - case 2718: return "Duplicate property '{0}'."; - case 2757: return "Type '{0}' has no call signatures."; - case 6054: return "File '{0}' not found."; - case 6188: return "Numeric separators are not allowed here."; - case 6189: return "Multiple consecutive numeric separators are not permitted."; - case 17009: return "'super' must be called before accessing 'this' in the constructor of a derived class."; - case 17011: return "'super' must be called before accessing a property of 'super' in the constructor of a derived class."; - default: return ""; - } -} -exports.diagnosticCodeToString = diagnosticCodeToString; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY01lc3NhZ2VzLmdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0csQ0FBQSxLQUFLOztBQUVSLG9DQUFvQztBQUVwQywwQ0FBMEM7QUFDMUMsSUFBWSxjQXdJWDtBQXhJRCxXQUFZLGNBQWM7SUFDeEIsMkZBQTZCLENBQUE7SUFDN0IsbUZBQXlCLENBQUE7SUFDekIseUVBQW9CLENBQUE7SUFDcEIsdUpBQTJELENBQUE7SUFDM0QsaU9BQWdHLENBQUE7SUFDaEcsaUhBQXdDLENBQUE7SUFDeEMsNkhBQThDLENBQUE7SUFDOUMsMkdBQXFDLENBQUE7SUFDckMseUdBQW9DLENBQUE7SUFDcEMsMkdBQXFDLENBQUE7SUFDckMseUtBQW9FLENBQUE7SUFDcEUsdUlBQW1ELENBQUE7SUFDbkQsNkdBQXNDLENBQUE7SUFDdEMsbUlBQWlELENBQUE7SUFDakQsNkhBQThDLENBQUE7SUFDOUMsdUdBQW1DLENBQUE7SUFDbkMsbUZBQXlCLENBQUE7SUFDekIsdUhBQTJDLENBQUE7SUFDM0MsbUlBQWlELENBQUE7SUFDakQsdUpBQTJELENBQUE7SUFDM0QsNkhBQThDLENBQUE7SUFDOUMsMkxBQTZFLENBQUE7SUFDN0UsdUhBQTJDLENBQUE7SUFDM0MsaUlBQWdELENBQUE7SUFDaEQsbUlBQWlELENBQUE7SUFDakQscUlBQWtELENBQUE7SUFDbEQsK0ZBQStCLENBQUE7SUFDL0IscUZBQTBCLENBQUE7SUFDMUIsNkZBQThCLENBQUE7SUFDOUIsb0dBQWtDLENBQUE7SUFDbEMsb0ZBQTBCLENBQUE7SUFDMUIsb0VBQWtCLENBQUE7SUFDbEIsOEhBQStDLENBQUE7SUFDL0Msa0dBQWlDLENBQUE7SUFDakMsOEVBQXVCLENBQUE7SUFDdkIsZ0pBQXdELENBQUE7SUFDeEQsb0pBQTBELENBQUE7SUFDMUQsOEpBQStELENBQUE7SUFDL0QsMElBQXFELENBQUE7SUFDckQsOElBQXVELENBQUE7SUFDdkQsNEdBQXNDLENBQUE7SUFDdEMsb0hBQTBDLENBQUE7SUFDMUMsb0lBQWtELENBQUE7SUFDbEQsMElBQXFELENBQUE7SUFDckQsb0pBQTBELENBQUE7SUFDMUQsd0hBQTRDLENBQUE7SUFDNUMsZ0hBQXdDLENBQUE7SUFDeEMsa0tBQWlFLENBQUE7SUFDakUsa0tBQWlFLENBQUE7SUFDakUsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsb0hBQTBDLENBQUE7SUFDMUMsd01BQW9GLENBQUE7SUFDcEYsc05BQTJGLENBQUE7SUFDM0Ysa0tBQWlFLENBQUE7SUFDakUsb0ZBQTBCLENBQUE7SUFDMUIsd0VBQW9CLENBQUE7SUFDcEIsb0xBQTBFLENBQUE7SUFDMUUsZ0ZBQXdCLENBQUE7SUFDeEIsa0lBQWlELENBQUE7SUFDakQsd0lBQW9ELENBQUE7SUFDcEQsMEVBQXFCLENBQUE7SUFDckIsa0dBQWlDLENBQUE7SUFDakMsMEZBQTZCLENBQUE7SUFDN0IsZ0ZBQXdCLENBQUE7SUFDeEIsZ0dBQWdDLENBQUE7SUFDaEMsc0tBQW1FLENBQUE7SUFDbkUsNEtBQXNFLENBQUE7SUFDdEUsMEZBQTZCLENBQUE7SUFDN0IsNEZBQThCLENBQUE7SUFDOUIsd0dBQW9DLENBQUE7SUFDcEMsc0ZBQTJCLENBQUE7SUFDM0IsNEhBQThDLENBQUE7SUFDOUMsNEhBQThDLENBQUE7SUFDOUMsb0pBQTBELENBQUE7SUFDMUQsd0ZBQTRCLENBQUE7SUFDNUIsc0ZBQTJCLENBQUE7SUFDM0IsOEpBQStELENBQUE7SUFDL0Qsb01BQWtGLENBQUE7SUFDbEYsc0hBQTJDLENBQUE7SUFDM0Msd0dBQW9DLENBQUE7SUFDcEMsc01BQW1GLENBQUE7SUFDbkYsc0xBQTJFLENBQUE7SUFDM0UsOEtBQXVFLENBQUE7SUFDdkUsd0hBQTRDLENBQUE7SUFDNUMsMEtBQXFFLENBQUE7SUFDckUsMEZBQTZCLENBQUE7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QWtJLENBQUM7UUFDckosS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHlGQUF5RixDQUFDO1FBQzVHLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyRkFBMkYsQ0FBQztRQUM5RyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sK0NBQStDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLG1FQUFtRSxDQUFDO1FBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQztRQUM5QyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sb0NBQW9DLENBQUM7UUFDdkQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLHVCQUF1QixDQUFDO1FBQzFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTywwQ0FBMEMsQ0FBQztRQUM3RCxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sNERBQTRELENBQUM7UUFDL0UsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLHVGQUF1RixDQUFDO1FBQzNHLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxzR0FBc0csQ0FBQztRQUMxSCxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNwQjtBQUNILENBQUM7QUEzSUQsd0RBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgZnJvbSBkaWFnbm9zdGljc01lc3NhZ2VzLmpzb24uIERvIG5vdCBlZGl0LlxuICogQG1vZHVsZSBkaWFnbm9zdGljc1xuICovLyoqKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXG5cbi8qKiBFbnVtIG9mIGF2YWlsYWJsZSBkaWFnbm9zdGljIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NvZGUge1xuICBPcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IDEwMCxcbiAgT3BlcmF0aW9uX2lzX3Vuc2FmZSA9IDEwMSxcbiAgVXNlcl9kZWZpbmVkXzAgPSAxMDIsXG4gIENvbnZlcnNpb25fZnJvbV90eXBlXzBfdG9fMV9yZXF1aXJlc19hbl9leHBsaWNpdF9jYXN0ID0gMjAwLFxuICBDb252ZXJzaW9uX2Zyb21fdHlwZV8wX3RvXzFfd2lsbF9yZXF1aXJlX2FuX2V4cGxpY2l0X2Nhc3Rfd2hlbl9zd2l0Y2hpbmdfYmV0d2Vlbl8zMl82NF9iaXQgPSAyMDEsXG4gIFR5cGVfMF9jYW5ub3RfYmVfY2hhbmdlZF90b190eXBlXzEgPSAyMDIsXG4gIFR5cGVfMF9jYW5ub3RfYmVfcmVpbnRlcnByZXRlZF9hc190eXBlXzEgPSAyMDMsXG4gIEJhc2ljX3R5cGVfMF9jYW5ub3RfYmVfbnVsbGFibGUgPSAyMDQsXG4gIENhbm5vdF9leHBvcnRfYV9tdXRhYmxlX2dsb2JhbCA9IDIwNSxcbiAgTXV0YWJsZV92YWx1ZV9jYW5ub3RfYmVfaW5saW5lZCA9IDIwNixcbiAgVW5tYW5hZ2VkX2NsYXNzZXNfY2Fubm90X2V4dGVuZF9tYW5hZ2VkX2NsYXNzZXNfYW5kX3ZpY2VfdmVyc2EgPSAyMDcsXG4gIFVubWFuYWdlZF9jbGFzc2VzX2Nhbm5vdF9pbXBsZW1lbnRfaW50ZXJmYWNlcyA9IDIwOCxcbiAgSW52YWxpZF9yZWd1bGFyX2V4cHJlc3Npb25fZmxhZ3MgPSAyMDksXG4gIEltcGxlbWVudGF0aW9uXzBfbXVzdF9tYXRjaF90aGVfc2lnbmF0dXJlXzEgPSAyMTAsXG4gIENsYXNzXzBfaXNfc2VhbGVkX2FuZF9jYW5ub3RfYmVfZXh0ZW5kZWQgPSAyMTEsXG4gIERlY29yYXRvcl8wX2lzX25vdF92YWxpZF9oZXJlID0gMjEyLFxuICBEdXBsaWNhdGVfZGVjb3JhdG9yID0gMjEzLFxuICBBbl9hbGxvY2F0b3JfbXVzdF9iZV9wcmVzZW50X3RvX3VzZV8wID0gMjE0LFxuICBPcHRpb25hbF9wYXJhbWV0ZXJfbXVzdF9oYXZlX2FuX2luaXRpYWxpemVyID0gMjE1LFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX211c3Rfbm90X3JlcXVpcmVfYW55X2FyZ3VtZW50cyA9IDIxNixcbiAgRnVuY3Rpb25fMF9jYW5ub3RfYmVfaW5saW5lZF9pbnRvX2l0c2VsZiA9IDIxNyxcbiAgQ2Fubm90X2FjY2Vzc19tZXRob2RfMF93aXRob3V0X2NhbGxpbmdfaXRfYXNfaXRfcmVxdWlyZXNfdGhpc190b19iZV9zZXQgPSAyMTgsXG4gIE9wdGlvbmFsX3Byb3BlcnRpZXNfYXJlX25vdF9zdXBwb3J0ZWQgPSAyMTksXG4gIEV4cHJlc3Npb25fbXVzdF9iZV9hX2NvbXBpbGVfdGltZV9jb25zdGFudCA9IDIyMCxcbiAgTW9kdWxlX2Nhbm5vdF9oYXZlX211bHRpcGxlX3N0YXJ0X2Z1bmN0aW9ucyA9IDIyMSxcbiAgXzBfbXVzdF9iZV9hX3ZhbHVlX2JldHdlZW5fMV9hbmRfMl9pbmNsdXNpdmUgPSAyMjIsXG4gIF8wX211c3RfYmVfYV9wb3dlcl9vZl90d28gPSAyMjMsXG4gIEV4cHJlc3Npb25faXNfdW5zYWZlID0gMjI0LFxuICBFeHByZXNzaW9uX2lzX25ldmVyX251bGwgPSAyMjUsXG4gIFVudGVybWluYXRlZF9zdHJpbmdfbGl0ZXJhbCA9IDEwMDIsXG4gIElkZW50aWZpZXJfZXhwZWN0ZWQgPSAxMDAzLFxuICBfMF9leHBlY3RlZCA9IDEwMDUsXG4gIEFfZmlsZV9jYW5ub3RfaGF2ZV9hX3JlZmVyZW5jZV90b19pdHNlbGYgPSAxMDA2LFxuICBUcmFpbGluZ19jb21tYV9ub3RfYWxsb3dlZCA9IDEwMDksXG4gIFVuZXhwZWN0ZWRfdG9rZW4gPSAxMDEyLFxuICBBX3Jlc3RfcGFyYW1ldGVyX211c3RfYmVfbGFzdF9pbl9hX3BhcmFtZXRlcl9saXN0ID0gMTAxNCxcbiAgUGFyYW1ldGVyX2Nhbm5vdF9oYXZlX3F1ZXN0aW9uX21hcmtfYW5kX2luaXRpYWxpemVyID0gMTAxNSxcbiAgQV9yZXF1aXJlZF9wYXJhbWV0ZXJfY2Fubm90X2ZvbGxvd19hbl9vcHRpb25hbF9wYXJhbWV0ZXIgPSAxMDE2LFxuICBTdGF0ZW1lbnRzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzNixcbiAgSW5pdGlhbGl6ZXJzX2FyZV9ub3RfYWxsb3dlZF9pbl9hbWJpZW50X2NvbnRleHRzID0gMTAzOSxcbiAgXzBfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaGVyZSA9IDEwNDIsXG4gIEFfcmVzdF9wYXJhbWV0ZXJfY2Fubm90X2JlX29wdGlvbmFsID0gMTA0NyxcbiAgQV9yZXN0X3BhcmFtZXRlcl9jYW5ub3RfaGF2ZV9hbl9pbml0aWFsaXplciA9IDEwNDgsXG4gIEFfc2V0X2FjY2Vzc29yX211c3RfaGF2ZV9leGFjdGx5X29uZV9wYXJhbWV0ZXIgPSAxMDQ5LFxuICBBX3NldF9hY2Nlc3Nvcl9wYXJhbWV0ZXJfY2Fubm90X2hhdmVfYW5faW5pdGlhbGl6ZXIgPSAxMDUyLFxuICBBX2dldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9wYXJhbWV0ZXJzID0gMTA1NCxcbiAgRW51bV9tZW1iZXJfbXVzdF9oYXZlX2luaXRpYWxpemVyID0gMTA2MSxcbiAgVHlwZV9wYXJhbWV0ZXJzX2Nhbm5vdF9hcHBlYXJfb25fYV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IDEwOTIsXG4gIFR5cGVfYW5ub3RhdGlvbl9jYW5ub3RfYXBwZWFyX29uX2FfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSAxMDkzLFxuICBBbl9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV90eXBlX3BhcmFtZXRlcnMgPSAxMDk0LFxuICBBX3NldF9hY2Nlc3Nvcl9jYW5ub3RfaGF2ZV9hX3JldHVybl90eXBlX2Fubm90YXRpb24gPSAxMDk1LFxuICBUeXBlX3BhcmFtZXRlcl9saXN0X2Nhbm5vdF9iZV9lbXB0eSA9IDEwOTgsXG4gIEFfY29udGludWVfc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FuX2VuY2xvc2luZ19pdGVyYXRpb25fc3RhdGVtZW50ID0gMTEwNCxcbiAgQV9icmVha19zdGF0ZW1lbnRfY2FuX29ubHlfYmVfdXNlZF93aXRoaW5fYW5fZW5jbG9zaW5nX2l0ZXJhdGlvbl9vcl9zd2l0Y2hfc3RhdGVtZW50ID0gMTEwNSxcbiAgQV9yZXR1cm5fc3RhdGVtZW50X2Nhbl9vbmx5X2JlX3VzZWRfd2l0aGluX2FfZnVuY3Rpb25fYm9keSA9IDExMDgsXG4gIEV4cHJlc3Npb25fZXhwZWN0ZWQgPSAxMTA5LFxuICBUeXBlX2V4cGVjdGVkID0gMTExMCxcbiAgQV9kZWZhdWx0X2NsYXVzZV9jYW5ub3RfYXBwZWFyX21vcmVfdGhhbl9vbmNlX2luX2Ffc3dpdGNoX3N0YXRlbWVudCA9IDExMTMsXG4gIER1cGxpY2F0ZV9sYWJlbF8wID0gMTExNCxcbiAgQW5fZXhwb3J0X2Fzc2lnbm1lbnRfY2Fubm90X2hhdmVfbW9kaWZpZXJzID0gMTEyMCxcbiAgT2N0YWxfbGl0ZXJhbHNfYXJlX25vdF9hbGxvd2VkX2luX3N0cmljdF9tb2RlID0gMTEyMSxcbiAgRGlnaXRfZXhwZWN0ZWQgPSAxMTI0LFxuICBIZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCA9IDExMjUsXG4gIFVuZXhwZWN0ZWRfZW5kX29mX3RleHQgPSAxMTI2LFxuICBJbnZhbGlkX2NoYXJhY3RlciA9IDExMjcsXG4gIF9jYXNlX29yX2RlZmF1bHRfZXhwZWN0ZWQgPSAxMTMwLFxuICBfc3VwZXJfbXVzdF9iZV9mb2xsb3dlZF9ieV9hbl9hcmd1bWVudF9saXN0X29yX21lbWJlcl9hY2Nlc3MgPSAxMDM0LFxuICBBX2RlY2xhcmVfbW9kaWZpZXJfY2Fubm90X2JlX3VzZWRfaW5fYW5fYWxyZWFkeV9hbWJpZW50X2NvbnRleHQgPSAxMDM4LFxuICBUeXBlX2FyZ3VtZW50X2V4cGVjdGVkID0gMTE0MCxcbiAgU3RyaW5nX2xpdGVyYWxfZXhwZWN0ZWQgPSAxMTQxLFxuICBMaW5lX2JyZWFrX25vdF9wZXJtaXR0ZWRfaGVyZSA9IDExNDIsXG4gIERlY2xhcmF0aW9uX2V4cGVjdGVkID0gMTE0NixcbiAgX2NvbnN0X2RlY2xhcmF0aW9uc19tdXN0X2JlX2luaXRpYWxpemVkID0gMTE1NSxcbiAgVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsID0gMTE2MSxcbiAgSW50ZXJmYWNlX2RlY2xhcmF0aW9uX2Nhbm5vdF9oYXZlX2ltcGxlbWVudHNfY2xhdXNlID0gMTE3NixcbiAgQmluYXJ5X2RpZ2l0X2V4cGVjdGVkID0gMTE3NyxcbiAgT2N0YWxfZGlnaXRfZXhwZWN0ZWQgPSAxMTc4LFxuICBBbl9pbXBsZW1lbnRhdGlvbl9jYW5ub3RfYmVfZGVjbGFyZWRfaW5fYW1iaWVudF9jb250ZXh0cyA9IDExODMsXG4gIEFuX2V4dGVuZGVkX1VuaWNvZGVfZXNjYXBlX3ZhbHVlX211c3RfYmVfYmV0d2Vlbl8weDBfYW5kXzB4MTBGRkZGX2luY2x1c2l2ZSA9IDExOTgsXG4gIFVudGVybWluYXRlZF9Vbmljb2RlX2VzY2FwZV9zZXF1ZW5jZSA9IDExOTksXG4gIERlY29yYXRvcnNfYXJlX25vdF92YWxpZF9oZXJlID0gMTIwNixcbiAgX2Fic3RyYWN0X21vZGlmaWVyX2Nhbl9vbmx5X2FwcGVhcl9vbl9hX2NsYXNzX21ldGhvZF9vcl9wcm9wZXJ0eV9kZWNsYXJhdGlvbiA9IDEyNDIsXG4gIE1ldGhvZF8wX2Nhbm5vdF9oYXZlX2FuX2ltcGxlbWVudGF0aW9uX2JlY2F1c2VfaXRfaXNfbWFya2VkX2Fic3RyYWN0ID0gMTI0NSxcbiAgQV9kZWZpbml0ZV9hc3NpZ25tZW50X2Fzc2VydGlvbl9pc19ub3RfcGVybWl0dGVkX2luX3RoaXNfY29udGV4dCA9IDEyNTUsXG4gIEFfY2xhc3NfbWF5X29ubHlfZXh0ZW5kX2Fub3RoZXJfY2xhc3MgPSAxMzExLFxuICBBX3BhcmFtZXRlcl9wcm9wZXJ0eV9jYW5ub3RfYmVfZGVjbGFyZWRfdXNpbmdfYV9yZXN0X3BhcmFtZXRlciA9IDEzMTcsXG4gIER1cGxpY2F0ZV9pZGVudGlmaWVyXzAgPSAyMzAwLFxuICBDYW5ub3RfZmluZF9uYW1lXzAgPSAyMzA0LFxuICBNb2R1bGVfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyMzA1LFxuICBHZW5lcmljX3R5cGVfMF9yZXF1aXJlc18xX3R5cGVfYXJndW1lbnRfcyA9IDIzMTQsXG4gIFR5cGVfMF9pc19ub3RfZ2VuZXJpYyA9IDIzMTUsXG4gIFR5cGVfMF9pc19ub3RfYXNzaWduYWJsZV90b190eXBlXzEgPSAyMzIyLFxuICBJbmRleF9zaWduYXR1cmVfaXNfbWlzc2luZ19pbl90eXBlXzAgPSAyMzI5LFxuICBfdGhpc19jYW5ub3RfYmVfcmVmZXJlbmNlZF9pbl9jdXJyZW50X2xvY2F0aW9uID0gMjMzMixcbiAgX3N1cGVyX2Nhbl9vbmx5X2JlX3JlZmVyZW5jZWRfaW5fYV9kZXJpdmVkX2NsYXNzID0gMjMzNSxcbiAgU3VwZXJfY2FsbHNfYXJlX25vdF9wZXJtaXR0ZWRfb3V0c2lkZV9jb25zdHJ1Y3RvcnNfb3JfaW5fbmVzdGVkX2Z1bmN0aW9uc19pbnNpZGVfY29uc3RydWN0b3JzID0gMjMzNyxcbiAgUHJvcGVydHlfMF9kb2VzX25vdF9leGlzdF9vbl90eXBlXzEgPSAyMzM5LFxuICBDYW5ub3RfaW52b2tlX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NhbGxfc2lnbmF0dXJlX1R5cGVfMF9oYXNfbm9fY29tcGF0aWJsZV9jYWxsX3NpZ25hdHVyZXMgPSAyMzQ5LFxuICBDYW5ub3RfdXNlX25ld193aXRoX2FuX2V4cHJlc3Npb25fd2hvc2VfdHlwZV9sYWNrc19hX2NvbnN0cnVjdF9zaWduYXR1cmUgPSAyMzUxLFxuICBBX2Z1bmN0aW9uX3dob3NlX2RlY2xhcmVkX3R5cGVfaXNfbm90X3ZvaWRfbXVzdF9yZXR1cm5fYV92YWx1ZSA9IDIzNTUsXG4gIFRoZV9vcGVyYW5kX29mX2FuX2luY3JlbWVudF9vcl9kZWNyZW1lbnRfb3BlcmF0b3JfbXVzdF9iZV9hX3ZhcmlhYmxlX29yX2FfcHJvcGVydHlfYWNjZXNzID0gMjM1NyxcbiAgVGhlX2xlZnRfaGFuZF9zaWRlX29mX2FuX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbl9tdXN0X2JlX2FfdmFyaWFibGVfb3JfYV9wcm9wZXJ0eV9hY2Nlc3MgPSAyMzY0LFxuICBPcGVyYXRvcl8wX2Nhbm5vdF9iZV9hcHBsaWVkX3RvX3R5cGVzXzFfYW5kXzIgPSAyMzY1LFxuICBBX3N1cGVyX2NhbGxfbXVzdF9iZV90aGVfZmlyc3Rfc3RhdGVtZW50X2luX3RoZV9jb25zdHJ1Y3RvciA9IDIzNzYsXG4gIENvbnN0cnVjdG9yc19mb3JfZGVyaXZlZF9jbGFzc2VzX211c3RfY29udGFpbl9hX3N1cGVyX2NhbGwgPSAyMzc3LFxuICBfZ2V0X2FuZF9zZXRfYWNjZXNzb3JfbXVzdF9oYXZlX3RoZV9zYW1lX3R5cGUgPSAyMzgwLFxuICBDb25zdHJ1Y3Rvcl9pbXBsZW1lbnRhdGlvbl9pc19taXNzaW5nID0gMjM5MCxcbiAgRnVuY3Rpb25faW1wbGVtZW50YXRpb25faXNfbWlzc2luZ19vcl9ub3RfaW1tZWRpYXRlbHlfZm9sbG93aW5nX3RoZV9kZWNsYXJhdGlvbiA9IDIzOTEsXG4gIE11bHRpcGxlX2NvbnN0cnVjdG9yX2ltcGxlbWVudGF0aW9uc19hcmVfbm90X2FsbG93ZWQgPSAyMzkyLFxuICBEdXBsaWNhdGVfZnVuY3Rpb25faW1wbGVtZW50YXRpb24gPSAyMzkzLFxuICBJbmRpdmlkdWFsX2RlY2xhcmF0aW9uc19pbl9tZXJnZWRfZGVjbGFyYXRpb25fMF9tdXN0X2JlX2FsbF9leHBvcnRlZF9vcl9hbGxfbG9jYWwgPSAyMzk1LFxuICBBX25hbWVzcGFjZV9kZWNsYXJhdGlvbl9jYW5ub3RfYmVfbG9jYXRlZF9wcmlvcl90b19hX2NsYXNzX29yX2Z1bmN0aW9uX3dpdGhfd2hpY2hfaXRfaXNfbWVyZ2VkID0gMjQzNCxcbiAgVHlwZV8wX2hhc19ub19wcm9wZXJ0eV8xID0gMjQ2MCxcbiAgVGhlXzBfb3BlcmF0b3JfY2Fubm90X2JlX2FwcGxpZWRfdG9fdHlwZV8xID0gMjQ2OSxcbiAgSW5fY29uc3RfZW51bV9kZWNsYXJhdGlvbnNfbWVtYmVyX2luaXRpYWxpemVyX211c3RfYmVfY29uc3RhbnRfZXhwcmVzc2lvbiA9IDI0NzQsXG4gIEV4cG9ydF9kZWNsYXJhdGlvbl9jb25mbGljdHNfd2l0aF9leHBvcnRlZF9kZWNsYXJhdGlvbl9vZl8wID0gMjQ4NCxcbiAgT2JqZWN0X2lzX3Bvc3NpYmx5X251bGwgPSAyNTMxLFxuICBDYW5ub3RfYXNzaWduX3RvXzBfYmVjYXVzZV9pdF9pc19hX2NvbnN0YW50X29yX2FfcmVhZF9vbmx5X3Byb3BlcnR5ID0gMjU0MCxcbiAgVGhlX3RhcmdldF9vZl9hbl9hc3NpZ25tZW50X211c3RfYmVfYV92YXJpYWJsZV9vcl9hX3Byb3BlcnR5X2FjY2VzcyA9IDI1NDEsXG4gIEluZGV4X3NpZ25hdHVyZV9pbl90eXBlXzBfb25seV9wZXJtaXRzX3JlYWRpbmcgPSAyNTQyLFxuICBFeHBlY3RlZF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU0LFxuICBFeHBlY3RlZF9hdF9sZWFzdF8wX2FyZ3VtZW50c19idXRfZ290XzEgPSAyNTU1LFxuICBFeHBlY3RlZF8wX3R5cGVfYXJndW1lbnRzX2J1dF9nb3RfMSA9IDI1NTgsXG4gIEFfbWVtYmVyX2luaXRpYWxpemVyX2luX2FfZW51bV9kZWNsYXJhdGlvbl9jYW5ub3RfcmVmZXJlbmNlX21lbWJlcnNfZGVjbGFyZWRfYWZ0ZXJfaXRfaW5jbHVkaW5nX21lbWJlcnNfZGVmaW5lZF9pbl9vdGhlcl9lbnVtcyA9IDI2NTEsXG4gIENvbnN0cnVjdG9yX29mX2NsYXNzXzBfaXNfcHJpdmF0ZV9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjczLFxuICBDb25zdHJ1Y3Rvcl9vZl9jbGFzc18wX2lzX3Byb3RlY3RlZF9hbmRfb25seV9hY2Nlc3NpYmxlX3dpdGhpbl90aGVfY2xhc3NfZGVjbGFyYXRpb24gPSAyNjc0LFxuICBOYW1lc3BhY2VfMF9oYXNfbm9fZXhwb3J0ZWRfbWVtYmVyXzEgPSAyNjk0LFxuICBSZXF1aXJlZF90eXBlX3BhcmFtZXRlcnNfbWF5X25vdF9mb2xsb3dfb3B0aW9uYWxfdHlwZV9wYXJhbWV0ZXJzID0gMjcwNixcbiAgRHVwbGljYXRlX3Byb3BlcnR5XzAgPSAyNzE4LFxuICBUeXBlXzBfaGFzX25vX2NhbGxfc2lnbmF0dXJlcyA9IDI3NTcsXG4gIEZpbGVfMF9ub3RfZm91bmQgPSA2MDU0LFxuICBOdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUgPSA2MTg4LFxuICBNdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQgPSA2MTg5LFxuICBfc3VwZXJfbXVzdF9iZV9jYWxsZWRfYmVmb3JlX2FjY2Vzc2luZ190aGlzX2luX3RoZV9jb25zdHJ1Y3Rvcl9vZl9hX2Rlcml2ZWRfY2xhc3MgPSAxNzAwOSxcbiAgX3N1cGVyX211c3RfYmVfY2FsbGVkX2JlZm9yZV9hY2Nlc3NpbmdfYV9wcm9wZXJ0eV9vZl9zdXBlcl9pbl90aGVfY29uc3RydWN0b3Jfb2ZfYV9kZXJpdmVkX2NsYXNzID0gMTcwMTFcbn1cblxuLyoqIFRyYW5zbGF0ZXMgYSBkaWFnbm9zdGljIGNvZGUgdG8gaXRzIHJlc3BlY3RpdmUgc3RyaW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZTogRGlhZ25vc3RpY0NvZGUpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDEwMDogcmV0dXJuIFwiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgY2FzZSAxMDE6IHJldHVybiBcIk9wZXJhdGlvbiBpcyB1bnNhZmUuXCI7XG4gICAgY2FzZSAxMDI6IHJldHVybiBcIlVzZXItZGVmaW5lZDogezB9XCI7XG4gICAgY2FzZSAyMDA6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGNhc3QuXCI7XG4gICAgY2FzZSAyMDE6IHJldHVybiBcIkNvbnZlcnNpb24gZnJvbSB0eXBlICd7MH0nIHRvICd7MX0nIHdpbGwgcmVxdWlyZSBhbiBleHBsaWNpdCBjYXN0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gMzIvNjQtYml0LlwiO1xuICAgIGNhc2UgMjAyOiByZXR1cm4gXCJUeXBlICd7MH0nIGNhbm5vdCBiZSBjaGFuZ2VkIHRvIHR5cGUgJ3sxfScuXCI7XG4gICAgY2FzZSAyMDM6IHJldHVybiBcIlR5cGUgJ3swfScgY2Fubm90IGJlIHJlaW50ZXJwcmV0ZWQgYXMgdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIwNDogcmV0dXJuIFwiQmFzaWMgdHlwZSAnezB9JyBjYW5ub3QgYmUgbnVsbGFibGUuXCI7XG4gICAgY2FzZSAyMDU6IHJldHVybiBcIkNhbm5vdCBleHBvcnQgYSBtdXRhYmxlIGdsb2JhbC5cIjtcbiAgICBjYXNlIDIwNjogcmV0dXJuIFwiTXV0YWJsZSB2YWx1ZSBjYW5ub3QgYmUgaW5saW5lZC5cIjtcbiAgICBjYXNlIDIwNzogcmV0dXJuIFwiVW5tYW5hZ2VkIGNsYXNzZXMgY2Fubm90IGV4dGVuZCBtYW5hZ2VkIGNsYXNzZXMgYW5kIHZpY2UtdmVyc2EuXCI7XG4gICAgY2FzZSAyMDg6IHJldHVybiBcIlVubWFuYWdlZCBjbGFzc2VzIGNhbm5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlcy5cIjtcbiAgICBjYXNlIDIwOTogcmV0dXJuIFwiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gZmxhZ3MuXCI7XG4gICAgY2FzZSAyMTA6IHJldHVybiBcIkltcGxlbWVudGF0aW9uICd7MH0nIG11c3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIxMTogcmV0dXJuIFwiQ2xhc3MgJ3swfScgaXMgc2VhbGVkIGFuZCBjYW5ub3QgYmUgZXh0ZW5kZWQuXCI7XG4gICAgY2FzZSAyMTI6IHJldHVybiBcIkRlY29yYXRvciAnezB9JyBpcyBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDIxMzogcmV0dXJuIFwiRHVwbGljYXRlIGRlY29yYXRvci5cIjtcbiAgICBjYXNlIDIxNDogcmV0dXJuIFwiQW4gYWxsb2NhdG9yIG11c3QgYmUgcHJlc2VudCB0byB1c2UgJ3swfScuXCI7XG4gICAgY2FzZSAyMTU6IHJldHVybiBcIk9wdGlvbmFsIHBhcmFtZXRlciBtdXN0IGhhdmUgYW4gaW5pdGlhbGl6ZXIuXCI7XG4gICAgY2FzZSAyMTY6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIG11c3Qgbm90IHJlcXVpcmUgYW55IGFyZ3VtZW50cy5cIjtcbiAgICBjYXNlIDIxNzogcmV0dXJuIFwiRnVuY3Rpb24gJ3swfScgY2Fubm90IGJlIGlubGluZWQgaW50byBpdHNlbGYuXCI7XG4gICAgY2FzZSAyMTg6IHJldHVybiBcIkNhbm5vdCBhY2Nlc3MgbWV0aG9kICd7MH0nIHdpdGhvdXQgY2FsbGluZyBpdCBhcyBpdCByZXF1aXJlcyAndGhpcycgdG8gYmUgc2V0LlwiO1xuICAgIGNhc2UgMjE5OiByZXR1cm4gXCJPcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgIGNhc2UgMjIwOiByZXR1cm4gXCJFeHByZXNzaW9uIG11c3QgYmUgYSBjb21waWxlLXRpbWUgY29uc3RhbnQuXCI7XG4gICAgY2FzZSAyMjE6IHJldHVybiBcIk1vZHVsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBzdGFydCBmdW5jdGlvbnMuXCI7XG4gICAgY2FzZSAyMjI6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuICd7MX0nIGFuZCAnezJ9JyBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAyMjM6IHJldHVybiBcIid7MH0nIG11c3QgYmUgYSBwb3dlciBvZiB0d28uXCI7XG4gICAgY2FzZSAyMjQ6IHJldHVybiBcIkV4cHJlc3Npb24gaXMgdW5zYWZlLlwiO1xuICAgIGNhc2UgMjI1OiByZXR1cm4gXCJFeHByZXNzaW9uIGlzIG5ldmVyICdudWxsJy5cIjtcbiAgICBjYXNlIDEwMDI6IHJldHVybiBcIlVudGVybWluYXRlZCBzdHJpbmcgbGl0ZXJhbC5cIjtcbiAgICBjYXNlIDEwMDM6IHJldHVybiBcIklkZW50aWZpZXIgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMDA1OiByZXR1cm4gXCInezB9JyBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDEwMDY6IHJldHVybiBcIkEgZmlsZSBjYW5ub3QgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdHNlbGYuXCI7XG4gICAgY2FzZSAxMDA5OiByZXR1cm4gXCJUcmFpbGluZyBjb21tYSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDEwMTI6IHJldHVybiBcIlVuZXhwZWN0ZWQgdG9rZW4uXCI7XG4gICAgY2FzZSAxMDE0OiByZXR1cm4gXCJBIHJlc3QgcGFyYW1ldGVyIG11c3QgYmUgbGFzdCBpbiBhIHBhcmFtZXRlciBsaXN0LlwiO1xuICAgIGNhc2UgMTAxNTogcmV0dXJuIFwiUGFyYW1ldGVyIGNhbm5vdCBoYXZlIHF1ZXN0aW9uIG1hcmsgYW5kIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTAxNjogcmV0dXJuIFwiQSByZXF1aXJlZCBwYXJhbWV0ZXIgY2Fubm90IGZvbGxvdyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuXCI7XG4gICAgY2FzZSAxMDM2OiByZXR1cm4gXCJTdGF0ZW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTAzOTogcmV0dXJuIFwiSW5pdGlhbGl6ZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBhbWJpZW50IGNvbnRleHRzLlwiO1xuICAgIGNhc2UgMTA0MjogcmV0dXJuIFwiJ3swfScgbW9kaWZpZXIgY2Fubm90IGJlIHVzZWQgaGVyZS5cIjtcbiAgICBjYXNlIDEwNDc6IHJldHVybiBcIkEgcmVzdCBwYXJhbWV0ZXIgY2Fubm90IGJlIG9wdGlvbmFsLlwiO1xuICAgIGNhc2UgMTA0ODogcmV0dXJuIFwiQSByZXN0IHBhcmFtZXRlciBjYW5ub3QgaGF2ZSBhbiBpbml0aWFsaXplci5cIjtcbiAgICBjYXNlIDEwNDk6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgbXVzdCBoYXZlIGV4YWN0bHkgb25lIHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDEwNTI6IHJldHVybiBcIkEgJ3NldCcgYWNjZXNzb3IgcGFyYW1ldGVyIGNhbm5vdCBoYXZlIGFuIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA1NDogcmV0dXJuIFwiQSAnZ2V0JyBhY2Nlc3NvciBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzLlwiO1xuICAgIGNhc2UgMTA2MTogcmV0dXJuIFwiRW51bSBtZW1iZXIgbXVzdCBoYXZlIGluaXRpYWxpemVyLlwiO1xuICAgIGNhc2UgMTA5MjogcmV0dXJuIFwiVHlwZSBwYXJhbWV0ZXJzIGNhbm5vdCBhcHBlYXIgb24gYSBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTM6IHJldHVybiBcIlR5cGUgYW5ub3RhdGlvbiBjYW5ub3QgYXBwZWFyIG9uIGEgY29uc3RydWN0b3IgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMDk0OiByZXR1cm4gXCJBbiBhY2Nlc3NvciBjYW5ub3QgaGF2ZSB0eXBlIHBhcmFtZXRlcnMuXCI7XG4gICAgY2FzZSAxMDk1OiByZXR1cm4gXCJBICdzZXQnIGFjY2Vzc29yIGNhbm5vdCBoYXZlIGEgcmV0dXJuIHR5cGUgYW5ub3RhdGlvbi5cIjtcbiAgICBjYXNlIDEwOTg6IHJldHVybiBcIlR5cGUgcGFyYW1ldGVyIGxpc3QgY2Fubm90IGJlIGVtcHR5LlwiO1xuICAgIGNhc2UgMTEwNDogcmV0dXJuIFwiQSAnY29udGludWUnIHN0YXRlbWVudCBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBhbiBlbmNsb3NpbmcgaXRlcmF0aW9uIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMDU6IHJldHVybiBcIkEgJ2JyZWFrJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYW4gZW5jbG9zaW5nIGl0ZXJhdGlvbiBvciBzd2l0Y2ggc3RhdGVtZW50LlwiO1xuICAgIGNhc2UgMTEwODogcmV0dXJuIFwiQSAncmV0dXJuJyBzdGF0ZW1lbnQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbiBib2R5LlwiO1xuICAgIGNhc2UgMTEwOTogcmV0dXJuIFwiRXhwcmVzc2lvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExMTA6IHJldHVybiBcIlR5cGUgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTEzOiByZXR1cm4gXCJBICdkZWZhdWx0JyBjbGF1c2UgY2Fubm90IGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiBhICdzd2l0Y2gnIHN0YXRlbWVudC5cIjtcbiAgICBjYXNlIDExMTQ6IHJldHVybiBcIkR1cGxpY2F0ZSBsYWJlbCAnezB9Jy5cIjtcbiAgICBjYXNlIDExMjA6IHJldHVybiBcIkFuIGV4cG9ydCBhc3NpZ25tZW50IGNhbm5vdCBoYXZlIG1vZGlmaWVycy5cIjtcbiAgICBjYXNlIDExMjE6IHJldHVybiBcIk9jdGFsIGxpdGVyYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZS5cIjtcbiAgICBjYXNlIDExMjQ6IHJldHVybiBcIkRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTEyNTogcmV0dXJuIFwiSGV4YWRlY2ltYWwgZGlnaXQgZXhwZWN0ZWQuXCI7XG4gICAgY2FzZSAxMTI2OiByZXR1cm4gXCJVbmV4cGVjdGVkIGVuZCBvZiB0ZXh0LlwiO1xuICAgIGNhc2UgMTEyNzogcmV0dXJuIFwiSW52YWxpZCBjaGFyYWN0ZXIuXCI7XG4gICAgY2FzZSAxMTMwOiByZXR1cm4gXCInY2FzZScgb3IgJ2RlZmF1bHQnIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTAzNDogcmV0dXJuIFwiJ3N1cGVyJyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFyZ3VtZW50IGxpc3Qgb3IgbWVtYmVyIGFjY2Vzcy5cIjtcbiAgICBjYXNlIDEwMzg6IHJldHVybiBcIkEgJ2RlY2xhcmUnIG1vZGlmaWVyIGNhbm5vdCBiZSB1c2VkIGluIGFuIGFscmVhZHkgYW1iaWVudCBjb250ZXh0LlwiO1xuICAgIGNhc2UgMTE0MDogcmV0dXJuIFwiVHlwZSBhcmd1bWVudCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNDE6IHJldHVybiBcIlN0cmluZyBsaXRlcmFsIGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE0MjogcmV0dXJuIFwiTGluZSBicmVhayBub3QgcGVybWl0dGVkIGhlcmUuXCI7XG4gICAgY2FzZSAxMTQ2OiByZXR1cm4gXCJEZWNsYXJhdGlvbiBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNTU6IHJldHVybiBcIidjb25zdCcgZGVjbGFyYXRpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQuXCI7XG4gICAgY2FzZSAxMTYxOiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwuXCI7XG4gICAgY2FzZSAxMTc2OiByZXR1cm4gXCJJbnRlcmZhY2UgZGVjbGFyYXRpb24gY2Fubm90IGhhdmUgJ2ltcGxlbWVudHMnIGNsYXVzZS5cIjtcbiAgICBjYXNlIDExNzc6IHJldHVybiBcIkJpbmFyeSBkaWdpdCBleHBlY3RlZC5cIjtcbiAgICBjYXNlIDExNzg6IHJldHVybiBcIk9jdGFsIGRpZ2l0IGV4cGVjdGVkLlwiO1xuICAgIGNhc2UgMTE4MzogcmV0dXJuIFwiQW4gaW1wbGVtZW50YXRpb24gY2Fubm90IGJlIGRlY2xhcmVkIGluIGFtYmllbnQgY29udGV4dHMuXCI7XG4gICAgY2FzZSAxMTk4OiByZXR1cm4gXCJBbiBleHRlbmRlZCBVbmljb2RlIGVzY2FwZSB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMHgwIGFuZCAweDEwRkZGRiBpbmNsdXNpdmUuXCI7XG4gICAgY2FzZSAxMTk5OiByZXR1cm4gXCJVbnRlcm1pbmF0ZWQgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuXCI7XG4gICAgY2FzZSAxMjA2OiByZXR1cm4gXCJEZWNvcmF0b3JzIGFyZSBub3QgdmFsaWQgaGVyZS5cIjtcbiAgICBjYXNlIDEyNDI6IHJldHVybiBcIidhYnN0cmFjdCcgbW9kaWZpZXIgY2FuIG9ubHkgYXBwZWFyIG9uIGEgY2xhc3MsIG1ldGhvZCwgb3IgcHJvcGVydHkgZGVjbGFyYXRpb24uXCI7XG4gICAgY2FzZSAxMjQ1OiByZXR1cm4gXCJNZXRob2QgJ3swfScgY2Fubm90IGhhdmUgYW4gaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpdCBpcyBtYXJrZWQgYWJzdHJhY3QuXCI7XG4gICAgY2FzZSAxMjU1OiByZXR1cm4gXCJBIGRlZmluaXRlIGFzc2lnbm1lbnQgYXNzZXJ0aW9uICchJyBpcyBub3QgcGVybWl0dGVkIGluIHRoaXMgY29udGV4dC5cIjtcbiAgICBjYXNlIDEzMTE6IHJldHVybiBcIkEgY2xhc3MgbWF5IG9ubHkgZXh0ZW5kIGFub3RoZXIgY2xhc3MuXCI7XG4gICAgY2FzZSAxMzE3OiByZXR1cm4gXCJBIHBhcmFtZXRlciBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVjbGFyZWQgdXNpbmcgYSByZXN0IHBhcmFtZXRlci5cIjtcbiAgICBjYXNlIDIzMDA6IHJldHVybiBcIkR1cGxpY2F0ZSBpZGVudGlmaWVyICd7MH0nLlwiO1xuICAgIGNhc2UgMjMwNDogcmV0dXJuIFwiQ2Fubm90IGZpbmQgbmFtZSAnezB9Jy5cIjtcbiAgICBjYXNlIDIzMDU6IHJldHVybiBcIk1vZHVsZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjMxNDogcmV0dXJuIFwiR2VuZXJpYyB0eXBlICd7MH0nIHJlcXVpcmVzIHsxfSB0eXBlIGFyZ3VtZW50KHMpLlwiO1xuICAgIGNhc2UgMjMxNTogcmV0dXJuIFwiVHlwZSAnezB9JyBpcyBub3QgZ2VuZXJpYy5cIjtcbiAgICBjYXNlIDIzMjI6IHJldHVybiBcIlR5cGUgJ3swfScgaXMgbm90IGFzc2lnbmFibGUgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDIzMjk6IHJldHVybiBcIkluZGV4IHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIHR5cGUgJ3swfScuXCI7XG4gICAgY2FzZSAyMzMyOiByZXR1cm4gXCIndGhpcycgY2Fubm90IGJlIHJlZmVyZW5jZWQgaW4gY3VycmVudCBsb2NhdGlvbi5cIjtcbiAgICBjYXNlIDIzMzU6IHJldHVybiBcIidzdXBlcicgY2FuIG9ubHkgYmUgcmVmZXJlbmNlZCBpbiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgY2FzZSAyMzM3OiByZXR1cm4gXCJTdXBlciBjYWxscyBhcmUgbm90IHBlcm1pdHRlZCBvdXRzaWRlIGNvbnN0cnVjdG9ycyBvciBpbiBuZXN0ZWQgZnVuY3Rpb25zIGluc2lkZSBjb25zdHJ1Y3RvcnMuXCI7XG4gICAgY2FzZSAyMzM5OiByZXR1cm4gXCJQcm9wZXJ0eSAnezB9JyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICd7MX0nLlwiO1xuICAgIGNhc2UgMjM0OTogcmV0dXJuIFwiQ2Fubm90IGludm9rZSBhbiBleHByZXNzaW9uIHdob3NlIHR5cGUgbGFja3MgYSBjYWxsIHNpZ25hdHVyZS4gVHlwZSAnezB9JyBoYXMgbm8gY29tcGF0aWJsZSBjYWxsIHNpZ25hdHVyZXMuXCI7XG4gICAgY2FzZSAyMzUxOiByZXR1cm4gXCJDYW5ub3QgdXNlICduZXcnIHdpdGggYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGxhY2tzIGEgY29uc3RydWN0IHNpZ25hdHVyZS5cIjtcbiAgICBjYXNlIDIzNTU6IHJldHVybiBcIkEgZnVuY3Rpb24gd2hvc2UgZGVjbGFyZWQgdHlwZSBpcyBub3QgJ3ZvaWQnIG11c3QgcmV0dXJuIGEgdmFsdWUuXCI7XG4gICAgY2FzZSAyMzU3OiByZXR1cm4gXCJUaGUgb3BlcmFuZCBvZiBhbiBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IG9wZXJhdG9yIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIHByb3BlcnR5IGFjY2Vzcy5cIjtcbiAgICBjYXNlIDIzNjQ6IHJldHVybiBcIlRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24gbXVzdCBiZSBhIHZhcmlhYmxlIG9yIGEgcHJvcGVydHkgYWNjZXNzLlwiO1xuICAgIGNhc2UgMjM2NTogcmV0dXJuIFwiT3BlcmF0b3IgJ3swfScgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZXMgJ3sxfScgYW5kICd7Mn0nLlwiO1xuICAgIGNhc2UgMjM3NjogcmV0dXJuIFwiQSAnc3VwZXInIGNhbGwgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjb25zdHJ1Y3Rvci5cIjtcbiAgICBjYXNlIDIzNzc6IHJldHVybiBcIkNvbnN0cnVjdG9ycyBmb3IgZGVyaXZlZCBjbGFzc2VzIG11c3QgY29udGFpbiBhICdzdXBlcicgY2FsbC5cIjtcbiAgICBjYXNlIDIzODA6IHJldHVybiBcIidnZXQnIGFuZCAnc2V0JyBhY2Nlc3NvciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZS5cIjtcbiAgICBjYXNlIDIzOTA6IHJldHVybiBcIkNvbnN0cnVjdG9yIGltcGxlbWVudGF0aW9uIGlzIG1pc3NpbmcuXCI7XG4gICAgY2FzZSAyMzkxOiByZXR1cm4gXCJGdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBpcyBtaXNzaW5nIG9yIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhlIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjM5MjogcmV0dXJuIFwiTXVsdGlwbGUgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgYWxsb3dlZC5cIjtcbiAgICBjYXNlIDIzOTM6IHJldHVybiBcIkR1cGxpY2F0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbi5cIjtcbiAgICBjYXNlIDIzOTU6IHJldHVybiBcIkluZGl2aWR1YWwgZGVjbGFyYXRpb25zIGluIG1lcmdlZCBkZWNsYXJhdGlvbiAnezB9JyBtdXN0IGJlIGFsbCBleHBvcnRlZCBvciBhbGwgbG9jYWwuXCI7XG4gICAgY2FzZSAyNDM0OiByZXR1cm4gXCJBIG5hbWVzcGFjZSBkZWNsYXJhdGlvbiBjYW5ub3QgYmUgbG9jYXRlZCBwcmlvciB0byBhIGNsYXNzIG9yIGZ1bmN0aW9uIHdpdGggd2hpY2ggaXQgaXMgbWVyZ2VkLlwiO1xuICAgIGNhc2UgMjQ2MDogcmV0dXJuIFwiVHlwZSAnezB9JyBoYXMgbm8gcHJvcGVydHkgJ3sxfScuXCI7XG4gICAgY2FzZSAyNDY5OiByZXR1cm4gXCJUaGUgJ3swfScgb3BlcmF0b3IgY2Fubm90IGJlIGFwcGxpZWQgdG8gdHlwZSAnezF9Jy5cIjtcbiAgICBjYXNlIDI0NzQ6IHJldHVybiBcIkluICdjb25zdCcgZW51bSBkZWNsYXJhdGlvbnMgbWVtYmVyIGluaXRpYWxpemVyIG11c3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbi5cIjtcbiAgICBjYXNlIDI0ODQ6IHJldHVybiBcIkV4cG9ydCBkZWNsYXJhdGlvbiBjb25mbGljdHMgd2l0aCBleHBvcnRlZCBkZWNsYXJhdGlvbiBvZiAnezB9Jy5cIjtcbiAgICBjYXNlIDI1MzE6IHJldHVybiBcIk9iamVjdCBpcyBwb3NzaWJseSAnbnVsbCcuXCI7XG4gICAgY2FzZSAyNTQwOiByZXR1cm4gXCJDYW5ub3QgYXNzaWduIHRvICd7MH0nIGJlY2F1c2UgaXQgaXMgYSBjb25zdGFudCBvciBhIHJlYWQtb25seSBwcm9wZXJ0eS5cIjtcbiAgICBjYXNlIDI1NDE6IHJldHVybiBcIlRoZSB0YXJnZXQgb2YgYW4gYXNzaWdubWVudCBtdXN0IGJlIGEgdmFyaWFibGUgb3IgYSBwcm9wZXJ0eSBhY2Nlc3MuXCI7XG4gICAgY2FzZSAyNTQyOiByZXR1cm4gXCJJbmRleCBzaWduYXR1cmUgaW4gdHlwZSAnezB9JyBvbmx5IHBlcm1pdHMgcmVhZGluZy5cIjtcbiAgICBjYXNlIDI1NTQ6IHJldHVybiBcIkV4cGVjdGVkIHswfSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjU1NTogcmV0dXJuIFwiRXhwZWN0ZWQgYXQgbGVhc3QgezB9IGFyZ3VtZW50cywgYnV0IGdvdCB7MX0uXCI7XG4gICAgY2FzZSAyNTU4OiByZXR1cm4gXCJFeHBlY3RlZCB7MH0gdHlwZSBhcmd1bWVudHMsIGJ1dCBnb3QgezF9LlwiO1xuICAgIGNhc2UgMjY1MTogcmV0dXJuIFwiQSBtZW1iZXIgaW5pdGlhbGl6ZXIgaW4gYSBlbnVtIGRlY2xhcmF0aW9uIGNhbm5vdCByZWZlcmVuY2UgbWVtYmVycyBkZWNsYXJlZCBhZnRlciBpdCwgaW5jbHVkaW5nIG1lbWJlcnMgZGVmaW5lZCBpbiBvdGhlciBlbnVtcy5cIjtcbiAgICBjYXNlIDI2NzM6IHJldHVybiBcIkNvbnN0cnVjdG9yIG9mIGNsYXNzICd7MH0nIGlzIHByaXZhdGUgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNsYXNzIGRlY2xhcmF0aW9uLlwiO1xuICAgIGNhc2UgMjY3NDogcmV0dXJuIFwiQ29uc3RydWN0b3Igb2YgY2xhc3MgJ3swfScgaXMgcHJvdGVjdGVkIGFuZCBvbmx5IGFjY2Vzc2libGUgd2l0aGluIHRoZSBjbGFzcyBkZWNsYXJhdGlvbi5cIjtcbiAgICBjYXNlIDI2OTQ6IHJldHVybiBcIk5hbWVzcGFjZSAnezB9JyBoYXMgbm8gZXhwb3J0ZWQgbWVtYmVyICd7MX0nLlwiO1xuICAgIGNhc2UgMjcwNjogcmV0dXJuIFwiUmVxdWlyZWQgdHlwZSBwYXJhbWV0ZXJzIG1heSBub3QgZm9sbG93IG9wdGlvbmFsIHR5cGUgcGFyYW1ldGVycy5cIjtcbiAgICBjYXNlIDI3MTg6IHJldHVybiBcIkR1cGxpY2F0ZSBwcm9wZXJ0eSAnezB9Jy5cIjtcbiAgICBjYXNlIDI3NTc6IHJldHVybiBcIlR5cGUgJ3swfScgaGFzIG5vIGNhbGwgc2lnbmF0dXJlcy5cIjtcbiAgICBjYXNlIDYwNTQ6IHJldHVybiBcIkZpbGUgJ3swfScgbm90IGZvdW5kLlwiO1xuICAgIGNhc2UgNjE4ODogcmV0dXJuIFwiTnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBoZXJlLlwiO1xuICAgIGNhc2UgNjE4OTogcmV0dXJuIFwiTXVsdGlwbGUgY29uc2VjdXRpdmUgbnVtZXJpYyBzZXBhcmF0b3JzIGFyZSBub3QgcGVybWl0dGVkLlwiO1xuICAgIGNhc2UgMTcwMDk6IHJldHVybiBcIidzdXBlcicgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyAndGhpcycgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgZGVyaXZlZCBjbGFzcy5cIjtcbiAgICBjYXNlIDE3MDExOiByZXR1cm4gXCInc3VwZXInIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgYSBwcm9wZXJ0eSBvZiAnc3VwZXInIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlcml2ZWQgY2xhc3MuXCI7XG4gICAgZGVmYXVsdDogcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/diagnostics.ts": -/*!*****************************!*\ - !*** ../src/diagnostics.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Shared diagnostic handling inherited by the parser and the compiler. - * @module diagnostics - * @preferred - */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnosticMessages_generated_1 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -var diagnosticMessages_generated_2 = __webpack_require__(/*! ./diagnosticMessages.generated */ "../src/diagnosticMessages.generated.ts"); -exports.DiagnosticCode = diagnosticMessages_generated_2.DiagnosticCode; -exports.diagnosticCodeToString = diagnosticMessages_generated_2.diagnosticCodeToString; -/** Indicates the category of a {@link DiagnosticMessage}. */ -var DiagnosticCategory; -(function (DiagnosticCategory) { - /** Informatory message. */ - DiagnosticCategory[DiagnosticCategory["INFO"] = 0] = "INFO"; - /** Warning message. */ - DiagnosticCategory[DiagnosticCategory["WARNING"] = 1] = "WARNING"; - /** Error message. */ - DiagnosticCategory[DiagnosticCategory["ERROR"] = 2] = "ERROR"; -})(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {})); -/** Returns the string representation of the specified diagnostic category. */ -function diagnosticCategoryToString(category) { - switch (category) { - case DiagnosticCategory.INFO: return "INFO"; - case DiagnosticCategory.WARNING: return "WARNING"; - case DiagnosticCategory.ERROR: return "ERROR"; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToString = diagnosticCategoryToString; -/** ANSI escape sequence for blue foreground. */ -exports.COLOR_BLUE = "\u001b[96m"; -/** ANSI escape sequence for yellow foreground. */ -exports.COLOR_YELLOW = "\u001b[93m"; -/** ANSI escape sequence for red foreground. */ -exports.COLOR_RED = "\u001b[91m"; -/** ANSI escape sequence to reset the foreground color. */ -exports.COLOR_RESET = "\u001b[0m"; -/** Returns the ANSI escape sequence for the specified category. */ -function diagnosticCategoryToColor(category) { - switch (category) { - case DiagnosticCategory.INFO: return exports.COLOR_BLUE; - case DiagnosticCategory.WARNING: return exports.COLOR_YELLOW; - case DiagnosticCategory.ERROR: return exports.COLOR_RED; - default: { - assert(false); - return ""; - } - } -} -exports.diagnosticCategoryToColor = diagnosticCategoryToColor; -/** Represents a diagnostic message. */ -var DiagnosticMessage = /** @class */ (function () { - /** Constructs a new diagnostic message. */ - function DiagnosticMessage(code, category, message) { - /** Respective source range, if any. */ - this.range = null; - /** Related range, if any. */ - this.relatedRange = null; - this.code = code; - this.category = category; - this.message = message; - } - /** Creates a new diagnostic message of the specified category. */ - DiagnosticMessage.create = function (code, category, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = diagnosticMessages_generated_1.diagnosticCodeToString(code); - if (arg0 != null) - message = message.replace("{0}", arg0); - if (arg1 != null) - message = message.replace("{1}", arg1); - if (arg2 != null) - message = message.replace("{2}", arg2); - return new DiagnosticMessage(code, category, message); - }; - /** Creates a new informatory diagnostic message. */ - DiagnosticMessage.createInfo = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.INFO, arg0, arg1); - }; - /** Creates a new warning diagnostic message. */ - DiagnosticMessage.createWarning = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.WARNING, arg0, arg1); - }; - /** Creates a new error diagnostic message. */ - DiagnosticMessage.createError = function (code, arg0, arg1) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - return DiagnosticMessage.create(code, DiagnosticCategory.ERROR, arg0, arg1); - }; - /** Adds a source range to this message. */ - DiagnosticMessage.prototype.withRange = function (range) { - this.range = range; - return this; - }; - /** Adds a related source range to this message. */ - DiagnosticMessage.prototype.withRelatedRange = function (range) { - this.relatedRange = range; - return this; - }; - /** Converts this message to a string. */ - DiagnosticMessage.prototype.toString = function () { - if (this.range) { - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": \"" + - this.message + - "\" in " + - this.range.source.normalizedPath + - ":" + - this.range.line.toString(10) + - ":" + - this.range.column.toString(10)); - } - return (diagnosticCategoryToString(this.category) + - " " + - this.code.toString(10) + - ": " + - this.message); - }; - return DiagnosticMessage; -}()); -exports.DiagnosticMessage = DiagnosticMessage; -/** Formats a diagnostic message, optionally with terminal colors and source context. */ -function formatDiagnosticMessage(message, useColors, showContext) { - if (useColors === void 0) { useColors = false; } - if (showContext === void 0) { showContext = false; } - // general information - var sb = []; - if (useColors) - sb.push(diagnosticCategoryToColor(message.category)); - sb.push(diagnosticCategoryToString(message.category)); - if (useColors) - sb.push(exports.COLOR_RESET); - sb.push(message.code < 1000 ? " AS" : " TS"); - sb.push(message.code.toString(10)); - sb.push(": "); - sb.push(message.message); - // include range information if available - if (message.range) { - // include context information if requested - var range = message.range; - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(range, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - var relatedRange = message.relatedRange; - if (relatedRange) { - if (showContext) { - sb.push("\n"); - sb.push(formatDiagnosticContext(relatedRange, useColors)); - } - sb.push("\n"); - sb.push(" in "); - sb.push(range.source.normalizedPath); - sb.push("("); - sb.push(range.line.toString(10)); - sb.push(","); - sb.push(range.column.toString(10)); - sb.push(")"); - } - } - return sb.join(""); -} -exports.formatDiagnosticMessage = formatDiagnosticMessage; -/** Formats the diagnostic context for the specified range, optionally with terminal colors. */ -function formatDiagnosticContext(range, useColors) { - if (useColors === void 0) { useColors = false; } - var text = range.source.text; - var len = text.length; - var start = range.start; - var end = range.end; - while (start > 0 && !util_1.isLineBreak(text.charCodeAt(start - 1))) - start--; - while (end < len && !util_1.isLineBreak(text.charCodeAt(end))) - end++; - var sb = [ - "\n ", - text.substring(start, end), - "\n " - ]; - while (start < range.start) { - sb.push(" "); - start++; - } - if (useColors) - sb.push(exports.COLOR_RED); - if (range.start == range.end) { - sb.push("^"); - } - else { - while (start++ < range.end) { - if (util_1.isLineBreak(text.charCodeAt(start))) { - sb.push(start == range.start + 1 ? "^" : "~"); - break; - } - sb.push("~"); - } - } - if (useColors) - sb.push(exports.COLOR_RESET); - return sb.join(""); -} -exports.formatDiagnosticContext = formatDiagnosticContext; -/** Base class of all diagnostic emitters. */ -var DiagnosticEmitter = /** @class */ (function () { - /** Initializes this diagnostic emitter. */ - function DiagnosticEmitter(diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - this.diagnostics = diagnostics ? diagnostics : new Array(); - } - /** Emits a diagnostic message of the specified category. */ - DiagnosticEmitter.prototype.emitDiagnostic = function (code, category, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); - if (relatedRange) - message.relatedRange = relatedRange; - this.diagnostics.push(message); - // console.log(formatDiagnosticMessage(message, true, true) + "\n"); // temporary - // console.log(new Error("stack").stack); - }; - /** Emits an informatory diagnostic message. */ - DiagnosticEmitter.prototype.info = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, null, arg0, arg1, arg2); - }; - /** Emits an informatory diagnostic message with a related range. */ - DiagnosticEmitter.prototype.infoRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.INFO, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message. */ - DiagnosticEmitter.prototype.warning = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, null, arg0, arg1, arg2); - }; - /** Emits a warning diagnostic message with a related range. */ - DiagnosticEmitter.prototype.warningRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.WARNING, range, relatedRange, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message. */ - DiagnosticEmitter.prototype.error = function (code, range, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, null, arg0, arg1, arg2); - }; - /** Emits an error diagnostic message with a related range. */ - DiagnosticEmitter.prototype.errorRelated = function (code, range, relatedRange, arg0, arg1, arg2) { - if (arg0 === void 0) { arg0 = null; } - if (arg1 === void 0) { arg1 = null; } - if (arg2 === void 0) { arg2 = null; } - this.emitDiagnostic(code, DiagnosticCategory.ERROR, range, relatedRange, arg0, arg1, arg2); - }; - return DiagnosticEmitter; -}()); -exports.DiagnosticEmitter = DiagnosticEmitter; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUcsQ0FBQSxLQUFLOztBQU1SLCtFQUd3QztBQUV4QywrQkFFZ0I7QUFFaEIsK0VBR3dDO0FBRnRDLHdEQUFBLGNBQWMsQ0FBQTtBQUNkLGdFQUFBLHNCQUFzQixDQUFBO0FBR3hCLDZEQUE2RDtBQUM3RCxJQUFZLGtCQU9YO0FBUEQsV0FBWSxrQkFBa0I7SUFDNUIsMkJBQTJCO0lBQzNCLDJEQUFJLENBQUE7SUFDSix1QkFBdUI7SUFDdkIsaUVBQU8sQ0FBQTtJQUNQLHFCQUFxQjtJQUNyQiw2REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBTzdCO0FBRUQsOEVBQThFO0FBQzlFLFNBQWdCLDBCQUEwQixDQUFDLFFBQTRCO0lBQ3JFLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7UUFDNUMsS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztRQUNsRCxLQUFLLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDO1lBQ1AsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtLQUNGO0FBQ0gsQ0FBQztBQVZELGdFQVVDO0FBRUQsZ0RBQWdEO0FBQ25DLFFBQUEsVUFBVSxHQUFXLFlBQVksQ0FBQztBQUMvQyxrREFBa0Q7QUFDckMsUUFBQSxZQUFZLEdBQVcsWUFBWSxDQUFDO0FBQ2pELCtDQUErQztBQUNsQyxRQUFBLFNBQVMsR0FBVyxZQUFZLENBQUM7QUFDOUMsMERBQTBEO0FBQzdDLFFBQUEsV0FBVyxH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SSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUEvRkQsSUErRkM7QUEvRnFCLDhDQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGRpYWdub3N0aWMgaGFuZGxpbmcgaW5oZXJpdGVkIGJ5IHRoZSBwYXJzZXIgYW5kIHRoZSBjb21waWxlci5cbiAqIEBtb2R1bGUgZGlhZ25vc3RpY3NcbiAqIEBwcmVmZXJyZWRcbiAqLy8qKiovXG5cbmltcG9ydCB7XG4gIFJhbmdlXG59IGZyb20gXCIuL2FzdFwiO1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgZGlhZ25vc3RpY0NvZGVUb1N0cmluZ1xufSBmcm9tIFwiLi9kaWFnbm9zdGljTWVzc2FnZXMuZ2VuZXJhdGVkXCI7XG5cbmltcG9ydCB7XG4gIGlzTGluZUJyZWFrLCBDaGFyQ29kZVxufSBmcm9tIFwiLi91dGlsXCI7XG5cbmV4cG9ydCB7XG4gIERpYWdub3N0aWNDb2RlLFxuICBkaWFnbm9zdGljQ29kZVRvU3RyaW5nXG59IGZyb20gXCIuL2RpYWdub3N0aWNNZXNzYWdlcy5nZW5lcmF0ZWRcIjtcblxuLyoqIEluZGljYXRlcyB0aGUgY2F0ZWdvcnkgb2YgYSB7QGxpbmsgRGlhZ25vc3RpY01lc3NhZ2V9LiAqL1xuZXhwb3J0IGVudW0gRGlhZ25vc3RpY0NhdGVnb3J5IHtcbiAgLyoqIEluZm9ybWF0b3J5IG1lc3NhZ2UuICovXG4gIElORk8sXG4gIC8qKiBXYXJuaW5nIG1lc3NhZ2UuICovXG4gIFdBUk5JTkcsXG4gIC8qKiBFcnJvciBtZXNzYWdlLiAqL1xuICBFUlJPUlxufVxuXG4vKiogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYyBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyhjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChjYXRlZ29yeSkge1xuICAgIGNhc2UgRGlhZ25vc3RpY0NhdGVnb3J5LklORk86IHJldHVybiBcIklORk9cIjtcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HOiByZXR1cm4gXCJXQVJOSU5HXCI7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1I6IHJldHVybiBcIkVSUk9SXCI7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIGJsdWUgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9CTFVFOiBzdHJpbmcgPSBcIlxcdTAwMWJbOTZtXCI7XG4vKiogQU5TSSBlc2NhcGUgc2VxdWVuY2UgZm9yIHllbGxvdyBmb3JlZ3JvdW5kLiAqL1xuZXhwb3J0IGNvbnN0IENPTE9SX1lFTExPVzogc3RyaW5nID0gXCJcXHUwMDFiWzkzbVwiO1xuLyoqIEFOU0kgZXNjYXBlIHNlcXVlbmNlIGZvciByZWQgZm9yZWdyb3VuZC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRUQ6IHN0cmluZyA9IFwiXFx1MDAxYls5MW1cIjtcbi8qKiBBTlNJIGVzY2FwZSBzZXF1ZW5jZSB0byByZXNldCB0aGUgZm9yZWdyb3VuZCBjb2xvci4gKi9cbmV4cG9ydCBjb25zdCBDT0xPUl9SRVNFVDogc3RyaW5nID0gXCJcXHUwMDFiWzBtXCI7XG5cbi8qKiBSZXR1cm5zIHRoZSBBTlNJIGVzY2FwZSBzZXF1ZW5jZSBmb3IgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWFnbm9zdGljQ2F0ZWdvcnlUb0NvbG9yKGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnkpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGNhdGVnb3J5KSB7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuSU5GTzogcmV0dXJuIENPTE9SX0JMVUU7XG4gICAgY2FzZSBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORzogcmV0dXJuIENPTE9SX1lFTExPVztcbiAgICBjYXNlIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUjogcmV0dXJuIENPTE9SX1JFRDtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5cbi8qKiBSZXByZXNlbnRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuZXhwb3J0IGNsYXNzIERpYWdub3N0aWNNZXNzYWdlIHtcblxuICAvKiogTWVzc2FnZSBjb2RlLiAqL1xuICBjb2RlOiBpMzI7XG4gIC8qKiBNZXNzYWdlIGNhdGVnb3J5LiAqL1xuICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5O1xuICAvKiogTWVzc2FnZSB0ZXh0LiAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBSZXNwZWN0aXZlIHNvdXJjZSByYW5nZSwgaWYgYW55LiAqL1xuICByYW5nZTogUmFuZ2UgfCBudWxsID0gbnVsbDtcbiAgLyoqIFJlbGF0ZWQgcmFuZ2UsIGlmIGFueS4gKi9cbiAgcmVsYXRlZFJhbmdlOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDb25zdHJ1Y3RzIGEgbmV3IGRpYWdub3N0aWMgbWVzc2FnZS4gKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb2RlOiBpMzIsIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkaWFnbm9zdGljIG1lc3NhZ2Ugb2YgdGhlIHNwZWNpZmllZCBjYXRlZ29yeS4gKi9cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBjYXRlZ29yeTogRGlhZ25vc3RpY0NhdGVnb3J5LFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICB2YXIgbWVzc2FnZSA9IGRpYWdub3N0aWNDb2RlVG9TdHJpbmcoY29kZSk7XG4gICAgaWYgKGFyZzAgIT0gbnVsbCkgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcInswfVwiLCBhcmcwKTtcbiAgICBpZiAoYXJnMSAhPSBudWxsKSBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFwiezF9XCIsIGFyZzEpO1xuICAgIGlmIChhcmcyICE9IG51bGwpIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXCJ7Mn1cIiwgYXJnMik7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljTWVzc2FnZShjb2RlLCBjYXRlZ29yeSwgbWVzc2FnZSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVJbmZvKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERpYWdub3N0aWNNZXNzYWdlIHtcbiAgICByZXR1cm4gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5JTkZPLCBhcmcwLCBhcmcxKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgbmV3IHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlLiAqL1xuICBzdGF0aWMgY3JlYXRlV2FybmluZyhcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuV0FSTklORywgYXJnMCwgYXJnMSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHN0YXRpYyBjcmVhdGVFcnJvcihcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBEaWFnbm9zdGljTWVzc2FnZSB7XG4gICAgcmV0dXJuIERpYWdub3N0aWNNZXNzYWdlLmNyZWF0ZShjb2RlLCBEaWFnbm9zdGljQ2F0ZWdvcnkuRVJST1IsIGFyZzAsIGFyZzEpO1xuICB9XG5cbiAgLyoqIEFkZHMgYSBzb3VyY2UgcmFuZ2UgdG8gdGhpcyBtZXNzYWdlLiAqL1xuICB3aXRoUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZHMgYSByZWxhdGVkIHNvdXJjZSByYW5nZSB0byB0aGlzIG1lc3NhZ2UuICovXG4gIHdpdGhSZWxhdGVkUmFuZ2UocmFuZ2U6IFJhbmdlKTogdGhpcyB7XG4gICAgdGhpcy5yZWxhdGVkUmFuZ2UgPSByYW5nZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDb252ZXJ0cyB0aGlzIG1lc3NhZ2UgdG8gYSBzdHJpbmcuICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKHRoaXMuY2F0ZWdvcnkpICtcbiAgICAgICAgXCIgXCIgK1xuICAgICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6IFxcXCJcIiArXG4gICAgICAgIHRoaXMubWVzc2FnZSArXG4gICAgICAgIFwiXFxcIiBpbiBcIiArXG4gICAgICAgIHRoaXMucmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmxpbmUudG9TdHJpbmcoMTApICtcbiAgICAgICAgXCI6XCIgK1xuICAgICAgICB0aGlzLnJhbmdlLmNvbHVtbi50b1N0cmluZygxMClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBkaWFnbm9zdGljQ2F0ZWdvcnlUb1N0cmluZyh0aGlzLmNhdGVnb3J5KSArXG4gICAgICBcIiBcIiArXG4gICAgICB0aGlzLmNvZGUudG9TdHJpbmcoMTApICtcbiAgICAgIFwiOiBcIiArXG4gICAgICB0aGlzLm1lc3NhZ2VcbiAgICApO1xuICB9XG59XG5cbi8qKiBGb3JtYXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzIGFuZCBzb3VyY2UgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWFnbm9zdGljTWVzc2FnZShcbiAgbWVzc2FnZTogRGlhZ25vc3RpY01lc3NhZ2UsXG4gIHVzZUNvbG9yczogYm9vbCA9IGZhbHNlLFxuICBzaG93Q29udGV4dDogYm9vbCA9IGZhbHNlXG4pOiBzdHJpbmcge1xuXG4gIC8vIGdlbmVyYWwgaW5mb3JtYXRpb25cbiAgdmFyIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodXNlQ29sb3JzKSBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvQ29sb3IobWVzc2FnZS5jYXRlZ29yeSkpO1xuICBzYi5wdXNoKGRpYWdub3N0aWNDYXRlZ29yeVRvU3RyaW5nKG1lc3NhZ2UuY2F0ZWdvcnkpKTtcbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHNiLnB1c2gobWVzc2FnZS5jb2RlIDwgMTAwMCA/IFwiIEFTXCIgOiBcIiBUU1wiKTtcbiAgc2IucHVzaChtZXNzYWdlLmNvZGUudG9TdHJpbmcoMTApKTtcbiAgc2IucHVzaChcIjogXCIpO1xuICBzYi5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XG5cbiAgLy8gaW5jbHVkZSByYW5nZSBpbmZvcm1hdGlvbiBpZiBhdmFpbGFibGVcbiAgaWYgKG1lc3NhZ2UucmFuZ2UpIHtcblxuICAgIC8vIGluY2x1ZGUgY29udGV4dCBpbmZvcm1hdGlvbiBpZiByZXF1ZXN0ZWRcbiAgICBsZXQgcmFuZ2UgPSBtZXNzYWdlLnJhbmdlO1xuICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIHNiLnB1c2goZm9ybWF0RGlhZ25vc3RpY0NvbnRleHQocmFuZ2UsIHVzZUNvbG9ycykpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIHNiLnB1c2goXCIgaW4gXCIpO1xuICAgIHNiLnB1c2gocmFuZ2Uuc291cmNlLm5vcm1hbGl6ZWRQYXRoKTtcbiAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmxpbmUudG9TdHJpbmcoMTApKTtcbiAgICBzYi5wdXNoKFwiLFwiKTtcbiAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgIHNiLnB1c2goXCIpXCIpO1xuXG4gICAgbGV0IHJlbGF0ZWRSYW5nZSA9IG1lc3NhZ2UucmVsYXRlZFJhbmdlO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIHtcbiAgICAgIGlmIChzaG93Q29udGV4dCkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgICBzYi5wdXNoKGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJlbGF0ZWRSYW5nZSwgdXNlQ29sb3JzKSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgc2IucHVzaChcIiBpbiBcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLnNvdXJjZS5ub3JtYWxpemVkUGF0aCk7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIHNiLnB1c2gocmFuZ2UubGluZS50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICBzYi5wdXNoKHJhbmdlLmNvbHVtbi50b1N0cmluZygxMCkpO1xuICAgICAgc2IucHVzaChcIilcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogRm9ybWF0cyB0aGUgZGlhZ25vc3RpYyBjb250ZXh0IGZvciB0aGUgc3BlY2lmaWVkIHJhbmdlLCBvcHRpb25hbGx5IHdpdGggdGVybWluYWwgY29sb3JzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpYWdub3N0aWNDb250ZXh0KHJhbmdlOiBSYW5nZSwgdXNlQ29sb3JzOiBib29sID0gZmFsc2UpOiBzdHJpbmcge1xuICB2YXIgdGV4dCA9IHJhbmdlLnNvdXJjZS50ZXh0O1xuICB2YXIgbGVuID0gdGV4dC5sZW5ndGg7XG4gIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICB2YXIgZW5kID0gcmFuZ2UuZW5kO1xuICB3aGlsZSAoc3RhcnQgPiAwICYmICFpc0xpbmVCcmVhayh0ZXh0LmNoYXJDb2RlQXQoc3RhcnQgLSAxKSkpIHN0YXJ0LS07XG4gIHdoaWxlIChlbmQgPCBsZW4gJiYgIWlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChlbmQpKSkgZW5kKys7XG4gIHZhciBzYjogc3RyaW5nW10gPSBbXG4gICAgXCJcXG4gXCIsXG4gICAgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCksXG4gICAgXCJcXG4gXCJcbiAgXTtcbiAgd2hpbGUgKHN0YXJ0IDwgcmFuZ2Uuc3RhcnQpIHtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICBzdGFydCsrO1xuICB9XG4gIGlmICh1c2VDb2xvcnMpIHNiLnB1c2goQ09MT1JfUkVEKTtcbiAgaWYgKHJhbmdlLnN0YXJ0ID09IHJhbmdlLmVuZCkge1xuICAgIHNiLnB1c2goXCJeXCIpO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdGFydCsrIDwgcmFuZ2UuZW5kKSB7XG4gICAgICBpZiAoaXNMaW5lQnJlYWsodGV4dC5jaGFyQ29kZUF0KHN0YXJ0KSkpIHtcbiAgICAgICAgc2IucHVzaChzdGFydCA9PSByYW5nZS5zdGFydCArIDEgPyBcIl5cIiA6IFwiflwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiflwiKTtcbiAgICB9XG4gIH1cbiAgaWYgKHVzZUNvbG9ycykgc2IucHVzaChDT0xPUl9SRVNFVCk7XG4gIHJldHVybiBzYi5qb2luKFwiXCIpO1xufVxuXG4vKiogQmFzZSBjbGFzcyBvZiBhbGwgZGlhZ25vc3RpYyBlbWl0dGVycy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFnbm9zdGljRW1pdHRlciB7XG5cbiAgLyoqIERpYWdub3N0aWMgbWVzc2FnZXMgZW1pdHRlZCBzbyBmYXIuICovXG4gIGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdO1xuXG4gIC8qKiBJbml0aWFsaXplcyB0aGlzIGRpYWdub3N0aWMgZW1pdHRlci4gKi9cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljTWVzc2FnZVtdIHwgbnVsbCA9IG51bGwpIHtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgPyA8RGlhZ25vc3RpY01lc3NhZ2VbXT5kaWFnbm9zdGljcyA6IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgZGlhZ25vc3RpYyBtZXNzYWdlIG9mIHRoZSBzcGVjaWZpZWQgY2F0ZWdvcnkuICovXG4gIGVtaXREaWFnbm9zdGljKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIGNhdGVnb3J5OiBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIHJlbGF0ZWRSYW5nZTogUmFuZ2UgfCBudWxsLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHZhciBtZXNzYWdlID0gRGlhZ25vc3RpY01lc3NhZ2UuY3JlYXRlKGNvZGUsIGNhdGVnb3J5LCBhcmcwLCBhcmcxLCBhcmcyKS53aXRoUmFuZ2UocmFuZ2UpO1xuICAgIGlmIChyZWxhdGVkUmFuZ2UpIG1lc3NhZ2UucmVsYXRlZFJhbmdlID0gcmVsYXRlZFJhbmdlO1xuICAgIHRoaXMuZGlhZ25vc3RpY3MucHVzaChtZXNzYWdlKTtcbiAgICAvLyBjb25zb2xlLmxvZyhmb3JtYXREaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCB0cnVlLCB0cnVlKSArIFwiXFxuXCIpOyAvLyB0ZW1wb3JhcnlcbiAgICAvLyBjb25zb2xlLmxvZyg8c3RyaW5nPm5ldyBFcnJvcihcInN0YWNrXCIpLnN0YWNrKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGluZm8oXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBpbmZvcm1hdG9yeSBkaWFnbm9zdGljIG1lc3NhZ2Ugd2l0aCBhIHJlbGF0ZWQgcmFuZ2UuICovXG4gIGluZm9SZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LklORk8sIHJhbmdlLCByZWxhdGVkUmFuZ2UsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGEgd2FybmluZyBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIHdhcm5pbmcoXG4gICAgY29kZTogRGlhZ25vc3RpY0NvZGUsXG4gICAgcmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LldBUk5JTkcsIHJhbmdlLCBudWxsLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhIHdhcm5pbmcgZGlhZ25vc3RpYyBtZXNzYWdlIHdpdGggYSByZWxhdGVkIHJhbmdlLiAqL1xuICB3YXJuaW5nUmVsYXRlZChcbiAgICBjb2RlOiBEaWFnbm9zdGljQ29kZSxcbiAgICByYW5nZTogUmFuZ2UsXG4gICAgcmVsYXRlZFJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5XQVJOSU5HLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxuXG4gIC8qKiBFbWl0cyBhbiBlcnJvciBkaWFnbm9zdGljIG1lc3NhZ2UuICovXG4gIGVycm9yKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICBhcmcwOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcxOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBhcmcyOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVtaXREaWFnbm9zdGljKGNvZGUsIERpYWdub3N0aWNDYXRlZ29yeS5FUlJPUiwgcmFuZ2UsIG51bGwsIGFyZzAsIGFyZzEsIGFyZzIpO1xuICB9XG5cbiAgLyoqIEVtaXRzIGFuIGVycm9yIGRpYWdub3N0aWMgbWVzc2FnZSB3aXRoIGEgcmVsYXRlZCByYW5nZS4gKi9cbiAgZXJyb3JSZWxhdGVkKFxuICAgIGNvZGU6IERpYWdub3N0aWNDb2RlLFxuICAgIHJhbmdlOiBSYW5nZSxcbiAgICByZWxhdGVkUmFuZ2U6IFJhbmdlLFxuICAgIGFyZzA6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzE6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGFyZzI6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW1pdERpYWdub3N0aWMoY29kZSwgRGlhZ25vc3RpY0NhdGVnb3J5LkVSUk9SLCByYW5nZSwgcmVsYXRlZFJhbmdlLCBhcmcwLCBhcmcxLCBhcmcyKTtcbiAgfVxufVxuIl19 - -/***/ }), - -/***/ "../src/glue/js/float.js": -/*!*******************************!*\ - !*** ../src/glue/js/float.js ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const F64 = new Float64Array(1); -const F32 = new Float32Array(F64.buffer); -const I32 = new Int32Array(F64.buffer); - -global.f32_as_i32 = function(value) { - F32[0] = value; - return I32[0]; -}; - -global.i32_as_f32 = function(value) { - I32[0] = value; - return F32[0]; -}; - -global.f64_as_i64 = function(value) { - F64[0] = value; - return i64_new(I32[0], I32[1]); -}; - -global.i64_as_f64 = function(value) { - I32[0] = i64_low(value); - I32[1] = i64_high(value); - return F64[0]; -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/glue/js/i64.js": -/*!*****************************!*\ - !*** ../src/glue/js/i64.js ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {const Long = global.Long || __webpack_require__(/*! long */ "../node_modules/long/src/long.js"); - -global.i64_zero = Long.ZERO; - -global.i64_one = Long.ONE; - -global.i64_new = function(lo, hi) { - return Long.fromBits(lo, hi); -}; - -global.i64_low = function(value) { - return value.low; -}; - -global.i64_high = function(value) { - return value.high; -}; - -global.i64_add = function(left, right) { - return left.add(right); -}; - -global.i64_sub = function(left, right) { - return left.sub(right); -}; - -global.i64_mul = function(left, right) { - return left.mul(right); -}; - -global.i64_div = function(left, right) { - return left.div(right); -}; - -global.i64_div_u = function(left, right) { - return left.toUnsigned().div(right.toUnsigned()).toSigned(); -}; - -global.i64_rem = function(left, right) { - return left.mod(right); -}; - -global.i64_rem_u = function(left, right) { - return left.toUnsigned().mod(right.toUnsigned()).toSigned(); -}; - -global.i64_and = function(left, right) { - return left.and(right); -}; - -global.i64_or = function(left, right) { - return left.or(right); -}; - -global.i64_xor = function(left, right) { - return left.xor(right); -}; - -global.i64_shl = function(left, right) { - return left.shl(right); -}; - -global.i64_shr = function(left, right) { - return left.shr(right); -}; - -global.i64_shr_u = function(left, right) { - return left.shru(right); -}; - -global.i64_not = function(value) { - return value.not(); -}; - -global.i64_eq = function(left, right) { - return left.eq(right); -}; - -global.i64_ne = function(left, right) { - return left.ne(right); -}; - -global.i64_align = function(value, alignment) { - assert(alignment && (alignment & (alignment - 1)) == 0); - var mask = Long.fromInt(alignment - 1); - return value.add(mask).and(mask.not()); -}; - -global.i64_is_i8 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i8.MAX_VALUE) - || value.high === -1 && (value.low >= i8.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i16 = function(value) { - return value.high === 0 && (value.low >= 0 && value.low <= i16.MAX_VALUE) - || value.high === -1 && (value.low >= i16.MIN_VALUE && value.low < 0); -}; - -global.i64_is_i32 = function(value) { - return (value.high === 0 && value.low >= 0) - || (value.high === -1 && value.low < 0); -}; - -global.i64_is_u8 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u8.MAX_VALUE; -}; - -global.i64_is_u16 = function(value) { - return value.high === 0 && value.low >= 0 && value.low <= u16.MAX_VALUE; -}; - -global.i64_is_u32 = function(value) { - return value.high === 0; -}; - -global.i64_is_bool = function(value) { - return value.high === 0 && (value.low === 0 || value.low === 1); -}; - -const minSafeF32 = Long.fromNumber(f32.MIN_SAFE_INTEGER); -const maxSafeF32 = Long.fromNumber(f32.MAX_SAFE_INTEGER); - -global.i64_is_f32 = function(value) { - return value.gte(minSafeF32) && value.lte(maxSafeF32); -}; - -const minSafeF64 = Long.fromNumber(f64.MIN_SAFE_INTEGER); -const maxSafeF64 = Long.fromNumber(f64.MAX_SAFE_INTEGER); - -global.i64_is_f64 = function(value) { - return value.gte(minSafeF64) && value.lte(maxSafeF64); -}; - -global.i64_to_f32 = function(value) { - return global.Math.fround(value.toNumber()); -}; - -global.i64_to_f64 = function(value) { - return value.toNumber(); -}; - -global.i64_to_string = function(value, unsigned) { - return (unsigned ? value.toUnsigned() : value).toString(10); -}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "../src/tokenizer.ts": -/*!***************************!*\ - !*** ../src/tokenizer.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * A TypeScript tokenizer modified for AssemblyScript. - * - * Skips over trivia and provides a general mark/reset mechanism for the parser to utilize on - * ambiguous tokens. - * - * @module tokenizer - */ /***/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var diagnostics_1 = __webpack_require__(/*! ./diagnostics */ "../src/diagnostics.ts"); -var ast_1 = __webpack_require__(/*! ./ast */ "../src/ast.ts"); -var util_1 = __webpack_require__(/*! ./util */ "../src/util/index.ts"); -/** Named token types. */ -var Token; -(function (Token) { - // keywords - // discarded: ANY, BOOLEAN, NEVER, NUMBER, STRING, SYMBOL, UNDEFINED, LESSTHAN_SLASH - Token[Token["ABSTRACT"] = 0] = "ABSTRACT"; - Token[Token["AS"] = 1] = "AS"; - Token[Token["ASYNC"] = 2] = "ASYNC"; - Token[Token["AWAIT"] = 3] = "AWAIT"; - Token[Token["BREAK"] = 4] = "BREAK"; - Token[Token["CASE"] = 5] = "CASE"; - Token[Token["CATCH"] = 6] = "CATCH"; - Token[Token["CLASS"] = 7] = "CLASS"; - Token[Token["CONST"] = 8] = "CONST"; - Token[Token["CONTINUE"] = 9] = "CONTINUE"; - Token[Token["CONSTRUCTOR"] = 10] = "CONSTRUCTOR"; - Token[Token["DEBUGGER"] = 11] = "DEBUGGER"; - Token[Token["DECLARE"] = 12] = "DECLARE"; - Token[Token["DEFAULT"] = 13] = "DEFAULT"; - Token[Token["DELETE"] = 14] = "DELETE"; - Token[Token["DO"] = 15] = "DO"; - Token[Token["ELSE"] = 16] = "ELSE"; - Token[Token["ENUM"] = 17] = "ENUM"; - Token[Token["EXPORT"] = 18] = "EXPORT"; - Token[Token["EXTENDS"] = 19] = "EXTENDS"; - Token[Token["FALSE"] = 20] = "FALSE"; - Token[Token["FINALLY"] = 21] = "FINALLY"; - Token[Token["FOR"] = 22] = "FOR"; - Token[Token["FROM"] = 23] = "FROM"; - Token[Token["FUNCTION"] = 24] = "FUNCTION"; - Token[Token["GET"] = 25] = "GET"; - Token[Token["IF"] = 26] = "IF"; - Token[Token["IMPLEMENTS"] = 27] = "IMPLEMENTS"; - Token[Token["IMPORT"] = 28] = "IMPORT"; - Token[Token["IN"] = 29] = "IN"; - Token[Token["INSTANCEOF"] = 30] = "INSTANCEOF"; - Token[Token["INTERFACE"] = 31] = "INTERFACE"; - Token[Token["IS"] = 32] = "IS"; - Token[Token["KEYOF"] = 33] = "KEYOF"; - Token[Token["LET"] = 34] = "LET"; - Token[Token["MODULE"] = 35] = "MODULE"; - Token[Token["NAMESPACE"] = 36] = "NAMESPACE"; - Token[Token["NEW"] = 37] = "NEW"; - Token[Token["NULL"] = 38] = "NULL"; - Token[Token["OF"] = 39] = "OF"; - Token[Token["PACKAGE"] = 40] = "PACKAGE"; - Token[Token["PRIVATE"] = 41] = "PRIVATE"; - Token[Token["PROTECTED"] = 42] = "PROTECTED"; - Token[Token["PUBLIC"] = 43] = "PUBLIC"; - Token[Token["READONLY"] = 44] = "READONLY"; - Token[Token["RETURN"] = 45] = "RETURN"; - Token[Token["SET"] = 46] = "SET"; - Token[Token["STATIC"] = 47] = "STATIC"; - Token[Token["SUPER"] = 48] = "SUPER"; - Token[Token["SWITCH"] = 49] = "SWITCH"; - Token[Token["THIS"] = 50] = "THIS"; - Token[Token["THROW"] = 51] = "THROW"; - Token[Token["TRUE"] = 52] = "TRUE"; - Token[Token["TRY"] = 53] = "TRY"; - Token[Token["TYPE"] = 54] = "TYPE"; - Token[Token["TYPEOF"] = 55] = "TYPEOF"; - Token[Token["VAR"] = 56] = "VAR"; - Token[Token["VOID"] = 57] = "VOID"; - Token[Token["WHILE"] = 58] = "WHILE"; - Token[Token["WITH"] = 59] = "WITH"; - Token[Token["YIELD"] = 60] = "YIELD"; - // punctuation - Token[Token["OPENBRACE"] = 61] = "OPENBRACE"; - Token[Token["CLOSEBRACE"] = 62] = "CLOSEBRACE"; - Token[Token["OPENPAREN"] = 63] = "OPENPAREN"; - Token[Token["CLOSEPAREN"] = 64] = "CLOSEPAREN"; - Token[Token["OPENBRACKET"] = 65] = "OPENBRACKET"; - Token[Token["CLOSEBRACKET"] = 66] = "CLOSEBRACKET"; - Token[Token["DOT"] = 67] = "DOT"; - Token[Token["DOT_DOT_DOT"] = 68] = "DOT_DOT_DOT"; - Token[Token["SEMICOLON"] = 69] = "SEMICOLON"; - Token[Token["COMMA"] = 70] = "COMMA"; - Token[Token["LESSTHAN"] = 71] = "LESSTHAN"; - Token[Token["GREATERTHAN"] = 72] = "GREATERTHAN"; - Token[Token["LESSTHAN_EQUALS"] = 73] = "LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_EQUALS"] = 74] = "GREATERTHAN_EQUALS"; - Token[Token["EQUALS_EQUALS"] = 75] = "EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS"] = 76] = "EXCLAMATION_EQUALS"; - Token[Token["EQUALS_EQUALS_EQUALS"] = 77] = "EQUALS_EQUALS_EQUALS"; - Token[Token["EXCLAMATION_EQUALS_EQUALS"] = 78] = "EXCLAMATION_EQUALS_EQUALS"; - Token[Token["EQUALS_GREATERTHAN"] = 79] = "EQUALS_GREATERTHAN"; - Token[Token["PLUS"] = 80] = "PLUS"; - Token[Token["MINUS"] = 81] = "MINUS"; - Token[Token["ASTERISK_ASTERISK"] = 82] = "ASTERISK_ASTERISK"; - Token[Token["ASTERISK"] = 83] = "ASTERISK"; - Token[Token["SLASH"] = 84] = "SLASH"; - Token[Token["PERCENT"] = 85] = "PERCENT"; - Token[Token["PLUS_PLUS"] = 86] = "PLUS_PLUS"; - Token[Token["MINUS_MINUS"] = 87] = "MINUS_MINUS"; - Token[Token["LESSTHAN_LESSTHAN"] = 88] = "LESSTHAN_LESSTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN"] = 89] = "GREATERTHAN_GREATERTHAN"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN"] = 90] = "GREATERTHAN_GREATERTHAN_GREATERTHAN"; - Token[Token["AMPERSAND"] = 91] = "AMPERSAND"; - Token[Token["BAR"] = 92] = "BAR"; - Token[Token["CARET"] = 93] = "CARET"; - Token[Token["EXCLAMATION"] = 94] = "EXCLAMATION"; - Token[Token["TILDE"] = 95] = "TILDE"; - Token[Token["AMPERSAND_AMPERSAND"] = 96] = "AMPERSAND_AMPERSAND"; - Token[Token["BAR_BAR"] = 97] = "BAR_BAR"; - Token[Token["QUESTION"] = 98] = "QUESTION"; - Token[Token["COLON"] = 99] = "COLON"; - Token[Token["EQUALS"] = 100] = "EQUALS"; - Token[Token["PLUS_EQUALS"] = 101] = "PLUS_EQUALS"; - Token[Token["MINUS_EQUALS"] = 102] = "MINUS_EQUALS"; - Token[Token["ASTERISK_EQUALS"] = 103] = "ASTERISK_EQUALS"; - Token[Token["ASTERISK_ASTERISK_EQUALS"] = 104] = "ASTERISK_ASTERISK_EQUALS"; - Token[Token["SLASH_EQUALS"] = 105] = "SLASH_EQUALS"; - Token[Token["PERCENT_EQUALS"] = 106] = "PERCENT_EQUALS"; - Token[Token["LESSTHAN_LESSTHAN_EQUALS"] = 107] = "LESSTHAN_LESSTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_EQUALS"] = 108] = "GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"] = 109] = "GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS"; - Token[Token["AMPERSAND_EQUALS"] = 110] = "AMPERSAND_EQUALS"; - Token[Token["BAR_EQUALS"] = 111] = "BAR_EQUALS"; - Token[Token["CARET_EQUALS"] = 112] = "CARET_EQUALS"; - Token[Token["AT"] = 113] = "AT"; - // literals - Token[Token["IDENTIFIER"] = 114] = "IDENTIFIER"; - Token[Token["STRINGLITERAL"] = 115] = "STRINGLITERAL"; - Token[Token["INTEGERLITERAL"] = 116] = "INTEGERLITERAL"; - Token[Token["FLOATLITERAL"] = 117] = "FLOATLITERAL"; - // meta - Token[Token["INVALID"] = 118] = "INVALID"; - Token[Token["ENDOFFILE"] = 119] = "ENDOFFILE"; -})(Token = exports.Token || (exports.Token = {})); -var IdentifierHandling; -(function (IdentifierHandling) { - IdentifierHandling[IdentifierHandling["DEFAULT"] = 0] = "DEFAULT"; - IdentifierHandling[IdentifierHandling["PREFER"] = 1] = "PREFER"; - IdentifierHandling[IdentifierHandling["ALWAYS"] = 2] = "ALWAYS"; -})(IdentifierHandling = exports.IdentifierHandling || (exports.IdentifierHandling = {})); -function tokenFromKeyword(text) { - assert(text.length); - switch (text.charCodeAt(0)) { - case 97 /* a */: { - switch (text) { - case "abstract": return Token.ABSTRACT; - case "as": return Token.AS; - case "async": return Token.ASYNC; - case "await": return Token.AWAIT; - } - break; - } - case 98 /* b */: { - switch (text) { - case "break": return Token.BREAK; - } - break; - } - case 99 /* c */: { - switch (text) { - case "case": return Token.CASE; - case "catch": return Token.CATCH; - case "class": return Token.CLASS; - case "continue": return Token.CONTINUE; - case "const": return Token.CONST; - case "constructor": return Token.CONSTRUCTOR; - } - break; - } - case 100 /* d */: { - switch (text) { - case "debugger": return Token.DEBUGGER; - case "declare": return Token.DECLARE; - case "default": return Token.DEFAULT; - case "delete": return Token.DELETE; - case "do": return Token.DO; - } - break; - } - case 101 /* e */: { - switch (text) { - case "else": return Token.ELSE; - case "enum": return Token.ENUM; - case "export": return Token.EXPORT; - case "extends": return Token.EXTENDS; - } - break; - } - case 102 /* f */: { - switch (text) { - case "false": return Token.FALSE; - case "finally": return Token.FINALLY; - case "for": return Token.FOR; - case "from": return Token.FROM; - case "function": return Token.FUNCTION; - } - break; - } - case 103 /* g */: { - switch (text) { - case "get": return Token.GET; - } - break; - } - case 105 /* i */: { - switch (text) { - case "if": return Token.IF; - case "implements": return Token.IMPLEMENTS; - case "import": return Token.IMPORT; - case "in": return Token.IN; - case "instanceof": return Token.INSTANCEOF; - case "interface": return Token.INTERFACE; - case "is": return Token.IS; - } - break; - } - case 107 /* k */: { - switch (text) { - case "keyof": return Token.KEYOF; - } - break; - } - case 108 /* l */: { - switch (text) { - case "let": return Token.LET; - } - break; - } - case 109 /* m */: { - switch (text) { - case "module": return Token.MODULE; - } - break; - } - case 110 /* n */: { - switch (text) { - case "namespace": return Token.NAMESPACE; - case "new": return Token.NEW; - case "null": return Token.NULL; - } - break; - } - case 111 /* o */: { - switch (text) { - case "of": return Token.OF; - } - break; - } - case 112 /* p */: { - switch (text) { - case "package": return Token.PACKAGE; - case "private": return Token.PRIVATE; - case "protected": return Token.PROTECTED; - case "public": return Token.PUBLIC; - } - break; - } - case 114 /* r */: { - switch (text) { - case "readonly": return Token.READONLY; - case "return": return Token.RETURN; - } - break; - } - case 115 /* s */: { - switch (text) { - case "set": return Token.SET; - case "static": return Token.STATIC; - case "super": return Token.SUPER; - case "switch": return Token.SWITCH; - } - break; - } - case 116 /* t */: { - switch (text) { - case "this": return Token.THIS; - case "throw": return Token.THROW; - case "true": return Token.TRUE; - case "try": return Token.TRY; - case "type": return Token.TYPE; - case "typeof": return Token.TYPEOF; - } - break; - } - case 118 /* v */: { - switch (text) { - case "var": return Token.VAR; - case "void": return Token.VOID; - } - break; - } - case 119 /* w */: { - switch (text) { - case "while": return Token.WHILE; - case "with": return Token.WITH; - } - break; - } - case 121 /* y */: { - switch (text) { - case "yield": return Token.YIELD; - } - break; - } - } - return Token.INVALID; -} -exports.tokenFromKeyword = tokenFromKeyword; -function tokenIsAlsoIdentifier(token) { - switch (token) { - case Token.ABSTRACT: - case Token.AS: - case Token.CONSTRUCTOR: - case Token.DECLARE: - case Token.DELETE: - case Token.FROM: - case Token.FOR: - case Token.GET: - case Token.INSTANCEOF: - case Token.IS: - case Token.KEYOF: - case Token.MODULE: - case Token.NAMESPACE: - case Token.NULL: - case Token.READONLY: - case Token.SET: - case Token.TYPE: - case Token.VOID: return true; - default: return false; - } -} -exports.tokenIsAlsoIdentifier = tokenIsAlsoIdentifier; -function isIllegalVariableIdentifier(name) { - assert(name.length); - switch (name.charCodeAt(0)) { - case 100 /* d */: return name == "delete"; - case 102 /* f */: return name == "for"; - case 105 /* i */: return name == "instanceof"; - case 110 /* n */: return name == "null"; - case 118 /* v */: return name == "void"; - } - return false; -} -exports.isIllegalVariableIdentifier = isIllegalVariableIdentifier; -function operatorTokenToString(token) { - switch (token) { - case Token.DELETE: return "delete"; - case Token.IN: return "in"; - case Token.INSTANCEOF: return "instanceof"; - case Token.NEW: return "new"; - case Token.TYPEOF: return "typeof"; - case Token.VOID: return "void"; - case Token.YIELD: return "yield"; - case Token.DOT_DOT_DOT: return "..."; - case Token.COMMA: return ","; - case Token.LESSTHAN: return "<"; - case Token.GREATERTHAN: return ">"; - case Token.LESSTHAN_EQUALS: return "<="; - case Token.GREATERTHAN_EQUALS: return ">="; - case Token.EQUALS_EQUALS: return "=="; - case Token.EXCLAMATION_EQUALS: return "!="; - case Token.EQUALS_EQUALS_EQUALS: return "==="; - case Token.EXCLAMATION_EQUALS_EQUALS: return "!=="; - case Token.PLUS: return "+"; - case Token.MINUS: return "-"; - case Token.ASTERISK_ASTERISK: return "**"; - case Token.ASTERISK: return "*"; - case Token.SLASH: return "/"; - case Token.PERCENT: return "%"; - case Token.PLUS_PLUS: return "++"; - case Token.MINUS_MINUS: return "--"; - case Token.LESSTHAN_LESSTHAN: return "<<"; - case Token.GREATERTHAN_GREATERTHAN: return ">>"; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN: return ">>>"; - case Token.AMPERSAND: return "&"; - case Token.BAR: return "|"; - case Token.CARET: return "^"; - case Token.EXCLAMATION: return "!"; - case Token.TILDE: return "~"; - case Token.AMPERSAND_AMPERSAND: return "&&"; - case Token.BAR_BAR: return "||"; - case Token.EQUALS: return "="; - case Token.PLUS_EQUALS: return "+="; - case Token.MINUS_EQUALS: return "-="; - case Token.ASTERISK_EQUALS: return "*="; - case Token.ASTERISK_ASTERISK_EQUALS: return "**="; - case Token.SLASH_EQUALS: return "/="; - case Token.PERCENT_EQUALS: return "%="; - case Token.LESSTHAN_LESSTHAN_EQUALS: return "<<="; - case Token.GREATERTHAN_GREATERTHAN_EQUALS: return ">>="; - case Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS: return ">>>="; - case Token.AMPERSAND_EQUALS: return "&="; - case Token.BAR_EQUALS: return "|="; - case Token.CARET_EQUALS: return "^="; - default: { - assert(false); - return ""; - } - } -} -exports.operatorTokenToString = operatorTokenToString; -var Range = /** @class */ (function () { - // TODO: set these while tokenizing - // line: i32; - // column: i32; - function Range(source, start, end) { - this.debugInfoRef = 0; - this.source = source; - this.start = start; - this.end = end; - } - Range.join = function (a, b) { - if (a.source != b.source) - throw new Error("source mismatch"); - return new Range(a.source, a.start < b.start ? a.start : b.start, a.end > b.end ? a.end : b.end); - }; - Object.defineProperty(Range.prototype, "atStart", { - get: function () { - return new Range(this.source, this.start, this.start); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "atEnd", { - get: function () { - return new Range(this.source, this.end, this.end); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "line", { - get: function () { - var text = this.source.text; - var line = 1; - for (var pos = this.start; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - line++; - } - return line; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(Range.prototype, "column", { - get: function () { - var text = this.source.text; - var column = 0; - for (var pos = this.start - 1; pos >= 0; --pos) { - if (text.charCodeAt(pos) == 10 /* LINEFEED */) - break; - ++column; - } - return column; - }, - enumerable: true, - configurable: true - }); - Range.prototype.toString = function () { - return this.source.text.substring(this.start, this.end); - }; - return Range; -}()); -exports.Range = Range; -/** Tokenizes a source to individual {@link Token}s. */ -var Tokenizer = /** @class */ (function (_super) { - __extends(Tokenizer, _super); - /** Constructs a new tokenizer. */ - function Tokenizer(source, diagnostics) { - if (diagnostics === void 0) { diagnostics = null; } - var _this = _super.call(this, diagnostics) || this; - _this.end = 0; - _this.pos = 0; - _this.token = -1; - _this.tokenPos = 0; - _this.nextToken = -1; - _this.nextTokenPos = 0; - _this.nextTokenOnNewLine = false; - _this.onComment = null; - _this.source = source; - _this.pos = 0; - _this.end = source.text.length; - _this.diagnostics = diagnostics || new Array(); - var end = _this.end; - var text = source.text; - // skip bom - if (_this.pos < end && - text.charCodeAt(_this.pos) == 65279 /* BYTEORDERMARK */) { - ++_this.pos; - } - // skip shebang - if (_this.pos + 1 < end && - text.charCodeAt(_this.pos) == 35 /* HASH */ && - text.charCodeAt(_this.pos + 1) == 33 /* EXCLAMATION */) { - _this.pos += 2; - while (_this.pos < end && - text.charCodeAt(_this.pos) != 10 /* LINEFEED */) { - ++_this.pos; - } - // 'next' now starts at lf or eof - } - return _this; - } - Tokenizer.prototype.next = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - this.nextToken = -1; - return this.token = this.unsafeNext(identifierHandling); - }; - Tokenizer.prototype.unsafeNext = function (identifierHandling, maxTokenLength) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxTokenLength === void 0) { maxTokenLength = i32.MAX_VALUE; } - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - this.tokenPos = this.pos; - var c = text.charCodeAt(this.pos); - switch (c) { - case 13 /* CARRIAGERETURN */: { - if (!(++this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */)) - break; - // otherwise fall-through - } - case 10 /* LINEFEED */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 32 /* SPACE */: { - ++this.pos; - break; - } - case 33 /* EXCLAMATION */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EXCLAMATION_EQUALS_EQUALS; - } - return Token.EXCLAMATION_EQUALS; - } - return Token.EXCLAMATION; - } - case 34 /* DOUBLEQUOTE */: - case 39 /* SINGLEQUOTE */: - case 96 /* BACKTICK */: { // TODO - return Token.STRINGLITERAL; // expects a call to readString - } - case 37 /* PERCENT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.PERCENT_EQUALS; - } - return Token.PERCENT; - } - case 38 /* AMPERSAND */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 38 /* AMPERSAND */) { - ++this.pos; - return Token.AMPERSAND_AMPERSAND; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.AMPERSAND_EQUALS; - } - } - return Token.AMPERSAND; - } - case 40 /* OPENPAREN */: { - ++this.pos; - return Token.OPENPAREN; - } - case 41 /* CLOSEPAREN */: { - ++this.pos; - return Token.CLOSEPAREN; - } - case 42 /* ASTERISK */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_EQUALS; - } - if (chr == 42 /* ASTERISK */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.ASTERISK_ASTERISK_EQUALS; - } - return Token.ASTERISK_ASTERISK; - } - } - return Token.ASTERISK; - } - case 43 /* PLUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 43 /* PLUS */) { - ++this.pos; - return Token.PLUS_PLUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.PLUS_EQUALS; - } - } - return Token.PLUS; - } - case 44 /* COMMA */: { - ++this.pos; - return Token.COMMA; - } - case 45 /* MINUS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 45 /* MINUS */) { - ++this.pos; - return Token.MINUS_MINUS; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.MINUS_EQUALS; - } - } - return Token.MINUS; - } - case 46 /* DOT */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (util_1.isDecimalDigit(chr)) { - --this.pos; - return Token.FLOATLITERAL; // expects a call to readFloat - } - if (maxTokenLength > 2 && this.pos + 1 < end && - chr == 46 /* DOT */ && - text.charCodeAt(this.pos + 1) == 46 /* DOT */) { - this.pos += 2; - return Token.DOT_DOT_DOT; - } - } - return Token.DOT; - } - case 47 /* SLASH */: { - var commentStartPos = this.pos; - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 47 /* SLASH */) { // single-line - var commentKind = ast_1.CommentKind.LINE; - if (this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - ++this.pos; - commentKind = ast_1.CommentKind.TRIPLE; - } - while (++this.pos < end) { - if (text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - break; - } - } - if (this.onComment) { - this.onComment(commentKind, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 42 /* ASTERISK */) { // multi-line - var closed = false; - while (++this.pos < end) { - c = text.charCodeAt(this.pos); - if (c == 42 /* ASTERISK */ && - this.pos + 1 < end && - text.charCodeAt(this.pos + 1) == 47 /* SLASH */) { - this.pos += 2; - closed = true; - break; - } - } - if (!closed) { - this.error(diagnostics_1.DiagnosticCode._0_expected, this.range(this.pos), "*/"); - } - else if (this.onComment) { - this.onComment(ast_1.CommentKind.BLOCK, text.substring(commentStartPos, this.pos), this.range(commentStartPos, this.pos)); - } - break; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.SLASH_EQUALS; - } - } - return Token.SLASH; - } - case 48 /* _0 */: - case 49 /* _1 */: - case 50 /* _2 */: - case 51 /* _3 */: - case 52 /* _4 */: - case 53 /* _5 */: - case 54 /* _6 */: - case 55 /* _7 */: - case 56 /* _8 */: - case 57 /* _9 */: { - return this.testInteger() - ? Token.INTEGERLITERAL // expects a call to readInteger - : Token.FLOATLITERAL; // expects a call to readFloat - } - case 58 /* COLON */: { - ++this.pos; - return Token.COLON; - } - case 59 /* SEMICOLON */: { - ++this.pos; - return Token.SEMICOLON; - } - case 60 /* LESSTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 60 /* LESSTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_LESSTHAN_EQUALS; - } - return Token.LESSTHAN_LESSTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.LESSTHAN_EQUALS; - } - } - return Token.LESSTHAN; - } - case 61 /* EQUALS */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 61 /* EQUALS */) { - ++this.pos; - if (maxTokenLength > 2 && - this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.EQUALS_EQUALS_EQUALS; - } - return Token.EQUALS_EQUALS; - } - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - return Token.EQUALS_GREATERTHAN; - } - } - return Token.EQUALS; - } - case 62 /* GREATERTHAN */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 2 && this.pos < end) { - chr = text.charCodeAt(this.pos); - if (chr == 62 /* GREATERTHAN */) { - ++this.pos; - if (maxTokenLength > 3 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS; - } - return Token.GREATERTHAN_GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN_GREATERTHAN; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.GREATERTHAN_EQUALS; - } - } - return Token.GREATERTHAN; - } - case 63 /* QUESTION */: { - ++this.pos; - return Token.QUESTION; - } - case 91 /* OPENBRACKET */: { - ++this.pos; - return Token.OPENBRACKET; - } - case 93 /* CLOSEBRACKET */: { - ++this.pos; - return Token.CLOSEBRACKET; - } - case 94 /* CARET */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end && - text.charCodeAt(this.pos) == 61 /* EQUALS */) { - ++this.pos; - return Token.CARET_EQUALS; - } - return Token.CARET; - } - case 123 /* OPENBRACE */: { - ++this.pos; - return Token.OPENBRACE; - } - case 124 /* BAR */: { - ++this.pos; - if (maxTokenLength > 1 && this.pos < end) { - var chr = text.charCodeAt(this.pos); - if (chr == 124 /* BAR */) { - ++this.pos; - return Token.BAR_BAR; - } - if (chr == 61 /* EQUALS */) { - ++this.pos; - return Token.BAR_EQUALS; - } - } - return Token.BAR; - } - case 125 /* CLOSEBRACE */: { - ++this.pos; - return Token.CLOSEBRACE; - } - case 126 /* TILDE */: { - ++this.pos; - return Token.TILDE; - } - case 64 /* AT */: { - ++this.pos; - return Token.AT; - } - default: { - if (util_1.isIdentifierStart(c)) { - if (util_1.isKeywordCharacter(c)) { - var posBefore = this.pos; - while (++this.pos < end && - util_1.isIdentifierPart(c = text.charCodeAt(this.pos))) { - if (!util_1.isKeywordCharacter(c)) { - this.pos = posBefore; - return Token.IDENTIFIER; - } - } - var keywordText = text.substring(posBefore, this.pos); - var keywordToken = tokenFromKeyword(keywordText); - if (keywordToken !== Token.INVALID && - identifierHandling !== IdentifierHandling.ALWAYS && - !(identifierHandling === IdentifierHandling.PREFER && - tokenIsAlsoIdentifier(keywordToken))) { - return keywordToken; - } - this.pos = posBefore; - } - return Token.IDENTIFIER; // expects a call to readIdentifier - } - else if (util_1.isWhiteSpace(c)) { - ++this.pos; - break; - } - this.error(diagnostics_1.DiagnosticCode.Invalid_character, this.range(this.pos, this.pos + 1)); - ++this.pos; - return Token.INVALID; - } - } - } - return Token.ENDOFFILE; - }; - Tokenizer.prototype.peek = function (checkOnNewLine, identifierHandling, maxCompoundLength) { - if (checkOnNewLine === void 0) { checkOnNewLine = false; } - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - if (maxCompoundLength === void 0) { maxCompoundLength = i32.MAX_VALUE; } - var text = this.source.text; - if (this.nextToken < 0) { - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - this.nextToken = this.unsafeNext(identifierHandling, maxCompoundLength); - this.nextTokenPos = this.tokenPos; - if (checkOnNewLine) { - this.nextTokenOnNewLine = false; - for (var pos = posBefore, end = this.nextTokenPos; pos < end; ++pos) { - if (util_1.isLineBreak(text.charCodeAt(pos))) { - this.nextTokenOnNewLine = true; - break; - } - } - } - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - } - return this.nextToken; - }; - Tokenizer.prototype.skipIdentifier = function (identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.PREFER; } - return this.skip(Token.IDENTIFIER, identifierHandling); - }; - Tokenizer.prototype.skip = function (token, identifierHandling) { - if (identifierHandling === void 0) { identifierHandling = IdentifierHandling.DEFAULT; } - var posBefore = this.pos; - var tokenBefore = this.token; - var tokenPosBefore = this.tokenPos; - var maxCompoundLength = i32.MAX_VALUE; - switch (token) { - case Token.GREATERTHAN: { // where parsing type arguments - maxCompoundLength = 1; - break; - } - } - this.token = this.unsafeNext(identifierHandling, maxCompoundLength); - if (this.token == token) { - this.nextToken = -1; - return true; - } - else { - this.pos = posBefore; - this.token = tokenBefore; - this.tokenPos = tokenPosBefore; - return false; - } - }; - Tokenizer.prototype.mark = function () { - var state; - if (reusableState) { - state = reusableState; - reusableState = null; - } - else { - state = new State(); - } - state.pos = this.pos; - state.token = this.token; - state.tokenPos = this.tokenPos; - return state; - }; - Tokenizer.prototype.discard = function (state) { - reusableState = state; - }; - Tokenizer.prototype.reset = function (state) { - this.pos = state.pos; - this.token = state.token; - this.tokenPos = state.tokenPos; - this.nextToken = -1; - }; - Tokenizer.prototype.range = function (start, end) { - if (start === void 0) { start = -1; } - if (end === void 0) { end = -1; } - if (start < 0) { - start = this.tokenPos; - end = this.pos; - } - else if (end < 0) { - end = start; - } - return new Range(this.source, start, end); - }; - Tokenizer.prototype.readIdentifier = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - while (++this.pos < end && - util_1.isIdentifierPart(text.charCodeAt(this.pos))) - ; - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readString = function () { - var text = this.source.text; - var quote = text.charCodeAt(this.pos++); - var start = this.pos; - var end = this.end; - var result = ""; - while (true) { - if (this.pos >= end) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, end)); - break; - } - var c = text.charCodeAt(this.pos); - if (c == quote) { - result += text.substring(start, this.pos++); - break; - } - if (c == 92 /* BACKSLASH */) { - result += text.substring(start, this.pos); - result += this.readEscapeSequence(); - start = this.pos; - continue; - } - if (util_1.isLineBreak(c) && quote != 96 /* BACKTICK */) { - result += text.substring(start, this.pos); - this.error(diagnostics_1.DiagnosticCode.Unterminated_string_literal, this.range(start - 1, this.pos)); - break; - } - ++this.pos; - } - return result; - }; - Tokenizer.prototype.readEscapeSequence = function () { - var end = this.end; - if (++this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(end)); - return ""; - } - var text = this.source.text; - var c = text.charCodeAt(this.pos++); - switch (c) { - case 48 /* _0 */: return "\0"; - case 98 /* b */: return "\b"; - case 116 /* t */: return "\t"; - case 110 /* n */: return "\n"; - case 118 /* v */: return "\v"; - case 102 /* f */: return "\f"; - case 114 /* r */: return "\r"; - case 39 /* SINGLEQUOTE */: return "'"; - case 34 /* DOUBLEQUOTE */: return "\""; - case 117 /* u */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 123 /* OPENBRACE */) { - ++this.pos; - return this.readExtendedUnicodeEscape(); // \u{DDDDDDDD} - } - return this.readUnicodeEscape(); // \uDDDD - } - case 13 /* CARRIAGERETURN */: { - if (this.pos < end && - text.charCodeAt(this.pos) == 10 /* LINEFEED */) { - ++this.pos; - } - // fall through - } - case 10 /* LINEFEED */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: return ""; - default: return String.fromCharCode(c); - } - }; - Tokenizer.prototype.readRegexpPattern = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var escaped = false; - while (true) { - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, end)); - break; - } - if (text.charCodeAt(this.pos) == 92 /* BACKSLASH */) { - ++this.pos; - escaped = true; - continue; - } - var c = text.charCodeAt(this.pos); - if (!escaped && c == 47 /* SLASH */) - break; - if (util_1.isLineBreak(c)) { - this.error(diagnostics_1.DiagnosticCode.Unterminated_regular_expression_literal, this.range(start, this.pos)); - break; - } - ++this.pos; - escaped = false; - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.readRegexpFlags = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var flags = 0; - while (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (!util_1.isIdentifierPart(c)) - break; - ++this.pos; - // make sure each supported flag is unique - switch (c) { - case 103 /* g */: { - flags |= flags & 1 ? -1 : 1; - break; - } - case 105 /* i */: { - flags |= flags & 2 ? -1 : 2; - break; - } - case 109 /* m */: { - flags |= flags & 4 ? -1 : 4; - break; - } - default: { - flags = -1; - break; - } - } - } - if (flags == -1) { - this.error(diagnostics_1.DiagnosticCode.Invalid_regular_expression_flags, this.range(start, this.pos)); - } - return text.substring(start, this.pos); - }; - Tokenizer.prototype.testInteger = function () { - var end = this.end; - var text = this.source.text; - if (this.pos + 1 < end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 2)) { - case 120 /* x */: - case 88 /* X */: - case 98 /* b */: - case 66 /* B */: - case 111 /* o */: - case 79 /* O */: return true; - } - } - var pos = this.pos; - while (pos < end) { - var c = text.charCodeAt(pos); - if (c == 46 /* DOT */ || c == 101 /* e */ || c == 69 /* E */) - return false; - if ((c < 48 /* _0 */ || c > 57 /* _9 */) && c != 95 /* _ */) - break; - // does not validate separator placement (this is done in readXYInteger) - pos++; - } - return true; - }; - Tokenizer.prototype.readInteger = function () { - var text = this.source.text; - if (this.pos + 2 < this.end && text.charCodeAt(this.pos) == 48 /* _0 */) { - switch (text.charCodeAt(this.pos + 1)) { - case 120 /* x */: - case 88 /* X */: { - this.pos += 2; - return this.readHexInteger(); - } - case 98 /* b */: - case 66 /* B */: { - this.pos += 2; - return this.readBinaryInteger(); - } - case 111 /* o */: - case 79 /* O */: { - this.pos += 2; - return this.readOctalInteger(); - } - } - if (util_1.isOctalDigit(text.charCodeAt(this.pos + 1))) { - var start = this.pos; - ++this.pos; - var value = this.readOctalInteger(); - this.error(diagnostics_1.DiagnosticCode.Octal_literals_are_not_allowed_in_strict_mode, this.range(start, this.pos)); - return value; - } - } - return this.readDecimalInteger(); - }; - Tokenizer.prototype.readHexInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_4 = i64_new(4); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = (value << 4) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_4), i64_new(c - 48 /* _0 */)); - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - // value = (value << 4) + 10 + c - CharCode.A; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 65 /* A */)); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - // value = (value << 4) + 10 + c - CharCode.a; - value = i64_add(i64_shl(value, i64_4), i64_new(10 + c - 97 /* a */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readDecimalInteger = function () { - var text = this.source.text; - var start = this.pos; - var end = this.end; - var value = i64_new(0); - var i64_10 = i64_new(10); - var sepEnd = start; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - // value = value * 10 + c - CharCode._0; - value = i64_add(i64_mul(value, i64_10), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readOctalInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_3 = i64_new(3); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c >= 48 /* _0 */ && c <= 55 /* _7 */) { - // value = (value << 3) + c - CharCode._0; - value = i64_add(i64_shl(value, i64_3), i64_new(c - 48 /* _0 */)); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - ++this.pos; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Octal_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readBinaryInteger = function () { - var text = this.source.text; - var start = this.pos; - var value = i64_new(0); - var i64_1 = i64_new(1); - var sepEnd = start; - var end = this.end; - while (this.pos < end) { - var pos = this.pos; - var c = text.charCodeAt(pos); - if (c == 48 /* _0 */) { - // value = (value << 1); - value = i64_shl(value, i64_1); - } - else if (c == 49 /* _1 */) { - // value = (value << 1) + 1; - value = i64_add(i64_shl(value, i64_1), i64_1); - } - else if (c == 95 /* _ */) { - if (sepEnd == pos) { - this.error(sepEnd == start - ? diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here - : diagnostics_1.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted, this.range(pos)); - } - sepEnd = pos + 1; - } - else { - break; - } - this.pos = pos + 1; - } - if (this.pos == start) { - this.error(diagnostics_1.DiagnosticCode.Binary_digit_expected, this.range(start)); - } - else if (sepEnd == this.pos) { - this.error(diagnostics_1.DiagnosticCode.Numeric_separators_are_not_allowed_here, this.range(sepEnd - 1)); - } - return value; - }; - Tokenizer.prototype.readFloat = function () { - // var text = this.source.text; - // if (text.charCodeAt(this.pos) == CharCode._0 && this.pos + 2 < this.end) { - // switch (text.charCodeAt(this.pos + 1)) { - // case CharCode.X: - // case CharCode.x: { - // this.pos += 2; - // return this.readHexFloat(); - // } - // } - // } - return this.readDecimalFloat(); - }; - Tokenizer.prototype.readDecimalFloat = function () { - // TODO: numeric separators (parseFloat can't handle these) - var start = this.pos; - var end = this.end; - var text = this.source.text; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - if (this.pos < end && text.charCodeAt(this.pos) == 46 /* DOT */) { - ++this.pos; - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - if (this.pos < end) { - var c = text.charCodeAt(this.pos); - if (c == 101 /* e */ || c == 69 /* E */) { - if (++this.pos < end && - (c = text.charCodeAt(this.pos)) == 45 /* MINUS */ || c == 43 /* PLUS */ && - util_1.isDecimalDigit(text.charCodeAt(this.pos + 1))) { - ++this.pos; - } - while (this.pos < end && util_1.isDecimalDigit(text.charCodeAt(this.pos))) { - ++this.pos; - } - } - } - return parseFloat(text.substring(start, this.pos)); - }; - Tokenizer.prototype.readHexFloat = function () { - throw new Error("not implemented"); // TBD - }; - Tokenizer.prototype.readUnicodeEscape = function () { - var remain = 4; - var value = 0; - var end = this.end; - var text = this.source.text; - while (this.pos < end) { - var c = text.charCodeAt(this.pos++); - if (c >= 48 /* _0 */ && c <= 57 /* _9 */) { - value = (value << 4) + c - 48 /* _0 */; - } - else if (c >= 65 /* A */ && c <= 70 /* F */) { - value = (value << 4) + c + (10 - 65 /* A */); - } - else if (c >= 97 /* a */ && c <= 102 /* f */) { - value = (value << 4) + c + (10 - 97 /* a */); - } - else { - this.error(diagnostics_1.DiagnosticCode.Hexadecimal_digit_expected, this.range(this.pos - 1, this.pos)); - return ""; - } - if (--remain == 0) - break; - } - if (remain) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(this.pos)); - return ""; - } - return String.fromCharCode(value); - }; - Tokenizer.prototype.readExtendedUnicodeEscape = function () { - var start = this.pos; - var value = this.readHexInteger(); - var value32 = i64_low(value); - var invalid = false; - assert(!i64_high(value)); - if (value32 > 0x10FFFF) { - this.error(diagnostics_1.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive, this.range(start, this.pos)); - invalid = true; - } - var end = this.end; - var text = this.source.text; - if (this.pos >= end) { - this.error(diagnostics_1.DiagnosticCode.Unexpected_end_of_text, this.range(start, end)); - invalid = true; - } - else if (text.charCodeAt(this.pos) == 125 /* CLOSEBRACE */) { - ++this.pos; - } - else { - this.error(diagnostics_1.DiagnosticCode.Unterminated_Unicode_escape_sequence, this.range(start, this.pos)); - invalid = true; - } - if (invalid) - return ""; - return value32 < 65536 - ? String.fromCharCode(value32) - : String.fromCharCode(((value32 - 65536) >>> 10) + 0xD800, ((value32 - 65536) & 1023) + 0xDC00); - }; - Tokenizer.prototype.finish = function () { - }; - return Tokenizer; -}(diagnostics_1.DiagnosticEmitter)); -exports.Tokenizer = Tokenizer; -/** Tokenizer state as returned by {@link Tokenizer#mark} and consumed by {@link Tokenizer#reset}. */ -var State = /** @class */ (function () { - function State() { - } - return State; -}()); -exports.State = State; -// Reusable state object to reduce allocations -var reusableState = null; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rva2VuaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRyxDQUFBLEtBQUs7Ozs7Ozs7Ozs7Ozs7OztBQUVSLDZDQUl1QjtBQUV2Qiw2QkFHZTtBQUVmLCtCQVNnQjtBQUVoQix5QkFBeUI7QUFDekIsSUFBWSxLQXNJWDtBQXRJRCxXQUFZLEtBQUs7SUFFZixXQUFXO0lBQ1gsb0ZBQW9GO0lBRXBGLHlDQUFRLENBQUE7SUFDUiw2QkFBRSxDQUFBO0lBQ0YsbUNBQUssQ0FBQTtJQUNMLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsaUNBQUksQ0FBQTtJQUNKLG1DQUFLLENBQUE7SUFDTCxtQ0FBSyxDQUFBO0lBQ0wsbUNBQUssQ0FBQTtJQUNMLHlDQUFRLENBQUE7SUFDUixnREFBVyxDQUFBO0lBQ1gsMENBQVEsQ0FBQTtJQUNSLHdDQUFPLENBQUE7SUFDUCx3Q0FBTyxDQUFBO0lBQ1Asc0NBQU0sQ0FBQTtJQUNOLDhCQUFFLENBQUE7SUFDRixrQ0FBSSxDQUFBO0lBQ0osa0NBQUksQ0FBQTtJQUNKLHNDQUFNLENBQUE7SUFDTix3Q0FBTyxDQUFBO0lBQ1Asb0NBQUssQ0FBQTtJQUNMLHdDQUFPLENBQUE7SUFDUCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDBDQUFRLENBQUE7SUFDUixnQ0FBRyxDQUFBO0lBQ0gsOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDVixzQ0FBTSxDQUFBO0lBQ04sOEJBQUUsQ0FBQTtJQUNGLDhDQUFVLENBQUE7SUFDViw0Q0FBUyxDQUFBO0lBQ1QsOEJBQUUsQ0FBQTtJQUNGLG9DQUFLLENBQUE7SUFDTCxnQ0FBRyxDQUFBO0lBQ0gsc0NBQU0sQ0FBQTtJQUNOLDRDQUFTLENBQUE7SUFDVCxnQ0FBRyxDQUFBO0lBQ0gsa0NBQUksQ0FBQTtJQUNKLDhCQUFFLENBQUE7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QUM7SUFBRCxZQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7QUFQWSxzQkFBSztBQVNsQiw4Q0FBOEM7QUFDOUMsSUFBSSxhQUFhLEdBQWlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBUeXBlU2NyaXB0IHRva2VuaXplciBtb2RpZmllZCBmb3IgQXNzZW1ibHlTY3JpcHQuXG4gKlxuICogU2tpcHMgb3ZlciB0cml2aWEgYW5kIHByb3ZpZGVzIGEgZ2VuZXJhbCBtYXJrL3Jlc2V0IG1lY2hhbmlzbSBmb3IgdGhlIHBhcnNlciB0byB1dGlsaXplIG9uXG4gKiBhbWJpZ3VvdXMgdG9rZW5zLlxuICpcbiAqIEBtb2R1bGUgdG9rZW5pemVyXG4gKi8vKioqL1xuXG5pbXBvcnQge1xuICBEaWFnbm9zdGljQ29kZSxcbiAgRGlhZ25vc3RpY01lc3NhZ2UsXG4gIERpYWdub3N0aWNFbWl0dGVyXG59IGZyb20gXCIuL2RpYWdub3N0aWNzXCI7XG5cbmltcG9ydCB7XG4gIFNvdXJjZSxcbiAgQ29tbWVudEtpbmRcbn0gZnJvbSBcIi4vYXN0XCI7XG5cbmltcG9ydCB7XG4gIENoYXJDb2RlLFxuICBpc0xpbmVCcmVhayxcbiAgaXNXaGl0ZVNwYWNlLFxuICBpc0lkZW50aWZpZXJTdGFydCxcbiAgaXNJZGVudGlmaWVyUGFydCxcbiAgaXNEZWNpbWFsRGlnaXQsXG4gIGlzT2N0YWxEaWdpdCxcbiAgaXNLZXl3b3JkQ2hhcmFjdGVyXG59IGZyb20gXCIuL3V0aWxcIjtcblxuLyoqIE5hbWVkIHRva2VuIHR5cGVzLiAqL1xuZXhwb3J0IGVudW0gVG9rZW4ge1xuXG4gIC8vIGtleXdvcmRzXG4gIC8vIGRpc2NhcmRlZDogQU5ZLCBCT09MRUFOLCBORVZFUiwgTlVNQkVSLCBTVFJJTkcsIFNZTUJPTCwgVU5ERUZJTkVELCBMRVNTVEhBTl9TTEFTSFxuXG4gIEFCU1RSQUNULFxuICBBUyxcbiAgQVNZTkMsXG4gIEFXQUlULCAgICAgICAgLy8gRVMyMDE3XG4gIEJSRUFLLCAgICAgICAgLy8gRVMyMDE3XG4gIENBU0UsICAgICAgICAgLy8gRVMyMDE3XG4gIENBVENILCAgICAgICAgLy8gRVMyMDE3XG4gIENMQVNTLCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlNULCAgICAgICAgLy8gRVMyMDE3XG4gIENPTlRJTlVFLCAgICAgLy8gRVMyMDE3XG4gIENPTlNUUlVDVE9SLFxuICBERUJVR0dFUiwgICAgIC8vIEVTMjAxN1xuICBERUNMQVJFLFxuICBERUZBVUxULCAgICAgIC8vIEVTMjAxN1xuICBERUxFVEUsICAgICAgIC8vIEVTMjAxN1xuICBETywgICAgICAgICAgIC8vIEVTMjAxN1xuICBFTFNFLCAgICAgICAgIC8vIEVTMjAxN1xuICBFTlVNLCAgICAgICAgIC8vIEVTMjAxNyBmdXR1cmVcbiAgRVhQT1JULCAgICAgICAvLyBFUzIwMTdcbiAgRVhURU5EUywgICAgICAvLyBFUzIwMTdcbiAgRkFMU0UsICAgICAgICAvLyBFU1xuICBGSU5BTExZLCAgICAgIC8vIEVTMjAxN1xuICBGT1IsICAgICAgICAgIC8vIEVTMjAxN1xuICBGUk9NLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgRlVOQ1RJT04sICAgICAvLyBFUzIwMTdcbiAgR0VULFxuICBJRiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTVBMRU1FTlRTLCAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJTVBPUlQsICAgICAgIC8vIEVTMjAxN1xuICBJTiwgICAgICAgICAgIC8vIEVTMjAxN1xuICBJTlNUQU5DRU9GLCAgIC8vIEVTMjAxN1xuICBJTlRFUkZBQ0UsICAgIC8vIEVTMjAxNyBub24tbGV4aWNhbFxuICBJUyxcbiAgS0VZT0YsXG4gIExFVCwgICAgICAgICAgLy8gRVMyMDE3IG5vbi1sZXhpY2FsXG4gIE1PRFVMRSwgICAgICAgLy8gQVMgcG9zc2libGUgaWRlbnRpZmllclxuICBOQU1FU1BBQ0UsICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgTkVXLCAgICAgICAgICAvLyBFUzIwMTdcbiAgTlVMTCwgICAgICAgICAvLyBFU1xuICBPRixcbiAgUEFDS0FHRSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJJVkFURSwgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFJPVEVDVEVELCAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUFVCTElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgUkVBRE9OTFksXG4gIFJFVFVSTiwgICAgICAgLy8gRVMyMDE3XG4gIFNFVCxcbiAgU1RBVElDLCAgICAgICAvLyBFUzIwMTcgbm9uLWxleGljYWxcbiAgU1VQRVIsICAgICAgICAvLyBFUzIwMTdcbiAgU1dJVENILCAgICAgICAvLyBFUzIwMTdcbiAgVEhJUywgICAgICAgICAvLyBFUzIwMTdcbiAgVEhST1csICAgICAgICAvLyBFUzIwMTdcbiAgVFJVRSwgICAgICAgICAvLyBFU1xuICBUUlksICAgICAgICAgIC8vIEVTMjAxN1xuICBUWVBFLCAgICAgICAgIC8vIEFTIHBvc3NpYmxlIGlkZW50aWZpZXJcbiAgVFlQRU9GLCAgICAgICAvLyBFUzIwMTdcbiAgVkFSLCAgICAgICAgICAvLyBFUzIwMTdcbiAgVk9JRCwgICAgICAgICAvLyBFUzIwMTdcbiAgV0hJTEUsICAgICAgICAvLyBFUzIwMTdcbiAgV0lUSCwgICAgICAgICAvLyBFUzIwMTdcbiAgWUlFTEQsICAgICAgICAvLyBFUzIwMTdcblxuICAvLyBwdW5jdHVhdGlvblxuXG4gIE9QRU5CUkFDRSxcbiAgQ0xPU0VCUkFDRSxcbiAgT1BFTlBBUkVOLFxuICBDTE9TRVBBUkVOLFxuICBPUEVOQlJBQ0tFVCxcbiAgQ0xPU0VCUkFDS0VULFxuICBET1QsXG4gIERPVF9ET1RfRE9ULFxuICBTRU1JQ09MT04sXG4gIENPTU1BLFxuICBMRVNTVEhBTixcbiAgR1JFQVRFUlRIQU4sXG4gIExFU1NUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBFUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFMsXG4gIEVRVUFMU19FUVVBTFNfRVFVQUxTLFxuICBFWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTLFxuICBFUVVBTFNfR1JFQVRFUlRIQU4sXG4gIFBMVVMsXG4gIE1JTlVTLFxuICBBU1RFUklTS19BU1RFUklTSyxcbiAgQVNURVJJU0ssXG4gIFNMQVNILFxuICBQRVJDRU5ULFxuICBQTFVTX1BMVVMsXG4gIE1JTlVTX01JTlVTLFxuICBMRVNTVEhBTl9MRVNTVEhBTixcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU4sXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOLFxuICBBTVBFUlNBTkQsXG4gIEJBUixcbiAgQ0FSRVQsXG4gIEVYQ0xBTUFUSU9OLFxuICBUSUxERSxcbiAgQU1QRVJTQU5EX0FNUEVSU0FORCxcbiAgQkFSX0JBUixcbiAgUVVFU1RJT04sXG4gIENPTE9OLFxuICBFUVVBTFMsXG4gIFBMVVNfRVFVQUxTLFxuICBNSU5VU19FUVVBTFMsXG4gIEFTVEVSSVNLX0VRVUFMUyxcbiAgQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTLFxuICBTTEFTSF9FUVVBTFMsXG4gIFBFUkNFTlRfRVFVQUxTLFxuICBMRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFMsXG4gIEdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUyxcbiAgR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTLFxuICBBTVBFUlNBTkRfRVFVQUxTLFxuICBCQVJfRVFVQUxTLFxuICBDQVJFVF9FUVVBTFMsXG4gIEFULFxuXG4gIC8vIGxpdGVyYWxzXG5cbiAgSURFTlRJRklFUixcbiAgU1RSSU5HTElURVJBTCxcbiAgSU5URUdFUkxJVEVSQUwsXG4gIEZMT0FUTElURVJBTCxcblxuICAvLyBtZXRhXG5cbiAgSU5WQUxJRCxcbiAgRU5ET0ZGSUxFXG59XG5cbmV4cG9ydCBlbnVtIElkZW50aWZpZXJIYW5kbGluZyB7XG4gIERFRkFVTFQsXG4gIFBSRUZFUixcbiAgQUxXQVlTXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbkZyb21LZXl3b3JkKHRleHQ6IHN0cmluZyk6IFRva2VuIHtcbiAgYXNzZXJ0KHRleHQubGVuZ3RoKTtcbiAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmE6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiYWJzdHJhY3RcIjogcmV0dXJuIFRva2VuLkFCU1RSQUNUO1xuICAgICAgICBjYXNlIFwiYXNcIjogcmV0dXJuIFRva2VuLkFTO1xuICAgICAgICBjYXNlIFwiYXN5bmNcIjogcmV0dXJuIFRva2VuLkFTWU5DO1xuICAgICAgICBjYXNlIFwiYXdhaXRcIjogcmV0dXJuIFRva2VuLkFXQUlUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuYjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJicmVha1wiOiByZXR1cm4gVG9rZW4uQlJFQUs7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5jOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImNhc2VcIjogcmV0dXJuIFRva2VuLkNBU0U7XG4gICAgICAgIGNhc2UgXCJjYXRjaFwiOiByZXR1cm4gVG9rZW4uQ0FUQ0g7XG4gICAgICAgIGNhc2UgXCJjbGFzc1wiOiByZXR1cm4gVG9rZW4uQ0xBU1M7XG4gICAgICAgIGNhc2UgXCJjb250aW51ZVwiOiByZXR1cm4gVG9rZW4uQ09OVElOVUU7XG4gICAgICAgIGNhc2UgXCJjb25zdFwiOiByZXR1cm4gVG9rZW4uQ09OU1Q7XG4gICAgICAgIGNhc2UgXCJjb25zdHJ1Y3RvclwiOiByZXR1cm4gVG9rZW4uQ09OU1RSVUNUT1I7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5kOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImRlYnVnZ2VyXCI6IHJldHVybiBUb2tlbi5ERUJVR0dFUjtcbiAgICAgICAgY2FzZSBcImRlY2xhcmVcIjogcmV0dXJuIFRva2VuLkRFQ0xBUkU7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHJldHVybiBUb2tlbi5ERUZBVUxUO1xuICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHJldHVybiBUb2tlbi5ERUxFVEU7XG4gICAgICAgIGNhc2UgXCJkb1wiOiByZXR1cm4gVG9rZW4uRE87XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5lOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImVsc2VcIjogcmV0dXJuIFRva2VuLkVMU0U7XG4gICAgICAgIGNhc2UgXCJlbnVtXCI6IHJldHVybiBUb2tlbi5FTlVNO1xuICAgICAgICBjYXNlIFwiZXhwb3J0XCI6IHJldHVybiBUb2tlbi5FWFBPUlQ7XG4gICAgICAgIGNhc2UgXCJleHRlbmRzXCI6IHJldHVybiBUb2tlbi5FWFRFTkRTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJmYWxzZVwiOiByZXR1cm4gVG9rZW4uRkFMU0U7XG4gICAgICAgIGNhc2UgXCJmaW5hbGx5XCI6IHJldHVybiBUb2tlbi5GSU5BTExZO1xuICAgICAgICBjYXNlIFwiZm9yXCI6IHJldHVybiBUb2tlbi5GT1I7XG4gICAgICAgIGNhc2UgXCJmcm9tXCI6IHJldHVybiBUb2tlbi5GUk9NO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogcmV0dXJuIFRva2VuLkZVTkNUSU9OO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuZzoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJnZXRcIjogcmV0dXJuIFRva2VuLkdFVDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLmk6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwiaWZcIjogcmV0dXJuIFRva2VuLklGO1xuICAgICAgICBjYXNlIFwiaW1wbGVtZW50c1wiOiByZXR1cm4gVG9rZW4uSU1QTEVNRU5UUztcbiAgICAgICAgY2FzZSBcImltcG9ydFwiOiByZXR1cm4gVG9rZW4uSU1QT1JUO1xuICAgICAgICBjYXNlIFwiaW5cIjogcmV0dXJuIFRva2VuLklOO1xuICAgICAgICBjYXNlIFwiaW5zdGFuY2VvZlwiOiByZXR1cm4gVG9rZW4uSU5TVEFOQ0VPRjtcbiAgICAgICAgY2FzZSBcImludGVyZmFjZVwiOiByZXR1cm4gVG9rZW4uSU5URVJGQUNFO1xuICAgICAgICBjYXNlIFwiaXNcIjogcmV0dXJuIFRva2VuLklTO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUuazoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJrZXlvZlwiOiByZXR1cm4gVG9rZW4uS0VZT0Y7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5sOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcImxldFwiOiByZXR1cm4gVG9rZW4uTEVUO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUubToge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJtb2R1bGVcIjogcmV0dXJuIFRva2VuLk1PRFVMRTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLm46IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwibmFtZXNwYWNlXCI6IHJldHVybiBUb2tlbi5OQU1FU1BBQ0U7XG4gICAgICAgIGNhc2UgXCJuZXdcIjogcmV0dXJuIFRva2VuLk5FVztcbiAgICAgICAgY2FzZSBcIm51bGxcIjogcmV0dXJuIFRva2VuLk5VTEw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS5vOiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIm9mXCI6IHJldHVybiBUb2tlbi5PRjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnA6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwicGFja2FnZVwiOiByZXR1cm4gVG9rZW4uUEFDS0FHRTtcbiAgICAgICAgY2FzZSBcInByaXZhdGVcIjogcmV0dXJuIFRva2VuLlBSSVZBVEU7XG4gICAgICAgIGNhc2UgXCJwcm90ZWN0ZWRcIjogcmV0dXJuIFRva2VuLlBST1RFQ1RFRDtcbiAgICAgICAgY2FzZSBcInB1YmxpY1wiOiByZXR1cm4gVG9rZW4uUFVCTElDO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUucjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkb25seVwiOiByZXR1cm4gVG9rZW4uUkVBRE9OTFk7XG4gICAgICAgIGNhc2UgXCJyZXR1cm5cIjogcmV0dXJuIFRva2VuLlJFVFVSTjtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIENoYXJDb2RlLnM6IHtcbiAgICAgIHN3aXRjaCAodGV4dCkge1xuICAgICAgICBjYXNlIFwic2V0XCI6IHJldHVybiBUb2tlbi5TRVQ7XG4gICAgICAgIGNhc2UgXCJzdGF0aWNcIjogcmV0dXJuIFRva2VuLlNUQVRJQztcbiAgICAgICAgY2FzZSBcInN1cGVyXCI6IHJldHVybiBUb2tlbi5TVVBFUjtcbiAgICAgICAgY2FzZSBcInN3aXRjaFwiOiByZXR1cm4gVG9rZW4uU1dJVENIO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudDoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ0aGlzXCI6IHJldHVybiBUb2tlbi5USElTO1xuICAgICAgICBjYXNlIFwidGhyb3dcIjogcmV0dXJuIFRva2VuLlRIUk9XO1xuICAgICAgICBjYXNlIFwidHJ1ZVwiOiByZXR1cm4gVG9rZW4uVFJVRTtcbiAgICAgICAgY2FzZSBcInRyeVwiOiByZXR1cm4gVG9rZW4uVFJZO1xuICAgICAgICBjYXNlIFwidHlwZVwiOiByZXR1cm4gVG9rZW4uVFlQRTtcbiAgICAgICAgY2FzZSBcInR5cGVvZlwiOiByZXR1cm4gVG9rZW4uVFlQRU9GO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgQ2hhckNvZGUudjoge1xuICAgICAgc3dpdGNoICh0ZXh0KSB7XG4gICAgICAgIGNhc2UgXCJ2YXJcIjogcmV0dXJuIFRva2VuLlZBUjtcbiAgICAgICAgY2FzZSBcInZvaWRcIjogcmV0dXJuIFRva2VuLlZPSUQ7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS53OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcIndoaWxlXCI6IHJldHVybiBUb2tlbi5XSElMRTtcbiAgICAgICAgY2FzZSBcIndpdGhcIjogcmV0dXJuIFRva2VuLldJVEg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBDaGFyQ29kZS55OiB7XG4gICAgICBzd2l0Y2ggKHRleHQpIHtcbiAgICAgICAgY2FzZSBcInlpZWxkXCI6IHJldHVybiBUb2tlbi5ZSUVMRDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVG9rZW4uSU5WQUxJRDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2VuSXNBbHNvSWRlbnRpZmllcih0b2tlbjogVG9rZW4pOiBib29sIHtcbiAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgVG9rZW4uQUJTVFJBQ1Q6XG4gICAgY2FzZSBUb2tlbi5BUzpcbiAgICBjYXNlIFRva2VuLkNPTlNUUlVDVE9SOlxuICAgIGNhc2UgVG9rZW4uREVDTEFSRTpcbiAgICBjYXNlIFRva2VuLkRFTEVURTpcbiAgICBjYXNlIFRva2VuLkZST006XG4gICAgY2FzZSBUb2tlbi5GT1I6XG4gICAgY2FzZSBUb2tlbi5HRVQ6XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOlxuICAgIGNhc2UgVG9rZW4uSVM6XG4gICAgY2FzZSBUb2tlbi5LRVlPRjpcbiAgICBjYXNlIFRva2VuLk1PRFVMRTpcbiAgICBjYXNlIFRva2VuLk5BTUVTUEFDRTpcbiAgICBjYXNlIFRva2VuLk5VTEw6XG4gICAgY2FzZSBUb2tlbi5SRUFET05MWTpcbiAgICBjYXNlIFRva2VuLlNFVDpcbiAgICBjYXNlIFRva2VuLlRZUEU6XG4gICAgY2FzZSBUb2tlbi5WT0lEOiByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWxsZWdhbFZhcmlhYmxlSWRlbnRpZmllcihuYW1lOiBzdHJpbmcpOiBib29sIHtcbiAgYXNzZXJ0KG5hbWUubGVuZ3RoKTtcbiAgc3dpdGNoIChuYW1lLmNoYXJDb2RlQXQoMCkpIHtcbiAgICBjYXNlIENoYXJDb2RlLmQ6IHJldHVybiBuYW1lID09IFwiZGVsZXRlXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5mOiByZXR1cm4gbmFtZSA9PSBcImZvclwiO1xuICAgIGNhc2UgQ2hhckNvZGUuaTogcmV0dXJuIG5hbWUgPT0gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gbmFtZSA9PSBcIm51bGxcIjtcbiAgICBjYXNlIENoYXJDb2RlLnY6IHJldHVybiBuYW1lID09IFwidm9pZFwiO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZXJhdG9yVG9rZW5Ub1N0cmluZyh0b2tlbjogVG9rZW4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgY2FzZSBUb2tlbi5ERUxFVEU6IHJldHVybiBcImRlbGV0ZVwiO1xuICAgIGNhc2UgVG9rZW4uSU46IHJldHVybiBcImluXCI7XG4gICAgY2FzZSBUb2tlbi5JTlNUQU5DRU9GOiByZXR1cm4gXCJpbnN0YW5jZW9mXCI7XG4gICAgY2FzZSBUb2tlbi5ORVc6IHJldHVybiBcIm5ld1wiO1xuICAgIGNhc2UgVG9rZW4uVFlQRU9GOiByZXR1cm4gXCJ0eXBlb2ZcIjtcbiAgICBjYXNlIFRva2VuLlZPSUQ6IHJldHVybiBcInZvaWRcIjtcbiAgICBjYXNlIFRva2VuLllJRUxEOiByZXR1cm4gXCJ5aWVsZFwiO1xuICAgIGNhc2UgVG9rZW4uRE9UX0RPVF9ET1Q6IHJldHVybiBcIi4uLlwiO1xuICAgIGNhc2UgVG9rZW4uQ09NTUE6IHJldHVybiBcIixcIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOOiByZXR1cm4gXCI8XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogcmV0dXJuIFwiPlwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PVwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fRVFVQUxTOiByZXR1cm4gXCI+PVwiO1xuICAgIGNhc2UgVG9rZW4uRVFVQUxTX0VRVUFMUzogcmV0dXJuIFwiPT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUzogcmV0dXJuIFwiIT1cIjtcbiAgICBjYXNlIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTOiByZXR1cm4gXCI9PT1cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMU19FUVVBTFM6IHJldHVybiBcIiE9PVwiO1xuICAgIGNhc2UgVG9rZW4uUExVUzogcmV0dXJuIFwiK1wiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVM6IHJldHVybiBcIi1cIjtcbiAgICBjYXNlIFRva2VuLkFTVEVSSVNLX0FTVEVSSVNLOiByZXR1cm4gXCIqKlwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0s6IHJldHVybiBcIipcIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIOiByZXR1cm4gXCIvXCI7XG4gICAgY2FzZSBUb2tlbi5QRVJDRU5UOiByZXR1cm4gXCIlXCI7XG4gICAgY2FzZSBUb2tlbi5QTFVTX1BMVVM6IHJldHVybiBcIisrXCI7XG4gICAgY2FzZSBUb2tlbi5NSU5VU19NSU5VUzogcmV0dXJuIFwiLS1cIjtcbiAgICBjYXNlIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOOiByZXR1cm4gXCI8PFwiO1xuICAgIGNhc2UgVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU46IHJldHVybiBcIj4+XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjogcmV0dXJuIFwiPj4+XCI7XG4gICAgY2FzZSBUb2tlbi5BTVBFUlNBTkQ6IHJldHVybiBcIiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUjogcmV0dXJuIFwifFwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVQ6IHJldHVybiBcIl5cIjtcbiAgICBjYXNlIFRva2VuLkVYQ0xBTUFUSU9OOiByZXR1cm4gXCIhXCI7XG4gICAgY2FzZSBUb2tlbi5USUxERTogcmV0dXJuIFwiflwiO1xuICAgIGNhc2UgVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDogcmV0dXJuIFwiJiZcIjtcbiAgICBjYXNlIFRva2VuLkJBUl9CQVI6IHJldHVybiBcInx8XCI7XG4gICAgY2FzZSBUb2tlbi5FUVVBTFM6IHJldHVybiBcIj1cIjtcbiAgICBjYXNlIFRva2VuLlBMVVNfRVFVQUxTOiByZXR1cm4gXCIrPVwiO1xuICAgIGNhc2UgVG9rZW4uTUlOVVNfRVFVQUxTOiByZXR1cm4gXCItPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqPVwiO1xuICAgIGNhc2UgVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTOiByZXR1cm4gXCIqKj1cIjtcbiAgICBjYXNlIFRva2VuLlNMQVNIX0VRVUFMUzogcmV0dXJuIFwiLz1cIjtcbiAgICBjYXNlIFRva2VuLlBFUkNFTlRfRVFVQUxTOiByZXR1cm4gXCIlPVwiO1xuICAgIGNhc2UgVG9rZW4uTEVTU1RIQU5fTEVTU1RIQU5fRVFVQUxTOiByZXR1cm4gXCI8PD1cIjtcbiAgICBjYXNlIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0VRVUFMUzogcmV0dXJuIFwiPj49XCI7XG4gICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM6IHJldHVybiBcIj4+Pj1cIjtcbiAgICBjYXNlIFRva2VuLkFNUEVSU0FORF9FUVVBTFM6IHJldHVybiBcIiY9XCI7XG4gICAgY2FzZSBUb2tlbi5CQVJfRVFVQUxTOiByZXR1cm4gXCJ8PVwiO1xuICAgIGNhc2UgVG9rZW4uQ0FSRVRfRVFVQUxTOiByZXR1cm4gXCJePVwiO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydChmYWxzZSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhbmdlIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgc3RhcnQ6IGkzMjtcbiAgZW5kOiBpMzI7XG5cbiAgLy8gVE9ETzogc2V0IHRoZXNlIHdoaWxlIHRva2VuaXppbmdcbiAgLy8gbGluZTogaTMyO1xuICAvLyBjb2x1bW46IGkzMjtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgc3RhcnQ6IGkzMiwgZW5kOiBpMzIpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cblxuICBzdGF0aWMgam9pbihhOiBSYW5nZSwgYjogUmFuZ2UpOiBSYW5nZSB7XG4gICAgaWYgKGEuc291cmNlICE9IGIuc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2UgbWlzbWF0Y2hcIik7XG4gICAgcmV0dXJuIG5ldyBSYW5nZShhLnNvdXJjZSxcbiAgICAgIGEuc3RhcnQgPCBiLnN0YXJ0ID8gYS5zdGFydCA6IGIuc3RhcnQsXG4gICAgICBhLmVuZCA+IGIuZW5kID8gYS5lbmQgOiBiLmVuZFxuICAgICk7XG4gIH1cblxuICBnZXQgYXRTdGFydCgpOiBSYW5nZSB7XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgdGhpcy5zdGFydCwgdGhpcy5zdGFydCk7XG4gIH1cblxuICBnZXQgYXRFbmQoKTogUmFuZ2Uge1xuICAgIHJldHVybiBuZXcgUmFuZ2UodGhpcy5zb3VyY2UsIHRoaXMuZW5kLCB0aGlzLmVuZCk7XG4gIH1cblxuICBnZXQgbGluZSgpOiBpMzIge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgbGluZSA9IDE7XG4gICAgZm9yIChsZXQgcG9zID0gdGhpcy5zdGFydDsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuTElORUZFRUQpIGxpbmUrKztcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBnZXQgY29sdW1uKCk6IGkzMiB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBjb2x1bW4gPSAwO1xuICAgIGZvciAobGV0IHBvcyA9IHRoaXMuc3RhcnQgLSAxOyBwb3MgPj0gMDsgLS1wb3MpIHtcbiAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQocG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRCkgYnJlYWs7XG4gICAgICArK2NvbHVtbjtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnRleHQuc3Vic3RyaW5nKHRoaXMuc3RhcnQsIHRoaXMuZW5kKTtcbiAgfVxuXG4gIGRlYnVnSW5mb1JlZjogdXNpemUgPSAwO1xufVxuXG5kZWNsYXJlIGZ1bmN0aW9uIHBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBmNjQ7XG5cbi8qKiBIYW5kbGVyIGZvciBpbnRlcmNlcHRpbmcgY29tbWVudHMgd2hpbGUgdG9rZW5pemluZy4gKi9cbmV4cG9ydCB0eXBlIENvbW1lbnRIYW5kbGVyID0gKGtpbmQ6IENvbW1lbnRLaW5kLCB0ZXh0OiBzdHJpbmcsIHJhbmdlOiBSYW5nZSkgPT4gdm9pZDtcblxuLyoqIFRva2VuaXplcyBhIHNvdXJjZSB0byBpbmRpdmlkdWFsIHtAbGluayBUb2tlbn1zLiAqL1xuZXhwb3J0IGNsYXNzIFRva2VuaXplciBleHRlbmRzIERpYWdub3N0aWNFbWl0dGVyIHtcblxuICBzb3VyY2U6IFNvdXJjZTtcbiAgZW5kOiBpMzIgPSAwO1xuXG4gIHBvczogaTMyID0gMDtcbiAgdG9rZW46IFRva2VuID0gLTE7XG4gIHRva2VuUG9zOiBpMzIgPSAwO1xuXG4gIG5leHRUb2tlbjogVG9rZW4gPSAtMTtcbiAgbmV4dFRva2VuUG9zOiBpMzIgPSAwO1xuICBuZXh0VG9rZW5Pbk5ld0xpbmU6IGJvb2wgPSBmYWxzZTtcblxuICBvbkNvbW1lbnQ6IENvbW1lbnRIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIENvbnN0cnVjdHMgYSBuZXcgdG9rZW5pemVyLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IFNvdXJjZSwgZGlhZ25vc3RpY3M6IERpYWdub3N0aWNNZXNzYWdlW10gfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKGRpYWdub3N0aWNzKTtcblxuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMucG9zID0gMDtcbiAgICB0aGlzLmVuZCA9IHNvdXJjZS50ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLmRpYWdub3N0aWNzID0gZGlhZ25vc3RpY3MgfHwgbmV3IEFycmF5KCk7XG5cbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSBzb3VyY2UudGV4dDtcblxuICAgIC8vIHNraXAgYm9tXG4gICAgaWYgKFxuICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuQllURU9SREVSTUFSS1xuICAgICkge1xuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG5cbiAgICAvLyBza2lwIHNoZWJhbmdcbiAgICBpZiAoXG4gICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuSEFTSCAmJlxuICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuRVhDTEFNQVRJT05cbiAgICApIHtcbiAgICAgIHRoaXMucG9zICs9IDI7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgIT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICkge1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgfVxuICAgICAgLy8gJ25leHQnIG5vdyBzdGFydHMgYXQgbGYgb3IgZW9mXG4gICAgfVxuICB9XG5cbiAgbmV4dChpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxUKTogVG9rZW4ge1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zYWZlTmV4dChcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heFRva2VuTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgdGhpcy50b2tlblBvcyA9IHRoaXMucG9zO1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgICBpZiAoIShcbiAgICAgICAgICAgICsrdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuTElORUZFRURcbiAgICAgICAgICApKSBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UgZmFsbC10aHJvdWdoXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVkVSVElDQUxUQUI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU1BBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVhDTEFNQVRJT046IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FWENMQU1BVElPTl9FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OX0VRVUFMUztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkVYQ0xBTUFUSU9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQkFDS1RJQ0s6IHsgLy8gVE9ET1xuICAgICAgICAgIHJldHVybiBUb2tlbi5TVFJJTkdMSVRFUkFMOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkU3RyaW5nXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5QRVJDRU5UOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBFUkNFTlRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uUEVSQ0VOVDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFNUEVSU0FORDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkFNUEVSU0FORCkge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EX0FNUEVSU0FORDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BTVBFUlNBTkRfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQU1QRVJTQU5EO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuT1BFTlBBUkVOOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uT1BFTlBBUkVOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VQQVJFTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNMT1NFUEFSRU47XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5BU1RFUklTSzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQVNURVJJU0tfQVNURVJJU0tfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5BU1RFUklTS19BU1RFUklTSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkFTVEVSSVNLO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuUExVUzoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgaWYgKG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgbGV0IGNociA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLlBMVVMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVNfUExVUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5QTFVTX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLlBMVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT01NQToge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTU1BO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTUlOVVM6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5NSU5VUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfTUlOVVM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uTUlOVVM7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5ET1Q6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNocikpIHtcbiAgICAgICAgICAgICAgLS10aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkZMT0FUTElURVJBTDsgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMiAmJiB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgY2hyID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MgKyAxKSA9PSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRE9UX0RPVF9ET1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5ET1Q7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TTEFTSDoge1xuICAgICAgICAgIGxldCBjb21tZW50U3RhcnRQb3MgPSB0aGlzLnBvcztcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5TTEFTSCkgeyAvLyBzaW5nbGUtbGluZVxuICAgICAgICAgICAgICBsZXQgY29tbWVudEtpbmQgPSBDb21tZW50S2luZC5MSU5FO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgKyAxIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkgPT0gQ2hhckNvZGUuU0xBU0hcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICBjb21tZW50S2luZCA9IENvbW1lbnRLaW5kLlRSSVBMRTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoKyt0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkxJTkVGRUVEKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9uQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21tZW50KFxuICAgICAgICAgICAgICAgICAgY29tbWVudEtpbmQsXG4gICAgICAgICAgICAgICAgICB0ZXh0LnN1YnN0cmluZyhjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UoY29tbWVudFN0YXJ0UG9zLCB0aGlzLnBvcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5BU1RFUklTSykgeyAvLyBtdWx0aS1saW5lXG4gICAgICAgICAgICAgIGxldCBjbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgd2hpbGUgKCsrdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjID09IENoYXJDb2RlLkFTVEVSSVNLICYmXG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArIDEgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpID09IENoYXJDb2RlLlNMQVNIXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5fMF9leHBlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MpLCBcIiovXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub25Db21tZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQoXG4gICAgICAgICAgICAgICAgICBDb21tZW50S2luZC5CTE9DSyxcbiAgICAgICAgICAgICAgICAgIHRleHQuc3Vic3RyaW5nKGNvbW1lbnRTdGFydFBvcywgdGhpcy5wb3MpLFxuICAgICAgICAgICAgICAgICAgdGhpcy5yYW5nZShjb21tZW50U3RhcnRQb3MsIHRoaXMucG9zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0hfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0xBU0g7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fMzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNTpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fNzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fODpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5fOToge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRlc3RJbnRlZ2VyKClcbiAgICAgICAgICAgID8gVG9rZW4uSU5URUdFUkxJVEVSQUwgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEludGVnZXJcbiAgICAgICAgICAgIDogVG9rZW4uRkxPQVRMSVRFUkFMOyAgLy8gZXhwZWN0cyBhIGNhbGwgdG8gcmVhZEZsb2F0XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DT0xPTjoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuU0VNSUNPTE9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uU0VNSUNPTE9OO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTEVTU1RIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5MRVNTVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbWF4VG9rZW5MZW5ndGggPiAyICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLkVRVUFMU1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5MRVNTVEhBTl9MRVNTVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0xFU1NUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5FUVVBTFMpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkxFU1NUSEFOO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRVFVQUxTOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAxICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICBsZXQgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDIgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgICAgIHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuRVFVQUxTXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkVRVUFMU19FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5FUVVBTFNfRVFVQUxTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uRVFVQUxTO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuR1JFQVRFUlRIQU46IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5HUkVBVEVSVEhBTikge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICBpZiAobWF4VG9rZW5MZW5ndGggPiAyICYmIHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICAgICAgICAgICAgY2hyID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkdSRUFURVJUSEFOKSB7XG4gICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBtYXhUb2tlbkxlbmd0aCA+IDMgJiYgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fR1JFQVRFUlRIQU5fRVFVQUxTO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkdSRUFURVJUSEFOX0dSRUFURVJUSEFOX0dSRUFURVJUSEFOO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9HUkVBVEVSVEhBTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaHIgPT0gQ2hhckNvZGUuRVFVQUxTKSB7XG4gICAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTl9FUVVBTFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBUb2tlbi5HUkVBVEVSVEhBTjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlFVRVNUSU9OOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uUVVFU1RJT047XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0tFVDoge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLk9QRU5CUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0xPU0VCUkFDS0VUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0xPU0VCUkFDS0VUO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSRVQ6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1heFRva2VuTGVuZ3RoID4gMSAmJiB0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5FUVVBTFNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVRfRVFVQUxTO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gVG9rZW4uQ0FSRVQ7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5PUEVOQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5PUEVOQlJBQ0U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQVI6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIGlmIChtYXhUb2tlbkxlbmd0aCA+IDEgJiYgdGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgICAgICAgIGxldCBjaHIgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAgICAgaWYgKGNociA9PSBDaGFyQ29kZS5CQVIpIHtcbiAgICAgICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLkJBUl9CQVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09IENoYXJDb2RlLkVRVUFMUykge1xuICAgICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgICByZXR1cm4gVG9rZW4uQkFSX0VRVUFMUztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFRva2VuLkJBUjtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkNMT1NFQlJBQ0U6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5DTE9TRUJSQUNFO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuVElMREU6IHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiBUb2tlbi5USUxERTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkFUOiB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgICByZXR1cm4gVG9rZW4uQVQ7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChjKSkge1xuICAgICAgICAgICAgaWYgKGlzS2V5d29yZENoYXJhY3RlcihjKSkge1xuICAgICAgICAgICAgICBsZXQgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICArK3RoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgICAgICAgaXNJZGVudGlmaWVyUGFydChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0tleXdvcmRDaGFyYWN0ZXIoYykpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0gcG9zQmVmb3JlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva2VuLklERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBrZXl3b3JkVGV4dCA9IHRleHQuc3Vic3RyaW5nKHBvc0JlZm9yZSwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgICBsZXQga2V5d29yZFRva2VuID0gdG9rZW5Gcm9tS2V5d29yZChrZXl3b3JkVGV4dCk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBrZXl3b3JkVG9rZW4gIT09IFRva2VuLklOVkFMSUQgJiZcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVySGFuZGxpbmcgIT09IElkZW50aWZpZXJIYW5kbGluZy5BTFdBWVMgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgaWRlbnRpZmllckhhbmRsaW5nID09PSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSICYmXG4gICAgICAgICAgICAgICAgICB0b2tlbklzQWxzb0lkZW50aWZpZXIoa2V5d29yZFRva2VuKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleXdvcmRUb2tlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUb2tlbi5JREVOVElGSUVSOyAvLyBleHBlY3RzIGEgY2FsbCB0byByZWFkSWRlbnRpZmllclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNXaGl0ZVNwYWNlKGMpKSB7XG4gICAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX2NoYXJhY3RlcixcbiAgICAgICAgICAgIHRoaXMucmFuZ2UodGhpcy5wb3MsIHRoaXMucG9zICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgICAgcmV0dXJuIFRva2VuLklOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFRva2VuLkVORE9GRklMRTtcbiAgfVxuXG4gIHBlZWsoXG4gICAgY2hlY2tPbk5ld0xpbmU6IGJvb2wgPSBmYWxzZSxcbiAgICBpZGVudGlmaWVySGFuZGxpbmc6IElkZW50aWZpZXJIYW5kbGluZyA9IElkZW50aWZpZXJIYW5kbGluZy5ERUZBVUxULFxuICAgIG1heENvbXBvdW5kTGVuZ3RoOiBpMzIgPSBpMzIuTUFYX1ZBTFVFXG4gICk6IFRva2VuIHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMubmV4dFRva2VuIDwgMCkge1xuICAgICAgbGV0IHBvc0JlZm9yZSA9IHRoaXMucG9zO1xuICAgICAgbGV0IHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICAgIGxldCB0b2tlblBvc0JlZm9yZSA9IHRoaXMudG9rZW5Qb3M7XG4gICAgICB0aGlzLm5leHRUb2tlbiA9IHRoaXMudW5zYWZlTmV4dChpZGVudGlmaWVySGFuZGxpbmcsIG1heENvbXBvdW5kTGVuZ3RoKTtcbiAgICAgIHRoaXMubmV4dFRva2VuUG9zID0gdGhpcy50b2tlblBvcztcbiAgICAgIGlmIChjaGVja09uTmV3TGluZSkge1xuICAgICAgICB0aGlzLm5leHRUb2tlbk9uTmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSBwb3NCZWZvcmUsIGVuZCA9IHRoaXMubmV4dFRva2VuUG9zOyBwb3MgPCBlbmQ7ICsrcG9zKSB7XG4gICAgICAgICAgaWYgKGlzTGluZUJyZWFrKHRleHQuY2hhckNvZGVBdChwb3MpKSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0VG9rZW5Pbk5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvc0JlZm9yZTtcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkJlZm9yZTtcbiAgICAgIHRoaXMudG9rZW5Qb3MgPSB0b2tlblBvc0JlZm9yZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmV4dFRva2VuO1xuICB9XG5cbiAgc2tpcElkZW50aWZpZXIoaWRlbnRpZmllckhhbmRsaW5nOiBJZGVudGlmaWVySGFuZGxpbmcgPSBJZGVudGlmaWVySGFuZGxpbmcuUFJFRkVSKTogYm9vbCB7XG4gICAgcmV0dXJuIHRoaXMuc2tpcChUb2tlbi5JREVOVElGSUVSLCBpZGVudGlmaWVySGFuZGxpbmcpO1xuICB9XG5cbiAgc2tpcCh0b2tlbjogVG9rZW4sIGlkZW50aWZpZXJIYW5kbGluZzogSWRlbnRpZmllckhhbmRsaW5nID0gSWRlbnRpZmllckhhbmRsaW5nLkRFRkFVTFQpOiBib29sIHtcbiAgICB2YXIgcG9zQmVmb3JlID0gdGhpcy5wb3M7XG4gICAgdmFyIHRva2VuQmVmb3JlID0gdGhpcy50b2tlbjtcbiAgICB2YXIgdG9rZW5Qb3NCZWZvcmUgPSB0aGlzLnRva2VuUG9zO1xuICAgIHZhciBtYXhDb21wb3VuZExlbmd0aCA9IGkzMi5NQVhfVkFMVUU7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBUb2tlbi5HUkVBVEVSVEhBTjogeyAvLyB3aGVyZSBwYXJzaW5nIHR5cGUgYXJndW1lbnRzXG4gICAgICAgIG1heENvbXBvdW5kTGVuZ3RoID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudG9rZW4gPSB0aGlzLnVuc2FmZU5leHQoaWRlbnRpZmllckhhbmRsaW5nLCBtYXhDb21wb3VuZExlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gdG9rZW4pIHtcbiAgICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3MgPSBwb3NCZWZvcmU7XG4gICAgICB0aGlzLnRva2VuID0gdG9rZW5CZWZvcmU7XG4gICAgICB0aGlzLnRva2VuUG9zID0gdG9rZW5Qb3NCZWZvcmU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbWFyaygpOiBTdGF0ZSB7XG4gICAgdmFyIHN0YXRlOiBTdGF0ZTtcbiAgICBpZiAocmV1c2FibGVTdGF0ZSkge1xuICAgICAgc3RhdGUgPSByZXVzYWJsZVN0YXRlO1xuICAgICAgcmV1c2FibGVTdGF0ZSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlID0gbmV3IFN0YXRlKCk7XG4gICAgfVxuICAgIHN0YXRlLnBvcyA9IHRoaXMucG9zO1xuICAgIHN0YXRlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICBzdGF0ZS50b2tlblBvcyA9IHRoaXMudG9rZW5Qb3M7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgZGlzY2FyZChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICByZXVzYWJsZVN0YXRlID0gc3RhdGU7XG4gIH1cblxuICByZXNldChzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnBvcyA9IHN0YXRlLnBvcztcbiAgICB0aGlzLnRva2VuID0gc3RhdGUudG9rZW47XG4gICAgdGhpcy50b2tlblBvcyA9IHN0YXRlLnRva2VuUG9zO1xuICAgIHRoaXMubmV4dFRva2VuID0gLTE7XG4gIH1cblxuICByYW5nZShzdGFydDogaTMyID0gLTEsIGVuZDogaTMyID0gLTEpOiBSYW5nZSB7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgc3RhcnQgPSB0aGlzLnRva2VuUG9zO1xuICAgICAgZW5kID0gdGhpcy5wb3M7XG4gICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnNvdXJjZSwgc3RhcnQsIGVuZCk7XG4gIH1cblxuICByZWFkSWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKFxuICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgaXNJZGVudGlmaWVyUGFydCh0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpKVxuICAgICk7XG4gICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gIH1cblxuICByZWFkU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBxdW90ZSA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcysrKTtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmICh0aGlzLnBvcyA+PSBlbmQpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3N0cmluZ19saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQgLSAxLCBlbmQpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKGMgPT0gcXVvdGUpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcysrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0LCB0aGlzLnBvcyk7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLnJlYWRFc2NhcGVTZXF1ZW5jZSgpO1xuICAgICAgICBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0xpbmVCcmVhayhjKSAmJiBxdW90ZSAhPSBDaGFyQ29kZS5CQUNLVElDSykge1xuICAgICAgICByZXN1bHQgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfc3RyaW5nX2xpdGVyYWwsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWFkRXNjYXBlU2VxdWVuY2UoKTogc3RyaW5nIHtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgaWYgKCsrdGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbmV4cGVjdGVkX2VuZF9vZl90ZXh0LFxuICAgICAgICB0aGlzLnJhbmdlKGVuZClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgICBjYXNlIENoYXJDb2RlLl8wOiByZXR1cm4gXCJcXDBcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuYjogcmV0dXJuIFwiXFxiXCI7XG4gICAgICBjYXNlIENoYXJDb2RlLnQ6IHJldHVybiBcIlxcdFwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5uOiByZXR1cm4gXCJcXG5cIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudjogcmV0dXJuIFwiXFx2XCI7XG4gICAgICBjYXNlIENoYXJDb2RlLmY6IHJldHVybiBcIlxcZlwiO1xuICAgICAgY2FzZSBDaGFyQ29kZS5yOiByZXR1cm4gXCJcXHJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuU0lOR0xFUVVPVEU6IHJldHVybiBcIidcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUuRE9VQkxFUVVPVEU6IHJldHVybiBcIlxcXCJcIjtcbiAgICAgIGNhc2UgQ2hhckNvZGUudToge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5wb3MgPCBlbmQgJiZcbiAgICAgICAgICB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLk9QRU5CUkFDRVxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlYWRFeHRlbmRlZFVuaWNvZGVFc2NhcGUoKTsgLy8gXFx1e0REREREREREfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRVbmljb2RlRXNjYXBlKCk7IC8vIFxcdURERERcbiAgICAgIH1cbiAgICAgIGNhc2UgQ2hhckNvZGUuQ0FSUklBR0VSRVRVUk46IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucG9zIDwgZW5kICYmXG4gICAgICAgICAgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5MSU5FRkVFRFxuICAgICAgICApIHtcbiAgICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZhbGwgdGhyb3VnaFxuICAgICAgfVxuICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICAgIGNhc2UgQ2hhckNvZGUuUEFSQUdSQVBIU0VQQVJBVE9SOiByZXR1cm4gXCJcIjtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRSZWdleHBQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZXNjYXBlZCA9IGZhbHNlO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5wb3MgPj0gZW5kKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIGVuZClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5CQUNLU0xBU0gpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgaWYgKCFlc2NhcGVkICYmIGMgPT0gQ2hhckNvZGUuU0xBU0gpIGJyZWFrO1xuICAgICAgaWYgKGlzTGluZUJyZWFrKGMpKSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW50ZXJtaW5hdGVkX3JlZ3VsYXJfZXhwcmVzc2lvbl9saXRlcmFsLFxuICAgICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICBlc2NhcGVkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICB9XG5cbiAgcmVhZFJlZ2V4cEZsYWdzKCk6IHN0cmluZyB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgZmxhZ3MgPSAwO1xuICAgIHdoaWxlICh0aGlzLnBvcyA8IGVuZCkge1xuICAgICAgbGV0IGM6IGkzMiA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoYykpIGJyZWFrO1xuICAgICAgKyt0aGlzLnBvcztcblxuICAgICAgLy8gbWFrZSBzdXJlIGVhY2ggc3VwcG9ydGVkIGZsYWcgaXMgdW5pcXVlXG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5nOiB7XG4gICAgICAgICAgZmxhZ3MgfD0gZmxhZ3MgJiAxID8gLTEgOiAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuaToge1xuICAgICAgICAgIGZsYWdzIHw9IGZsYWdzICYgMiA/IC0xIDogMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLm06IHtcbiAgICAgICAgICBmbGFncyB8PSBmbGFncyAmIDQgPyAtMSA6IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGZsYWdzID0gLTE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZsYWdzID09IC0xKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5JbnZhbGlkX3JlZ3VsYXJfZXhwcmVzc2lvbl9mbGFncyxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgfVxuXG4gIHRlc3RJbnRlZ2VyKCk6IGJvb2wge1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zICsgMSA8IGVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDIpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgICAgICBjYXNlIENoYXJDb2RlLmI6XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuQjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5vOlxuICAgICAgICBjYXNlIENoYXJDb2RlLk86IHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgcG9zID0gdGhpcy5wb3M7XG4gICAgd2hpbGUgKHBvcyA8IGVuZCkge1xuICAgICAgbGV0IGMgPSB0ZXh0LmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmIChjID09IENoYXJDb2RlLkRPVCB8fCBjID09IENoYXJDb2RlLmUgfHwgYyA9PSBDaGFyQ29kZS5FKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoKGMgPCBDaGFyQ29kZS5fMCB8fCBjID4gQ2hhckNvZGUuXzkpICYmIGMgIT0gQ2hhckNvZGUuXykgYnJlYWs7XG4gICAgICAvLyBkb2VzIG5vdCB2YWxpZGF0ZSBzZXBhcmF0b3IgcGxhY2VtZW50ICh0aGlzIGlzIGRvbmUgaW4gcmVhZFhZSW50ZWdlcilcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJlYWRJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIGlmICh0aGlzLnBvcyArIDIgPCB0aGlzLmVuZCAmJiB0ZXh0LmNoYXJDb2RlQXQodGhpcy5wb3MpID09IENoYXJDb2RlLl8wKSB7XG4gICAgICBzd2l0Y2ggKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyArIDEpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUueDpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5YOiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuYjpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5COiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkQmluYXJ5SW50ZWdlcigpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUubzpcbiAgICAgICAgY2FzZSBDaGFyQ29kZS5POiB7XG4gICAgICAgICAgdGhpcy5wb3MgKz0gMjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkT2N0YWxJbnRlZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc09jdGFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpKSB7XG4gICAgICAgIGxldCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICArK3RoaXMucG9zO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnJlYWRPY3RhbEludGVnZXIoKTtcbiAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9saXRlcmFsc19hcmVfbm90X2FsbG93ZWRfaW5fc3RyaWN0X21vZGUsXG4gICAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgdGhpcy5wb3MpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVhZERlY2ltYWxJbnRlZ2VyKCk7XG4gIH1cblxuICByZWFkSGV4SW50ZWdlcigpOiBJNjQge1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLnBvcztcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfNCA9IGk2NF9uZXcoNCk7XG4gICAgdmFyIHNlcEVuZCA9IHN0YXJ0O1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBwb3MgPSB0aGlzLnBvcztcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85KSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgYyAtIENoYXJDb2RlLl8wO1xuICAgICAgICB2YWx1ZSA9IGk2NF9hZGQoXG4gICAgICAgICAgaTY0X3NobCh2YWx1ZSwgaTY0XzQpLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIDEwICsgYyAtIENoYXJDb2RlLkE7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfc2hsKHZhbHVlLCBpNjRfNCksXG4gICAgICAgICAgaTY0X25ldygxMCArIGMgLSBDaGFyQ29kZS5BKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS5mKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDQpICsgMTAgKyBjIC0gQ2hhckNvZGUuYTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF80KSxcbiAgICAgICAgICBpNjRfbmV3KDEwICsgYyAtIENoYXJDb2RlLmEpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGMgPT0gQ2hhckNvZGUuXykge1xuICAgICAgICBpZiAoc2VwRW5kID09IHBvcykge1xuICAgICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgICBzZXBFbmQgPT0gc3RhcnRcbiAgICAgICAgICAgICAgPyBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmVcbiAgICAgICAgICAgICAgOiBEaWFnbm9zdGljQ29kZS5NdWx0aXBsZV9jb25zZWN1dGl2ZV9udW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9wZXJtaXR0ZWQsXG4gICAgICAgICAgICB0aGlzLnJhbmdlKHBvcylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNlcEVuZCA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMucG9zID0gcG9zICsgMTtcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5IZXhhZGVjaW1hbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZERlY2ltYWxJbnRlZ2VyKCk6IEk2NCB7XG4gICAgdmFyIHRleHQgPSB0aGlzLnNvdXJjZS50ZXh0O1xuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdmFsdWUgPSBpNjRfbmV3KDApO1xuICAgIHZhciBpNjRfMTAgPSBpNjRfbmV3KDEwKTtcbiAgICB2YXIgc2VwRW5kID0gc3RhcnQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICAvLyB2YWx1ZSA9IHZhbHVlICogMTAgKyBjIC0gQ2hhckNvZGUuXzA7XG4gICAgICAgIHZhbHVlID0gaTY0X2FkZChcbiAgICAgICAgICBpNjRfbXVsKHZhbHVlLCBpNjRfMTApLFxuICAgICAgICAgIGk2NF9uZXcoYyAtIENoYXJDb2RlLl8wKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuRGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoc2VwRW5kID09IHRoaXMucG9zKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5OdW1lcmljX3NlcGFyYXRvcnNfYXJlX25vdF9hbGxvd2VkX2hlcmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc2VwRW5kIC0gMSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJlYWRPY3RhbEludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzMgPSBpNjRfbmV3KDMpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNykge1xuICAgICAgICAvLyB2YWx1ZSA9ICh2YWx1ZSA8PCAzKSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8zKSxcbiAgICAgICAgICBpNjRfbmV3KGMgLSBDaGFyQ29kZS5fMClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PSBDaGFyQ29kZS5fKSB7XG4gICAgICAgIGlmIChzZXBFbmQgPT0gcG9zKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgICAgIHNlcEVuZCA9PSBzdGFydFxuICAgICAgICAgICAgICA/IERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZVxuICAgICAgICAgICAgICA6IERpYWdub3N0aWNDb2RlLk11bHRpcGxlX2NvbnNlY3V0aXZlX251bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X3Blcm1pdHRlZCxcbiAgICAgICAgICAgIHRoaXMucmFuZ2UocG9zKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgc2VwRW5kID0gcG9zICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgKyt0aGlzLnBvcztcbiAgICB9XG4gICAgaWYgKHRoaXMucG9zID09IHN0YXJ0KSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5PY3RhbF9kaWdpdF9leHBlY3RlZCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzZXBFbmQgPT0gdGhpcy5wb3MpIHtcbiAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgIERpYWdub3N0aWNDb2RlLk51bWVyaWNfc2VwYXJhdG9yc19hcmVfbm90X2FsbG93ZWRfaGVyZSxcbiAgICAgICAgdGhpcy5yYW5nZShzZXBFbmQgLSAxKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmVhZEJpbmFyeUludGVnZXIoKTogSTY0IHtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gaTY0X25ldygwKTtcbiAgICB2YXIgaTY0XzEgPSBpNjRfbmV3KDEpO1xuICAgIHZhciBzZXBFbmQgPSBzdGFydDtcbiAgICB2YXIgZW5kID0gdGhpcy5lbmQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3M7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgaWYgKGMgPT0gQ2hhckNvZGUuXzApIHtcbiAgICAgICAgLy8gdmFsdWUgPSAodmFsdWUgPDwgMSk7XG4gICAgICAgIHZhbHVlID0gaTY0X3NobCh2YWx1ZSwgaTY0XzEpO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8xKSB7XG4gICAgICAgIC8vIHZhbHVlID0gKHZhbHVlIDw8IDEpICsgMTtcbiAgICAgICAgdmFsdWUgPSBpNjRfYWRkKFxuICAgICAgICAgIGk2NF9zaGwodmFsdWUsIGk2NF8xKSxcbiAgICAgICAgICBpNjRfMVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChjID09IENoYXJDb2RlLl8pIHtcbiAgICAgICAgaWYgKHNlcEVuZCA9PSBwb3MpIHtcbiAgICAgICAgICB0aGlzLmVycm9yKFxuICAgICAgICAgICAgc2VwRW5kID09IHN0YXJ0XG4gICAgICAgICAgICAgID8gRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlXG4gICAgICAgICAgICAgIDogRGlhZ25vc3RpY0NvZGUuTXVsdGlwbGVfY29uc2VjdXRpdmVfbnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfcGVybWl0dGVkLFxuICAgICAgICAgICAgdGhpcy5yYW5nZShwb3MpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzZXBFbmQgPSBwb3MgKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnBvcyA9IHBvcyArIDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcyA9PSBzdGFydCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuQmluYXJ5X2RpZ2l0X2V4cGVjdGVkLFxuICAgICAgICB0aGlzLnJhbmdlKHN0YXJ0KVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlcEVuZCA9PSB0aGlzLnBvcykge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuTnVtZXJpY19zZXBhcmF0b3JzX2FyZV9ub3RfYWxsb3dlZF9oZXJlLFxuICAgICAgICB0aGlzLnJhbmdlKHNlcEVuZCAtIDEpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZWFkRmxvYXQoKTogZjY0IHtcbiAgICAvLyB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgLy8gaWYgKHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykgPT0gQ2hhckNvZGUuXzAgJiYgdGhpcy5wb3MgKyAyIDwgdGhpcy5lbmQpIHtcbiAgICAvLyAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpIHtcbiAgICAvLyAgICAgY2FzZSBDaGFyQ29kZS5YOlxuICAgIC8vICAgICBjYXNlIENoYXJDb2RlLng6IHtcbiAgICAvLyAgICAgICB0aGlzLnBvcyArPSAyO1xuICAgIC8vICAgICAgIHJldHVybiB0aGlzLnJlYWRIZXhGbG9hdCgpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICAgIHJldHVybiB0aGlzLnJlYWREZWNpbWFsRmxvYXQoKTtcbiAgfVxuXG4gIHJlYWREZWNpbWFsRmxvYXQoKTogZjY0IHtcbiAgICAvLyBUT0RPOiBudW1lcmljIHNlcGFyYXRvcnMgKHBhcnNlRmxvYXQgY2FuJ3QgaGFuZGxlIHRoZXNlKVxuICAgIHZhciBzdGFydCA9IHRoaXMucG9zO1xuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH1cbiAgICBpZiAodGhpcy5wb3MgPCBlbmQgJiYgdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5ET1QpIHtcbiAgICAgICsrdGhpcy5wb3M7XG4gICAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQgJiYgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkpIHtcbiAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMucG9zIDwgZW5kKSB7XG4gICAgICBsZXQgYyA9IHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcyk7XG4gICAgICBpZiAoYyA9PSBDaGFyQ29kZS5lIHx8IGMgPT0gQ2hhckNvZGUuRSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKyt0aGlzLnBvcyA8IGVuZCAmJlxuICAgICAgICAgIChjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSkgPT0gQ2hhckNvZGUuTUlOVVMgfHwgYyA9PSBDaGFyQ29kZS5QTFVTICYmXG4gICAgICAgICAgaXNEZWNpbWFsRGlnaXQodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSkpXG4gICAgICAgICkge1xuICAgICAgICAgICsrdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgZW5kICYmIGlzRGVjaW1hbERpZ2l0KHRleHQuY2hhckNvZGVBdCh0aGlzLnBvcykpKSB7XG4gICAgICAgICAgKyt0aGlzLnBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0ZXh0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpKTtcbiAgfVxuXG4gIHJlYWRIZXhGbG9hdCgpOiBmNjQge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTsgLy8gVEJEXG4gIH1cblxuICByZWFkVW5pY29kZUVzY2FwZSgpOiBzdHJpbmcge1xuICAgIHZhciByZW1haW4gPSA0O1xuICAgIHZhciB2YWx1ZSA9IDA7XG4gICAgdmFyIGVuZCA9IHRoaXMuZW5kO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5zb3VyY2UudGV4dDtcbiAgICB3aGlsZSAodGhpcy5wb3MgPCBlbmQpIHtcbiAgICAgIGxldCBjID0gdGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKyspO1xuICAgICAgaWYgKGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fOSkge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgLSBDaGFyQ29kZS5fMDtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuRikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5BKTtcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuZikge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA0KSArIGMgKyAoMTAgLSBDaGFyQ29kZS5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3IoXG4gICAgICAgICAgRGlhZ25vc3RpY0NvZGUuSGV4YWRlY2ltYWxfZGlnaXRfZXhwZWN0ZWQsXG4gICAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcyAtIDEsIHRoaXMucG9zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGlmICgtLXJlbWFpbiA9PSAwKSBicmVhaztcbiAgICB9XG4gICAgaWYgKHJlbWFpbikge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZSh0aGlzLnBvcylcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkRXh0ZW5kZWRVbmljb2RlRXNjYXBlKCk6IHN0cmluZyB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5yZWFkSGV4SW50ZWdlcigpO1xuICAgIHZhciB2YWx1ZTMyID0gaTY0X2xvdyh2YWx1ZSk7XG4gICAgdmFyIGludmFsaWQgPSBmYWxzZTtcblxuICAgIGFzc2VydCghaTY0X2hpZ2godmFsdWUpKTtcbiAgICBpZiAodmFsdWUzMiA+IDB4MTBGRkZGKSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5Bbl9leHRlbmRlZF9Vbmljb2RlX2VzY2FwZV92YWx1ZV9tdXN0X2JlX2JldHdlZW5fMHgwX2FuZF8weDEwRkZGRl9pbmNsdXNpdmUsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSB0aGlzLmVuZDtcbiAgICB2YXIgdGV4dCA9IHRoaXMuc291cmNlLnRleHQ7XG4gICAgaWYgKHRoaXMucG9zID49IGVuZCkge1xuICAgICAgdGhpcy5lcnJvcihcbiAgICAgICAgRGlhZ25vc3RpY0NvZGUuVW5leHBlY3RlZF9lbmRfb2ZfdGV4dCxcbiAgICAgICAgdGhpcy5yYW5nZShzdGFydCwgZW5kKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGV4dC5jaGFyQ29kZUF0KHRoaXMucG9zKSA9PSBDaGFyQ29kZS5DTE9TRUJSQUNFKSB7XG4gICAgICArK3RoaXMucG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yKFxuICAgICAgICBEaWFnbm9zdGljQ29kZS5VbnRlcm1pbmF0ZWRfVW5pY29kZV9lc2NhcGVfc2VxdWVuY2UsXG4gICAgICAgIHRoaXMucmFuZ2Uoc3RhcnQsIHRoaXMucG9zKVxuICAgICAgKTtcbiAgICAgIGludmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdmFsdWUzMiA8IDY1NTM2XG4gICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUodmFsdWUzMilcbiAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgKCh2YWx1ZTMyIC0gNjU1MzYpID4+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICgodmFsdWUzMiAtIDY1NTM2KSAmIDEwMjMpICsgMHhEQzAwXG4gICAgICApO1xuICB9XG5cbiAgZmluaXNoKCk6IHZvaWQge1xuICB9XG59XG5cbi8qKiBUb2tlbml6ZXIgc3RhdGUgYXMgcmV0dXJuZWQgYnkge0BsaW5rIFRva2VuaXplciNtYXJrfSBhbmQgY29uc3VtZWQgYnkge0BsaW5rIFRva2VuaXplciNyZXNldH0uICovXG5leHBvcnQgY2xhc3MgU3RhdGUge1xuICAvKiogQ3VycmVudCBwb3NpdGlvbi4gKi9cbiAgcG9zOiBpMzI7XG4gIC8qKiBDdXJyZW50IHRva2VuLiAqL1xuICB0b2tlbjogVG9rZW47XG4gIC8qKiBDdXJyZW50IHRva2VuJ3MgcG9zaXRpb24uICovXG4gIHRva2VuUG9zOiBpMzI7XG59XG5cbi8vIFJldXNhYmxlIHN0YXRlIG9iamVjdCB0byByZWR1Y2UgYWxsb2NhdGlvbnNcbnZhciByZXVzYWJsZVN0YXRlOiBTdGF0ZSB8IG51bGwgPSBudWxsO1xuIl19 - -/***/ }), - -/***/ "../src/util/binary.ts": -/*!*****************************!*\ - !*** ../src/util/binary.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Reads an 8-bit integer from the specified buffer. */ -function readI8(buffer, offset) { - return buffer[offset]; -} -exports.readI8 = readI8; -/** Writes an 8-bit integer to the specified buffer. */ -function writeI8(value, buffer, offset) { - buffer[offset] = value; -} -exports.writeI8 = writeI8; -/** Reads a 16-bit integer from the specified buffer. */ -function readI16(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8; -} -exports.readI16 = readI16; -/** Writes a 16-bit integer to the specified buffer. */ -function writeI16(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; -} -exports.writeI16 = writeI16; -/** Reads a 32-bit integer from the specified buffer. */ -function readI32(buffer, offset) { - return buffer[offset] - | buffer[offset + 1] << 8 - | buffer[offset + 2] << 16 - | buffer[offset + 3] << 24; -} -exports.readI32 = readI32; -/** Writes a 32-bit integer to the specified buffer. */ -function writeI32(value, buffer, offset) { - buffer[offset] = value; - buffer[offset + 1] = value >>> 8; - buffer[offset + 2] = value >>> 16; - buffer[offset + 3] = value >>> 24; -} -exports.writeI32 = writeI32; -/** Reads a 64-bit integer from the specified buffer. */ -function readI64(buffer, offset) { - var lo = readI32(buffer, offset); - var hi = readI32(buffer, offset + 4); - return i64_new(lo, hi); -} -exports.readI64 = readI64; -/** Writes a 64-bit integer to the specified buffer. */ -function writeI64(value, buffer, offset) { - writeI32(i64_low(value), buffer, offset); - writeI32(i64_high(value), buffer, offset + 4); -} -exports.writeI64 = writeI64; -/** Reads a 32-bit float from the specified buffer. */ -function readF32(buffer, offset) { - return i32_as_f32(readI32(buffer, offset)); -} -exports.readF32 = readF32; -/** Writes a 32-bit float to the specified buffer. */ -function writeF32(value, buffer, offset) { - writeI32(f32_as_i32(value), buffer, offset); -} -exports.writeF32 = writeF32; -/** Reads a 64-bit float from the specified buffer. */ -function readF64(buffer, offset) { - return i64_as_f64(readI64(buffer, offset)); -} -exports.readF64 = readF64; -/** Writes a 64-bit float to the specified buffer. */ -function writeF64(value, buffer, offset) { - var valueI64 = f64_as_i64(value); - writeI32(i64_low(valueI64), buffer, offset); - writeI32(i64_high(valueI64), buffer, offset + 4); -} -exports.writeF64 = writeF64; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4Qix3REFBd0Q7QUFDeEQsU0FBZ0IsTUFBTSxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRkQsd0JBRUM7QUFFRCx1REFBdUQ7QUFDdkQsU0FBZ0IsT0FBTyxDQUFDLEtBQVUsRUFBRSxNQUFrQixFQUFFLE1BQVc7SUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN6QixDQUFDO0FBRkQsMEJBRUM7QUFFRCx3REFBd0Q7QUFDeEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUs7VUFDbEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUhELDBCQUdDO0FBRUQsdURBQXVEO0FBQ3ZELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFIRCw0QkFHQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBSztVQUNsQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7VUFDdkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1VBQ3hCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xDLENBQUM7QUFMRCwwQkFLQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxNQUFNLENBQUMsTUFBTSxDQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFMRCw0QkFLQztBQUVELHdEQUF3RDtBQUN4RCxTQUFnQixPQUFPLENBQUMsTUFBa0IsRUFBRSxNQUFXO0lBQ3JELElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFKRCwwQkFJQztBQUVELHVEQUF1RDtBQUN2RCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUhELDRCQUdDO0FBRUQsc0RBQXNEO0FBQ3RELFNBQWdCLE9BQU8sQ0FBQyxNQUFrQixFQUFFLE1BQVc7SUFDckQsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFGRCwwQkFFQztBQUVELHFEQUFxRDtBQUNyRCxTQUFnQixRQUFRLENBQUMsS0FBVSxFQUFFLE1BQWtCLEVBQUUsTUFBVztJQUNsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBZ0IsT0FBTyxDQUFDLE1BQWtCLEVBQUUsTUFBVztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELDBCQUVDO0FBRUQscURBQXFEO0FBQ3JELFNBQWdCLFFBQVEsQ0FBQyxLQUFVLEVBQUUsTUFBa0IsRUFBRSxNQUFXO0lBQ2xFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbi8qKiBSZWFkcyBhbiA4LWJpdCBpbnRlZ2VyIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEk4KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldF07XG59XG5cbi8qKiBXcml0ZXMgYW4gOC1iaXQgaW50ZWdlciB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUk4KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldF0gPSB2YWx1ZTtcbn1cblxuLyoqIFJlYWRzIGEgMTYtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTE2KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBpMzIge1xuICByZXR1cm4gYnVmZmVyW29mZnNldCAgICBdXG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbn1cblxuLyoqIFdyaXRlcyBhIDE2LWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTE2KHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xufVxuXG4vKiogUmVhZHMgYSAzMi1iaXQgaW50ZWdlciBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGkzMiB7XG4gIHJldHVybiBidWZmZXJbb2Zmc2V0ICAgIF1cbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAxXSA8PCA4XG4gICAgICAgfCBidWZmZXJbb2Zmc2V0ICsgMl0gPDwgMTZcbiAgICAgICB8IGJ1ZmZlcltvZmZzZXQgKyAzXSA8PCAyNDtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSTMyKHZhbHVlOiBpMzIsIGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiB2b2lkIHtcbiAgYnVmZmVyW29mZnNldCAgICBdID0gdmFsdWU7XG4gIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IHZhbHVlID4+PiA4O1xuICBidWZmZXJbb2Zmc2V0ICsgMl0gPSB2YWx1ZSA+Pj4gMTY7XG4gIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IHZhbHVlID4+PiAyNDtcbn1cblxuLyoqIFJlYWRzIGEgNjQtYml0IGludGVnZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkSTY0KGJ1ZmZlcjogVWludDhBcnJheSwgb2Zmc2V0OiBpMzIpOiBJNjQge1xuICB2YXIgbG8gPSByZWFkSTMyKGJ1ZmZlciwgb2Zmc2V0KTtcbiAgdmFyIGhpID0gcmVhZEkzMihidWZmZXIsIG9mZnNldCArIDQpO1xuICByZXR1cm4gaTY0X25ldyhsbywgaGkpO1xufVxuXG4vKiogV3JpdGVzIGEgNjQtYml0IGludGVnZXIgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJNjQodmFsdWU6IEk2NCwgYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IHZvaWQge1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlKSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZSksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG5cbi8qKiBSZWFkcyBhIDMyLWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGMzIoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGYzMiB7XG4gIHJldHVybiBpMzJfYXNfZjMyKHJlYWRJMzIoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDMyLWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUYzMih2YWx1ZTogZjMyLCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHdyaXRlSTMyKGYzMl9hc19pMzIodmFsdWUpLCBidWZmZXIsIG9mZnNldCk7XG59XG5cbi8qKiBSZWFkcyBhIDY0LWJpdCBmbG9hdCBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGNjQoYnVmZmVyOiBVaW50OEFycmF5LCBvZmZzZXQ6IGkzMik6IGY2NCB7XG4gIHJldHVybiBpNjRfYXNfZjY0KHJlYWRJNjQoYnVmZmVyLCBvZmZzZXQpKTtcbn1cblxuLyoqIFdyaXRlcyBhIDY0LWJpdCBmbG9hdCB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUY2NCh2YWx1ZTogZjY0LCBidWZmZXI6IFVpbnQ4QXJyYXksIG9mZnNldDogaTMyKTogdm9pZCB7XG4gIHZhciB2YWx1ZUk2NCA9IGY2NF9hc19pNjQodmFsdWUpO1xuICB3cml0ZUkzMihpNjRfbG93KHZhbHVlSTY0KSwgYnVmZmVyLCBvZmZzZXQpO1xuICB3cml0ZUkzMihpNjRfaGlnaCh2YWx1ZUk2NCksIGJ1ZmZlciwgb2Zmc2V0ICsgNCk7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/bitset.ts": -/*!*****************************!*\ - !*** ../src/util/bitset.ts ***! - \*****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** Tests if the bit at the specified index is set within a 64-bit map. */ -function bitsetIs(map, index) { - assert(index >= 0 && index < 64); - return i64_ne(i64_and(map, i64_shl(i64_one, i64_new(index))), i64_zero); -} -exports.bitsetIs = bitsetIs; -/** Sets or unsets the bit at the specified index within a 64-bit map and returns the new map. */ -function bitsetSet(map, index, isSet) { - assert(index >= 0 && index < 64); - return isSet - ? i64_or(map, i64_shl(i64_one, i64_new(index))) - : i64_and(map, i64_not(i64_shl(i64_one, i64_new(index)))); -} -exports.bitsetSet = bitsetSet; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0c2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWwvYml0c2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQkFBbUIsQ0FBQSxLQUFLOztBQUV4QiwwRUFBMEU7QUFDMUUsU0FBZ0IsUUFBUSxDQUFDLEdBQVEsRUFBRSxLQUFVO0lBQzNDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLE1BQU0sQ0FDWCxPQUFPLENBQ0wsR0FBRyxFQUNILE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsRUFDRCxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFaRCw0QkFZQztBQUVELGlHQUFpRztBQUNqRyxTQUFnQixTQUFTLENBQUMsR0FBUSxFQUFFLEtBQVUsRUFBRSxLQUFXO0lBQ3pELE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUs7UUFDVixDQUFDLENBQUMsTUFBTSxDQUNKLEdBQUcsRUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDZixDQUNGO1FBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsT0FBTyxDQUNMLE9BQU8sQ0FDTCxPQUFPLEVBQ1AsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUNmLENBQ0YsQ0FDRixDQUFDO0FBQ1IsQ0FBQztBQW5CRCw4QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIFRlc3RzIGlmIHRoZSBiaXQgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpcyBzZXQgd2l0aGluIGEgNjQtYml0IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRJcyhtYXA6IEk2NCwgaW5kZXg6IGkzMik6IGJvb2wge1xuICBhc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8IDY0KTtcbiAgcmV0dXJuIGk2NF9uZShcbiAgICBpNjRfYW5kKFxuICAgICAgbWFwLFxuICAgICAgaTY0X3NobChcbiAgICAgICAgaTY0X29uZSxcbiAgICAgICAgaTY0X25ldyhpbmRleClcbiAgICAgIClcbiAgICApLFxuICAgIGk2NF96ZXJvXG4gICk7XG59XG5cbi8qKiBTZXRzIG9yIHVuc2V0cyB0aGUgYml0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aGluIGEgNjQtYml0IG1hcCBhbmQgcmV0dXJucyB0aGUgbmV3IG1hcC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaXRzZXRTZXQobWFwOiBJNjQsIGluZGV4OiBpMzIsIGlzU2V0OiBib29sKTogSTY0IHtcbiAgYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPCA2NCk7XG4gIHJldHVybiBpc1NldFxuICAgID8gaTY0X29yKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9zaGwoXG4gICAgICAgICAgaTY0X29uZSxcbiAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICApXG4gICAgICApXG4gICAgOiBpNjRfYW5kKFxuICAgICAgICBtYXAsXG4gICAgICAgIGk2NF9ub3QoXG4gICAgICAgICAgaTY0X3NobChcbiAgICAgICAgICAgIGk2NF9vbmUsXG4gICAgICAgICAgICBpNjRfbmV3KGluZGV4KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/charcode.ts": -/*!*******************************!*\ - !*** ../src/util/charcode.ts ***! - \*******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -/** An enum of named character codes. */ -var CharCode; -(function (CharCode) { - CharCode[CharCode["NULL"] = 0] = "NULL"; - CharCode[CharCode["LINEFEED"] = 10] = "LINEFEED"; - CharCode[CharCode["CARRIAGERETURN"] = 13] = "CARRIAGERETURN"; - CharCode[CharCode["LINESEPARATOR"] = 8232] = "LINESEPARATOR"; - CharCode[CharCode["PARAGRAPHSEPARATOR"] = 8233] = "PARAGRAPHSEPARATOR"; - CharCode[CharCode["NEXTLINE"] = 133] = "NEXTLINE"; - CharCode[CharCode["SPACE"] = 32] = "SPACE"; - CharCode[CharCode["NONBREAKINGSPACE"] = 160] = "NONBREAKINGSPACE"; - CharCode[CharCode["ENQUAD"] = 8192] = "ENQUAD"; - CharCode[CharCode["EMQUAD"] = 8193] = "EMQUAD"; - CharCode[CharCode["ENSPACE"] = 8194] = "ENSPACE"; - CharCode[CharCode["EMSPACE"] = 8195] = "EMSPACE"; - CharCode[CharCode["THREEPEREMSPACE"] = 8196] = "THREEPEREMSPACE"; - CharCode[CharCode["FOURPEREMSPACE"] = 8197] = "FOURPEREMSPACE"; - CharCode[CharCode["SIXPEREMSPACE"] = 8198] = "SIXPEREMSPACE"; - CharCode[CharCode["FIGURESPACE"] = 8199] = "FIGURESPACE"; - CharCode[CharCode["PUNCTUATIONSPACE"] = 8200] = "PUNCTUATIONSPACE"; - CharCode[CharCode["THINSPACE"] = 8201] = "THINSPACE"; - CharCode[CharCode["HAIRSPACE"] = 8202] = "HAIRSPACE"; - CharCode[CharCode["ZEROWIDTHSPACE"] = 8203] = "ZEROWIDTHSPACE"; - CharCode[CharCode["NARROWNOBREAKSPACE"] = 8239] = "NARROWNOBREAKSPACE"; - CharCode[CharCode["IDEOGRAPHICSPACE"] = 12288] = "IDEOGRAPHICSPACE"; - CharCode[CharCode["MATHEMATICALSPACE"] = 8287] = "MATHEMATICALSPACE"; - CharCode[CharCode["OGHAM"] = 5760] = "OGHAM"; - CharCode[CharCode["_"] = 95] = "_"; - CharCode[CharCode["_0"] = 48] = "_0"; - CharCode[CharCode["_1"] = 49] = "_1"; - CharCode[CharCode["_2"] = 50] = "_2"; - CharCode[CharCode["_3"] = 51] = "_3"; - CharCode[CharCode["_4"] = 52] = "_4"; - CharCode[CharCode["_5"] = 53] = "_5"; - CharCode[CharCode["_6"] = 54] = "_6"; - CharCode[CharCode["_7"] = 55] = "_7"; - CharCode[CharCode["_8"] = 56] = "_8"; - CharCode[CharCode["_9"] = 57] = "_9"; - CharCode[CharCode["a"] = 97] = "a"; - CharCode[CharCode["b"] = 98] = "b"; - CharCode[CharCode["c"] = 99] = "c"; - CharCode[CharCode["d"] = 100] = "d"; - CharCode[CharCode["e"] = 101] = "e"; - CharCode[CharCode["f"] = 102] = "f"; - CharCode[CharCode["g"] = 103] = "g"; - CharCode[CharCode["h"] = 104] = "h"; - CharCode[CharCode["i"] = 105] = "i"; - CharCode[CharCode["j"] = 106] = "j"; - CharCode[CharCode["k"] = 107] = "k"; - CharCode[CharCode["l"] = 108] = "l"; - CharCode[CharCode["m"] = 109] = "m"; - CharCode[CharCode["n"] = 110] = "n"; - CharCode[CharCode["o"] = 111] = "o"; - CharCode[CharCode["p"] = 112] = "p"; - CharCode[CharCode["q"] = 113] = "q"; - CharCode[CharCode["r"] = 114] = "r"; - CharCode[CharCode["s"] = 115] = "s"; - CharCode[CharCode["t"] = 116] = "t"; - CharCode[CharCode["u"] = 117] = "u"; - CharCode[CharCode["v"] = 118] = "v"; - CharCode[CharCode["w"] = 119] = "w"; - CharCode[CharCode["x"] = 120] = "x"; - CharCode[CharCode["y"] = 121] = "y"; - CharCode[CharCode["z"] = 122] = "z"; - CharCode[CharCode["A"] = 65] = "A"; - CharCode[CharCode["B"] = 66] = "B"; - CharCode[CharCode["C"] = 67] = "C"; - CharCode[CharCode["D"] = 68] = "D"; - CharCode[CharCode["E"] = 69] = "E"; - CharCode[CharCode["F"] = 70] = "F"; - CharCode[CharCode["G"] = 71] = "G"; - CharCode[CharCode["H"] = 72] = "H"; - CharCode[CharCode["I"] = 73] = "I"; - CharCode[CharCode["J"] = 74] = "J"; - CharCode[CharCode["K"] = 75] = "K"; - CharCode[CharCode["L"] = 76] = "L"; - CharCode[CharCode["M"] = 77] = "M"; - CharCode[CharCode["N"] = 78] = "N"; - CharCode[CharCode["O"] = 79] = "O"; - CharCode[CharCode["P"] = 80] = "P"; - CharCode[CharCode["Q"] = 81] = "Q"; - CharCode[CharCode["R"] = 82] = "R"; - CharCode[CharCode["S"] = 83] = "S"; - CharCode[CharCode["T"] = 84] = "T"; - CharCode[CharCode["U"] = 85] = "U"; - CharCode[CharCode["V"] = 86] = "V"; - CharCode[CharCode["W"] = 87] = "W"; - CharCode[CharCode["X"] = 88] = "X"; - CharCode[CharCode["Y"] = 89] = "Y"; - CharCode[CharCode["Z"] = 90] = "Z"; - CharCode[CharCode["AMPERSAND"] = 38] = "AMPERSAND"; - CharCode[CharCode["ASTERISK"] = 42] = "ASTERISK"; - CharCode[CharCode["AT"] = 64] = "AT"; - CharCode[CharCode["BACKSLASH"] = 92] = "BACKSLASH"; - CharCode[CharCode["BACKTICK"] = 96] = "BACKTICK"; - CharCode[CharCode["BAR"] = 124] = "BAR"; - CharCode[CharCode["CARET"] = 94] = "CARET"; - CharCode[CharCode["CLOSEBRACE"] = 125] = "CLOSEBRACE"; - CharCode[CharCode["CLOSEBRACKET"] = 93] = "CLOSEBRACKET"; - CharCode[CharCode["CLOSEPAREN"] = 41] = "CLOSEPAREN"; - CharCode[CharCode["COLON"] = 58] = "COLON"; - CharCode[CharCode["COMMA"] = 44] = "COMMA"; - CharCode[CharCode["DOLLAR"] = 36] = "DOLLAR"; - CharCode[CharCode["DOT"] = 46] = "DOT"; - CharCode[CharCode["DOUBLEQUOTE"] = 34] = "DOUBLEQUOTE"; - CharCode[CharCode["EQUALS"] = 61] = "EQUALS"; - CharCode[CharCode["EXCLAMATION"] = 33] = "EXCLAMATION"; - CharCode[CharCode["GREATERTHAN"] = 62] = "GREATERTHAN"; - CharCode[CharCode["HASH"] = 35] = "HASH"; - CharCode[CharCode["LESSTHAN"] = 60] = "LESSTHAN"; - CharCode[CharCode["MINUS"] = 45] = "MINUS"; - CharCode[CharCode["OPENBRACE"] = 123] = "OPENBRACE"; - CharCode[CharCode["OPENBRACKET"] = 91] = "OPENBRACKET"; - CharCode[CharCode["OPENPAREN"] = 40] = "OPENPAREN"; - CharCode[CharCode["PERCENT"] = 37] = "PERCENT"; - CharCode[CharCode["PLUS"] = 43] = "PLUS"; - CharCode[CharCode["QUESTION"] = 63] = "QUESTION"; - CharCode[CharCode["SEMICOLON"] = 59] = "SEMICOLON"; - CharCode[CharCode["SINGLEQUOTE"] = 39] = "SINGLEQUOTE"; - CharCode[CharCode["SLASH"] = 47] = "SLASH"; - CharCode[CharCode["TILDE"] = 126] = "TILDE"; - CharCode[CharCode["BACKSPACE"] = 8] = "BACKSPACE"; - CharCode[CharCode["FORMFEED"] = 12] = "FORMFEED"; - CharCode[CharCode["BYTEORDERMARK"] = 65279] = "BYTEORDERMARK"; - CharCode[CharCode["TAB"] = 9] = "TAB"; - CharCode[CharCode["VERTICALTAB"] = 11] = "VERTICALTAB"; -})(CharCode = exports.CharCode || (exports.CharCode = {})); -/** Tests if the specified character code is some sort of line break. */ -function isLineBreak(c) { - switch (c) { - case 10 /* LINEFEED */: - case 13 /* CARRIAGERETURN */: - case 8232 /* LINESEPARATOR */: - case 8233 /* PARAGRAPHSEPARATOR */: { - return true; - } - default: { - return false; - } - } -} -exports.isLineBreak = isLineBreak; -/** Tests if the specified character code is some sort of white space. */ -function isWhiteSpace(c) { - switch (c) { - case 32 /* SPACE */: - case 9 /* TAB */: - case 11 /* VERTICALTAB */: - case 12 /* FORMFEED */: - case 160 /* NONBREAKINGSPACE */: - case 133 /* NEXTLINE */: - case 5760 /* OGHAM */: - case 8239 /* NARROWNOBREAKSPACE */: - case 8287 /* MATHEMATICALSPACE */: - case 12288 /* IDEOGRAPHICSPACE */: - case 65279 /* BYTEORDERMARK */: { - return true; - } - default: { - return c >= 8192 /* ENQUAD */ && c <= 8203 /* ZEROWIDTHSPACE */; - } - } -} -exports.isWhiteSpace = isWhiteSpace; -/** Tests if the specified character code is a valid decimal digit. */ -function isDecimalDigit(c) { - return c >= 48 /* _0 */ && c <= 57 /* _9 */; -} -exports.isDecimalDigit = isDecimalDigit; -/** Tests if the specified character code is a valid octal digit. */ -function isOctalDigit(c) { - return c >= 48 /* _0 */ && c <= 55 /* _7 */; -} -exports.isOctalDigit = isOctalDigit; -/** Tests if the specified character code is a valid start of an identifier. */ -function isIdentifierStart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierStart(c); -} -exports.isIdentifierStart = isIdentifierStart; -/** Tests if the specified character code is a valid keyword character. */ -function isKeywordCharacter(c) { - return c >= 97 /* a */ && c <= 122 /* z */; -} -exports.isKeywordCharacter = isKeywordCharacter; -/** Tests if the specified character code is a valid part of an identifier. */ -function isIdentifierPart(c) { - return c >= 97 /* a */ && c <= 122 /* z */ - || c >= 65 /* A */ && c <= 90 /* Z */ - || c >= 48 /* _0 */ && c <= 57 /* _9 */ - || c == 95 /* _ */ - || c == 36 /* DOLLAR */ - || c > 0x7f && isUnicodeIdentifierPart(c); -} -exports.isIdentifierPart = isIdentifierPart; -// storing as u16 to save memory -var unicodeIdentifierStart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, 1488, 1514, - 1520, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, - 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, - 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, - 2088, 2112, 2136, 2208, 2208, 2210, 2220, 2308, 2361, 2365, 2365, 2384, 2384, - 2392, 2401, 2417, 2423, 2425, 2431, 2437, 2444, 2447, 2448, 2451, 2472, 2474, - 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, - 2544, 2545, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, - 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, - 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, - 2785, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, - 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, - 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, - 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3123, 3125, - 3129, 3133, 3133, 3160, 3161, 3168, 3169, 3205, 3212, 3214, 3216, 3218, 3240, - 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3333, - 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3424, 3425, 3450, 3455, - 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, - 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3719, 3720, 3722, 3722, 3725, 3725, - 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, 3751, 3754, 3755, 3757, - 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, - 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, - 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, - 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, - 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, - 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, - 5007, 5024, 5108, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, - 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, - 6067, 6103, 6103, 6108, 6108, 6176, 6263, 6272, 6312, 6314, 6314, 6320, 6389, - 6400, 6428, 6480, 6509, 6512, 6516, 6528, 6571, 6593, 6599, 6656, 6678, 6688, - 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, - 7168, 7203, 7245, 7247, 7258, 7293, 7401, 7404, 7406, 7409, 7413, 7414, 7424, - 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, - 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, - 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, - 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, - 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, - 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, - 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, - 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, - 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, - 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, - 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, - 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, - 42539, 42560, 42606, 42623, 42647, 42656, 42735, 42775, 42783, 42786, 42888, - 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43009, 43011, 43013, 43015, - 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, - 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43520, - 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43648, 43695, - 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, - 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, - 43808, 43814, 43816, 43822, 43968, 44002, 44032, 55203, 55216, 55238, 55243, - 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, - 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, - 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, - 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, - 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -var unicodeIdentifierPart = [ - 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, - 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 902, 902, 904, 906, - 908, 908, 910, 929, 931, - 1013, 1015, 1153, 1155, 1159, 1162, 1319, 1329, 1366, 1369, 1369, 1377, 1415, - 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1520, - 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, - 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2048, 2093, 2112, - 2139, 2208, 2208, 2210, 2220, 2276, 2302, 2304, 2403, 2406, 2415, 2417, 2423, - 2425, 2431, 2433, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, - 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, - 2527, 2531, 2534, 2545, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, - 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, - 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, - 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, - 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2817, 2819, 2821, - 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, - 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, - 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, - 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, - 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3073, 3075, 3077, 3084, 3086, 3088, - 3090, 3112, 3114, 3123, 3125, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, - 3158, 3160, 3161, 3168, 3171, 3174, 3183, 3202, 3203, 3205, 3212, 3214, 3216, - 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, - 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3330, 3331, 3333, 3340, - 3342, 3344, 3346, 3386, 3389, 3396, 3398, 3400, 3402, 3406, 3415, 3415, 3424, - 3427, 3430, 3439, 3450, 3455, 3458, 3459, 3461, 3478, 3482, 3505, 3507, 3515, - 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3570, - 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3719, 3720, - 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, 3749, 3751, - 3751, 3754, 3755, 3757, 3769, 3771, 3773, 3776, 3780, 3782, 3782, 3784, 3789, - 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, - 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, - 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, - 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, - 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, - 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4992, 5007, 5024, 5108, - 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5872, 5888, 5900, 5902, - 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, - 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6263, 6272, - 6314, 6320, 6389, 6400, 6428, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, - 6528, 6571, 6576, 6601, 6608, 6617, 6656, 6683, 6688, 6750, 6752, 6780, 6783, - 6793, 6800, 6809, 6823, 6823, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, - 7168, 7223, 7232, 7241, 7245, 7293, 7376, 7378, 7380, 7414, 7424, 7654, 7676, - 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, - 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, - 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8204, 8205, - 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, - 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, - 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, - 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, - 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, - 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, - 11734, 11736, 11742, 11744, 11775, 11823, 11823, 12293, 12295, 12321, 12335, - 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12442, 12445, 12447, 12449, - 12538, 12540, 12543, 12549, 12589, 12593, 12686, 12704, 12730, 12784, 12799, - 13312, 19893, 19968, 40908, 40960, 42124, 42192, 42237, 42240, 42508, 42512, - 42539, 42560, 42607, 42612, 42621, 42623, 42647, 42655, 42737, 42775, 42783, - 42786, 42888, 42891, 42894, 42896, 42899, 42912, 42922, 43000, 43047, 43072, - 43123, 43136, 43204, 43216, 43225, 43232, 43255, 43259, 43259, 43264, 43309, - 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43520, 43574, 43584, - 43597, 43600, 43609, 43616, 43638, 43642, 43643, 43648, 43714, 43739, 43741, - 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, - 43814, 43816, 43822, 43968, 44010, 44012, 44013, 44016, 44025, 44032, 55203, - 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, - 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, - 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, - 65019, 65024, 65039, 65056, 65062, 65075, 65076, 65101, 65103, 65136, 65140, - 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, - 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, -]; -function lookupInUnicodeMap(code, map) { - if (code < map[0]) - return false; - var lo = 0; - var hi = map.length; - var mid; - var midVal; - while (lo + 1 < hi) { - mid = lo + ((hi - lo) >> 1); - mid -= (mid & 1); - midVal = map[mid]; - if (midVal <= code && code <= map[mid + 1]) { - return true; - } - if (code < midVal) { - hi = mid; - } - else { - lo = mid + 2; - } - } - return false; -} -function isUnicodeIdentifierStart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierStart); -} -function isUnicodeIdentifierPart(code) { - return code < 0 || code > 0xffff ? false - : lookupInUnicodeMap(code, unicodeIdentifierPart); -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmNvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jaGFyY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsbUJBQW1CLENBQUEsS0FBSzs7QUFFeEIsd0NBQXdDO0FBQ3hDLElBQWtCLFFBb0lqQjtBQXBJRCxXQUFrQixRQUFRO0lBRXhCLHVDQUFRLENBQUE7SUFDUixnREFBZSxDQUFBO0lBQ2YsNERBQXFCLENBQUE7SUFDckIsNERBQXNCLENBQUE7SUFDdEIsc0VBQTJCLENBQUE7SUFDM0IsaURBQWlCLENBQUE7SUFFakIsMENBQVksQ0FBQTtJQUNaLGlFQUF1QixDQUFBO0lBQ3ZCLDhDQUFlLENBQUE7SUFDZiw4Q0FBZSxDQUFBO0lBQ2YsZ0RBQWdCLENBQUE7SUFDaEIsZ0RBQWdCLENBQUE7SUFDaEIsZ0VBQXdCLENBQUE7SUFDeEIsOERBQXVCLENBQUE7SUFDdkIsNERBQXNCLENBQUE7SUFDdEIsd0RBQW9CLENBQUE7SUFDcEIsa0VBQXlCLENBQUE7SUFDekIsb0RBQWtCLENBQUE7SUFDbEIsb0RBQWtCLENBQUE7SUFDbEIsOERBQXVCLENBQUE7SUFDdkIsc0VBQTJCLENBQUE7SUFDM0IsbUVBQXlCLENBQUE7SUFDekIsb0VBQTBCLENBQUE7SUFDMUIsNENBQWMsQ0FBQTtJQUVkLGtDQUFRLENBQUE7SUFFUixvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBQ1Qsb0NBQVMsQ0FBQTtJQUNULG9DQUFTLENBQUE7SUFDVCxvQ0FBUyxDQUFBO0lBRVQsa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFDUixtQ0FBUSxDQUFBO0lBQ1IsbUNBQVEsQ0FBQTtJQUNSLG1DQUFRLENBQUE7SUFFUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUNSLGtDQUFRLENBQUE7SUFDUixrQ0FBUSxDQUFBO0lBQ1Isa0NBQVEsQ0FBQTtJQUVSLGtEQUFnQixDQUFBO0lBQ2hCLGdEQUFlLENBQUE7SUFDZixvQ0FBUyxDQUFBO0lBQ1Qsa0RBQWdCLENBQUE7SUFDaEIsZ0RBQWUsQ0FBQTtJQUNmLHVDQUFVLENBQUE7SUFDViwwQ0FBWSxDQUFBO0lBQ1oscURBQWlCLENBQUE7SUFDakIsd0RBQW1CLENBQUE7SUFDbkIsb0RBQWlCLENBQUE7SUFDakIsMENBQVksQ0FBQTtJQUNaLDBDQUFZLENBQUE7SUFDWiw0Q0FBYSxDQUFBO0lBQ2Isc0NBQVUsQ0FBQTtJQUNWLHNEQUFrQixDQUFBO0lBQ2xCLDRDQUFhLENBQUE7SUFDYixzREFBa0IsQ0FBQTtJQUNsQixzREFBa0IsQ0FBQTtJQUNsQix3Q0FBVyxDQUFBO0lBQ1gsZ0RBQWUsQ0FBQTtJQUNmLDBDQUFZLENBQUE7SUFDWixtREFBZ0IsQ0FBQTtJQUNoQixzREFBa0IsQ0FBQTtJQUNsQixrREFBZ0IsQ0FBQTtJQUNoQiw4Q0FBYyxDQUFBO0lBQ2Qsd0NBQVcsQ0FBQTtJQUNYLGdEQUFlLENBQUE7SUFDZixrREFBZ0IsQ0FBQTtJQUNoQixzREFBa0IsQ0FBQTtJQUNsQiwwQ0FBWSxDQUFBO0lBQ1osMkNBQVksQ0FBQTtJQUVaLGlEQUFnQixDQUFBO0lBQ2hCLGdEQUFlLENBQUE7SUFDZiw2REFBc0IsQ0FBQTtJQUN0QixxQ0FBVSxDQUFBO0lBQ1Ysc0RBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQXBJaUIsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFvSXpCO0FBRUQsd0VBQXdFO0FBQ3hFLFNBQWdCLFdBQVcsQ0FBQyxDQUFXO0lBQ3JDLFFBQVEsQ0FBQyxFQUFFO1FBQ1QsdUJBQXVCO1FBQ3ZCLDZCQUE2QjtRQUM3Qiw4QkFBNEI7UUFDNUIsa0NBQWdDLENBQUMsQ0FBQztZQUNoQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLENBQUM7WUFDUCxPQUFPLEtBQUssQ0FBQztTQUNkO0tBQ0Y7QUFDSCxDQUFDO0FBWkQsa0NBWUM7QUFFRCx5RUFBeUU7QUFDekUsU0FBZ0IsWUFBWSxDQUFDLENBQU07SUFDakMsUUFBUSxDQUFDLEVBQUU7UUFDVCxvQkFBb0I7UUFDcEIsaUJBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQix1QkFBdUI7UUFDdkIsZ0NBQStCO1FBQy9CLHdCQUF1QjtRQUN2QixzQkFBb0I7UUFDcEIsbUNBQWlDO1FBQ2pDLGtDQUFnQztRQUNoQyxrQ0FBK0I7UUFDL0IsOEJBQTJCLENBQUMsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLENBQUM7WUFDUCxPQUFPLENBQUMscUJBQW1CLElBQUksQ0FBQyw2QkFBMkIsQ0FBQztTQUM3RDtLQUNGO0FBQ0gsQ0FBQztBQW5CRCxvQ0FtQkM7QUFFRCxzRUFBc0U7QUFDdEUsU0FBZ0IsY0FBYyxDQUFDLENBQU07SUFDbkMsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM5QyxDQUFDO0FBRkQsd0NBRUM7QUFFRCxvRUFBb0U7QUFDcEUsU0FBZ0IsWUFBWSxDQUFDLENBQU07SUFDakMsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM5QyxDQUFDO0FBRkQsb0NBRUM7QUFFRCwrRUFBK0U7QUFDL0UsU0FBZ0IsaUJBQWlCLENBQUMsQ0FBTTtJQUN0QyxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsZUFBYztXQUNsQyxDQUFDLGNBQWMsSUFBSSxDQUFDLGNBQWM7V0FDbEMsQ0FBQyxjQUFjO1dBQ2YsQ0FBQyxtQkFBbUI7V0FDcEIsQ0FBQyxHQUFHLElBQUksSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBTkQsOENBTUM7QUFFRCwwRUFBMEU7QUFDMUUsU0FBZ0Isa0JBQWtCLENBQUMsQ0FBTTtJQUN2QyxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsZUFBYyxDQUFDO0FBQzVDLENBQUM7QUFGRCxnREFFQztBQUVELDhFQUE4RTtBQUM5RSxTQUFnQixnQkFBZ0IsQ0FBQyxDQUFNO0lBQ3JDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxlQUFjO1dBQ2xDLENBQUMsY0FBYyxJQUFJLENBQUMsY0FBYztXQUNsQyxDQUFDLGVBQWUsSUFBSSxDQUFDLGVBQWU7V0FDcEMsQ0FBQyxjQUFjO1dBQ2YsQ0FBQyxtQkFBbUI7V0FDcEIsQ0FBQyxHQUFHLElBQUksSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBUEQsNENBT0M7QUFFRCxnQ0FBZ0M7QUFDaEMsSUFBTSxzQkFBc0IsR0FBVTtJQUNwQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDOUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUNoRCxDQUFDO0FBQ0YsSUFBTSxxQkFBcUIsR0FBVTtJQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7SUFDekUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3pFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUM1RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzVFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7SUFDNUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDM0UsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0NBQzlELENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLElBQVMsRUFBRSxHQUFVO0lBQy9DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVoQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3BCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxNQUFXLENBQUM7SUFFaEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUU7WUFDakIsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUNWO2FBQU07WUFDTCxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNkO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7SUFDekMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLElBQVM7SUFDeEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDbkMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQVcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuLyoqIEFuIGVudW0gb2YgbmFtZWQgY2hhcmFjdGVyIGNvZGVzLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gQ2hhckNvZGUge1xuXG4gIE5VTEwgPSAwLFxuICBMSU5FRkVFRCA9IDB4MEEsXG4gIENBUlJJQUdFUkVUVVJOID0gMHgwRCxcbiAgTElORVNFUEFSQVRPUiA9IDB4MjAyOCxcbiAgUEFSQUdSQVBIU0VQQVJBVE9SID0gMHgyMDI5LFxuICBORVhUTElORSA9IDB4MDA4NSxcblxuICBTUEFDRSA9IDB4MjAsXG4gIE5PTkJSRUFLSU5HU1BBQ0UgPSAweEEwLFxuICBFTlFVQUQgPSAweDIwMDAsXG4gIEVNUVVBRCA9IDB4MjAwMSxcbiAgRU5TUEFDRSA9IDB4MjAwMixcbiAgRU1TUEFDRSA9IDB4MjAwMyxcbiAgVEhSRUVQRVJFTVNQQUNFID0gMHgyMDA0LFxuICBGT1VSUEVSRU1TUEFDRSA9IDB4MjAwNSxcbiAgU0lYUEVSRU1TUEFDRSA9IDB4MjAwNixcbiAgRklHVVJFU1BBQ0UgPSAweDIwMDcsXG4gIFBVTkNUVUFUSU9OU1BBQ0UgPSAweDIwMDgsXG4gIFRISU5TUEFDRSA9IDB4MjAwOSxcbiAgSEFJUlNQQUNFID0gMHgyMDBBLFxuICBaRVJPV0lEVEhTUEFDRSA9IDB4MjAwQixcbiAgTkFSUk9XTk9CUkVBS1NQQUNFID0gMHgyMDJGLFxuICBJREVPR1JBUEhJQ1NQQUNFID0gMHgzMDAwLFxuICBNQVRIRU1BVElDQUxTUEFDRSA9IDB4MjA1RixcbiAgT0dIQU0gPSAweDE2ODAsXG5cbiAgXyA9IDB4NUYsXG5cbiAgXzAgPSAweDMwLFxuICBfMSA9IDB4MzEsXG4gIF8yID0gMHgzMixcbiAgXzMgPSAweDMzLFxuICBfNCA9IDB4MzQsXG4gIF81ID0gMHgzNSxcbiAgXzYgPSAweDM2LFxuICBfNyA9IDB4MzcsXG4gIF84ID0gMHgzOCxcbiAgXzkgPSAweDM5LFxuXG4gIGEgPSAweDYxLFxuICBiID0gMHg2MixcbiAgYyA9IDB4NjMsXG4gIGQgPSAweDY0LFxuICBlID0gMHg2NSxcbiAgZiA9IDB4NjYsXG4gIGcgPSAweDY3LFxuICBoID0gMHg2OCxcbiAgaSA9IDB4NjksXG4gIGogPSAweDZBLFxuICBrID0gMHg2QixcbiAgbCA9IDB4NkMsXG4gIG0gPSAweDZELFxuICBuID0gMHg2RSxcbiAgbyA9IDB4NkYsXG4gIHAgPSAweDcwLFxuICBxID0gMHg3MSxcbiAgciA9IDB4NzIsXG4gIHMgPSAweDczLFxuICB0ID0gMHg3NCxcbiAgdSA9IDB4NzUsXG4gIHYgPSAweDc2LFxuICB3ID0gMHg3NyxcbiAgeCA9IDB4NzgsXG4gIHkgPSAweDc5LFxuICB6ID0gMHg3QSxcblxuICBBID0gMHg0MSxcbiAgQiA9IDB4NDIsXG4gIEMgPSAweDQzLFxuICBEID0gMHg0NCxcbiAgRSA9IDB4NDUsXG4gIEYgPSAweDQ2LFxuICBHID0gMHg0NyxcbiAgSCA9IDB4NDgsXG4gIEkgPSAweDQ5LFxuICBKID0gMHg0QSxcbiAgSyA9IDB4NEIsXG4gIEwgPSAweDRDLFxuICBNID0gMHg0RCxcbiAgTiA9IDB4NEUsXG4gIE8gPSAweDRGLFxuICBQID0gMHg1MCxcbiAgUSA9IDB4NTEsXG4gIFIgPSAweDUyLFxuICBTID0gMHg1MyxcbiAgVCA9IDB4NTQsXG4gIFUgPSAweDU1LFxuICBWID0gMHg1NixcbiAgVyA9IDB4NTcsXG4gIFggPSAweDU4LFxuICBZID0gMHg1OSxcbiAgWiA9IDB4NWEsXG5cbiAgQU1QRVJTQU5EID0gMHgyNixcbiAgQVNURVJJU0sgPSAweDJBLFxuICBBVCA9IDB4NDAsXG4gIEJBQ0tTTEFTSCA9IDB4NUMsXG4gIEJBQ0tUSUNLID0gMHg2MCxcbiAgQkFSID0gMHg3QyxcbiAgQ0FSRVQgPSAweDVFLFxuICBDTE9TRUJSQUNFID0gMHg3RCxcbiAgQ0xPU0VCUkFDS0VUID0gMHg1RCxcbiAgQ0xPU0VQQVJFTiA9IDB4MjksXG4gIENPTE9OID0gMHgzQSxcbiAgQ09NTUEgPSAweDJDLFxuICBET0xMQVIgPSAweDI0LFxuICBET1QgPSAweDJFLFxuICBET1VCTEVRVU9URSA9IDB4MjIsXG4gIEVRVUFMUyA9IDB4M0QsXG4gIEVYQ0xBTUFUSU9OID0gMHgyMSxcbiAgR1JFQVRFUlRIQU4gPSAweDNFLFxuICBIQVNIID0gMHgyMyxcbiAgTEVTU1RIQU4gPSAweDNDLFxuICBNSU5VUyA9IDB4MkQsXG4gIE9QRU5CUkFDRSA9IDB4N0IsXG4gIE9QRU5CUkFDS0VUID0gMHg1QixcbiAgT1BFTlBBUkVOID0gMHgyOCxcbiAgUEVSQ0VOVCA9IDB4MjUsXG4gIFBMVVMgPSAweDJCLFxuICBRVUVTVElPTiA9IDB4M0YsXG4gIFNFTUlDT0xPTiA9IDB4M0IsXG4gIFNJTkdMRVFVT1RFID0gMHgyNyxcbiAgU0xBU0ggPSAweDJGLFxuICBUSUxERSA9IDB4N0UsXG5cbiAgQkFDS1NQQUNFID0gMHgwOCxcbiAgRk9STUZFRUQgPSAweDBDLFxuICBCWVRFT1JERVJNQVJLID0gMHhGRUZGLFxuICBUQUIgPSAweDA5LFxuICBWRVJUSUNBTFRBQiA9IDB4MEJcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIGxpbmUgYnJlYWsuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lQnJlYWsoYzogQ2hhckNvZGUpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDpcbiAgICBjYXNlIENoYXJDb2RlLkNBUlJJQUdFUkVUVVJOOlxuICAgIGNhc2UgQ2hhckNvZGUuTElORVNFUEFSQVRPUjpcbiAgICBjYXNlIENoYXJDb2RlLlBBUkFHUkFQSFNFUEFSQVRPUjoge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgc29tZSBzb3J0IG9mIHdoaXRlIHNwYWNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjOiBpMzIpOiBib29sIHtcbiAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSBDaGFyQ29kZS5TUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLlRBQjpcbiAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOlxuICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6XG4gICAgY2FzZSBDaGFyQ29kZS5OT05CUkVBS0lOR1NQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuTkVYVExJTkU6XG4gICAgY2FzZSBDaGFyQ29kZS5PR0hBTTpcbiAgICBjYXNlIENoYXJDb2RlLk5BUlJPV05PQlJFQUtTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLk1BVEhFTUFUSUNBTFNQQUNFOlxuICAgIGNhc2UgQ2hhckNvZGUuSURFT0dSQVBISUNTUEFDRTpcbiAgICBjYXNlIENoYXJDb2RlLkJZVEVPUkRFUk1BUks6IHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gYyA+PSBDaGFyQ29kZS5FTlFVQUQgJiYgYyA8PSBDaGFyQ29kZS5aRVJPV0lEVEhTUEFDRTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBkZWNpbWFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVjaW1hbERpZ2l0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5fMCAmJiBjIDw9IENoYXJDb2RlLl85O1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIG9jdGFsIGRpZ2l0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2N0YWxEaWdpdChjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuXzAgJiYgYyA8PSBDaGFyQ29kZS5fNztcbn1cblxuLyoqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGNvZGUgaXMgYSB2YWxpZCBzdGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGM6IGkzMik6IGJvb2wge1xuICByZXR1cm4gYyA+PSBDaGFyQ29kZS5hICYmIGMgPD0gQ2hhckNvZGUuelxuICAgICAgfHwgYyA+PSBDaGFyQ29kZS5BICYmIGMgPD0gQ2hhckNvZGUuWlxuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5fXG4gICAgICB8fCBjID09IENoYXJDb2RlLkRPTExBUlxuICAgICAgfHwgYyA+IDB4N2YgJiYgaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGMpO1xufVxuXG4vKiogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgY29kZSBpcyBhIHZhbGlkIGtleXdvcmQgY2hhcmFjdGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzS2V5d29yZENoYXJhY3RlcihjOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGMgPj0gQ2hhckNvZGUuYSAmJiBjIDw9IENoYXJDb2RlLno7XG59XG5cbi8qKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBjb2RlIGlzIGEgdmFsaWQgcGFydCBvZiBhbiBpZGVudGlmaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbnRpZmllclBhcnQoYzogaTMyKTogYm9vbCB7XG4gIHJldHVybiBjID49IENoYXJDb2RlLmEgJiYgYyA8PSBDaGFyQ29kZS56XG4gICAgICB8fCBjID49IENoYXJDb2RlLkEgJiYgYyA8PSBDaGFyQ29kZS5aXG4gICAgICB8fCBjID49IENoYXJDb2RlLl8wICYmIGMgPD0gQ2hhckNvZGUuXzlcbiAgICAgIHx8IGMgPT0gQ2hhckNvZGUuX1xuICAgICAgfHwgYyA9PSBDaGFyQ29kZS5ET0xMQVJcbiAgICAgIHx8IGMgPiAweDdmICYmIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpO1xufVxuXG4vLyBzdG9yaW5nIGFzIHUxNiB0byBzYXZlIG1lbW9yeVxuY29uc3QgdW5pY29kZUlkZW50aWZpZXJTdGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA4ODAsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LCAxNDg4LCAxNTE0LFxuICAxNTIwLCAxNTIyLCAxNTY4LCAxNjEwLCAxNjQ2LCAxNjQ3LCAxNjQ5LCAxNzQ3LCAxNzQ5LCAxNzQ5LCAxNzY1LCAxNzY2LCAxNzc0LFxuICAxNzc1LCAxNzg2LCAxNzg4LCAxNzkxLCAxNzkxLCAxODA4LCAxODA4LCAxODEwLCAxODM5LCAxODY5LCAxOTU3LCAxOTY5LCAxOTY5LFxuICAxOTk0LCAyMDI2LCAyMDM2LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDY5LCAyMDc0LCAyMDc0LCAyMDg0LCAyMDg0LCAyMDg4LFxuICAyMDg4LCAyMTEyLCAyMTM2LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMzA4LCAyMzYxLCAyMzY1LCAyMzY1LCAyMzg0LCAyMzg0LFxuICAyMzkyLCAyNDAxLCAyNDE3LCAyNDIzLCAyNDI1LCAyNDMxLCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LFxuICAyNDgwLCAyNDgyLCAyNDgyLCAyNDg2LCAyNDg5LCAyNDkzLCAyNDkzLCAyNTEwLCAyNTEwLCAyNTI0LCAyNTI1LCAyNTI3LCAyNTI5LFxuICAyNTQ0LCAyNTQ1LCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLCAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLFxuICAyNjE0LCAyNjE2LCAyNjE3LCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjc0LCAyNjc2LCAyNjkzLCAyNzAxLCAyNzAzLCAyNzA1LFxuICAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ5LCAyNzQ5LCAyNzY4LCAyNzY4LCAyNzg0LFxuICAyNzg1LCAyODIxLCAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLFxuICAyODc3LCAyODc3LCAyOTA4LCAyOTA5LCAyOTExLCAyOTEzLCAyOTI5LCAyOTI5LCAyOTQ3LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LFxuICAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLCAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LFxuICAyOTkwLCAzMDAxLCAzMDI0LCAzMDI0LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LCAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LFxuICAzMTI5LCAzMTMzLCAzMTMzLCAzMTYwLCAzMTYxLCAzMTY4LCAzMTY5LCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LCAzMjE4LCAzMjQwLFxuICAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYxLCAzMjYxLCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk3LCAzMzEzLCAzMzE0LCAzMzMzLFxuICAzMzQwLCAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzg5LCAzNDA2LCAzNDA2LCAzNDI0LCAzNDI1LCAzNDUwLCAzNDU1LFxuICAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LCAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTg1LCAzNjMyLCAzNjM0LFxuICAzNjM1LCAzNjQ4LCAzNjU0LCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLCAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LFxuICAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLCAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LFxuICAzNzYwLCAzNzYyLCAzNzYzLCAzNzczLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzODA0LCAzODA3LCAzODQwLCAzODQwLFxuICAzOTA0LCAzOTExLCAzOTEzLCAzOTQ4LCAzOTc2LCAzOTgwLCA0MDk2LCA0MTM4LCA0MTU5LCA0MTU5LCA0MTc2LCA0MTgxLCA0MTg2LFxuICA0MTg5LCA0MTkzLCA0MTkzLCA0MTk3LCA0MTk4LCA0MjA2LCA0MjA4LCA0MjEzLCA0MjI1LCA0MjM4LCA0MjM4LCA0MjU2LCA0MjkzLFxuICA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LCA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LFxuICA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LCA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LFxuICA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LCA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTkyLFxuICA1MDA3LCA1MDI0LCA1MTA4LCA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLFxuICA1ODg4LCA1OTAwLCA1OTAyLCA1OTA1LCA1OTIwLCA1OTM3LCA1OTUyLCA1OTY5LCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDE2LFxuICA2MDY3LCA2MTAzLCA2MTAzLCA2MTA4LCA2MTA4LCA2MTc2LCA2MjYzLCA2MjcyLCA2MzEyLCA2MzE0LCA2MzE0LCA2MzIwLCA2Mzg5LFxuICA2NDAwLCA2NDI4LCA2NDgwLCA2NTA5LCA2NTEyLCA2NTE2LCA2NTI4LCA2NTcxLCA2NTkzLCA2NTk5LCA2NjU2LCA2Njc4LCA2Njg4LFxuICA2NzQwLCA2ODIzLCA2ODIzLCA2OTE3LCA2OTYzLCA2OTgxLCA2OTg3LCA3MDQzLCA3MDcyLCA3MDg2LCA3MDg3LCA3MDk4LCA3MTQxLFxuICA3MTY4LCA3MjAzLCA3MjQ1LCA3MjQ3LCA3MjU4LCA3MjkzLCA3NDAxLCA3NDA0LCA3NDA2LCA3NDA5LCA3NDEzLCA3NDE0LCA3NDI0LFxuICA3NjE1LCA3NjgwLCA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LFxuICA4MDI3LCA4MDI3LCA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLFxuICA4MTMyLCA4MTM0LCA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LFxuICA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LFxuICA4NDY5LCA4NDczLCA4NDc3LCA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LFxuICA4NTA4LCA4NTExLCA4NTE3LCA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDIsIDExNTA2LCAxMTUwNywgMTE1MjAsXG4gIDExNTU3LCAxMTU1OSwgMTE1NTksIDExNTY1LCAxMTU2NSwgMTE1NjgsIDExNjIzLCAxMTYzMSwgMTE2MzEsIDExNjQ4LCAxMTY3MCxcbiAgMTE2ODAsIDExNjg2LCAxMTY4OCwgMTE2OTQsIDExNjk2LCAxMTcwMiwgMTE3MDQsIDExNzEwLCAxMTcxMiwgMTE3MTgsIDExNzIwLFxuICAxMTcyNiwgMTE3MjgsIDExNzM0LCAxMTczNiwgMTE3NDIsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMjksXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQ1LCAxMjQ0NywgMTI0NDksIDEyNTM4LCAxMjU0MCxcbiAgMTI1NDMsIDEyNTQ5LCAxMjU4OSwgMTI1OTMsIDEyNjg2LCAxMjcwNCwgMTI3MzAsIDEyNzg0LCAxMjc5OSwgMTMzMTIsIDE5ODkzLFxuICAxOTk2OCwgNDA5MDgsIDQwOTYwLCA0MjEyNCwgNDIxOTIsIDQyMjM3LCA0MjI0MCwgNDI1MDgsIDQyNTEyLCA0MjUyNywgNDI1MzgsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDYsIDQyNjIzLCA0MjY0NywgNDI2NTYsIDQyNzM1LCA0Mjc3NSwgNDI3ODMsIDQyNzg2LCA0Mjg4OCxcbiAgNDI4OTEsIDQyODk0LCA0Mjg5NiwgNDI4OTksIDQyOTEyLCA0MjkyMiwgNDMwMDAsIDQzMDA5LCA0MzAxMSwgNDMwMTMsIDQzMDE1LFxuICA0MzAxOCwgNDMwMjAsIDQzMDQyLCA0MzA3MiwgNDMxMjMsIDQzMTM4LCA0MzE4NywgNDMyNTAsIDQzMjU1LCA0MzI1OSwgNDMyNTksXG4gIDQzMjc0LCA0MzMwMSwgNDMzMTIsIDQzMzM0LCA0MzM2MCwgNDMzODgsIDQzMzk2LCA0MzQ0MiwgNDM0NzEsIDQzNDcxLCA0MzUyMCxcbiAgNDM1NjAsIDQzNTg0LCA0MzU4NiwgNDM1ODgsIDQzNTk1LCA0MzYxNiwgNDM2MzgsIDQzNjQyLCA0MzY0MiwgNDM2NDgsIDQzNjk1LFxuICA0MzY5NywgNDM2OTcsIDQzNzAxLCA0MzcwMiwgNDM3MDUsIDQzNzA5LCA0MzcxMiwgNDM3MTIsIDQzNzE0LCA0MzcxNCwgNDM3MzksXG4gIDQzNzQxLCA0Mzc0NCwgNDM3NTQsIDQzNzYyLCA0Mzc2NCwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCxcbiAgNDM4MDgsIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAwMiwgNDQwMzIsIDU1MjAzLCA1NTIxNiwgNTUyMzgsIDU1MjQzLFxuICA1NTI5MSwgNjM3NDQsIDY0MTA5LCA2NDExMiwgNjQyMTcsIDY0MjU2LCA2NDI2MiwgNjQyNzUsIDY0Mjc5LCA2NDI4NSwgNjQyODUsXG4gIDY0Mjg3LCA2NDI5NiwgNjQyOTgsIDY0MzEwLCA2NDMxMiwgNjQzMTYsIDY0MzE4LCA2NDMxOCwgNjQzMjAsIDY0MzIxLCA2NDMyMyxcbiAgNjQzMjQsIDY0MzI2LCA2NDQzMywgNjQ0NjcsIDY0ODI5LCA2NDg0OCwgNjQ5MTEsIDY0OTE0LCA2NDk2NywgNjUwMDgsIDY1MDE5LFxuICA2NTEzNiwgNjUxNDAsIDY1MTQyLCA2NTI3NiwgNjUzMTMsIDY1MzM4LCA2NTM0NSwgNjUzNzAsIDY1MzgyLCA2NTQ3MCwgNjU0NzQsXG4gIDY1NDc5LCA2NTQ4MiwgNjU0ODcsIDY1NDkwLCA2NTQ5NSwgNjU0OTgsIDY1NTAwLFxuXTtcbmNvbnN0IHVuaWNvZGVJZGVudGlmaWVyUGFydDogdTE2W10gPSBbXG4gIDE3MCwgMTcwLCAxODEsIDE4MSwgMTg2LCAxODYsIDE5MiwgMjE0LCAyMTYsIDI0NiwgMjQ4LCA3MDUsIDcxMCwgNzIxLCA3MzYsXG4gIDc0MCwgNzQ4LCA3NDgsIDc1MCwgNzUwLCA3NjgsIDg4NCwgODg2LCA4ODcsIDg5MCwgODkzLCA5MDIsIDkwMiwgOTA0LCA5MDYsXG4gIDkwOCwgOTA4LCA5MTAsIDkyOSwgOTMxLFxuICAxMDEzLCAxMDE1LCAxMTUzLCAxMTU1LCAxMTU5LCAxMTYyLCAxMzE5LCAxMzI5LCAxMzY2LCAxMzY5LCAxMzY5LCAxMzc3LCAxNDE1LFxuICAxNDI1LCAxNDY5LCAxNDcxLCAxNDcxLCAxNDczLCAxNDc0LCAxNDc2LCAxNDc3LCAxNDc5LCAxNDc5LCAxNDg4LCAxNTE0LCAxNTIwLFxuICAxNTIyLCAxNTUyLCAxNTYyLCAxNTY4LCAxNjQxLCAxNjQ2LCAxNzQ3LCAxNzQ5LCAxNzU2LCAxNzU5LCAxNzY4LCAxNzcwLCAxNzg4LFxuICAxNzkxLCAxNzkxLCAxODA4LCAxODY2LCAxODY5LCAxOTY5LCAxOTg0LCAyMDM3LCAyMDQyLCAyMDQyLCAyMDQ4LCAyMDkzLCAyMTEyLFxuICAyMTM5LCAyMjA4LCAyMjA4LCAyMjEwLCAyMjIwLCAyMjc2LCAyMzAyLCAyMzA0LCAyNDAzLCAyNDA2LCAyNDE1LCAyNDE3LCAyNDIzLFxuICAyNDI1LCAyNDMxLCAyNDMzLCAyNDM1LCAyNDM3LCAyNDQ0LCAyNDQ3LCAyNDQ4LCAyNDUxLCAyNDcyLCAyNDc0LCAyNDgwLCAyNDgyLFxuICAyNDgyLCAyNDg2LCAyNDg5LCAyNDkyLCAyNTAwLCAyNTAzLCAyNTA0LCAyNTA3LCAyNTEwLCAyNTE5LCAyNTE5LCAyNTI0LCAyNTI1LFxuICAyNTI3LCAyNTMxLCAyNTM0LCAyNTQ1LCAyNTYxLCAyNTYzLCAyNTY1LCAyNTcwLCAyNTc1LCAyNTc2LCAyNTc5LCAyNjAwLCAyNjAyLFxuICAyNjA4LCAyNjEwLCAyNjExLCAyNjEzLCAyNjE0LCAyNjE2LCAyNjE3LCAyNjIwLCAyNjIwLCAyNjIyLCAyNjI2LCAyNjMxLCAyNjMyLFxuICAyNjM1LCAyNjM3LCAyNjQxLCAyNjQxLCAyNjQ5LCAyNjUyLCAyNjU0LCAyNjU0LCAyNjYyLCAyNjc3LCAyNjg5LCAyNjkxLCAyNjkzLFxuICAyNzAxLCAyNzAzLCAyNzA1LCAyNzA3LCAyNzI4LCAyNzMwLCAyNzM2LCAyNzM4LCAyNzM5LCAyNzQxLCAyNzQ1LCAyNzQ4LCAyNzU3LFxuICAyNzU5LCAyNzYxLCAyNzYzLCAyNzY1LCAyNzY4LCAyNzY4LCAyNzg0LCAyNzg3LCAyNzkwLCAyNzk5LCAyODE3LCAyODE5LCAyODIxLFxuICAyODI4LCAyODMxLCAyODMyLCAyODM1LCAyODU2LCAyODU4LCAyODY0LCAyODY2LCAyODY3LCAyODY5LCAyODczLCAyODc2LCAyODg0LFxuICAyODg3LCAyODg4LCAyODkxLCAyODkzLCAyOTAyLCAyOTAzLCAyOTA4LCAyOTA5LCAyOTExLCAyOTE1LCAyOTE4LCAyOTI3LCAyOTI5LFxuICAyOTI5LCAyOTQ2LCAyOTQ3LCAyOTQ5LCAyOTU0LCAyOTU4LCAyOTYwLCAyOTYyLCAyOTY1LCAyOTY5LCAyOTcwLCAyOTcyLCAyOTcyLFxuICAyOTc0LCAyOTc1LCAyOTc5LCAyOTgwLCAyOTg0LCAyOTg2LCAyOTkwLCAzMDAxLCAzMDA2LCAzMDEwLCAzMDE0LCAzMDE2LCAzMDE4LFxuICAzMDIxLCAzMDI0LCAzMDI0LCAzMDMxLCAzMDMxLCAzMDQ2LCAzMDU1LCAzMDczLCAzMDc1LCAzMDc3LCAzMDg0LCAzMDg2LCAzMDg4LFxuICAzMDkwLCAzMTEyLCAzMTE0LCAzMTIzLCAzMTI1LCAzMTI5LCAzMTMzLCAzMTQwLCAzMTQyLCAzMTQ0LCAzMTQ2LCAzMTQ5LCAzMTU3LFxuICAzMTU4LCAzMTYwLCAzMTYxLCAzMTY4LCAzMTcxLCAzMTc0LCAzMTgzLCAzMjAyLCAzMjAzLCAzMjA1LCAzMjEyLCAzMjE0LCAzMjE2LFxuICAzMjE4LCAzMjQwLCAzMjQyLCAzMjUxLCAzMjUzLCAzMjU3LCAzMjYwLCAzMjY4LCAzMjcwLCAzMjcyLCAzMjc0LCAzMjc3LCAzMjg1LFxuICAzMjg2LCAzMjk0LCAzMjk0LCAzMjk2LCAzMjk5LCAzMzAyLCAzMzExLCAzMzEzLCAzMzE0LCAzMzMwLCAzMzMxLCAzMzMzLCAzMzQwLFxuICAzMzQyLCAzMzQ0LCAzMzQ2LCAzMzg2LCAzMzg5LCAzMzk2LCAzMzk4LCAzNDAwLCAzNDAyLCAzNDA2LCAzNDE1LCAzNDE1LCAzNDI0LFxuICAzNDI3LCAzNDMwLCAzNDM5LCAzNDUwLCAzNDU1LCAzNDU4LCAzNDU5LCAzNDYxLCAzNDc4LCAzNDgyLCAzNTA1LCAzNTA3LCAzNTE1LFxuICAzNTE3LCAzNTE3LCAzNTIwLCAzNTI2LCAzNTMwLCAzNTMwLCAzNTM1LCAzNTQwLCAzNTQyLCAzNTQyLCAzNTQ0LCAzNTUxLCAzNTcwLFxuICAzNTcxLCAzNTg1LCAzNjQyLCAzNjQ4LCAzNjYyLCAzNjY0LCAzNjczLCAzNzEzLCAzNzE0LCAzNzE2LCAzNzE2LCAzNzE5LCAzNzIwLFxuICAzNzIyLCAzNzIyLCAzNzI1LCAzNzI1LCAzNzMyLCAzNzM1LCAzNzM3LCAzNzQzLCAzNzQ1LCAzNzQ3LCAzNzQ5LCAzNzQ5LCAzNzUxLFxuICAzNzUxLCAzNzU0LCAzNzU1LCAzNzU3LCAzNzY5LCAzNzcxLCAzNzczLCAzNzc2LCAzNzgwLCAzNzgyLCAzNzgyLCAzNzg0LCAzNzg5LFxuICAzNzkyLCAzODAxLCAzODA0LCAzODA3LCAzODQwLCAzODQwLCAzODY0LCAzODY1LCAzODcyLCAzODgxLCAzODkzLCAzODkzLCAzODk1LFxuICAzODk1LCAzODk3LCAzODk3LCAzOTAyLCAzOTExLCAzOTEzLCAzOTQ4LCAzOTUzLCAzOTcyLCAzOTc0LCAzOTkxLCAzOTkzLCA0MDI4LFxuICA0MDM4LCA0MDM4LCA0MDk2LCA0MTY5LCA0MTc2LCA0MjUzLCA0MjU2LCA0MjkzLCA0Mjk1LCA0Mjk1LCA0MzAxLCA0MzAxLCA0MzA0LFxuICA0MzQ2LCA0MzQ4LCA0NjgwLCA0NjgyLCA0Njg1LCA0Njg4LCA0Njk0LCA0Njk2LCA0Njk2LCA0Njk4LCA0NzAxLCA0NzA0LCA0NzQ0LFxuICA0NzQ2LCA0NzQ5LCA0NzUyLCA0Nzg0LCA0Nzg2LCA0Nzg5LCA0NzkyLCA0Nzk4LCA0ODAwLCA0ODAwLCA0ODAyLCA0ODA1LCA0ODA4LFxuICA0ODIyLCA0ODI0LCA0ODgwLCA0ODgyLCA0ODg1LCA0ODg4LCA0OTU0LCA0OTU3LCA0OTU5LCA0OTkyLCA1MDA3LCA1MDI0LCA1MTA4LFxuICA1MTIxLCA1NzQwLCA1NzQzLCA1NzU5LCA1NzYxLCA1Nzg2LCA1NzkyLCA1ODY2LCA1ODcwLCA1ODcyLCA1ODg4LCA1OTAwLCA1OTAyLFxuICA1OTA4LCA1OTIwLCA1OTQwLCA1OTUyLCA1OTcxLCA1OTg0LCA1OTk2LCA1OTk4LCA2MDAwLCA2MDAyLCA2MDAzLCA2MDE2LCA2MDk5LFxuICA2MTAzLCA2MTAzLCA2MTA4LCA2MTA5LCA2MTEyLCA2MTIxLCA2MTU1LCA2MTU3LCA2MTYwLCA2MTY5LCA2MTc2LCA2MjYzLCA2MjcyLFxuICA2MzE0LCA2MzIwLCA2Mzg5LCA2NDAwLCA2NDI4LCA2NDMyLCA2NDQzLCA2NDQ4LCA2NDU5LCA2NDcwLCA2NTA5LCA2NTEyLCA2NTE2LFxuICA2NTI4LCA2NTcxLCA2NTc2LCA2NjAxLCA2NjA4LCA2NjE3LCA2NjU2LCA2NjgzLCA2Njg4LCA2NzUwLCA2NzUyLCA2NzgwLCA2NzgzLFxuICA2NzkzLCA2ODAwLCA2ODA5LCA2ODIzLCA2ODIzLCA2OTEyLCA2OTg3LCA2OTkyLCA3MDAxLCA3MDE5LCA3MDI3LCA3MDQwLCA3MTU1LFxuICA3MTY4LCA3MjIzLCA3MjMyLCA3MjQxLCA3MjQ1LCA3MjkzLCA3Mzc2LCA3Mzc4LCA3MzgwLCA3NDE0LCA3NDI0LCA3NjU0LCA3Njc2LFxuICA3OTU3LCA3OTYwLCA3OTY1LCA3OTY4LCA4MDA1LCA4MDA4LCA4MDEzLCA4MDE2LCA4MDIzLCA4MDI1LCA4MDI1LCA4MDI3LCA4MDI3LFxuICA4MDI5LCA4MDI5LCA4MDMxLCA4MDYxLCA4MDY0LCA4MTE2LCA4MTE4LCA4MTI0LCA4MTI2LCA4MTI2LCA4MTMwLCA4MTMyLCA4MTM0LFxuICA4MTQwLCA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTU1LCA4MTYwLCA4MTcyLCA4MTc4LCA4MTgwLCA4MTgyLCA4MTg4LCA4MjA0LCA4MjA1LFxuICA4MjU1LCA4MjU2LCA4Mjc2LCA4Mjc2LCA4MzA1LCA4MzA1LCA4MzE5LCA4MzE5LCA4MzM2LCA4MzQ4LCA4NDAwLCA4NDEyLCA4NDE3LFxuICA4NDE3LCA4NDIxLCA4NDMyLCA4NDUwLCA4NDUwLCA4NDU1LCA4NDU1LCA4NDU4LCA4NDY3LCA4NDY5LCA4NDY5LCA4NDczLCA4NDc3LFxuICA4NDg0LCA4NDg0LCA4NDg2LCA4NDg2LCA4NDg4LCA4NDg4LCA4NDkwLCA4NDkzLCA4NDk1LCA4NTA1LCA4NTA4LCA4NTExLCA4NTE3LFxuICA4NTIxLCA4NTI2LCA4NTI2LCA4NTQ0LCA4NTg0LFxuICAxMTI2NCwgMTEzMTAsIDExMzEyLCAxMTM1OCwgMTEzNjAsIDExNDkyLCAxMTQ5OSwgMTE1MDcsIDExNTIwLCAxMTU1NywgMTE1NTksXG4gIDExNTU5LCAxMTU2NSwgMTE1NjUsIDExNTY4LCAxMTYyMywgMTE2MzEsIDExNjMxLCAxMTY0NywgMTE2NzAsIDExNjgwLCAxMTY4NixcbiAgMTE2ODgsIDExNjk0LCAxMTY5NiwgMTE3MDIsIDExNzA0LCAxMTcxMCwgMTE3MTIsIDExNzE4LCAxMTcyMCwgMTE3MjYsIDExNzI4LFxuICAxMTczNCwgMTE3MzYsIDExNzQyLCAxMTc0NCwgMTE3NzUsIDExODIzLCAxMTgyMywgMTIyOTMsIDEyMjk1LCAxMjMyMSwgMTIzMzUsXG4gIDEyMzM3LCAxMjM0MSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTI0MzgsIDEyNDQxLCAxMjQ0MiwgMTI0NDUsIDEyNDQ3LCAxMjQ0OSxcbiAgMTI1MzgsIDEyNTQwLCAxMjU0MywgMTI1NDksIDEyNTg5LCAxMjU5MywgMTI2ODYsIDEyNzA0LCAxMjczMCwgMTI3ODQsIDEyNzk5LFxuICAxMzMxMiwgMTk4OTMsIDE5OTY4LCA0MDkwOCwgNDA5NjAsIDQyMTI0LCA0MjE5MiwgNDIyMzcsIDQyMjQwLCA0MjUwOCwgNDI1MTIsXG4gIDQyNTM5LCA0MjU2MCwgNDI2MDcsIDQyNjEyLCA0MjYyMSwgNDI2MjMsIDQyNjQ3LCA0MjY1NSwgNDI3MzcsIDQyNzc1LCA0Mjc4MyxcbiAgNDI3ODYsIDQyODg4LCA0Mjg5MSwgNDI4OTQsIDQyODk2LCA0Mjg5OSwgNDI5MTIsIDQyOTIyLCA0MzAwMCwgNDMwNDcsIDQzMDcyLFxuICA0MzEyMywgNDMxMzYsIDQzMjA0LCA0MzIxNiwgNDMyMjUsIDQzMjMyLCA0MzI1NSwgNDMyNTksIDQzMjU5LCA0MzI2NCwgNDMzMDksXG4gIDQzMzEyLCA0MzM0NywgNDMzNjAsIDQzMzg4LCA0MzM5MiwgNDM0NTYsIDQzNDcxLCA0MzQ4MSwgNDM1MjAsIDQzNTc0LCA0MzU4NCxcbiAgNDM1OTcsIDQzNjAwLCA0MzYwOSwgNDM2MTYsIDQzNjM4LCA0MzY0MiwgNDM2NDMsIDQzNjQ4LCA0MzcxNCwgNDM3MzksIDQzNzQxLFxuICA0Mzc0NCwgNDM3NTksIDQzNzYyLCA0Mzc2NiwgNDM3NzcsIDQzNzgyLCA0Mzc4NSwgNDM3OTAsIDQzNzkzLCA0Mzc5OCwgNDM4MDgsXG4gIDQzODE0LCA0MzgxNiwgNDM4MjIsIDQzOTY4LCA0NDAxMCwgNDQwMTIsIDQ0MDEzLCA0NDAxNiwgNDQwMjUsIDQ0MDMyLCA1NTIwMyxcbiAgNTUyMTYsIDU1MjM4LCA1NTI0MywgNTUyOTEsIDYzNzQ0LCA2NDEwOSwgNjQxMTIsIDY0MjE3LCA2NDI1NiwgNjQyNjIsIDY0Mjc1LFxuICA2NDI3OSwgNjQyODUsIDY0Mjk2LCA2NDI5OCwgNjQzMTAsIDY0MzEyLCA2NDMxNiwgNjQzMTgsIDY0MzE4LCA2NDMyMCwgNjQzMjEsXG4gIDY0MzIzLCA2NDMyNCwgNjQzMjYsIDY0NDMzLCA2NDQ2NywgNjQ4MjksIDY0ODQ4LCA2NDkxMSwgNjQ5MTQsIDY0OTY3LCA2NTAwOCxcbiAgNjUwMTksIDY1MDI0LCA2NTAzOSwgNjUwNTYsIDY1MDYyLCA2NTA3NSwgNjUwNzYsIDY1MTAxLCA2NTEwMywgNjUxMzYsIDY1MTQwLFxuICA2NTE0MiwgNjUyNzYsIDY1Mjk2LCA2NTMwNSwgNjUzMTMsIDY1MzM4LCA2NTM0MywgNjUzNDMsIDY1MzQ1LCA2NTM3MCwgNjUzODIsXG4gIDY1NDcwLCA2NTQ3NCwgNjU0NzksIDY1NDgyLCA2NTQ4NywgNjU0OTAsIDY1NDk1LCA2NTQ5OCwgNjU1MDAsXG5dO1xuXG5mdW5jdGlvbiBsb29rdXBJblVuaWNvZGVNYXAoY29kZTogdTE2LCBtYXA6IHUxNltdKTogYm9vbCB7XG4gIGlmIChjb2RlIDwgbWFwWzBdKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGxvID0gMDtcbiAgdmFyIGhpID0gbWFwLmxlbmd0aDtcbiAgdmFyIG1pZDogaTMyO1xuICB2YXIgbWlkVmFsOiB1MTY7XG5cbiAgd2hpbGUgKGxvICsgMSA8IGhpKSB7XG4gICAgbWlkID0gbG8gKyAoKGhpIC0gbG8pID4+IDEpO1xuICAgIG1pZCAtPSAobWlkICYgMSk7XG4gICAgbWlkVmFsID0gbWFwW21pZF07XG4gICAgaWYgKG1pZFZhbCA8PSBjb2RlICYmIGNvZGUgPD0gbWFwW21pZCArIDFdKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPCBtaWRWYWwpIHtcbiAgICAgIGhpID0gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBsbyA9IG1pZCArIDI7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNvZGU6IGkzMik6IGJvb2wge1xuICByZXR1cm4gY29kZSA8IDAgfHwgY29kZSA+IDB4ZmZmZiA/IGZhbHNlXG4gICAgICAgOiBsb29rdXBJblVuaWNvZGVNYXAoY29kZSBhcyB1MTYsIHVuaWNvZGVJZGVudGlmaWVyU3RhcnQpO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChjb2RlOiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIGNvZGUgPCAwIHx8IGNvZGUgPiAweGZmZmYgPyBmYWxzZVxuICAgICAgIDogbG9va3VwSW5Vbmljb2RlTWFwKGNvZGUgYXMgdTE2LCB1bmljb2RlSWRlbnRpZmllclBhcnQpO1xufVxuIl19 - -/***/ }), - -/***/ "../src/util/collections.ts": -/*!**********************************!*\ - !*** ../src/util/collections.ts ***! - \**********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -function makeArray(original) { - if (original === void 0) { original = null; } - if (original) { - var cloned = new Array(original.length); - for (var i = 0, k = original.length; i < k; ++i) - unchecked(cloned[i] = original[i]); - return cloned; - } - return new Array(); -} -exports.makeArray = makeArray; -function makeSet(original) { - var e_1, _a; - if (original === void 0) { original = null; } - if (original) { - var cloned = new Set(); - try { - for (var original_1 = __values(original), original_1_1 = original_1.next(); !original_1_1.done; original_1_1 = original_1.next()) { - var v = original_1_1.value; - cloned.add(v); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (original_1_1 && !original_1_1.done && (_a = original_1.return)) _a.call(original_1); - } - finally { if (e_1) throw e_1.error; } - } - return cloned; - } - return new Set(); -} -exports.makeSet = makeSet; -function makeMap(original, overrides) { - var e_2, _a, e_3, _b, e_4, _c; - if (original === void 0) { original = null; } - if (overrides === void 0) { overrides = null; } - var cloned = new Map(); - if (original) { - try { - for (var original_2 = __values(original), original_2_1 = original_2.next(); !original_2_1.done; original_2_1 = original_2.next()) { - var _d = __read(original_2_1.value, 2), k = _d[0], v = _d[1]; - cloned.set(k, v); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (original_2_1 && !original_2_1.done && (_a = original_2.return)) _a.call(original_2); - } - finally { if (e_2) throw e_2.error; } - } - if (overrides) - try { - for (var overrides_1 = __values(overrides), overrides_1_1 = overrides_1.next(); !overrides_1_1.done; overrides_1_1 = overrides_1.next()) { - var _e = __read(overrides_1_1.value, 2), k = _e[0], v = _e[1]; - cloned.set(k, v); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (overrides_1_1 && !overrides_1_1.done && (_b = overrides_1.return)) _b.call(overrides_1); - } - finally { if (e_3) throw e_3.error; } - } - } - else if (overrides) { - try { - for (var overrides_2 = __values(overrides), overrides_2_1 = overrides_2.next(); !overrides_2_1.done; overrides_2_1 = overrides_2.next()) { - var _f = __read(overrides_2_1.value, 2), k = _f[0], v = _f[1]; - cloned.set(k, v); - } - } - catch (e_4_1) { e_4 = { error: e_4_1 }; } - finally { - try { - if (overrides_2_1 && !overrides_2_1.done && (_c = overrides_2.return)) _c.call(overrides_2); - } - finally { if (e_4) throw e_4.error; } - } - } - return cloned; -} -exports.makeMap = makeMap; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9jb2xsZWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZ0IsU0FBUyxDQUFJLFFBQWdDO0lBQWhDLHlCQUFBLEVBQUEsZUFBZ0M7SUFDM0QsSUFBSSxRQUFRLEVBQUU7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLElBQUksS0FBSyxFQUFLLENBQUM7QUFDeEIsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBZ0IsT0FBTyxDQUFJLFFBQThCOztJQUE5Qix5QkFBQSxFQUFBLGVBQThCO0lBQ3ZELElBQUksUUFBUSxFQUFFO1FBQ1osSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQzs7WUFDMUIsS0FBYyxJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWpCLElBQUksQ0FBQyxxQkFBQTtnQkFBYyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztRQUN0QyxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEdBQUcsRUFBSyxDQUFDO0FBQ3RCLENBQUM7QUFQRCwwQkFPQztBQUVELFNBQWdCLE9BQU8sQ0FBTSxRQUFnQyxFQUFFLFNBQWlDOztJQUFuRSx5QkFBQSxFQUFBLGVBQWdDO0lBQUUsMEJBQUEsRUFBQSxnQkFBaUM7SUFDOUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQU8sQ0FBQztJQUM1QixJQUFJLFFBQVEsRUFBRTs7WUFDWixLQUFtQixJQUFBLGFBQUEsU0FBQSxRQUFRLENBQUEsa0NBQUE7Z0JBQWxCLElBQUEsa0NBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBZSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUFBOzs7Ozs7Ozs7UUFDOUMsSUFBSSxTQUFTOztnQkFBRSxLQUFtQixJQUFBLGNBQUEsU0FBQSxTQUFTLENBQUEsb0NBQUE7b0JBQW5CLElBQUEsbUNBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztvQkFBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQUE7Ozs7Ozs7O2FBQUE7S0FDL0Q7U0FBTSxJQUFJLFNBQVMsRUFBRTs7WUFDcEIsS0FBbUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBO2dCQUFuQixJQUFBLG1DQUFNLEVBQUwsU0FBQyxFQUFFLFNBQUM7Z0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQUE7Ozs7Ozs7OztLQUNoRDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFURCwwQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYWtlQXJyYXk8Vj4ob3JpZ2luYWw6IEFycmF5PFY+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxWPiB7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGxldCBjbG9uZWQgPSBuZXcgQXJyYXk8Vj4ob3JpZ2luYWwubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IG9yaWdpbmFsLmxlbmd0aDsgaSA8IGs7ICsraSkgdW5jaGVja2VkKGNsb25lZFtpXSA9IG9yaWdpbmFsW2ldKTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXk8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZXQ8Vj4ob3JpZ2luYWw6IFNldDxWPiB8IG51bGwgPSBudWxsKTogU2V0PFY+IHtcbiAgaWYgKG9yaWdpbmFsKSB7XG4gICAgbGV0IGNsb25lZCA9IG5ldyBTZXQ8Vj4oKTtcbiAgICBmb3IgKGxldCB2IG9mIG9yaWdpbmFsKSBjbG9uZWQuYWRkKHYpO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cbiAgcmV0dXJuIG5ldyBTZXQ8Vj4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VNYXA8SyxWPihvcmlnaW5hbDogTWFwPEssVj4gfCBudWxsID0gbnVsbCwgb3ZlcnJpZGVzOiBNYXA8SyxWPiB8IG51bGwgPSBudWxsKTogTWFwPEssVj4ge1xuICB2YXIgY2xvbmVkID0gbmV3IE1hcDxLLFY+KCk7XG4gIGlmIChvcmlnaW5hbCkge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvcmlnaW5hbCkgY2xvbmVkLnNldChrLCB2KTtcbiAgICBpZiAob3ZlcnJpZGVzKSBmb3IgKGxldCBbaywgdl0gb2Ygb3ZlcnJpZGVzKSBjbG9uZWQuc2V0KGssIHYpO1xuICB9IGVsc2UgaWYgKG92ZXJyaWRlcykge1xuICAgIGZvciAobGV0IFtrLCB2XSBvZiBvdmVycmlkZXMpIGNsb25lZC5zZXQoaywgdik7XG4gIH1cbiAgcmV0dXJuIGNsb25lZDtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/index.ts": -/*!****************************!*\ - !*** ../src/util/index.ts ***! - \****************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** - * Various compiler utilities. - * @module util - * @preferred - */ /***/ -function __export(m) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} -Object.defineProperty(exports, "__esModule", { value: true }); -__export(__webpack_require__(/*! ./bitset */ "../src/util/bitset.ts")); -__export(__webpack_require__(/*! ./charcode */ "../src/util/charcode.ts")); -__export(__webpack_require__(/*! ./collections */ "../src/util/collections.ts")); -__export(__webpack_require__(/*! ./path */ "../src/util/path.ts")); -__export(__webpack_require__(/*! ./text */ "../src/util/text.ts")); -__export(__webpack_require__(/*! ./binary */ "../src/util/binary.ts")); -/** Tests if `x` is a power of two. */ -function isPowerOf2(x) { - return x != 0 && (x & (x - 1)) == 0; -} -exports.isPowerOf2 = isPowerOf2; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRyxDQUFBLEtBQUs7Ozs7O0FBRVIsOEJBQXlCO0FBQ3pCLGdDQUEyQjtBQUMzQixtQ0FBOEI7QUFDOUIsNEJBQXVCO0FBQ3ZCLDRCQUF1QjtBQUN2Qiw4QkFBeUI7QUFFekIsc0NBQXNDO0FBQ3RDLFNBQWdCLFVBQVUsQ0FBQyxDQUFNO0lBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhcmlvdXMgY29tcGlsZXIgdXRpbGl0aWVzLlxuICogQG1vZHVsZSB1dGlsXG4gKiBAcHJlZmVycmVkXG4gKi8vKioqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9iaXRzZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXJjb2RlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xsZWN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGF0aFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGV4dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmluYXJ5XCI7XG5cbi8qKiBUZXN0cyBpZiBgeGAgaXMgYSBwb3dlciBvZiB0d28uICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb3dlck9mMih4OiBpMzIpOiBib29sIHtcbiAgcmV0dXJuIHggIT0gMCAmJiAoeCAmICh4IC0gMSkpID09IDA7XG59XG4iXX0= - -/***/ }), - -/***/ "../src/util/path.ts": -/*!***************************!*\ - !*** ../src/util/path.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var common_1 = __webpack_require__(/*! ../common */ "../src/common.ts"); -var separator = 47 /* SLASH */; -/** - * Normalizes the specified path, removing interior placeholders. - * Expects a posix-compatible relative path (not Windows compatible). - */ -function normalizePath(path) { - var pos = 0; - var len = path.length; - // trim leading './' - while (pos + 1 < len && - path.charCodeAt(pos) == 46 /* DOT */ && - path.charCodeAt(pos + 1) == separator) { - pos += 2; - } - if (pos > 0 || len < path.length) { - path = path.substring(pos, len); - len -= pos; - pos = 0; - } - var atEnd; - while (pos + 1 < len) { - atEnd = false; - // we are only interested in '/.' sequences ... - if (path.charCodeAt(pos) == separator && - path.charCodeAt(pos + 1) == 46 /* DOT */) { - // '/.' ( '/' | $ ) - atEnd = pos + 2 == len; - if (atEnd || - pos + 2 < len && - path.charCodeAt(pos + 2) == separator) { - path = atEnd - ? path.substring(0, pos) - : path.substring(0, pos) + path.substring(pos + 2); - len -= 2; - continue; - } - // '/.' ( './' | '.' $ ) - atEnd = pos + 3 == len; - if (atEnd && path.charCodeAt(pos + 2) == 46 /* DOT */ || - pos + 3 < len && - path.charCodeAt(pos + 2) == 46 /* DOT */ && - path.charCodeAt(pos + 3) == separator) { - // find preceeding '/' - var ipos = pos; - while (--ipos >= 0) { - if (path.charCodeAt(ipos) == separator) { - if (pos - ipos != 3 || - path.charCodeAt(ipos + 1) != 46 /* DOT */ || - path.charCodeAt(ipos + 2) != 46 /* DOT */) { // exclude '..' itself - path = atEnd - ? path.substring(0, ipos) - : path.substring(0, ipos) + path.substring(pos + 3); - len -= pos + 3 - ipos; - pos = ipos - 1; // incremented again at end of loop - } - break; - } - } - // if there's no preceeding '/', trim start if non-empty - if (ipos < 0 && pos > 0) { - if (pos != 2 || - path.charCodeAt(0) != 46 /* DOT */ || - path.charCodeAt(1) != 46 /* DOT */) { // exclude '..' itself - path = path.substring(pos + 4); - len = path.length; - continue; - } - } - } - } - pos++; - } - return len > 0 ? path : "."; -} -exports.normalizePath = normalizePath; -/** Resolves the specified path relative to the specified origin. */ -function resolvePath(normalizedPath, origin) { - if (normalizedPath.startsWith("std/")) { - return normalizedPath; - } - return normalizePath(dirname(origin) + common_1.PATH_DELIMITER + normalizedPath); -} -exports.resolvePath = resolvePath; -/** Obtains the directory portion of a normalized path. */ -function dirname(normalizedPath) { - var pos = normalizedPath.length; - if (pos <= 1) { - if (pos == 0) - return "."; - if (normalizedPath.charCodeAt(0) == separator) { - return normalizedPath; - } - } - while (--pos > 0) { - if (normalizedPath.charCodeAt(pos) == separator) { - return normalizedPath.substring(0, pos); - } - } - return "."; -} -exports.dirname = dirname; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBTXhCLG9DQUVtQjtBQUVuQixJQUFNLFNBQVMsaUJBQWlCLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixvQkFBb0I7SUFDcEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsRUFDckM7UUFDQSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1Y7SUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDWCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7SUFFRCxJQUFJLEtBQVcsQ0FBQztJQUNoQixPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFO1FBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFZCwrQ0FBK0M7UUFDL0MsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVM7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUN4QztZQUNBLG1CQUFtQjtZQUNuQixLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMs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QUM7S0FDdkI7SUFDRCxPQUFPLGFBQWEsQ0FDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLHVCQUFjLEdBQUcsY0FBYyxDQUNsRCxDQUFDO0FBQ0osQ0FBQztBQVBELGtDQU9DO0FBRUQsMERBQTBEO0FBQzFELFNBQWdCLE9BQU8sQ0FBQyxjQUFzQjtJQUM1QyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtRQUNaLElBQUksR0FBRyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUN6QixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzdDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNoQixJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQy9DLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWRELDBCQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgdXRpbCAqLy8qKiovXG5cbmltcG9ydCB7XG4gIENoYXJDb2RlXG59IGZyb20gXCIuL2NoYXJjb2RlXCI7XG5cbmltcG9ydCB7XG4gIFBBVEhfREVMSU1JVEVSXG59IGZyb20gXCIuLi9jb21tb25cIjtcblxuY29uc3Qgc2VwYXJhdG9yID0gQ2hhckNvZGUuU0xBU0g7XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgc3BlY2lmaWVkIHBhdGgsIHJlbW92aW5nIGludGVyaW9yIHBsYWNlaG9sZGVycy5cbiAqIEV4cGVjdHMgYSBwb3NpeC1jb21wYXRpYmxlIHJlbGF0aXZlIHBhdGggKG5vdCBXaW5kb3dzIGNvbXBhdGlibGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gMDtcbiAgdmFyIGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gIC8vIHRyaW0gbGVhZGluZyAnLi8nXG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gQ2hhckNvZGUuRE9UICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDEpID09IHNlcGFyYXRvclxuICApIHtcbiAgICBwb3MgKz0gMjtcbiAgfVxuXG4gIGlmIChwb3MgPiAwIHx8IGxlbiA8IHBhdGgubGVuZ3RoKSB7XG4gICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKHBvcywgbGVuKTtcbiAgICBsZW4gLT0gcG9zO1xuICAgIHBvcyA9IDA7XG4gIH1cblxuICB2YXIgYXRFbmQ6IGJvb2w7XG4gIHdoaWxlIChwb3MgKyAxIDwgbGVuKSB7XG4gICAgYXRFbmQgPSBmYWxzZTtcblxuICAgIC8vIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gJy8uJyBzZXF1ZW5jZXMgLi4uXG4gICAgaWYgKFxuICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yICYmXG4gICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMSkgPT0gQ2hhckNvZGUuRE9UXG4gICAgKSB7XG4gICAgICAvLyAnLy4nICggJy8nIHwgJCApXG4gICAgICBhdEVuZCA9IHBvcyArIDIgPT0gbGVuO1xuICAgICAgaWYgKGF0RW5kIHx8XG4gICAgICAgIHBvcyArIDIgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IHNlcGFyYXRvclxuICAgICAgKSB7XG4gICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgcG9zKVxuICAgICAgICAgIDogcGF0aC5zdWJzdHJpbmcoMCwgcG9zKSArIHBhdGguc3Vic3RyaW5nKHBvcyArIDIpO1xuICAgICAgICBsZW4gLT0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vICcvLicgKCAnLi8nIHwgJy4nICQgKVxuICAgICAgYXRFbmQgPSBwb3MgKyAzID09IGxlbjtcbiAgICAgIGlmIChhdEVuZCAmJiBwYXRoLmNoYXJDb2RlQXQocG9zICsgMikgPT0gQ2hhckNvZGUuRE9UIHx8XG4gICAgICAgIHBvcyArIDMgPCBsZW4gJiZcbiAgICAgICAgcGF0aC5jaGFyQ29kZUF0KHBvcyArIDIpID09IENoYXJDb2RlLkRPVCAmJlxuICAgICAgICBwYXRoLmNoYXJDb2RlQXQocG9zICsgMykgPT0gc2VwYXJhdG9yXG4gICAgICApIHtcbiAgICAgICAgLy8gZmluZCBwcmVjZWVkaW5nICcvJ1xuICAgICAgICBsZXQgaXBvcyA9IHBvcztcbiAgICAgICAgd2hpbGUgKC0taXBvcyA+PSAwKSB7XG4gICAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpcG9zKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIGlmIChwb3MgLSBpcG9zICE9IDMgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAxKSAhPSBDaGFyQ29kZS5ET1QgfHxcbiAgICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KGlwb3MgKyAyKSAhPSBDaGFyQ29kZS5ET1RcbiAgICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICAgIHBhdGggPSBhdEVuZFxuICAgICAgICAgICAgICAgID8gcGF0aC5zdWJzdHJpbmcoMCwgaXBvcylcbiAgICAgICAgICAgICAgICA6IHBhdGguc3Vic3RyaW5nKDAsIGlwb3MpICsgcGF0aC5zdWJzdHJpbmcocG9zICsgMyk7XG4gICAgICAgICAgICAgIGxlbiAtPSBwb3MgKyAzIC0gaXBvcztcbiAgICAgICAgICAgICAgcG9zID0gaXBvcyAtIDE7IC8vIGluY3JlbWVudGVkIGFnYWluIGF0IGVuZCBvZiBsb29wXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHByZWNlZWRpbmcgJy8nLCB0cmltIHN0YXJ0IGlmIG5vbi1lbXB0eVxuICAgICAgICBpZiAoaXBvcyA8IDAgJiYgcG9zID4gMCkge1xuICAgICAgICAgIGlmIChwb3MgIT0gMiB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDApICE9IENoYXJDb2RlLkRPVCB8fFxuICAgICAgICAgICAgcGF0aC5jaGFyQ29kZUF0KDEpICE9IENoYXJDb2RlLkRPVFxuICAgICAgICAgICkgeyAvLyBleGNsdWRlICcuLicgaXRzZWxmXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocG9zICsgNCk7XG4gICAgICAgICAgICBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwb3MrKztcbiAgfVxuICByZXR1cm4gbGVuID4gMCA/IHBhdGggOiBcIi5cIjtcbn1cblxuLyoqIFJlc29sdmVzIHRoZSBzcGVjaWZpZWQgcGF0aCByZWxhdGl2ZSB0byB0aGUgc3BlY2lmaWVkIG9yaWdpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGF0aChub3JtYWxpemVkUGF0aDogc3RyaW5nLCBvcmlnaW46IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwic3RkL1wiKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplUGF0aChcbiAgICBkaXJuYW1lKG9yaWdpbikgKyBQQVRIX0RFTElNSVRFUiArIG5vcm1hbGl6ZWRQYXRoXG4gICk7XG59XG5cbi8qKiBPYnRhaW5zIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiBhIG5vcm1hbGl6ZWQgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKG5vcm1hbGl6ZWRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICB2YXIgcG9zID0gbm9ybWFsaXplZFBhdGgubGVuZ3RoO1xuICBpZiAocG9zIDw9IDEpIHtcbiAgICBpZiAocG9zID09IDApIHJldHVybiBcIi5cIjtcbiAgICBpZiAobm9ybWFsaXplZFBhdGguY2hhckNvZGVBdCgwKSA9PSBzZXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKC0tcG9zID4gMCkge1xuICAgIGlmIChub3JtYWxpemVkUGF0aC5jaGFyQ29kZUF0KHBvcykgPT0gc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGguc3Vic3RyaW5nKDAsIHBvcyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBcIi5cIjtcbn1cbiJdfQ== - -/***/ }), - -/***/ "../src/util/text.ts": -/*!***************************!*\ - !*** ../src/util/text.ts ***! - \***************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/** @module util */ /***/ -Object.defineProperty(exports, "__esModule", { value: true }); -var indentX1 = " "; -var indentX2 = " "; -var indentX4 = " "; -/** Creates an indentation matching the number of specified levels. */ -function indent(sb, level) { - while (level >= 4) { - sb.push(indentX4); - level -= 4; - } - if (level >= 2) { - sb.push(indentX2); - level -= 2; - } - if (level) { - sb.push(indentX1); - } -} -exports.indent = indent; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3RleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1CQUFtQixDQUFBLEtBQUs7O0FBRXhCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFNLFFBQVEsR0FBRyxNQUFNLENBQUM7QUFDeEIsSUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBRTVCLHNFQUFzRTtBQUN0RSxTQUFnQixNQUFNLENBQUMsRUFBWSxFQUFFLEtBQVU7SUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2pCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxJQUFJLEtBQUssRUFBRTtRQUNULEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkI7QUFDSCxDQUFDO0FBWkQsd0JBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSB1dGlsICovLyoqKi9cblxuY29uc3QgaW5kZW50WDEgPSBcIiAgXCI7XG5jb25zdCBpbmRlbnRYMiA9IFwiICAgIFwiO1xuY29uc3QgaW5kZW50WDQgPSBcIiAgICAgICAgXCI7XG5cbi8qKiBDcmVhdGVzIGFuIGluZGVudGF0aW9uIG1hdGNoaW5nIHRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIGxldmVscy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc2I6IHN0cmluZ1tdLCBsZXZlbDogaTMyKTogdm9pZCB7XG4gIHdoaWxlIChsZXZlbCA+PSA0KSB7XG4gICAgc2IucHVzaChpbmRlbnRYNCk7XG4gICAgbGV2ZWwgLT0gNDtcbiAgfVxuICBpZiAobGV2ZWwgPj0gMikge1xuICAgIHNiLnB1c2goaW5kZW50WDIpO1xuICAgIGxldmVsIC09IDI7XG4gIH1cbiAgaWYgKGxldmVsKSB7XG4gICAgc2IucHVzaChpbmRlbnRYMSk7XG4gIH1cbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/assembly/shared/feature.ts": -/*!*****************************************!*\ - !*** ../std/assembly/shared/feature.ts ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Indicates specific features to activate. */ -var Feature; -(function (Feature) { - /** No additional features. */ - Feature[Feature["NONE"] = 0] = "NONE"; - /** Sign extension operations. */ - Feature[Feature["SIGN_EXTENSION"] = 1] = "SIGN_EXTENSION"; - /** Mutable global imports and exports. */ - Feature[Feature["MUTABLE_GLOBAL"] = 2] = "MUTABLE_GLOBAL"; - /** Bulk memory operations. */ - Feature[Feature["BULK_MEMORY"] = 4] = "BULK_MEMORY"; - /** SIMD types and operations. */ - Feature[Feature["SIMD"] = 8] = "SIMD"; - /** Threading and atomic operations. */ - Feature[Feature["THREADS"] = 16] = "THREADS"; // see: https://github.com/WebAssembly/threads -})(Feature = exports.Feature || (exports.Feature = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3N0ZC9hc3NlbWJseS9zaGFyZWQvZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUVBQWlFOztBQUVqRSwrQ0FBK0M7QUFDL0MsSUFBa0IsT0FhakI7QUFiRCxXQUFrQixPQUFPO0lBQ3ZCLDhCQUE4QjtJQUM5QixxQ0FBUSxDQUFBO0lBQ1IsaUNBQWlDO0lBQ2pDLHlEQUF1QixDQUFBO0lBQ3ZCLDBDQUEwQztJQUMxQyx5REFBdUIsQ0FBQTtJQUN2Qiw4QkFBOEI7SUFDOUIsbURBQW9CLENBQUE7SUFDcEIsaUNBQWlDO0lBQ2pDLHFDQUFhLENBQUE7SUFDYix1Q0FBdUM7SUFDdkMsNENBQWdCLENBQUEsQ0FBQyw4Q0FBOEM7QUFDakUsQ0FBQyxFQWJpQixPQUFPLEdBQVAsZUFBTyxLQUFQLGVBQU8sUUFheEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgc2hhcmVkIHdpdGggdGhlIGNvbXBpbGVyIGFuZCBtdXN0IHJlbWFpbiBwb3J0YWJsZVxuXG4vKiogSW5kaWNhdGVzIHNwZWNpZmljIGZlYXR1cmVzIHRvIGFjdGl2YXRlLiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gRmVhdHVyZSB7XG4gIC8qKiBObyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFNpZ24gZXh0ZW5zaW9uIG9wZXJhdGlvbnMuICovXG4gIFNJR05fRVhURU5TSU9OID0gMSA8PCAwLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9zaWduLWV4dGVuc2lvbi1vcHNcbiAgLyoqIE11dGFibGUgZ2xvYmFsIGltcG9ydHMgYW5kIGV4cG9ydHMuICovXG4gIE1VVEFCTEVfR0xPQkFMID0gMSA8PCAxLCAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9tdXRhYmxlLWdsb2JhbFxuICAvKiogQnVsayBtZW1vcnkgb3BlcmF0aW9ucy4gKi9cbiAgQlVMS19NRU1PUlkgPSAxIDw8IDIsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2J1bGstbWVtb3J5LW9wZXJhdGlvbnNcbiAgLyoqIFNJTUQgdHlwZXMgYW5kIG9wZXJhdGlvbnMuICovXG4gIFNJTUQgPSAxIDw8IDMsIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L3NpbWRcbiAgLyoqIFRocmVhZGluZyBhbmQgYXRvbWljIG9wZXJhdGlvbnMuICovXG4gIFRIUkVBRFMgPSAxIDw8IDQgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvdGhyZWFkc1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/target.ts": -/*!****************************************!*\ - !*** ../std/assembly/shared/target.ts ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -Object.defineProperty(exports, "__esModule", { value: true }); -/** Compilation target. */ -var Target; -(function (Target) { - /** WebAssembly with 32-bit pointers. */ - Target[Target["WASM32"] = 0] = "WASM32"; - /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */ - Target[Target["WASM64"] = 1] = "WASM64"; - /** Portable. */ - Target[Target["JS"] = 2] = "JS"; -})(Target = exports.Target || (exports.Target = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3RkL2Fzc2VtYmx5L3NoYXJlZC90YXJnZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlFQUFpRTs7QUFFakUsMEJBQTBCO0FBQzFCLElBQVksTUFPWDtBQVBELFdBQVksTUFBTTtJQUNoQix3Q0FBd0M7SUFDeEMsdUNBQU0sQ0FBQTtJQUNOLDJGQUEyRjtJQUMzRix1Q0FBTSxDQUFBO0lBQ04sZ0JBQWdCO0lBQ2hCLCtCQUFFLENBQUE7QUFDSixDQUFDLEVBUFcsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBT2pCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIHNoYXJlZCB3aXRoIHRoZSBjb21waWxlciBhbmQgbXVzdCByZW1haW4gcG9ydGFibGVcblxuLyoqIENvbXBpbGF0aW9uIHRhcmdldC4gKi9cbmV4cG9ydCBlbnVtIFRhcmdldCB7XG4gIC8qKiBXZWJBc3NlbWJseSB3aXRoIDMyLWJpdCBwb2ludGVycy4gKi9cbiAgV0FTTTMyLFxuICAvKiogV2ViQXNzZW1ibHkgd2l0aCA2NC1iaXQgcG9pbnRlcnMuIEV4cGVyaW1lbnRhbCBhbmQgbm90IHN1cHBvcnRlZCBieSBhbnkgcnVudGltZSB5ZXQuICovXG4gIFdBU002NCxcbiAgLyoqIFBvcnRhYmxlLiAqL1xuICBKU1xufVxuIl19 - -/***/ }), - -/***/ "../std/assembly/shared/typeinfo.ts": -/*!******************************************!*\ - !*** ../std/assembly/shared/typeinfo.ts ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -// This file is shared with the compiler and must remain portable -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕ -// 3 2 1 -// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits -// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base -// │ count │ -// ╞═══════════════════════════════════════════════════════════════╡ ┐ -// │ Typeinfo#flags [id=0] │ id < count -// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ -// │ Typeinfo#base [id=0] │ -// ├───────────────────────────────────────────────────────────────┤ -// │ ... │ -/** Runtime type information data structure. */ -var Typeinfo = /** @class */ (function () { - function Typeinfo() { - } - Typeinfo = __decorate([ - (()=>{}) - ], Typeinfo); - return Typeinfo; -}()); -exports.Typeinfo = Typeinfo; -/** Runtime type information flags. */ -var TypeinfoFlags; -(function (TypeinfoFlags) { - /** No specific flags. */ - TypeinfoFlags[TypeinfoFlags["NONE"] = 0] = "NONE"; - /** Type is an `ArrayBufferView`. */ - TypeinfoFlags[TypeinfoFlags["ARRAYBUFFERVIEW"] = 1] = "ARRAYBUFFERVIEW"; - /** Type is an `Array`. */ - TypeinfoFlags[TypeinfoFlags["ARRAY"] = 2] = "ARRAY"; - /** Type is a `Set`. */ - TypeinfoFlags[TypeinfoFlags["SET"] = 4] = "SET"; - /** Type is a `Map`. */ - TypeinfoFlags[TypeinfoFlags["MAP"] = 8] = "MAP"; - /** Type is inherently acyclic. */ - TypeinfoFlags[TypeinfoFlags["ACYCLIC"] = 16] = "ACYCLIC"; - /** Value alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_0"] = 32] = "VALUE_ALIGN_0"; - /** Value alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_1"] = 64] = "VALUE_ALIGN_1"; - /** Value alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_2"] = 128] = "VALUE_ALIGN_2"; - /** Value alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_3"] = 256] = "VALUE_ALIGN_3"; - /** Value alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["VALUE_ALIGN_4"] = 512] = "VALUE_ALIGN_4"; - /** Value is a signed type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_SIGNED"] = 1024] = "VALUE_SIGNED"; - /** Value is a float type. */ - TypeinfoFlags[TypeinfoFlags["VALUE_FLOAT"] = 2048] = "VALUE_FLOAT"; - /** Value type is nullable. */ - TypeinfoFlags[TypeinfoFlags["VALUE_NULLABLE"] = 4096] = "VALUE_NULLABLE"; - /** Value type is managed. */ - TypeinfoFlags[TypeinfoFlags["VALUE_MANAGED"] = 8192] = "VALUE_MANAGED"; - /** Key alignment of 1 byte. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_0"] = 16384] = "KEY_ALIGN_0"; - /** Key alignment of 2 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_1"] = 32768] = "KEY_ALIGN_1"; - /** Key alignment of 4 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_2"] = 65536] = "KEY_ALIGN_2"; - /** Key alignment of 8 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_3"] = 131072] = "KEY_ALIGN_3"; - /** Key alignment of 16 bytes. */ - TypeinfoFlags[TypeinfoFlags["KEY_ALIGN_4"] = 262144] = "KEY_ALIGN_4"; - /** Key is a signed type. */ - TypeinfoFlags[TypeinfoFlags["KEY_SIGNED"] = 524288] = "KEY_SIGNED"; - /** Key is a float type. */ - TypeinfoFlags[TypeinfoFlags["KEY_FLOAT"] = 1048576] = "KEY_FLOAT"; - /** Key type is nullable. */ - TypeinfoFlags[TypeinfoFlags["KEY_NULLABLE"] = 2097152] = "KEY_NULLABLE"; - /** Key type is managed. */ - TypeinfoFlags[TypeinfoFlags["KEY_MANAGED"] = 4194304] = "KEY_MANAGED"; -})(TypeinfoFlags = exports.TypeinfoFlags || (exports.TypeinfoFlags = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zdGQvYXNzZW1ibHkvc2hhcmVkL3R5cGVpbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRUFBaUU7Ozs7Ozs7O0FBRWpFLG9FQUFvRTtBQUNwRSwrQ0FBK0M7QUFDL0MseUVBQXlFO0FBQ3pFLG1GQUFtRjtBQUNuRixvRUFBb0U7QUFDcEUsc0VBQXNFO0FBQ3RFLCtFQUErRTtBQUMvRSxvRUFBb0U7QUFDcEUsb0VBQW9FO0FBQ3BFLG9FQUFvRTtBQUNwRSxvRUFBb0U7QUFFcEUsK0NBQStDO0FBRS9DO0lBQUE7SUFLQSxDQUFDO0lBTFksUUFBUTtRQURwQixTQUFTO09BQ0csUUFBUSxDQUtwQjtJQUFELGVBQUM7Q0FBQSxBQUxELElBS0M7QUFMWSw0QkFBUTtBQU9yQixzQ0FBc0M7QUFDdEMsSUFBa0IsYUFpRGpCO0FBakRELFdBQWtCLGFBQWE7SUFDN0IseUJBQXlCO0lBQ3pCLGlEQUFRLENBQUE7SUFDUixvQ0FBb0M7SUFDcEMsdUVBQXdCLENBQUE7SUFDeEIsMEJBQTBCO0lBQzFCLG1EQUFjLENBQUE7SUFDZCx1QkFBdUI7SUFDdkIsK0NBQVksQ0FBQTtJQUNaLHVCQUF1QjtJQUN2QiwrQ0FBWSxDQUFBO0lBQ1osa0NBQWtDO0lBQ2xDLHdEQUFnQixDQUFBO0lBQ2hCLGlDQUFpQztJQUNqQyxvRUFBc0IsQ0FBQTtJQUN0QixrQ0FBa0M7SUFDbEMsb0VBQXNCLENBQUE7SUFDdEIsa0NBQWtDO0lBQ2xDLHFFQUFzQixDQUFBO0lBQ3RCLGtDQUFrQztJQUNsQyxxRUFBc0IsQ0FBQTtJQUN0QixtQ0FBbUM7SUFDbkMscUVBQXNCLENBQUE7SUFDdEIsOEJBQThCO0lBQzlCLG9FQUFzQixDQUFBO0lBQ3RCLDZCQUE2QjtJQUM3QixrRUFBcUIsQ0FBQTtJQUNyQiw4QkFBOEI7SUFDOUIsd0VBQXdCLENBQUE7SUFDeEIsNkJBQTZCO0lBQzdCLHNFQUF1QixDQUFBO0lBQ3ZCLCtCQUErQjtJQUMvQixtRUFBcUIsQ0FBQTtJQUNyQixnQ0FBZ0M7SUFDaEMsbUVBQXFCLENBQUE7SUFDckIsZ0NBQWdDO0lBQ2hDLG1FQUFxQixDQUFBO0lBQ3JCLGdDQUFnQztJQUNoQyxvRUFBcUIsQ0FBQTtJQUNyQixpQ0FBaUM7SUFDakMsb0VBQXFCLENBQUE7SUFDckIsNEJBQTRCO0lBQzVCLGtFQUFvQixDQUFBO0lBQ3BCLDJCQUEyQjtJQUMzQixpRUFBbUIsQ0FBQTtJQUNuQiw0QkFBNEI7SUFDNUIsdUVBQXNCLENBQUE7SUFDdEIsMkJBQTJCO0lBQzNCLHFFQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFqRGlCLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBaUQ5QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBpcyBzaGFyZWQgd2l0aCB0aGUgY29tcGlsZXIgYW5kIG11c3QgcmVtYWluIHBvcnRhYmxlXG5cbi8vIOKVkuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCBUeXBlaW5mbyBpbnRlcnByZXRhdGlvbiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZVcbi8vICAgIDMgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAxXG4vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwICBiaXRzXG4vLyDilJzilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilLTilIDilKQg4peE4pSAIF9fcnR0aV9iYXNlXG4vLyDilIIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbi8vIOKVnuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoSDilJBcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICBUeXBlaW5mbyNmbGFncyBbaWQ9MF0gICAgICAgICAgICAgICAgICAgIOKUgiBpZCA8IGNvdW50XG4vLyDilJwg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUgCDilIAg4pSAIOKUpFxuLy8g4pSCICAgICAgICAgICAgICAgICAgICAgIFR5cGVpbmZvI2Jhc2UgIFtpZD0wXSAgICAgICAgICAgICAgICAgICAg4pSCXG4vLyDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbi8vIOKUgiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuXG4vKiogUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIGRhdGEgc3RydWN0dXJlLiAqL1xuQHVubWFuYWdlZFxuZXhwb3J0IGNsYXNzIFR5cGVpbmZvIHtcbiAgLyoqIEZsYWdzIGRlc2NyaWJpbmcgdGhlIHNoYXBlIG9mIHRoaXMgY2xhc3MgdHlwZS4gKi9cbiAgZmxhZ3M6IFR5cGVpbmZvRmxhZ3M7XG4gIC8qKiBCYXNlIGNsYXNzIGlkIG9yIGAwYCBpZiBub25lLiAqL1xuICBiYXNlOiB1MzI7XG59XG5cbi8qKiBSdW50aW1lIHR5cGUgaW5mb3JtYXRpb24gZmxhZ3MuICovXG5leHBvcnQgY29uc3QgZW51bSBUeXBlaW5mb0ZsYWdzIHtcbiAgLyoqIE5vIHNwZWNpZmljIGZsYWdzLiAqL1xuICBOT05FID0gMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5QnVmZmVyVmlld2AuICovXG4gIEFSUkFZQlVGRkVSVklFVyA9IDEgPDwgMCxcbiAgLyoqIFR5cGUgaXMgYW4gYEFycmF5YC4gKi9cbiAgQVJSQVkgPSAxIDw8IDEsXG4gIC8qKiBUeXBlIGlzIGEgYFNldGAuICovXG4gIFNFVCA9IDEgPDwgMixcbiAgLyoqIFR5cGUgaXMgYSBgTWFwYC4gKi9cbiAgTUFQID0gMSA8PCAzLFxuICAvKiogVHlwZSBpcyBpbmhlcmVudGx5IGFjeWNsaWMuICovXG4gIEFDWUNMSUMgPSAxIDw8IDQsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBWQUxVRV9BTElHTl8wID0gMSA8PCA1LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIFZBTFVFX0FMSUdOXzEgPSAxIDw8IDYsXG4gIC8qKiBWYWx1ZSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgVkFMVUVfQUxJR05fMiA9IDEgPDwgNyxcbiAgLyoqIFZhbHVlIGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl8zID0gMSA8PCA4LFxuICAvKiogVmFsdWUgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBWQUxVRV9BTElHTl80ID0gMSA8PCA5LFxuICAvKiogVmFsdWUgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgVkFMVUVfU0lHTkVEID0gMSA8PCAxMCxcbiAgLyoqIFZhbHVlIGlzIGEgZmxvYXQgdHlwZS4gKi9cbiAgVkFMVUVfRkxPQVQgPSAxIDw8IDExLFxuICAvKiogVmFsdWUgdHlwZSBpcyBudWxsYWJsZS4gKi9cbiAgVkFMVUVfTlVMTEFCTEUgPSAxIDw8IDEyLFxuICAvKiogVmFsdWUgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBWQUxVRV9NQU5BR0VEID0gMSA8PCAxMyxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgMSBieXRlLiAqL1xuICBLRVlfQUxJR05fMCA9IDEgPDwgMTQsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDIgYnl0ZXMuICovXG4gIEtFWV9BTElHTl8xID0gMSA8PCAxNSxcbiAgLyoqIEtleSBhbGlnbm1lbnQgb2YgNCBieXRlcy4gKi9cbiAgS0VZX0FMSUdOXzIgPSAxIDw8IDE2LFxuICAvKiogS2V5IGFsaWdubWVudCBvZiA4IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fMyA9IDEgPDwgMTcsXG4gIC8qKiBLZXkgYWxpZ25tZW50IG9mIDE2IGJ5dGVzLiAqL1xuICBLRVlfQUxJR05fNCA9IDEgPDwgMTgsXG4gIC8qKiBLZXkgaXMgYSBzaWduZWQgdHlwZS4gKi9cbiAgS0VZX1NJR05FRCA9IDEgPDwgMTksXG4gIC8qKiBLZXkgaXMgYSBmbG9hdCB0eXBlLiAqL1xuICBLRVlfRkxPQVQgPSAxIDw8IDIwLFxuICAvKiogS2V5IHR5cGUgaXMgbnVsbGFibGUuICovXG4gIEtFWV9OVUxMQUJMRSA9IDEgPDwgMjEsXG4gIC8qKiBLZXkgdHlwZSBpcyBtYW5hZ2VkLiAqL1xuICBLRVlfTUFOQUdFRCA9IDEgPDwgMjJcbn1cbiJdfQ== - -/***/ }), - -/***/ "../std/portable/index.js": -/*!********************************!*\ - !*** ../std/portable/index.js ***! - \********************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(global) {/** @module std/portable *//***/ - -var globalScope = typeof window !== "undefined" && window || typeof global !== "undefined" && global || self; - -globalScope.ASC_TARGET = 2; // Target.JS -globalScope.ASC_NO_ASSERT = false; -globalScope.ASC_MEMORY_BASE = 0; -globalScope.ASC_OPTIMIZE_LEVEL = 3; -globalScope.ASC_SHRINK_LEVEL = 0; -globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false; -globalScope.ASC_FEATURE_SIGN_EXTENSION = false; -globalScope.ASC_FEATURE_BULK_MEMORY = false; -globalScope.ASC_FEATURE_SIMD = false; -globalScope.ASC_FEATURE_THREADS = false; - -var F64 = new Float64Array(1); -var U64 = new Uint32Array(F64.buffer); - -Object.defineProperties( - globalScope["i8"] = function i8(value) { return value << 24 >> 24; } -, { - "MIN_VALUE": { value: -128, writable: false }, - "MAX_VALUE": { value: 127, writable: false } -}); - -Object.defineProperties( - globalScope["i16"] = function i16(value) { return value << 16 >> 16; } -, { - "MIN_VALUE": { value: -32768, writable: false }, - "MAX_VALUE": { value: 32767, writable: false } -}); - -Object.defineProperties( - globalScope["i32"] = globalScope["isize"] = function i32(value) { return value | 0; } -, { - "MIN_VALUE": { value: -2147483648, writable: false }, - "MAX_VALUE": { value: 2147483647, writable: false } -}); - -Object.defineProperties( - globalScope["u8"] = function u8(value) { return value & 0xff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 255, writable: false } -}); - -Object.defineProperties( - globalScope["u16"] = function u16(value) { return value & 0xffff; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 65535, writable: false } -}); - -Object.defineProperties( - globalScope["u32"] = globalScope["usize"] = function u32(value) { return value >>> 0; } -, { - "MIN_VALUE": { value: 0, writable: false }, - "MAX_VALUE": { value: 4294967295, writable: false } -}); - -Object.defineProperties( - globalScope["bool"] = function bool(value) { return !!value; } -, { - "MIN_VALUE": { value: false, writable: false }, - "MAX_VALUE": { value: true, writable: false } -}); - -Object.defineProperties( - globalScope["f32"] = function f32(value) { return Math.fround(value); } -, { - "EPSILON": { value: Math.fround(1.1920929e-07), writable: false }, - "MIN_VALUE": { value: Math.fround(1.4012985e-45), writable: false }, - "MAX_VALUE": { value: Math.fround(3.4028235e+38), writable: false }, - "MIN_NORMAL_VALUE": { value: Math.fround(1.17549435e-38), writable: false }, - "MIN_SAFE_INTEGER": { value: -16777215, writable: false }, - "MAX_SAFE_INTEGER": { value: 16777215, writable: false } -}); - -Object.defineProperties( - globalScope["f64"] = function f64(value) { return +value; } -, { - "EPSILON": { value: 2.2204460492503131e-16, writable: false }, - "MIN_VALUE": { value: 5e-324, writable: false }, - "MAX_VALUE": { value: 1.7976931348623157e+308, writable: false }, - "MIN_NORMAL_VALUE": { value: 2.2250738585072014e-308 , writable: false }, - "MIN_SAFE_INTEGER": { value: -9007199254740991, writable: false }, - "MAX_SAFE_INTEGER": { value: 9007199254740991, writable: false } -}); - -globalScope["clz"] = Math.clz32; - -globalScope["ctz"] = function ctz(value) { - var c = Math.clz32(value & -value); - return value ? 31 - c : c; -}; - -globalScope["popcnt"] = function popcnt(value) { - value -= value >>> 1 & 0x55555555; - value = (value & 0x33333333) + (value >>> 2 & 0x33333333); - return (((value + (value >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24; -}; - -globalScope["rotl"] = function rotl(value, shift) { - shift &= 31; - return (value << shift) | (value >>> (32 - shift)); -}; - -globalScope["rotr"] = function rotr(value, shift) { - shift &= 31; - return (value >>> shift) | (value << (32 - shift)); -}; - -globalScope["abs"] = Math.abs; - -globalScope["max"] = Math.max; - -globalScope["min"] = Math.min; - -globalScope["ceil"] = Math.ceil; - -globalScope["floor"] = Math.floor; - -// Adopt code from https://github.com/rfk/wasm-polyfill -globalScope["nearest"] = function nearest(value) { - if (Math.abs(value - Math.trunc(value)) === 0.5) { - return 2.0 * Math.round(value * 0.5); - } - return Math.round(value); -}; - -globalScope["select"] = function select(ifTrue, ifFalse, condition) { - return condition ? ifTrue : ifFalse; -}; - -globalScope["sqrt"] = Math.sqrt; - -globalScope["trunc"] = Math.trunc; - -globalScope["copysign"] = function copysign(x, y) { - return Math.abs(x) * Math.sign(y); -}; - -globalScope["bswap"] = function bswap(value) { - var a = value >> 8 & 0x00FF00FF; - var b = (value & 0x00FF00FF) << 8; - value = a | b; - a = value >> 16 & 0x0000FFFF; - b = (value & 0x0000FFFF) << 16; - return a | b; -}; - -globalScope["bswap16"] = function bswap16(value) { - return ((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000); -}; - -function UnreachableError() { - if (Error.captureStackTrace) { - Error.captureStackTrace(this, UnreachableError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -UnreachableError.prototype = Object.create(Error.prototype); -UnreachableError.prototype.name = "UnreachableError"; -UnreachableError.prototype.message = "unreachable"; - -globalScope["unreachable"] = function unreachable() { - throw new UnreachableError(); -}; - -function AssertionError(message) { - this.message = message || "assertion failed"; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, AssertionError); - } else { - this.stack = this.name + ": " + this.message + "\n" + new Error().stack; - } -} -AssertionError.prototype = Object.create(Error.prototype); -AssertionError.prototype.name = "AssertionError"; - -globalScope["assert"] = function assert(isTrueish, message) { - if (isTrueish) return isTrueish; - throw new AssertionError(message); -}; - -globalScope["changetype"] = function changetype(value) { - return value; -}; - -String["fromCharCodes"] = function fromCharCodes(arr) { - return String.fromCharCode.apply(String, arr); -}; - -String["fromCodePoints"] = function fromCodePoints(arr) { - return String.fromCodePoint.apply(String, arr); -}; - -if (!String.prototype.replaceAll) { - Object.defineProperty(String.prototype, "replaceAll", { - value: function replaceAll(search, replacment) { - var res = this.split(search).join(replacment); - if (!search.length) res = replacment + res + replacment; - return res; - } - }); -} - -globalScope["isInteger"] = Number.isInteger; - -globalScope["isFloat"] = function isFloat(arg) { - return typeof arg === "number"; -}; - -globalScope["isNullable"] = function isNullable(arg) { - return true; -} - -globalScope["isReference"] = function isReference(arg) { - return typeof arg === "object" || typeof arg === "string"; -}; - -globalScope["isFunction"] = function isFunction(arg) { - return typeof arg === "function"; -} - -globalScope["isString"] = function isString(arg) { - return typeof arg === "string" || arg instanceof String; -}; - -globalScope["isArray"] = Array.isArray; -globalScope["isArrayLike"] = function isArrayLike(expr) { - return expr - && typeof expr === 'object' - && typeof expr.length === 'number' - && expr.length >= 0 - && Math.trunc(expr.length) === expr.length; -}; - -Array.create = function(capacity) { - var arr = new Array(capacity); - arr.length = 0; - return arr; -}; - -globalScope["isDefined"] = function isDefined(expr) { - return typeof expr !== "undefined"; -} - -globalScope["isConstant"] = function isConstant(expr) { - return false; -}; - -globalScope["unchecked"] = function unchecked(expr) { - return expr; -}; - -globalScope["fmod"] = function fmod(x, y) { - return x % y; -}; - -globalScope["fmodf"] = function fmodf(x, y) { - return Math.fround(x % y); -}; - -globalScope["JSMath"] = Math; - -try { -Object.defineProperties(globalScope["JSMath"], { - sincos_sin: { value: 0.0, writable: true }, - sincos_cos: { value: 0.0, writable: true }, - signbit: { - value: function signbit(x) { - F64[0] = x; return Boolean((U64[1] >>> 31) & (x == x)); - } - }, - sincos: { - value: function sincos(x) { - this.sincos_sin = Math.sin(x); - this.sincos_cos = Math.cos(x); - } - } -}); -}catch (e) {} - -globalScope["memory"] = (() => { - var HEAP = new Uint8Array(0); - var HEAP_OFFSET = 0; - return { - allocate: globalScope["__memory_allocate"] || function allocate(size) { - if (!(size >>>= 0)) return 0; - if (HEAP_OFFSET + size > HEAP.length) { - var oldHeap = HEAP; - HEAP = new Uint8Array(Math.max(65536, HEAP.length + size, HEAP.length * 2)); - HEAP.set(oldHeap); - } - var ptr = HEAP_OFFSET; - if ((HEAP_OFFSET += size) & 7) HEAP_OFFSET = (HEAP_OFFSET | 7) + 1; - return ptr; - }, - fill: globalScope["__memory_fill"] || function fill(dest, value, size) { - HEAP.fill(value, dest, dest + size); - }, - free: globalScope["__memory_free"] || function free(ptr) { }, - copy: globalScope["__memory_copy"] || function copy(dest, src, size) { - HEAP.copyWithin(dest, src, src + size); - }, - reset: globalScope["__memory_reset"] || function reset() { - HEAP = new Uint8Array(0); - HEAP_OFFSET = 0; - } - }; -})(); - -globalScope["store"] = globalScope["__store"] || function store(ptr, value, offset) { - HEAP[(ptr | 0) + (offset | 0)] = value; -}; - -globalScope["load"] = globalScope["__load"] || function load(ptr, offset) { - return HEAP[(ptr | 0) + (offset | 0)]; -}; - -globalScope["unmanaged"] = function() {}; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "../node_modules/webpack/buildin/global.js"))) - -/***/ }), - -/***/ "./src/base.ts": -/*!*********************!*\ - !*** ./src/base.ts ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var visitor_1 = __webpack_require__(/*! ./visitor */ "./src/visitor.ts"); -var BaseVisitor = /** @class */ (function (_super) { - __extends(BaseVisitor, _super); - function BaseVisitor(writer) { - var _this = _super.call(this, writer) || this; - _this.depth = 0; - return _this; - } - BaseVisitor.prototype._visit = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPENAME: { - this.visitTypeName(node); - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.visitDecoratorNode(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.visitParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - BaseVisitor.prototype.visitSource = function (node) { - var e_1, _a; - try { - for (var _b = __values(node.statements), _c = _b.next(); !_c.done; _c = _b.next()) { - var stmt = _c.value; - this.depth++; - this.visit(stmt); - this.depth--; - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - }; - BaseVisitor.prototype.visitTypeNode = function (node) { }; - BaseVisitor.prototype.visitTypeName = function (node) { - this.visit(node.identifier); - if (node.next) { - this.visit(node); - } - }; - BaseVisitor.prototype.visitNamedTypeNode = function (node) { - this.visit(node.name); - this.visit(node.typeArguments); - }; - BaseVisitor.prototype.visitFunctionTypeNode = function (node) { - var e_2, _a; - try { - for (var _b = __values(node.parameters), _c = _b.next(); !_c.done; _c = _b.next()) { - var param = _c.value; - this.visit(param); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_2) throw e_2.error; } - } - this.visit(node.returnType); - }; - BaseVisitor.prototype.visitTypeParameter = function (node) { - this.visit(node.name); - if (node.extendsType) - this.visit(node.extendsType); - if (node.defaultType) - this.visit(node.defaultType); - }; - BaseVisitor.prototype.visitIdentifierExpression = function (node) { }; - BaseVisitor.prototype.visitArrayLiteralExpression = function (node) { - var _this = this; - node.elementExpressions.map(function (e) { - if (e) - _this.visit(e); - }); - }; - BaseVisitor.prototype.visitObjectLiteralExpression = function (node) { - if (node.values && node.names) { - assert(node.values.length == node.names.length); - for (var i = 0; i < node.values.length; i++) { - this.visit(node.names[i]); - this.visit(node.values[i]); - } - } - }; - BaseVisitor.prototype.visitAssertionExpression = function (node) { - if (node.toType) - this.visit(node.toType); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitBinaryExpression = function (node) { - this.visit(node.left); - this.visit(node.right); - }; - BaseVisitor.prototype.visitCallExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitClassExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitCommaExpression = function (node) { - this.visit(node.expressions); - }; - BaseVisitor.prototype.visitElementAccessExpression = function (node) { - this.visit(node.elementExpression); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFunctionExpression = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitLiteralExpression = function (node) { - // node. - }; - BaseVisitor.prototype.visitFloatLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitInstanceOfExpression = function (node) { - this.visit(node.expression); - this.visit(node.isType); - }; - BaseVisitor.prototype.visitIntegerLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitStringLiteral = function (str, singleQuoted) { }; - BaseVisitor.prototype.visitStringLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitRegexpLiteralExpression = function (node) { }; - BaseVisitor.prototype.visitNewExpression = function (node) { - this.visit(node.expression); - this.visit(node.typeArguments); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParenthesizedExpression = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitPropertyAccessExpression = function (node) { - this.visit(node.property); - this.visit(node.expression); - }; - BaseVisitor.prototype.visitTernaryExpression = function (node) { - this.visit(node.condition); - this.visit(node.ifThen); - this.visit(node.ifElse); - }; - BaseVisitor.prototype.visitUnaryExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPostfixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitUnaryPrefixExpression = function (node) { - this.visit(node.operand); - }; - BaseVisitor.prototype.visitSuperExpression = function (node) { }; - BaseVisitor.prototype.visitFalseExpression = function (node) { }; - BaseVisitor.prototype.visitTrueExpression = function (node) { }; - BaseVisitor.prototype.visitThisExpression = function (node) { }; - BaseVisitor.prototype.visitNullExperssion = function (node) { }; - BaseVisitor.prototype.visitConstructorExpression = function (node) { }; - BaseVisitor.prototype.visitNodeAndTerminate = function (statement) { }; - BaseVisitor.prototype.visitBlockStatement = function (node) { - this.depth++; - this.visit(node.statements); - this.depth--; - }; - BaseVisitor.prototype.visitBreakStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitContinueStatement = function (node) { - if (node.label) { - this.visit(node.label); - } - }; - BaseVisitor.prototype.visitClassDeclaration = function (node, isDefault) { - this.visit(node.name); - this.depth++; - this.visit(node.decorators); - assert(node.isGeneric ? node.typeParameters != null : node.typeParameters == null); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - if (node.extendsType) { - this.visit(node.extendsType); - } - this.visit(node.implementsTypes); - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitDoStatement = function (node) { - this.visit(node.condition); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitEmptyStatement = function (node) { }; - BaseVisitor.prototype.visitEnumDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.values); - }; - BaseVisitor.prototype.visitEnumValueDeclaration = function (node) { - this.visit(node.name); - if (node.initializer) { - this.visit(node.initializer); - } - }; - BaseVisitor.prototype.visitExportImportStatement = function (node) { - this.visit(node.name); - this.visit(node.externalName); - }; - BaseVisitor.prototype.visitExportMember = function (node) { - this.visit(node.localName); - this.visit(node.exportedName); - }; - BaseVisitor.prototype.visitExportStatement = function (node) { - if (node.path) { - this.visit(node.path); - } - this.visit(node.members); - }; - BaseVisitor.prototype.visitExportDefaultStatement = function (node) { - this.visit(node.declaration); - }; - BaseVisitor.prototype.visitExpressionStatement = function (node) { - this.visit(node.expression); - }; - BaseVisitor.prototype.visitFieldDeclaration = function (node) { - this.visit(node.name); - if (node.type) { - this.visit(node.type); - } - if (node.initializer) { - this.visit(node.initializer); - } - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitForStatement = function (node) { - if (node.initializer) - this.visit(node.initializer); - if (node.condition) - this.visit(node.condition); - if (node.incrementor) - this.visit(node.incrementor); - this.visit(node.statement); - }; - BaseVisitor.prototype.visitFunctionDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitFunctionCommon = function (node) { - // this.visit(node.name) - }; - BaseVisitor.prototype.visitIfStatement = function (node) { - this.visit(node.condition); - this.visit(node.ifTrue); - if (node.ifFalse) - this.visit(node.ifFalse); - }; - BaseVisitor.prototype.visitImportDeclaration = function (node) { - this.visit(node.foreignName); - this.visit(node.name); - this.visit(node.decorators); - }; - BaseVisitor.prototype.visitImportStatement = function (node) { - if (node.namespaceName) - this.visit(node.namespaceName); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitIndexSignatureDeclaration = function (node) { - // this.visit(node.name); - // this.visit(node.keyType); - // this.visit(node.valueType); - }; - BaseVisitor.prototype.visitInterfaceDeclaration = function (node, isDefault) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.implementsTypes); - if (node.extendsType) - this.visit(node.extendsType); - this.depth++; - this.visit(node.members); - this.depth--; - }; - BaseVisitor.prototype.visitMethodDeclaration = function (node) { - this.visit(node.name); - if (node.isGeneric) { - this.visit(node.typeParameters); - } - this.visit(node.signature); - this.visit(node.decorators); - this.depth++; - if (node.body) - this.visit(node.body); - this.depth--; - }; - BaseVisitor.prototype.visitNamespaceDeclaration = function (node, isDefault) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.members); - }; - BaseVisitor.prototype.visitReturnStatement = function (node) { - if (node.value) - this.visit(node.value); - }; - BaseVisitor.prototype.visitSwitchCase = function (node) { - if (node.label) - this.visit(node.label); - this.visit(node.statements); - }; - BaseVisitor.prototype.visitSwitchStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.cases); - this.depth--; - }; - BaseVisitor.prototype.visitThrowStatement = function (node) { - this.visit(node.value); - }; - BaseVisitor.prototype.visitTryStatement = function (node) { - this.visit(node.statements); - if (node.catchVariable) - this.visit(node.catchVariable); - this.visit(node.catchStatements); - this.visit(node.finallyStatements); - }; - BaseVisitor.prototype.visitTypeDeclaration = function (node) { - this.visit(node.name); - this.visit(node.decorators); - this.visit(node.type); - this.visit(node.typeParameters); - }; - BaseVisitor.prototype.visitVariableDeclaration = function (node) { - this.visit(node.name); - if (node.type) - this.visit(node.type); - if (node.initializer) - this.visit(node.initializer); - }; - BaseVisitor.prototype.visitVariableStatement = function (node) { - this.visit(node.decorators); - this.visit(node.declarations); - }; - BaseVisitor.prototype.visitWhileStatement = function (node) { - this.visit(node.condition); - this.depth++; - this.visit(node.statement); - this.depth--; - }; - BaseVisitor.prototype.visitVoidStatement = function (node) { }; - BaseVisitor.prototype.visitComment = function (node) { }; - BaseVisitor.prototype.visitDecoratorNode = function (node) { - this.visit(node.name); - this.visit(node.arguments); - }; - BaseVisitor.prototype.visitParameter = function (node) { - this.visit(node.name); - if (node.implicitFieldDeclaration) { - this.visit(node.implicitFieldDeclaration); - } - if (node.initializer) - this.visit(node.initializer); - this.visit(node.type); - }; - return BaseVisitor; -}(visitor_1.AbstractVisitor)); -exports.BaseVisitor = BaseVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0E0RXVCO0FBRXZCLHFDQUFvRDtBQUVwRDtJQUFpQywrQkFBcUI7SUFHcEQscUJBQVksTUFBcUI7UUFBakMsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FDZDtRQUpELFdBQUssR0FBVyxDQUFDLENBQUM7O0lBSWxCLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBVTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixLQUFLLGNBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBUyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsUUFBUTtZQUVSLEtBQUssY0FBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQWdCLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLGNBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFtQixJQUFJLENBQUMsQ0FBQztnQkFDbkQsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEM7WUFDRCxLQUFLLGNBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFvQixJQUFJLENBQUMsQ0FBQztnQkFDakQsTUFBTTthQUNQO1lBRUQsY0FBYztZQUVkLEtBQUssY0FBUSxDQUFDLEtBQUssQ0FBQztZQUNwQixLQUFLLGNBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbkIsS0FBSyxjQUFRLENBQUMsS0FBSyxDQUFDO1lB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QUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBYyxHQUFkLFVBQWUsSUFBbUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNW9CRCxDQUFpQyx5QkFBZSxHQTRvQi9DO0FBNW9CWSxrQ0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNvdXJjZSxcbiAgVHlwZU5vZGUsXG4gIFR5cGVOYW1lLFxuICBOYW1lZFR5cGVOb2RlLFxuICBGdW5jdGlvblR5cGVOb2RlLFxuICBUeXBlUGFyYW1ldGVyTm9kZSxcbiAgSWRlbnRpZmllckV4cHJlc3Npb24sXG4gIEFycmF5TGl0ZXJhbEV4cHJlc3Npb24sXG4gIE9iamVjdExpdGVyYWxFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIExpdGVyYWxFeHByZXNzaW9uLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnN0YW5jZU9mRXhwcmVzc2lvbixcbiAgSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uLFxuICBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbixcbiAgUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24sXG4gIE5ld0V4cHJlc3Npb24sXG4gIFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uLFxuICBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sXG4gIFRlcm5hcnlFeHByZXNzaW9uLFxuICBVbmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgU3VwZXJFeHByZXNzaW9uLFxuICBGYWxzZUV4cHJlc3Npb24sXG4gIFRydWVFeHByZXNzaW9uLFxuICBUaGlzRXhwcmVzc2lvbixcbiAgTnVsbEV4cHJlc3Npb24sXG4gIENvbnN0cnVjdG9yRXhwcmVzc2lvbixcbiAgU3RhdGVtZW50LFxuICBCbG9ja1N0YXRlbWVudCxcbiAgQnJlYWtTdGF0ZW1lbnQsXG4gIENvbnRpbnVlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBEb1N0YXRlbWVudCxcbiAgRW1wdHlTdGF0ZW1lbnQsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRW51bVZhbHVlRGVjbGFyYXRpb24sXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwb3J0TWVtYmVyLFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cHJlc3Npb25TdGF0ZW1lbnQsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIEZvclN0YXRlbWVudCxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgSWZTdGF0ZW1lbnQsXG4gIEltcG9ydERlY2xhcmF0aW9uLFxuICBJbXBvcnRTdGF0ZW1lbnQsXG4gIEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24sXG4gIEludGVyZmFjZURlY2xhcmF0aW9uLFxuICBNZXRob2REZWNsYXJhdGlvbixcbiAgTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gIFJldHVyblN0YXRlbWVudCxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoU3RhdGVtZW50LFxuICBUaHJvd1N0YXRlbWVudCxcbiAgVHJ5U3RhdGVtZW50LFxuICBUeXBlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIFZhcmlhYmxlU3RhdGVtZW50LFxuICBXaGlsZVN0YXRlbWVudCxcbiAgVm9pZFN0YXRlbWVudCxcbiAgQ29tbWVudE5vZGUsXG4gIERlY29yYXRvck5vZGUsXG4gIFBhcmFtZXRlck5vZGUsXG4gIE5vZGUsXG4gIE5vZGVLaW5kLFxuICBFeHByZXNzaW9uXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5cbmltcG9ydCB7IEFic3RyYWN0VmlzaXRvciwgV3JpdGVyIH0gZnJvbSBcIi4vdmlzaXRvclwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3I8Tm9kZT4ge1xuICBkZXB0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih3cml0ZXI/OiBXcml0ZXI8Tm9kZT4pIHtcbiAgICBzdXBlcih3cml0ZXIpO1xuICB9XG5cbiAgX3Zpc2l0KG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFTkFNRToge1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5hbWUoPFR5cGVOYW1lPm5vZGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnZpc2l0RGVjb3JhdG9yTm9kZSg8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy52aXNpdFBhcmFtZXRlcig8UGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlNXSVRDSENBU0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoPFN3aXRjaENhc2U+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFNvdXJjZShub2RlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygbm9kZS5zdGF0ZW1lbnRzKSB7XG4gICAgICB0aGlzLmRlcHRoKys7XG4gICAgICB0aGlzLnZpc2l0KHN0bXQpO1xuICAgICAgdGhpcy5kZXB0aC0tO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5vZGUobm9kZTogVHlwZU5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXRUeXBlTmFtZShub2RlOiBUeXBlTmFtZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5pZGVudGlmaWVyKTtcbiAgICBpZiAobm9kZS5uZXh0KSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0TmFtZWRUeXBlTm9kZShub2RlOiBOYW1lZFR5cGVOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlQXJndW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcGFyYW0gb2Ygbm9kZS5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnZpc2l0KHBhcmFtKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnJldHVyblR5cGUpO1xuICB9XG5cbiAgdmlzaXRUeXBlUGFyYW1ldGVyKG5vZGU6IFR5cGVQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIGlmIChub2RlLmRlZmF1bHRUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZGVmYXVsdFR5cGUpO1xuICB9XG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIG5vZGUuZWxlbWVudEV4cHJlc3Npb25zLm1hcCgoZTogRXhwcmVzc2lvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKGUpIHRoaXMudmlzaXQoZSk7XG4gICAgfSk7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgaWYgKG5vZGUudmFsdWVzICYmIG5vZGUubmFtZXMpIHtcbiAgICAgIGFzc2VydChub2RlLnZhbHVlcy5sZW5ndGggPT0gbm9kZS5uYW1lcy5sZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUubmFtZXNbaV0pO1xuICAgICAgICB0aGlzLnZpc2l0KG5vZGUudmFsdWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2aXNpdEFzc2VydGlvbkV4cHJlc3Npb24obm9kZTogQXNzZXJ0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLnRvVHlwZSkgdGhpcy52aXNpdChub2RlLnRvVHlwZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGU6IEJpbmFyeUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubGVmdCk7XG4gICAgdGhpcy52aXNpdChub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0Q29tbWFFeHByZXNzaW9uKG5vZGU6IENvbW1hRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9ucyk7XG4gIH1cblxuICB2aXNpdEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBGdW5jdGlvbkV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIC8vIG5vZGUuXG4gIH1cblxuICB2aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogRmxvYXRMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdEluc3RhbmNlT2ZFeHByZXNzaW9uKG5vZGU6IEluc3RhbmNlT2ZFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pc1R5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogSW50ZWdlckxpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0U3RyaW5nTGl0ZXJhbChzdHI6IHN0cmluZywgc2luZ2xlUXVvdGVkPzogYm9vbGVhbik6IHZvaWQge31cblxuICB2aXNpdFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKG5vZGU6IFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24obm9kZTogUmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGVBcmd1bWVudHMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5hcmd1bWVudHMpO1xuICB9XG5cbiAgdmlzaXRQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihub2RlOiBQYXJlbnRoZXNpemVkRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHZpc2l0UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGU6IFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5wcm9wZXJ0eSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4cHJlc3Npb24pO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZlRoZW4pO1xuICAgIHRoaXMudmlzaXQobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm9wZXJhbmQpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbihub2RlOiBVbmFyeVByZWZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUub3BlcmFuZCk7XG4gIH1cblxuICB2aXNpdFN1cGVyRXhwcmVzc2lvbihub2RlOiBTdXBlckV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRGYWxzZUV4cHJlc3Npb24obm9kZTogRmFsc2VFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0VHJ1ZUV4cHJlc3Npb24obm9kZTogVHJ1ZUV4cHJlc3Npb24pOiB2b2lkIHt9XG5cbiAgdmlzaXRUaGlzRXhwcmVzc2lvbihub2RlOiBUaGlzRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE51bGxFeHBlcnNzaW9uKG5vZGU6IE51bGxFeHByZXNzaW9uKTogdm9pZCB7fVxuXG4gIHZpc2l0Q29uc3RydWN0b3JFeHByZXNzaW9uKG5vZGU6IENvbnN0cnVjdG9yRXhwcmVzc2lvbik6IHZvaWQge31cblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHt9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRCcmVha1N0YXRlbWVudChub2RlOiBCcmVha1N0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLmxhYmVsKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUubGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Q29udGludWVTdGF0ZW1lbnQobm9kZTogQ29udGludWVTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkge1xuICAgICAgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0PzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGFzc2VydChcbiAgICAgIG5vZGUuaXNHZW5lcmljID8gbm9kZS50eXBlUGFyYW1ldGVycyAhPSBudWxsIDogbm9kZS50eXBlUGFyYW1ldGVycyA9PSBudWxsXG4gICAgKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuaW1wbGVtZW50c1R5cGVzKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRFbXB0eVN0YXRlbWVudChub2RlOiBFbXB0eVN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdEVudW1EZWNsYXJhdGlvbihub2RlOiBFbnVtRGVjbGFyYXRpb24sIGlzRGVmYXVsdD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS52YWx1ZXMpO1xuICB9XG5cbiAgdmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbihub2RlOiBFbnVtVmFsdWVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmV4dGVybmFsTmFtZSk7XG4gIH1cblxuICB2aXNpdEV4cG9ydE1lbWJlcihub2RlOiBFeHBvcnRNZW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubG9jYWxOYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgfVxuXG4gIHZpc2l0RXhwb3J0U3RhdGVtZW50KG5vZGU6IEV4cG9ydFN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnBhdGgpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS5wYXRoKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLm1lbWJlcnMpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnREZWZhdWx0U3RhdGVtZW50KG5vZGU6IEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjbGFyYXRpb24pO1xuICB9XG5cbiAgdmlzaXRFeHByZXNzaW9uU3RhdGVtZW50KG5vZGU6IEV4cHJlc3Npb25TdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gIH1cblxuICB2aXNpdEZvclN0YXRlbWVudChub2RlOiBGb3JTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5pbml0aWFsaXplcikgdGhpcy52aXNpdChub2RlLmluaXRpYWxpemVyKTtcbiAgICBpZiAobm9kZS5jb25kaXRpb24pIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIGlmIChub2RlLmluY3JlbWVudG9yKSB0aGlzLnZpc2l0KG5vZGUuaW5jcmVtZW50b3IpO1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkRlY2xhcmF0aW9uKFxuICAgIG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIGlmIChub2RlLmlzR2VuZXJpYykge1xuICAgICAgdGhpcy52aXNpdChub2RlLnR5cGVQYXJhbWV0ZXJzKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdChub2RlLnNpZ25hdHVyZSk7XG4gICAgdGhpcy5kZXB0aCsrO1xuICAgIGlmIChub2RlLmJvZHkpIHRoaXMudmlzaXQobm9kZS5ib2R5KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSlcbiAgfVxuXG4gIHZpc2l0SWZTdGF0ZW1lbnQobm9kZTogSWZTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuaWZUcnVlKTtcbiAgICBpZiAobm9kZS5pZkZhbHNlKSB0aGlzLnZpc2l0KG5vZGUuaWZGYWxzZSk7XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmZvcmVpZ25OYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICB9XG5cbiAgdmlzaXRJbXBvcnRTdGF0ZW1lbnQobm9kZTogSW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZXNwYWNlTmFtZSkgdGhpcy52aXNpdChub2RlLm5hbWVzcGFjZU5hbWUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICAvLyB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgLy8gdGhpcy52aXNpdChub2RlLmtleVR5cGUpO1xuICAgIC8vIHRoaXMudmlzaXQobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihcbiAgICBub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbixcbiAgICBpc0RlZmF1bHQ/OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5pbXBsZW1lbnRzVHlwZXMpO1xuICAgIGlmIChub2RlLmV4dGVuZHNUeXBlKSB0aGlzLnZpc2l0KG5vZGUuZXh0ZW5kc1R5cGUpO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUubWVtYmVycyk7XG4gICAgdGhpcy5kZXB0aC0tO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS5pc0dlbmVyaWMpIHtcbiAgICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIHRoaXMudmlzaXQobm9kZS5zaWduYXR1cmUpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNvcmF0b3JzKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgaWYgKG5vZGUuYm9keSkgdGhpcy52aXNpdChub2RlLmJvZHkpO1xuICAgIHRoaXMuZGVwdGgtLTtcbiAgfVxuXG4gIHZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oXG4gICAgbm9kZTogTmFtZXNwYWNlRGVjbGFyYXRpb24sXG4gICAgaXNEZWZhdWx0PzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5tZW1iZXJzKTtcbiAgfVxuXG4gIHZpc2l0UmV0dXJuU3RhdGVtZW50KG5vZGU6IFJldHVyblN0YXRlbWVudCk6IHZvaWQge1xuICAgIGlmIChub2RlLnZhbHVlKSB0aGlzLnZpc2l0KG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRTd2l0Y2hDYXNlKG5vZGU6IFN3aXRjaENhc2UpOiB2b2lkIHtcbiAgICBpZiAobm9kZS5sYWJlbCkgdGhpcy52aXNpdChub2RlLmxhYmVsKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50cyk7XG4gIH1cblxuICB2aXNpdFN3aXRjaFN0YXRlbWVudChub2RlOiBTd2l0Y2hTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUuY29uZGl0aW9uKTtcbiAgICB0aGlzLmRlcHRoKys7XG4gICAgdGhpcy52aXNpdChub2RlLmNhc2VzKTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFRocm93U3RhdGVtZW50KG5vZGU6IFRocm93U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5zdGF0ZW1lbnRzKTtcbiAgICBpZiAobm9kZS5jYXRjaFZhcmlhYmxlKSB0aGlzLnZpc2l0KG5vZGUuY2F0Y2hWYXJpYWJsZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmNhdGNoU3RhdGVtZW50cyk7XG4gICAgdGhpcy52aXNpdChub2RlLmZpbmFsbHlTdGF0ZW1lbnRzKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICB0aGlzLnZpc2l0KG5vZGUuZGVjb3JhdG9ycyk7XG4gICAgdGhpcy52aXNpdChub2RlLnR5cGUpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlUGFyYW1ldGVycyk7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24obm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS50eXBlKSB0aGlzLnZpc2l0KG5vZGUudHlwZSk7XG4gICAgaWYgKG5vZGUuaW5pdGlhbGl6ZXIpIHRoaXMudmlzaXQobm9kZS5pbml0aWFsaXplcik7XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLmRlY29yYXRvcnMpO1xuICAgIHRoaXMudmlzaXQobm9kZS5kZWNsYXJhdGlvbnMpO1xuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXQobm9kZS5jb25kaXRpb24pO1xuICAgIHRoaXMuZGVwdGgrKztcbiAgICB0aGlzLnZpc2l0KG5vZGUuc3RhdGVtZW50KTtcbiAgICB0aGlzLmRlcHRoLS07XG4gIH1cblxuICB2aXNpdFZvaWRTdGF0ZW1lbnQobm9kZTogVm9pZFN0YXRlbWVudCk6IHZvaWQge31cblxuICB2aXNpdENvbW1lbnQobm9kZTogQ29tbWVudE5vZGUpOiB2b2lkIHt9XG5cbiAgdmlzaXREZWNvcmF0b3JOb2RlKG5vZGU6IERlY29yYXRvck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0KG5vZGUubmFtZSk7XG4gICAgdGhpcy52aXNpdChub2RlLmFyZ3VtZW50cyk7XG4gIH1cblxuICB2aXNpdFBhcmFtZXRlcihub2RlOiBQYXJhbWV0ZXJOb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdChub2RlLm5hbWUpO1xuICAgIGlmIChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbikge1xuICAgICAgdGhpcy52aXNpdChub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbik7XG4gICAgfVxuICAgIGlmIChub2RlLmluaXRpYWxpemVyKSB0aGlzLnZpc2l0KG5vZGUuaW5pdGlhbGl6ZXIpO1xuICAgIHRoaXMudmlzaXQobm9kZS50eXBlKTtcbiAgfVxuXG59XG4iXX0= - -/***/ }), - -/***/ "./src/index.ts": -/*!**********************!*\ - !*** ./src/index.ts ***! - \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -// tslint:disable: no-void-expression as-types as-variables -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var sourceBuilder_1 = __webpack_require__(/*! ./sourceBuilder */ "./src/sourceBuilder.ts"); -var base_1 = __webpack_require__(/*! ./base */ "./src/base.ts"); -var preamble_1 = __webpack_require__(/*! ./preamble */ "./src/preamble.ts"); -function returnsVoid(node) { - return toString(node.signature.returnType) === "void"; -} -function numOfParameters(node) { - return node.signature.parameters.length; -} -function isComment(stmt) { - return stmt.kind == ast_1.NodeKind.COMMENT; -} -function hasNearDecorator(stmt) { - return stmt.text.includes("@nearfile") || isEntry(stmt); -} -function toString(node) { - return sourceBuilder_1.ASTBuilder.build(node); -} -function isEntry(source) { - var _source = ((source.kind == ast_1.NodeKind.SOURCE) ? source : source.range.source); - return _source.sourceKind == ast_1.SourceKind.USER_ENTRY; -} -function isArrayType(type) { - return !!((type.kind == ast_1.NodeKind.NAMEDTYPE) && - toString(type).startsWith("Array") && - type.typeArguments && - type.typeArguments.length > 0); -} -function isClass(type) { - return type.kind == ast_1.NodeKind.CLASSDECLARATION; -} -function isField(mem) { - return mem.kind == ast_1.NodeKind.FIELDDECLARATION; -} -function isReference(type) { - var simpleTypes = [ - "i32", - "u32", - "bool", - "i64", - "u64", - "boolean", - ]; - return !simpleTypes.includes(toString(type)); -} -// TODO: Extract this into separate module, preferrable pluggable -var NEARBindingsBuilder = /** @class */ (function (_super) { - __extends(NEARBindingsBuilder, _super); - function NEARBindingsBuilder() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.typeMapping = { - i32: "Integer", - u32: "Integer", - i64: "String", - u64: "String", - string: "String", - bool: "Boolean", - Uint8Array: "String", - }; - _this.nonNullableTypes = ["i32", "u32", "i64", "u64", "bool", "boolean"]; - _this.sb = []; - _this.exportedClasses = new Map(); - _this.wrappedFuncs = new Set(); - return _this; - } - NEARBindingsBuilder.build = function (parser, source) { - return (new NEARBindingsBuilder().build(source)); - }; - NEARBindingsBuilder.nearFiles = function (parser) { - return parser.program.sources.filter(hasNearDecorator); - }; - NEARBindingsBuilder.prototype.visitClassDeclaration = function (node) { - if (this.exportedClasses.has(toString(node.name))) - return; - this.exportedClasses.set(toString(node.name), node); - }; - NEARBindingsBuilder.prototype.visitFunctionDeclaration = function (node) { - if (!isEntry(node) - || this.wrappedFuncs.has(toString(node.name)) - || !node.is(common_1.CommonFlags.EXPORT) - || (numOfParameters(node) == 0 && returnsVoid(node))) { - _super.prototype.visitFunctionDeclaration.call(this, node); - return; - } - // if (numOfParameters(node) > 0){ - // this.generateArgsParser(node); - // } - this.generateWrapperFunction(node); - // Change function to not be an export - node.flags = node.flags ^ common_1.CommonFlags.EXPORT; - this.wrappedFuncs.add(toString(node.name)); - }; - /* - Create a wrapper function that will be export in the function's place. - */ - NEARBindingsBuilder.prototype.generateWrapperFunction = function (func) { - var signature = func.signature; - var params = signature.parameters; - var returnType = signature.returnType; - var returnTypeName = toString(returnType).split("|").filter(function (name) { return name.trim() !== "null"; }).join("|"); - var hasNull = toString(returnType).includes("null"); - var name = func.name.symbol; - this.sb.push("\n//@ts-ignore\nfunction __wrapper_" + name + "(): void {"); - if (params.length > 0) { - this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"); - } - if (toString(returnType) !== "void") { - this.sb.push(" let result: " + toString(returnType) + " = " + name + "("); - } - else { - this.sb.push(" " + name + "("); - } - if (params.length > 0) { - this.sb[this.sb.length - 1] += (params - .map(function (param) { return createDecodeStatement(param); }) - .join(", ")); - } - this.sb[this.sb.length - 1] += ");"; - if (toString(returnType) !== "void") { - this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<" + returnTypeName + ">() || isNullable<" + returnTypeName + ">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<" + returnTypeName + ">(encoder, result" + (hasNull ? "!" : "") + ", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"); - } - this.sb.push("}\n\nexport { __wrapper_" + name + " as " + name + " }\n"); - }; - NEARBindingsBuilder.prototype.typeName = function (type) { - if (!isClass(type)) { - return sourceBuilder_1.ASTBuilder.build(type); - } - type = (type); - var className = toString(type.name); - if (type.isGeneric) { - className += "<" + type.typeParameters.map(toString).join(", ") + ">"; - } - return className; - }; - NEARBindingsBuilder.prototype.getFields = function (type) { - var _class = ((isClass(type)) - ? type - : this.exportedClasses.get(toString(type))); - if (_class == null) { - return []; - } - return _class.members - .filter(function (member) { return member.kind == ast_1.NodeKind.FIELDDECLARATION; }) - .map(function (field) { - return { name: toString(field.name), type: field.type, isGeneric: isGeneric(_class, field) }; - }); - }; - NEARBindingsBuilder.prototype.build = function (source) { - var _this = this; - this.sb = [preamble_1.preamble]; - this.visit(source); - var sourceText = source.statements.map(function (stmt) { - var str = sourceBuilder_1.ASTBuilder.build(stmt); - if (isClass(stmt)) { - var _class = stmt; - str = str.slice(0, str.lastIndexOf("}")); - var fields = _class.members.filter(isField).map(function (field) { return field; }); - if (fields.some(function (field) { return field.type == null; })) { - throw new Error("All Fields must have explict type declaration."); - } - var className = _this.typeName(_class); - str += "\n static decode(json: Uint8Array): " + className + " {\n let value = instantiate<" + className + ">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): " + className + " {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): " + className + " {\n " + createDecodeStatements(_class).join("\n ") + "\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n " + createEncodeStatements(_class).join("\n ") + "\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"; - } - return str; - }); - return this.sb.concat(sourceText).join("\n"); - }; - return NEARBindingsBuilder; -}(base_1.BaseVisitor)); -function createDecodeStatements(_class) { - return _class.members.filter(isField).map(function (field) { - var name = toString(field.name); - return createDecodeStatement(field, "this." + name + " = obj.has(\"" + name + "\") ? ") + (": this." + name + ";"); - }); -} -function createDecodeStatement(field, setterPrefix) { - if (setterPrefix === void 0) { setterPrefix = ""; } - var T = toString(field.type); - var name = toString(field.name); - return setterPrefix + "decode<" + T + ", Obj>(obj, \"" + name + "\")"; -} -function createEncodeStatements(_class) { - return _class.members.filter(isField).map(function (field) { - var T = toString(field.type); - var name = toString(field.name); - return "encode<" + T + ">(encoder, this." + name + ", \"" + name + "\");"; - }); -} -// TODO: Make work for non-simple generics e.g. field: Array -function isGeneric(_class, field) { - if (_class.typeParameters == null) { - return false; - } - return _class.typeParameters.some(function (param) { return toString(param.name) == toString(field.type); }); -} -function afterParse(parser, writeFile, baseDir) { - var files = NEARBindingsBuilder.nearFiles(parser); - files.forEach(function (source) { - var writeOut = source.text.substr(0, source.text.indexOf("\n")).includes("out"); - // Remove from logs in parser - parser.donelog.delete(source.internalPath); - parser.seenlog.delete(source.internalPath); - // Remove from programs sources - parser.program.sources = parser.program.sources.filter(function (_source) { return _source !== source; }); - // Build new Source - var sourceText = NEARBindingsBuilder.build(parser, source); - if (writeOut) { - writeFile("out/" + source.normalizedPath, sourceText, baseDir); - } - // Parses file and any new imports added to the source - parser.parseFile(sourceText, (isEntry(source) ? "" : "./") + source.normalizedPath, isEntry(source)); - }); -} -exports.afterParse = afterParse; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQTJEO0FBQzNELHFDQWN1QjtBQUN2QiwyQ0FBK0M7QUFHL0MsaURBQTZDO0FBQzdDLCtCQUFxQztBQUNyQyx1Q0FBc0M7QUFRdEMsU0FBUyxXQUFXLENBQUMsSUFBeUI7SUFDNUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLElBQXlCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxjQUFRLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVU7SUFDMUIsT0FBTywwQkFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsTUFBcUI7SUFDcEMsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEYsT0FBTyxPQUFPLENBQUMsVUFBVSxJQUFJLGdCQUFVLENBQUMsVUFBVSxDQUFDO0FB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QixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxRQUFRLEVBQUU7WUFDYixTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQy9EO1FBQ0Qsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxTQUFTLENBQ2QsVUFBVSxFQUNWLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQ3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDaEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUwsQ0FBQztBQXhCRCxnQ0F3QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0c2xpbnQ6ZGlzYWJsZTogbm8tdm9pZC1leHByZXNzaW9uIGFzLXR5cGVzIGFzLXZhcmlhYmxlc1xuaW1wb3J0IHtcbiAgU291cmNlLFxuICBOb2RlS2luZCxcbiAgQ2xhc3NEZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgVHlwZU5vZGUsXG4gIEZpZWxkRGVjbGFyYXRpb24sXG4gIFN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgU291cmNlS2luZCxcbiAgRGVjbGFyYXRpb25TdGF0ZW1lbnQsXG4gIFR5cGVOYW1lLFxuICBQYXJhbWV0ZXJOb2RlXG59IGZyb20gXCIuLi8uLi9zcmMvYXN0XCI7XG5pbXBvcnQgeyBDb21tb25GbGFncyB9IGZyb20gXCIuLi8uLi9zcmMvY29tbW9uXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9tb2NrVHlwZXNcIjtcblxuaW1wb3J0IHsgQVNUQnVpbGRlciB9IGZyb20gXCIuL3NvdXJjZUJ1aWxkZXJcIjtcbmltcG9ydCB7IEJhc2VWaXNpdG9yIH0gZnJvbSBcIi4vYmFzZVwiO1xuaW1wb3J0IHsgcHJlYW1ibGUgfSBmcm9tIFwiLi9wcmVhbWJsZVwiO1xuXG5pbnRlcmZhY2UgU2ltcGxlRmllbGQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFR5cGVOb2RlO1xuICBpc0dlbmVyaWM6IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHJldHVybnNWb2lkKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHRvU3RyaW5nKG5vZGUuc2lnbmF0dXJlLnJldHVyblR5cGUpID09PSBcInZvaWRcIjtcbn1cblxuZnVuY3Rpb24gbnVtT2ZQYXJhbWV0ZXJzKG5vZGU6IEZ1bmN0aW9uRGVjbGFyYXRpb24pOiBudW1iZXIge1xuICByZXR1cm4gbm9kZS5zaWduYXR1cmUucGFyYW1ldGVycy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGlzQ29tbWVudChzdG10OiBTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0bXQua2luZCA9PSBOb2RlS2luZC5DT01NRU5UO1xufVxuXG5mdW5jdGlvbiBoYXNOZWFyRGVjb3JhdG9yKHN0bXQ6IFNvdXJjZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RtdC50ZXh0LmluY2x1ZGVzKFwiQG5lYXJmaWxlXCIpIHx8IGlzRW50cnkoc3RtdCk7XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICByZXR1cm4gQVNUQnVpbGRlci5idWlsZChub2RlKTtcbn1cblxuZnVuY3Rpb24gaXNFbnRyeShzb3VyY2U6IFNvdXJjZSB8IE5vZGUpOiBib29sZWFuIHtcbiAgbGV0IF9zb3VyY2UgPSA8U291cmNlPigoc291cmNlLmtpbmQgPT0gTm9kZUtpbmQuU09VUkNFKSA/IHNvdXJjZSA6IHNvdXJjZS5yYW5nZS5zb3VyY2UpO1xuICByZXR1cm4gX3NvdXJjZS5zb3VyY2VLaW5kID09IFNvdXJjZUtpbmQuVVNFUl9FTlRSWTtcbn1cblxuZnVuY3Rpb24gaXNBcnJheVR5cGUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIShcbiAgICAodHlwZS5raW5kID09IE5vZGVLaW5kLk5BTUVEVFlQRSkgJiZcbiAgICB0b1N0cmluZyh0eXBlKS5zdGFydHNXaXRoKFwiQXJyYXlcIikgJiZcbiAgICAoPE5hbWVkVHlwZU5vZGU+dHlwZSkudHlwZUFyZ3VtZW50cyAmJlxuICAgICg8TmFtZWRUeXBlTm9kZT50eXBlKS50eXBlQXJndW1lbnRzIS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzQ2xhc3ModHlwZTogTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZS5raW5kID09IE5vZGVLaW5kLkNMQVNTREVDTEFSQVRJT047XG59XG5cbmZ1bmN0aW9uIGlzRmllbGQobWVtOiBEZWNsYXJhdGlvblN0YXRlbWVudCkge1xuICByZXR1cm4gbWVtLmtpbmQgPT0gTm9kZUtpbmQuRklFTERERUNMQVJBVElPTjtcbn1cblxuZnVuY3Rpb24gaXNSZWZlcmVuY2UodHlwZTogVHlwZU5vZGUpOiBib29sZWFuIHtcbiAgbGV0IHNpbXBsZVR5cGVzID0gW1xuICAgIFwiaTMyXCIsXG4gICAgXCJ1MzJcIixcbiAgICBcImJvb2xcIixcbiAgICBcImk2NFwiLFxuICAgIFwidTY0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gIF07XG4gIHJldHVybiAhc2ltcGxlVHlwZXMuaW5jbHVkZXModG9TdHJpbmcodHlwZSkpO1xufVxuXG4vLyBUT0RPOiBFeHRyYWN0IHRoaXMgaW50byBzZXBhcmF0ZSBtb2R1bGUsIHByZWZlcnJhYmxlIHBsdWdnYWJsZVxuY2xhc3MgTkVBUkJpbmRpbmdzQnVpbGRlciBleHRlbmRzIEJhc2VWaXNpdG9yIHtcbiAgcHJpdmF0ZSB0eXBlTWFwcGluZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBpMzI6IFwiSW50ZWdlclwiLFxuICAgIHUzMjogXCJJbnRlZ2VyXCIsXG4gICAgaTY0OiBcIlN0cmluZ1wiLFxuICAgIHU2NDogXCJTdHJpbmdcIixcbiAgICBzdHJpbmc6IFwiU3RyaW5nXCIsXG4gICAgYm9vbDogXCJCb29sZWFuXCIsXG4gICAgVWludDhBcnJheTogXCJTdHJpbmdcIixcbiAgfTtcblxuICBwcml2YXRlIG5vbk51bGxhYmxlVHlwZXMgPSBbXCJpMzJcIiwgXCJ1MzJcIiwgXCJpNjRcIiwgXCJ1NjRcIiwgXCJib29sXCIsIFwiYm9vbGVhblwiXTtcblxuICBwcml2YXRlIHNiOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGV4cG9ydGVkQ2xhc3NlczogTWFwPHN0cmluZywgQ2xhc3NEZWNsYXJhdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHdyYXBwZWRGdW5jczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgc3RhdGljIGJ1aWxkKHBhcnNlcjogUGFyc2VyLCBzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChuZXcgTkVBUkJpbmRpbmdzQnVpbGRlcigpLmJ1aWxkKHNvdXJjZSkpO1xuICB9XG5cbiAgc3RhdGljIG5lYXJGaWxlcyhwYXJzZXI6IFBhcnNlcik6IFNvdXJjZVtdIHtcbiAgICByZXR1cm4gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoaGFzTmVhckRlY29yYXRvcik7XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSkpIHJldHVybjtcbiAgICB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5zZXQodG9TdHJpbmcobm9kZS5uYW1lKSwgbm9kZSk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghaXNFbnRyeShub2RlKVxuICAgICAgICB8fCB0aGlzLndyYXBwZWRGdW5jcy5oYXModG9TdHJpbmcobm9kZS5uYW1lKSlcbiAgICAgICAgfHwgIW5vZGUuaXMoQ29tbW9uRmxhZ3MuRVhQT1JUKVxuICAgICAgICB8fCAobnVtT2ZQYXJhbWV0ZXJzKG5vZGUpID09IDAgJiYgcmV0dXJuc1ZvaWQobm9kZSkpXG4gICAgICAgICkge1xuICAgICAgICBzdXBlci52aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgKG51bU9mUGFyYW1ldGVycyhub2RlKSA+IDApe1xuICAgIC8vICAgdGhpcy5nZW5lcmF0ZUFyZ3NQYXJzZXIobm9kZSk7XG4gICAgLy8gfVxuICAgIHRoaXMuZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24obm9kZSk7XG4gICAgLy8gQ2hhbmdlIGZ1bmN0aW9uIHRvIG5vdCBiZSBhbiBleHBvcnRcbiAgICBub2RlLmZsYWdzID0gbm9kZS5mbGFncyBeIENvbW1vbkZsYWdzLkVYUE9SVDtcbiAgICB0aGlzLndyYXBwZWRGdW5jcy5hZGQodG9TdHJpbmcobm9kZS5uYW1lKSk7XG4gIH1cblxuICAvKlxuICBDcmVhdGUgYSB3cmFwcGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleHBvcnQgaW4gdGhlIGZ1bmN0aW9uJ3MgcGxhY2UuXG4gICovXG4gIHByaXZhdGUgZ2VuZXJhdGVXcmFwcGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb25EZWNsYXJhdGlvbikge1xuICAgIGxldCBzaWduYXR1cmUgPSBmdW5jLnNpZ25hdHVyZTtcbiAgICBsZXQgcGFyYW1zID0gc2lnbmF0dXJlLnBhcmFtZXRlcnM7XG4gICAgbGV0IHJldHVyblR5cGUgPSBzaWduYXR1cmUucmV0dXJuVHlwZTtcbiAgICBsZXQgcmV0dXJuVHlwZU5hbWUgPSB0b1N0cmluZyhyZXR1cm5UeXBlKS5zcGxpdChcInxcIikuZmlsdGVyKG5hbWUgPT4gbmFtZS50cmltKCkgIT09IFwibnVsbFwiKS5qb2luKFwifFwiKTtcbiAgICBsZXQgaGFzTnVsbCA9IHRvU3RyaW5nKHJldHVyblR5cGUpLmluY2x1ZGVzKFwibnVsbFwiKTtcbiAgICBsZXQgbmFtZSA9IGZ1bmMubmFtZS5zeW1ib2w7XG4gICAgdGhpcy5zYi5wdXNoKGBcbi8vQHRzLWlnbm9yZVxuZnVuY3Rpb24gX193cmFwcGVyXyR7bmFtZX0oKTogdm9pZCB7YCk7XG4gICBpZiAocGFyYW1zLmxlbmd0aCA+IDApe1xuICAgICB0aGlzLnNiLnB1c2goXG5gICAvLyBSZWFkaW5nIGlucHV0IGJ5dGVzLlxuICBpbnB1dCgwKTtcbiAgbGV0IGpzb25fbGVuID0gcmVnaXN0ZXJfbGVuKDApO1xuICBpZiAoanNvbl9sZW4gPT0gVTMyLk1BWF9WQUxVRSkge1xuICAgIHBhbmljKCk7XG4gIH1cbiAgbGV0IGpzb24gPSBuZXcgVWludDhBcnJheShqc29uX2xlbiBhcyB1MzIpO1xuICByZWFkX3JlZ2lzdGVyKDAsIDx1c2l6ZT5qc29uLmJ1ZmZlcik7XG4gIGNvbnN0IG9iajogT2JqID0gSlNPTi5wYXJzZShqc29uKTtgKTtcbiAgICB9XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKFxuYCAgbGV0IHJlc3VsdDogJHt0b1N0cmluZyhyZXR1cm5UeXBlKX0gPSAke25hbWV9KGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXG5gICAke25hbWV9KGApO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSAoXG4gICAgICAgIHBhcmFtc1xuICAgICAgICAgIC5tYXAoKHBhcmFtKSA9PiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQocGFyYW0pKVxuICAgICAgICAgIC5qb2luKFwiLCBcIilcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuc2JbdGhpcy5zYi5sZW5ndGggLSAxXSArPSBcIik7XCI7XG4gICAgaWYgKHRvU3RyaW5nKHJldHVyblR5cGUpICE9PSBcInZvaWRcIikge1xuICAgICAgdGhpcy5zYi5wdXNoKGBcbiAgbGV0IGVuY29kZXIgPSBuZXcgSlNPTkVuY29kZXIoKTtcbiAgaWYgKChpc1N0cmluZzwke3JldHVyblR5cGVOYW1lfT4oKSB8fCBpc051bGxhYmxlPCR7cmV0dXJuVHlwZU5hbWV9PigpKSAmJiByZXN1bHQgPT0gbnVsbCkge1xuICAgIGVuY29kZXIuc2V0TnVsbChudWxsKTtcbiAgfSBlbHNlIHtcbiAgICBlbmNvZGU8JHtyZXR1cm5UeXBlTmFtZX0+KGVuY29kZXIsIHJlc3VsdCR7aGFzTnVsbCA/IFwiIVwiIDogXCJcIn0sIG51bGwpO1xuICB9XG4gIGxldCB2YWw6IFVpbnQ4QXJyYXkgPSBlbmNvZGVyLnNlcmlhbGl6ZSgpO1xuICB2YWx1ZV9yZXR1cm4odmFsLmJ5dGVMZW5ndGgsIDx1c2l6ZT52YWwuYnVmZmVyKTtgKTtcbiAgICB9XG4gICAgdGhpcy5zYi5wdXNoKGB9XG5cbmV4cG9ydCB7IF9fd3JhcHBlcl8ke25hbWV9IGFzICR7bmFtZX0gfVxuYCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgdHlwZU5hbWUodHlwZTogVHlwZU5vZGUgfCBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIWlzQ2xhc3ModHlwZSkpIHtcbiAgICAgIHJldHVybiBBU1RCdWlsZGVyLmJ1aWxkKHR5cGUpO1xuICAgIH1cbiAgICB0eXBlID0gPENsYXNzRGVjbGFyYXRpb24+KHR5cGUpO1xuICAgIGxldCBjbGFzc05hbWUgPSB0b1N0cmluZyh0eXBlLm5hbWUpO1xuICAgIGlmICh0eXBlLmlzR2VuZXJpYykge1xuICAgICAgY2xhc3NOYW1lICs9IFwiPFwiICsgdHlwZS50eXBlUGFyYW1ldGVycyEubWFwKHRvU3RyaW5nKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmllbGRzKHR5cGU6IFR5cGVOb2RlIHwgQ2xhc3NEZWNsYXJhdGlvbik6IFNpbXBsZUZpZWxkW10ge1xuICAgIGxldCBfY2xhc3MgPSA8Q2xhc3NEZWNsYXJhdGlvbj4gKChpc0NsYXNzKHR5cGUpKVxuICAgICAgICA/IHR5cGVcbiAgICAgICAgOiB0aGlzLmV4cG9ydGVkQ2xhc3Nlcy5nZXQodG9TdHJpbmcodHlwZSkpKTtcbiAgICBpZiAoX2NsYXNzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NsYXNzLm1lbWJlcnNcbiAgICAgIC5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5raW5kID09IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04pXG4gICAgICAubWFwKFxuICAgICAgICAoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBTaW1wbGVGaWVsZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbmFtZTogdG9TdHJpbmcoZmllbGQubmFtZSksIHR5cGU6IGZpZWxkLnR5cGUhLCBpc0dlbmVyaWM6IGlzR2VuZXJpYyhfY2xhc3MsIGZpZWxkKX07XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBidWlsZChzb3VyY2U6IFNvdXJjZSk6IHN0cmluZyB7XG4gICAgICB0aGlzLnNiID0gW3ByZWFtYmxlXTtcbiAgICAgIHRoaXMudmlzaXQoc291cmNlKTtcbiAgICAgIGxldCBzb3VyY2VUZXh0ID0gc291cmNlLnN0YXRlbWVudHMubWFwKHN0bXQgPT4ge1xuICAgICAgICBsZXQgc3RyID0gQVNUQnVpbGRlci5idWlsZChzdG10KTtcbiAgICAgICAgaWYgKGlzQ2xhc3Moc3RtdCkpIHtcbiAgICAgICAgICBsZXQgX2NsYXNzID0gPENsYXNzRGVjbGFyYXRpb24+IHN0bXQ7XG4gICAgICAgICAgc3RyID0gc3RyLnNsaWNlKDAsIHN0ci5sYXN0SW5kZXhPZihcIn1cIikpO1xuICAgICAgICAgIGxldCBmaWVsZHMgPSBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKChmaWVsZDogRmllbGREZWNsYXJhdGlvbikgPT4gZmllbGQpO1xuICAgICAgICAgIGlmIChmaWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC50eXBlID09IG51bGwpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBbGwgRmllbGRzIG11c3QgaGF2ZSBleHBsaWN0IHR5cGUgZGVjbGFyYXRpb24uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY2xhc3NOYW1lID0gdGhpcy50eXBlTmFtZShfY2xhc3MpO1xuICAgICAgICAgIHN0ciArPSBgXG4gIHN0YXRpYyBkZWNvZGUoanNvbjogVWludDhBcnJheSk6ICR7Y2xhc3NOYW1lfSB7XG4gICAgbGV0IHZhbHVlID0gaW5zdGFudGlhdGU8JHtjbGFzc05hbWV9PigpOyAvLyBBbGxvY2F0ZSB3aXRob3V0IGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIHZhbHVlLmRlY29kZTxVaW50OEFycmF5Pihqc29uKTtcbiAgfVxuXG4gIGRlY29kZTxWID0gVWludDhBcnJheT4oYnVmOiBWKTogJHtjbGFzc05hbWV9IHtcbiAgICBsZXQganNvbjogT2JqO1xuICAgIGlmIChidWYgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICBqc29uID0gSlNPTi5wYXJzZShidWYpO1xuICAgIH1lbHNlIHtcbiAgICAgIGFzc2VydChidWYgaW5zdGFuY2VvZiBPYmosIFwiYXJndW1lbnQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEpzb24gT2JqZWN0XCIpO1xuICAgICAganNvbiA9IDxPYmo+IGJ1ZjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZShqc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlY29kZShvYmo6IE9iaik6ICR7Y2xhc3NOYW1lfSB7XG4gICAgJHtjcmVhdGVEZWNvZGVTdGF0ZW1lbnRzKF9jbGFzcykuam9pbihcIlxcbiAgICBcIil9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmNvZGUoX2VuY29kZXI6IEpTT05FbmNvZGVyIHwgbnVsbCA9IG51bGwsIG5hbWU6IHN0cmluZyB8IG51bGwgPSBcIlwiKTogSlNPTkVuY29kZXIge1xuICAgIGxldCBlbmNvZGVyID0gKF9lbmNvZGVyICE9IG51bGwgPyBfZW5jb2RlciA6IG5ldyBKU09ORW5jb2RlcigpKSE7XG4gICAgZW5jb2Rlci5wdXNoT2JqZWN0KG5hbWUpO1xuICAgICR7Y3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3MpLmpvaW4oXCJcXG4gICAgXCIpfVxuICAgIGVuY29kZXIucG9wT2JqZWN0KCk7XG4gICAgcmV0dXJuIGVuY29kZXJcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVuY29kZSgpLnRvU3RyaW5nKCk7XG4gIH1cbn1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuc2IuY29uY2F0KHNvdXJjZVRleHQpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY29kZVN0YXRlbWVudHMoX2NsYXNzOiBDbGFzc0RlY2xhcmF0aW9uKTogc3RyaW5nW10ge1xuICByZXR1cm4gX2NsYXNzLm1lbWJlcnMuZmlsdGVyKGlzRmllbGQpLm1hcCgoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24pOiBzdHJpbmcgID0+IHtcbiAgICBjb25zdCBuYW1lID0gdG9TdHJpbmcoZmllbGQubmFtZSk7XG4gICAgcmV0dXJuIGNyZWF0ZURlY29kZVN0YXRlbWVudChmaWVsZCwgYHRoaXMuJHtuYW1lfSA9IG9iai5oYXMoXCIke25hbWV9XCIpID8gYCkgKyBgOiB0aGlzLiR7bmFtZX07YFxuICB9KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNvZGVTdGF0ZW1lbnQoZmllbGQ6IEZpZWxkRGVjbGFyYXRpb24gfCBQYXJhbWV0ZXJOb2RlLCBzZXR0ZXJQcmVmaXg6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICBsZXQgVCA9IHRvU3RyaW5nKGZpZWxkLnR5cGUhKTtcbiAgbGV0IG5hbWUgPSB0b1N0cmluZyhmaWVsZC5uYW1lKTtcbiAgcmV0dXJuIGAke3NldHRlclByZWZpeH1kZWNvZGU8JHtUfSwgT2JqPihvYmosIFwiJHtuYW1lfVwiKWA7XG5cbn1cblxuZnVuY3Rpb24gY3JlYXRlRW5jb2RlU3RhdGVtZW50cyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBfY2xhc3MubWVtYmVycy5maWx0ZXIoaXNGaWVsZCkubWFwKFxuICAgIChmaWVsZDogRmllbGREZWNsYXJhdGlvbik6IHN0cmluZyAgPT4ge1xuICAgICAgbGV0IFQgPSB0b1N0cmluZyhmaWVsZC50eXBlISk7XG4gICAgICBsZXQgbmFtZSA9IHRvU3RyaW5nKGZpZWxkLm5hbWUpO1xuICAgICAgcmV0dXJuIGBlbmNvZGU8JHtUfT4oZW5jb2RlciwgdGhpcy4ke25hbWV9LCBcIiR7bmFtZX1cIik7YDtcbiAgICB9XG4gICk7XG59XG4vLyBUT0RPOiBNYWtlIHdvcmsgZm9yIG5vbi1zaW1wbGUgZ2VuZXJpY3MgZS5nLiBmaWVsZDogQXJyYXk8VD5cbmZ1bmN0aW9uIGlzR2VuZXJpYyhfY2xhc3M6IENsYXNzRGVjbGFyYXRpb24sIGZpZWxkOiBGaWVsZERlY2xhcmF0aW9uKTogYm9vbGVhbiB7XG4gIGlmIChfY2xhc3MudHlwZVBhcmFtZXRlcnMgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gX2NsYXNzLnR5cGVQYXJhbWV0ZXJzLnNvbWUocGFyYW0gPT4gdG9TdHJpbmcocGFyYW0ubmFtZSkgPT0gdG9TdHJpbmcoZmllbGQudHlwZSEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFmdGVyUGFyc2UocGFyc2VyOiBQYXJzZXIsIHdyaXRlRmlsZTogRmlsZVdyaXRlciwgYmFzZURpcjogc3RyaW5nKTogdm9pZCB7XG4gIGxldCBmaWxlcyA9IE5FQVJCaW5kaW5nc0J1aWxkZXIubmVhckZpbGVzKHBhcnNlcik7XG4gIGZpbGVzLmZvckVhY2goc291cmNlID0+IHtcbiAgICBsZXQgd3JpdGVPdXQgPSBzb3VyY2UudGV4dC5zdWJzdHIoMCwgc291cmNlLnRleHQuaW5kZXhPZihcIlxcblwiKSkuaW5jbHVkZXMoXCJvdXRcIik7XG4gICAgLy8gUmVtb3ZlIGZyb20gbG9ncyBpbiBwYXJzZXJcbiAgICBwYXJzZXIuZG9uZWxvZy5kZWxldGUoc291cmNlLmludGVybmFsUGF0aCk7XG4gICAgcGFyc2VyLnNlZW5sb2cuZGVsZXRlKHNvdXJjZS5pbnRlcm5hbFBhdGgpO1xuICAgIC8vIFJlbW92ZSBmcm9tIHByb2dyYW1zIHNvdXJjZXNcbiAgICBwYXJzZXIucHJvZ3JhbS5zb3VyY2VzID0gcGFyc2VyLnByb2dyYW0uc291cmNlcy5maWx0ZXIoXG4gICAgICAoX3NvdXJjZTogU291cmNlKSA9PiBfc291cmNlICE9PSBzb3VyY2VcbiAgICApO1xuICAgIC8vIEJ1aWxkIG5ldyBTb3VyY2VcbiAgICBsZXQgc291cmNlVGV4dCA9IE5FQVJCaW5kaW5nc0J1aWxkZXIuYnVpbGQocGFyc2VyLCBzb3VyY2UpO1xuICAgIGlmICh3cml0ZU91dCkge1xuICAgICB3cml0ZUZpbGUoXCJvdXQvXCIgKyBzb3VyY2Uubm9ybWFsaXplZFBhdGgsIHNvdXJjZVRleHQsIGJhc2VEaXIpO1xuICAgIH1cbiAgICAvLyBQYXJzZXMgZmlsZSBhbmQgYW55IG5ldyBpbXBvcnRzIGFkZGVkIHRvIHRoZSBzb3VyY2VcbiAgICBwYXJzZXIucGFyc2VGaWxlKFxuICAgICAgc291cmNlVGV4dCxcbiAgICAgIChpc0VudHJ5KHNvdXJjZSkgPyBcIlwiIDogXCIuL1wiKSArIHNvdXJjZS5ub3JtYWxpemVkUGF0aCxcbiAgICAgIGlzRW50cnkoc291cmNlKVxuICAgICk7XG4gIH0pO1xuXG59XG4iXX0= - -/***/ }), - -/***/ "./src/preamble.ts": -/*!*************************!*\ - !*** ./src/preamble.ts ***! - \*************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -exports.preamble = "import { base64 } from \"near-runtime-ts\";\nimport { JSONEncoder } from \"assemblyscript-json\";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\n"; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYW1ibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJlYW1ibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDYSxRQUFBLFFBQVEsR0FBRyw4TEFHdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNvbnN0IHByZWFtYmxlID0gYGltcG9ydCB7IGJhc2U2NCB9IGZyb20gXCJuZWFyLXJ1bnRpbWUtdHNcIjtcbmltcG9ydCB7IEpTT05FbmNvZGVyIH0gZnJvbSBcImFzc2VtYmx5c2NyaXB0LWpzb25cIjtcbmltcG9ydCB7IEpTT05EZWNvZGVyLCBUaHJvd2luZ0pTT05IYW5kbGVyLCBEZWNvZGVyU3RhdGUgfSBmcm9tIFwiYXNzZW1ibHlzY3JpcHQtanNvblwiO1xuYDtcbiJdfQ== - -/***/ }), - -/***/ "./src/sourceBuilder.ts": -/*!******************************!*\ - !*** ./src/sourceBuilder.ts ***! - \******************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var ast_1 = __webpack_require__(/*! ../../src/ast */ "../src/ast.ts"); -__webpack_require__(/*! ../../std/portable/index */ "../std/portable/index.js"); -__webpack_require__(/*! ../../src/glue/js/float */ "../src/glue/js/float.js"); -__webpack_require__(/*! ../../src/glue/js/i64 */ "../src/glue/js/i64.js"); -var common_1 = __webpack_require__(/*! ../../src/common */ "../src/common.ts"); -var util_1 = __webpack_require__(/*! ../../src/util */ "../src/util/index.ts"); -var tokenizer_1 = __webpack_require__(/*! ../../src/tokenizer */ "../src/tokenizer.ts"); -/** An AST builder. */ -var ASTBuilder = /** @class */ (function () { - function ASTBuilder() { - this.sb = []; - this.indentLevel = 0; - } - /** Rebuilds the textual source from the specified AST, as far as possible. */ - ASTBuilder.build = function (node) { - var builder = new ASTBuilder(); - builder.visitNode(node); - return builder.finish(); - }; - ASTBuilder.prototype.visitNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.SOURCE: { - this.visitSource(node); - break; - } - // types - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - case ast_1.NodeKind.TYPEPARAMETER: { - this.visitTypeParameter(node); - break; - } - // expressions - case ast_1.NodeKind.FALSE: - case ast_1.NodeKind.NULL: - case ast_1.NodeKind.SUPER: - case ast_1.NodeKind.THIS: - case ast_1.NodeKind.TRUE: - case ast_1.NodeKind.CONSTRUCTOR: - case ast_1.NodeKind.IDENTIFIER: { - this.visitIdentifierExpression(node); - break; - } - case ast_1.NodeKind.ASSERTION: { - this.visitAssertionExpression(node); - break; - } - case ast_1.NodeKind.BINARY: { - this.visitBinaryExpression(node); - break; - } - case ast_1.NodeKind.CALL: { - this.visitCallExpression(node); - break; - } - case ast_1.NodeKind.CLASS: { - this.visitClassExpression(node); - break; - } - case ast_1.NodeKind.COMMA: { - this.visitCommaExpression(node); - break; - } - case ast_1.NodeKind.ELEMENTACCESS: { - this.visitElementAccessExpression(node); - break; - } - case ast_1.NodeKind.FUNCTION: { - this.visitFunctionExpression(node); - break; - } - case ast_1.NodeKind.INSTANCEOF: { - this.visitInstanceOfExpression(node); - break; - } - case ast_1.NodeKind.LITERAL: { - this.visitLiteralExpression(node); - break; - } - case ast_1.NodeKind.NEW: { - this.visitNewExpression(node); - break; - } - case ast_1.NodeKind.PARENTHESIZED: { - this.visitParenthesizedExpression(node); - break; - } - case ast_1.NodeKind.PROPERTYACCESS: { - this.visitPropertyAccessExpression(node); - break; - } - case ast_1.NodeKind.TERNARY: { - this.visitTernaryExpression(node); - break; - } - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - // statements - case ast_1.NodeKind.BLOCK: { - this.visitBlockStatement(node); - break; - } - case ast_1.NodeKind.BREAK: { - this.visitBreakStatement(node); - break; - } - case ast_1.NodeKind.CONTINUE: { - this.visitContinueStatement(node); - break; - } - case ast_1.NodeKind.DO: { - this.visitDoStatement(node); - break; - } - case ast_1.NodeKind.EMPTY: { - this.visitEmptyStatement(node); - break; - } - case ast_1.NodeKind.EXPORT: { - this.visitExportStatement(node); - break; - } - case ast_1.NodeKind.EXPORTDEFAULT: { - this.visitExportDefaultStatement(node); - break; - } - case ast_1.NodeKind.EXPORTIMPORT: { - this.visitExportImportStatement(node); - break; - } - case ast_1.NodeKind.EXPRESSION: { - this.visitExpressionStatement(node); - break; - } - case ast_1.NodeKind.FOR: { - this.visitForStatement(node); - break; - } - case ast_1.NodeKind.IF: { - this.visitIfStatement(node); - break; - } - case ast_1.NodeKind.IMPORT: { - this.visitImportStatement(node); - break; - } - case ast_1.NodeKind.RETURN: { - this.visitReturnStatement(node); - break; - } - case ast_1.NodeKind.SWITCH: { - this.visitSwitchStatement(node); - break; - } - case ast_1.NodeKind.THROW: { - this.visitThrowStatement(node); - break; - } - case ast_1.NodeKind.TRY: { - this.visitTryStatement(node); - break; - } - case ast_1.NodeKind.VARIABLE: { - this.visitVariableStatement(node); - break; - } - case ast_1.NodeKind.WHILE: { - this.visitWhileStatement(node); - break; - } - // declaration statements - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(node); - break; - } - case ast_1.NodeKind.ENUMVALUEDECLARATION: { - this.visitEnumValueDeclaration(node); - break; - } - case ast_1.NodeKind.FIELDDECLARATION: { - this.visitFieldDeclaration(node); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(node); - break; - } - case ast_1.NodeKind.IMPORTDECLARATION: { - this.visitImportDeclaration(node); - break; - } - case ast_1.NodeKind.INDEXSIGNATUREDECLARATION: { - this.visitIndexSignatureDeclaration(node); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(node); - break; - } - case ast_1.NodeKind.METHODDECLARATION: { - this.visitMethodDeclaration(node); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(node); - break; - } - case ast_1.NodeKind.TYPEDECLARATION: { - this.visitTypeDeclaration(node); - break; - } - case ast_1.NodeKind.VARIABLEDECLARATION: { - this.visitVariableDeclaration(node); - break; - } - // other - case ast_1.NodeKind.DECORATOR: { - this.serializeDecorator(node); - break; - } - case ast_1.NodeKind.EXPORTMEMBER: { - this.visitExportMember(node); - break; - } - case ast_1.NodeKind.PARAMETER: { - this.serializeParameter(node); - break; - } - case ast_1.NodeKind.SWITCHCASE: { - this.visitSwitchCase(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitSource = function (source) { - var statements = source.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - this.visitNodeAndTerminate(statements[i]); - } - }; - // types - ASTBuilder.prototype.visitTypeNode = function (node) { - switch (node.kind) { - case ast_1.NodeKind.NAMEDTYPE: { - this.visitNamedTypeNode(node); - break; - } - case ast_1.NodeKind.FUNCTIONTYPE: { - this.visitFunctionTypeNode(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitTypeName = function (node) { - this.visitIdentifierExpression(node.identifier); - var sb = this.sb; - var current = node.next; - while (current) { - sb.push("."); - this.visitIdentifierExpression(current.identifier); - current = current.next; - } - }; - ASTBuilder.prototype.visitNamedTypeNode = function (node) { - this.visitTypeName(node.name); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - var sb = this.sb; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">"); - } - if (node.isNullable) - sb.push(" | null"); - } - }; - ASTBuilder.prototype.visitFunctionTypeNode = function (node) { - var isNullable = node.isNullable; - var sb = this.sb; - sb.push(isNullable ? "((" : "("); - var explicitThisType = node.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - var parameters = node.parameters; - var numParameters = parameters.length; - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - var returnType = node.returnType; - if (returnType) { - sb.push(") => "); - this.visitTypeNode(returnType); - } - else { - sb.push(") => void"); - } - if (isNullable) - sb.push(") | null"); - }; - ASTBuilder.prototype.visitTypeParameter = function (node) { - this.visitIdentifierExpression(node.name); - var extendsType = node.extendsType; - if (extendsType) { - this.sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var defaultType = node.defaultType; - if (defaultType) { - this.sb.push("="); - this.visitTypeNode(defaultType); - } - }; - // expressions - ASTBuilder.prototype.visitIdentifierExpression = function (node) { - if (node.isQuoted) - this.visitStringLiteral(node.text); - else - this.sb.push(node.text); - }; - ASTBuilder.prototype.visitArrayLiteralExpression = function (node) { - var sb = this.sb; - sb.push("["); - var elements = node.elementExpressions; - var numElements = elements.length; - if (numElements) { - if (elements[0]) - this.visitNode(elements[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(", "); - if (elements[i]) - this.visitNode(elements[i]); - } - } - sb.push("]"); - }; - ASTBuilder.prototype.visitObjectLiteralExpression = function (node) { - var sb = this.sb; - var names = node.names; - var values = node.values; - var numElements = names.length; - assert(numElements == values.length); - if (numElements) { - sb.push("{\n"); - util_1.indent(sb, ++this.indentLevel); - this.visitNode(names[0]); - sb.push(": "); - this.visitNode(values[0]); - for (var i = 1; i < numElements; ++i) { - sb.push(",\n"); - util_1.indent(sb, this.indentLevel); - var name = names[i]; - var value = values[i]; - if (name === value) { - this.visitNode(name); - } - else { - this.visitNode(name); - sb.push(": "); - this.visitNode(value); - } - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitAssertionExpression = function (node) { - var sb = this.sb; - switch (node.assertionKind) { - case ast_1.AssertionKind.PREFIX: { - sb.push("<"); - this.visitTypeNode(assert(node.toType)); - sb.push(">"); - this.visitNode(node.expression); - break; - } - case ast_1.AssertionKind.AS: { - this.visitNode(node.expression); - sb.push(" as "); - this.visitTypeNode(assert(node.toType)); - break; - } - case ast_1.AssertionKind.NONNULL: { - this.visitNode(node.expression); - sb.push("!"); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitBinaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.left); - sb.push(" "); - sb.push(tokenizer_1.operatorTokenToString(node.operator)); - sb.push(" "); - this.visitNode(node.right); - }; - ASTBuilder.prototype.visitCallExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - var typeArguments = node.typeArguments; - if (typeArguments) { - var numTypeArguments = typeArguments.length; - if (numTypeArguments) { - sb.push("<"); - this.visitTypeNode(typeArguments[0]); - for (var i = 1; i < numTypeArguments; ++i) { - sb.push(", "); - this.visitTypeNode(typeArguments[i]); - } - sb.push(">("); - } - } - else { - sb.push("("); - } - var args = node.arguments; - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")"); - }; - ASTBuilder.prototype.visitClassExpression = function (node) { - var declaration = node.declaration; - this.visitClassDeclaration(declaration); - }; - ASTBuilder.prototype.visitCommaExpression = function (node) { - var expressions = node.expressions; - var numExpressions = assert(expressions.length); - this.visitNode(expressions[0]); - var sb = this.sb; - for (var i = 1; i < numExpressions; ++i) { - sb.push(","); - this.visitNode(expressions[i]); - } - }; - ASTBuilder.prototype.visitElementAccessExpression = function (node) { - var sb = this.sb; - this.visitNode(node.expression); - sb.push("["); - this.visitNode(node.elementExpression); - sb.push("]"); - }; - ASTBuilder.prototype.visitFunctionExpression = function (node) { - var declaration = node.declaration; - if (!declaration.arrowKind) { - if (declaration.name.text.length) { - this.sb.push("function "); - } - else { - this.sb.push("function"); - } - } - else { - assert(declaration.name.text.length == 0); - } - this.visitFunctionCommon(declaration); - }; - ASTBuilder.prototype.visitLiteralExpression = function (node) { - switch (node.literalKind) { - case ast_1.LiteralKind.FLOAT: { - this.visitFloatLiteralExpression(node); - break; - } - case ast_1.LiteralKind.INTEGER: { - this.visitIntegerLiteralExpression(node); - break; - } - case ast_1.LiteralKind.STRING: { - this.visitStringLiteralExpression(node); - break; - } - case ast_1.LiteralKind.REGEXP: { - this.visitRegexpLiteralExpression(node); - break; - } - case ast_1.LiteralKind.ARRAY: { - this.visitArrayLiteralExpression(node); - break; - } - case ast_1.LiteralKind.OBJECT: { - this.visitObjectLiteralExpression(node); - break; - } - default: { - assert(false); - break; - } - } - }; - ASTBuilder.prototype.visitFloatLiteralExpression = function (node) { - this.sb.push(node.value.toString(10)); - }; - ASTBuilder.prototype.visitInstanceOfExpression = function (node) { - this.visitNode(node.expression); - this.sb.push(" instanceof "); - this.visitTypeNode(node.isType); - }; - ASTBuilder.prototype.visitIntegerLiteralExpression = function (node) { - this.sb.push(i64_to_string(node.value)); - }; - ASTBuilder.prototype.visitStringLiteral = function (str, singleQuoted) { - if (singleQuoted === void 0) { singleQuoted = false; } - var sb = this.sb; - var off = 0; - var quote = singleQuoted ? "'" : "\""; - sb.push(quote); - var i = 0; - for (var k = str.length; i < k;) { - switch (str.charCodeAt(i)) { - case 0 /* NULL */: { - if (i > off) - sb.push(str.substring(off, off = i + 1)); - sb.push("\\0"); - off = ++i; - break; - } - case 8 /* BACKSPACE */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\b"); - break; - } - case 9 /* TAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\t"); - break; - } - case 10 /* LINEFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\n"); - break; - } - case 11 /* VERTICALTAB */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\v"); - break; - } - case 12 /* FORMFEED */: { - if (i > off) - sb.push(str.substring(off, i)); - off = ++i; - sb.push("\\f"); - break; - } - case 13 /* CARRIAGERETURN */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\r"); - off = ++i; - break; - } - case 34 /* DOUBLEQUOTE */: { - if (!singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\""); - off = ++i; - } - else { - ++i; - } - break; - } - case 39 /* SINGLEQUOTE */: { - if (singleQuoted) { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\'"); - off = ++i; - } - else { - ++i; - } - break; - } - case 92 /* BACKSLASH */: { - if (i > off) - sb.push(str.substring(off, i)); - sb.push("\\\\"); - off = ++i; - break; - } - default: { - ++i; - break; - } - } - } - if (i > off) - sb.push(str.substring(off, i)); - sb.push(quote); - }; - ASTBuilder.prototype.visitStringLiteralExpression = function (node) { - this.visitStringLiteral(node.value); - }; - ASTBuilder.prototype.visitRegexpLiteralExpression = function (node) { - var sb = this.sb; - sb.push("/"); - sb.push(node.pattern); - sb.push("/"); - sb.push(node.patternFlags); - }; - ASTBuilder.prototype.visitNewExpression = function (node) { - this.sb.push("new "); - this.visitCallExpression(node); - }; - ASTBuilder.prototype.visitParenthesizedExpression = function (node) { - var sb = this.sb; - sb.push("("); - this.visitNode(node.expression); - sb.push(")"); - }; - ASTBuilder.prototype.visitPropertyAccessExpression = function (node) { - this.visitNode(node.expression); - this.sb.push("."); - this.visitIdentifierExpression(node.property); - }; - ASTBuilder.prototype.visitTernaryExpression = function (node) { - var sb = this.sb; - this.visitNode(node.condition); - sb.push(" ? "); - this.visitNode(node.ifThen); - sb.push(" : "); - this.visitNode(node.ifElse); - }; - ASTBuilder.prototype.visitUnaryExpression = function (node) { - switch (node.kind) { - case ast_1.NodeKind.UNARYPOSTFIX: { - this.visitUnaryPostfixExpression(node); - break; - } - case ast_1.NodeKind.UNARYPREFIX: { - this.visitUnaryPrefixExpression(node); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitUnaryPostfixExpression = function (node) { - this.visitNode(node.operand); - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - }; - ASTBuilder.prototype.visitUnaryPrefixExpression = function (node) { - this.sb.push(tokenizer_1.operatorTokenToString(node.operator)); - this.visitNode(node.operand); - }; - // statements - ASTBuilder.prototype.visitNodeAndTerminate = function (statement) { - this.visitNode(statement); - var sb = this.sb; - if (!sb.length || // leading EmptyStatement - statement.kind == ast_1.NodeKind.VARIABLE || // potentially assigns a FunctionExpression - statement.kind == ast_1.NodeKind.EXPRESSION // potentially assigns a FunctionExpression - ) { - sb.push(";\n"); - } - else { - var last = sb[sb.length - 1]; - var lastCharPos = last.length - 1; - if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 /* CLOSEBRACE */ || - last.charCodeAt(lastCharPos) == 59 /* SEMICOLON */)) { - sb.push("\n"); - } - else { - sb.push(";\n"); - } - } - }; - ASTBuilder.prototype.visitBlockStatement = function (node) { - var sb = this.sb; - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push("{}"); - } - }; - ASTBuilder.prototype.visitBreakStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("break "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("break"); - } - }; - ASTBuilder.prototype.visitContinueStatement = function (node) { - var label = node.label; - if (label) { - this.sb.push("continue "); - this.visitIdentifierExpression(label); - } - else { - this.sb.push("continue"); - } - }; - ASTBuilder.prototype.visitClassDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.ABSTRACT)) - sb.push("abstract "); - if (node.name.text.length) { - sb.push("class "); - this.visitIdentifierExpression(node.name); - } - else { - sb.push("class"); - } - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - var implementsTypes = node.implementsTypes; - if (implementsTypes) { - var numImplementsTypes = implementsTypes.length; - if (numImplementsTypes) { - sb.push(" implements "); - this.visitTypeNode(implementsTypes[0]); - for (var i = 1; i < numImplementsTypes; ++i) { - sb.push(", "); - this.visitTypeNode(implementsTypes[i]); - } - } - } - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - var member = members[i]; - if (member.kind != ast_1.NodeKind.FIELDDECLARATION || member.parameterIndex < 0) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(member); - } - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitDoStatement = function (node) { - var sb = this.sb; - sb.push("do "); - this.visitNode(node.statement); - if (node.statement.kind == ast_1.NodeKind.BLOCK) { - sb.push(" while ("); - } - else { - sb.push(";\n"); - util_1.indent(sb, this.indentLevel); - sb.push("while ("); - } - this.visitNode(node.condition); - sb.push(")"); - }; - ASTBuilder.prototype.visitEmptyStatement = function (node) { - }; - ASTBuilder.prototype.visitEnumDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - if (node.is(common_1.CommonFlags.CONST)) - sb.push("const "); - sb.push("enum "); - this.visitIdentifierExpression(node.name); - var values = node.values; - var numValues = values.length; - if (numValues) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[0]); - for (var i = 1; i < numValues; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitEnumValueDeclaration(node.values[i]); - } - sb.push("\n"); - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitEnumValueDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - if (node.value) { - this.sb.push(" = "); - this.visitNode(node.value); - } - }; - ASTBuilder.prototype.visitExportImportStatement = function (node) { - var sb = this.sb; - sb.push("export import "); - this.visitIdentifierExpression(node.externalName); - sb.push(" = "); - this.visitIdentifierExpression(node.name); - }; - ASTBuilder.prototype.visitExportMember = function (node) { - this.visitIdentifierExpression(node.localName); - if (node.exportedName.text != node.localName.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(node.exportedName); - } - }; - ASTBuilder.prototype.visitExportStatement = function (node) { - var sb = this.sb; - if (node.isDeclare) { - sb.push("declare "); - } - var members = node.members; - if (members && members.length) { - var numMembers = members.length; - sb.push("export {\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitExportMember(members[0]); - for (var i = 1; i < numMembers; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitExportMember(members[i]); - } - --this.indentLevel; - sb.push("\n}"); - } - else { - sb.push("export {}"); - } - var path = node.path; - if (path) { - sb.push(" from "); - this.visitStringLiteralExpression(path); - } - sb.push(";"); - }; - ASTBuilder.prototype.visitExportDefaultStatement = function (node) { - var declaration = node.declaration; - switch (declaration.kind) { - case ast_1.NodeKind.ENUMDECLARATION: { - this.visitEnumDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.FUNCTIONDECLARATION: { - this.visitFunctionDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.CLASSDECLARATION: { - this.visitClassDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.INTERFACEDECLARATION: { - this.visitInterfaceDeclaration(declaration, true); - break; - } - case ast_1.NodeKind.NAMESPACEDECLARATION: { - this.visitNamespaceDeclaration(declaration, true); - break; - } - default: assert(false); - } - }; - ASTBuilder.prototype.visitExpressionStatement = function (node) { - this.visitNode(node.expression); - }; - ASTBuilder.prototype.visitFieldDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - this.visitIdentifierExpression(node.name); - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - var type = node.type; - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitForStatement = function (node) { - var sb = this.sb; - sb.push("for ("); - var initializer = node.initializer; - if (initializer) { - this.visitNode(initializer); - } - var condition = node.condition; - if (condition) { - sb.push("; "); - this.visitNode(condition); - } - else { - sb.push(";"); - } - var incrementor = node.incrementor; - if (incrementor) { - sb.push("; "); - this.visitNode(incrementor); - } - else { - sb.push(";"); - } - sb.push(") "); - this.visitNode(node.statement); - }; - ASTBuilder.prototype.visitFunctionDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var sb = this.sb; - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - this.serializeAccessModifiers(node); - } - if (node.name.text.length) { - sb.push("function "); - } - else { - sb.push("function"); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitFunctionCommon = function (node) { - var sb = this.sb; - this.visitIdentifierExpression(node.name); - var signature = node.signature; - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1; i < numTypeParameters; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - var parameters = signature.parameters; - assert(parameters.length == 1); - assert(!signature.explicitThisType); - this.serializeParameter(parameters[0]); - } - else { - sb.push("("); - var parameters = signature.parameters; - var numParameters = parameters.length; - var explicitThisType = signature.explicitThisType; - if (explicitThisType) { - sb.push("this: "); - this.visitTypeNode(explicitThisType); - } - if (numParameters) { - if (explicitThisType) - sb.push(", "); - this.serializeParameter(parameters[0]); - for (var i = 1; i < numParameters; ++i) { - sb.push(", "); - this.serializeParameter(parameters[i]); - } - } - } - var body = node.body; - var returnType = signature.returnType; - if (node.arrowKind) { - if (body) { - if (node.arrowKind == 2 /* ARROW_SINGLE */) { - assert(ast_1.isTypeOmitted(returnType)); - } - else { - if (ast_1.isTypeOmitted(returnType)) { - sb.push(")"); - } - else { - sb.push("): "); - this.visitTypeNode(returnType); - } - } - sb.push(" => "); - this.visitNode(body); - } - else { - assert(!ast_1.isTypeOmitted(returnType)); - sb.push(" => "); - this.visitTypeNode(returnType); - } - } - else { - if (!ast_1.isTypeOmitted(returnType) && - !node.isAny(common_1.CommonFlags.CONSTRUCTOR | common_1.CommonFlags.SET)) { - sb.push("): "); - this.visitTypeNode(returnType); - } - else { - sb.push(")"); - } - if (body) { - sb.push(" "); - this.visitNode(body); - } - } - }; - ASTBuilder.prototype.visitIfStatement = function (node) { - var sb = this.sb; - sb.push("if ("); - this.visitNode(node.condition); - sb.push(") "); - var ifTrue = node.ifTrue; - this.visitNode(ifTrue); - if (ifTrue.kind != ast_1.NodeKind.BLOCK) { - sb.push(";\n"); - } - var ifFalse = node.ifFalse; - if (ifFalse) { - if (ifTrue.kind == ast_1.NodeKind.BLOCK) { - sb.push(" else "); - } - else { - sb.push("else "); - } - this.visitNode(ifFalse); - } - }; - ASTBuilder.prototype.visitImportDeclaration = function (node) { - var externalName = node.foreignName; - var name = node.name; - this.visitIdentifierExpression(externalName); - if (externalName.text != name.text) { - this.sb.push(" as "); - this.visitIdentifierExpression(name); - } - }; - ASTBuilder.prototype.visitImportStatement = function (node) { - var sb = this.sb; - sb.push("import "); - var declarations = node.declarations; - var namespaceName = node.namespaceName; - if (declarations) { - var numDeclarations = declarations.length; - if (numDeclarations) { - sb.push("{\n"); - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(",\n"); - util_1.indent(sb, indentLevel); - this.visitImportDeclaration(declarations[i]); - } - --this.indentLevel; - sb.push("\n} from "); - } - else { - sb.push("{} from "); - } - } - else if (namespaceName) { - sb.push("* as "); - this.visitIdentifierExpression(namespaceName); - sb.push(" from "); - } - this.visitStringLiteralExpression(node.path); - }; - ASTBuilder.prototype.visitIndexSignatureDeclaration = function (node) { - var sb = this.sb; - sb.push("[key: "); - this.visitTypeNode(node.keyType); - sb.push("]: "); - this.visitTypeNode(node.valueType); - }; - ASTBuilder.prototype.visitInterfaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("interface "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters && typeParameters.length) { - sb.push("<"); - this.visitTypeParameter(typeParameters[0]); - for (var i = 1, k = typeParameters.length; i < k; ++i) { - sb.push(", "); - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - var extendsType = node.extendsType; - if (extendsType) { - sb.push(" extends "); - this.visitTypeNode(extendsType); - } - // must not have implementsTypes - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - var members = node.members; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitMethodDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - this.serializeAccessModifiers(node); - if (node.is(common_1.CommonFlags.GET)) { - this.sb.push("get "); - } - else if (node.is(common_1.CommonFlags.SET)) { - this.sb.push("set "); - } - this.visitFunctionCommon(node); - }; - ASTBuilder.prototype.visitNamespaceDeclaration = function (node, isDefault) { - if (isDefault === void 0) { isDefault = false; } - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - if (isDefault) { - sb.push("export default "); - } - else { - this.serializeExternalModifiers(node); - } - sb.push("namespace "); - this.visitIdentifierExpression(node.name); - var members = node.members; - var numMembers = members.length; - if (numMembers) { - sb.push(" {\n"); - var indentLevel = ++this.indentLevel; - for (var i = 0, k = members.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(members[i]); - } - util_1.indent(sb, --this.indentLevel); - sb.push("}"); - } - else { - sb.push(" {}"); - } - }; - ASTBuilder.prototype.visitReturnStatement = function (node) { - var value = node.value; - if (value) { - this.sb.push("return "); - this.visitNode(value); - } - else { - this.sb.push("return"); - } - }; - ASTBuilder.prototype.visitSwitchCase = function (node) { - var sb = this.sb; - var label = node.label; - if (label) { - sb.push("case "); - this.visitNode(label); - sb.push(":\n"); - } - else { - sb.push("default:\n"); - } - var statements = node.statements; - var numStatements = statements.length; - if (numStatements) { - var indentLevel = ++this.indentLevel; - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[0]); - for (var i = 1; i < numStatements; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - --this.indentLevel; - } - }; - ASTBuilder.prototype.visitSwitchStatement = function (node) { - var sb = this.sb; - sb.push("switch ("); - this.visitNode(node.condition); - sb.push(") {\n"); - var indentLevel = ++this.indentLevel; - var cases = node.cases; - for (var i = 0, k = cases.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitSwitchCase(cases[i]); - sb.push("\n"); - } - --this.indentLevel; - sb.push("}"); - }; - ASTBuilder.prototype.visitThrowStatement = function (node) { - this.sb.push("throw "); - this.visitNode(node.value); - }; - ASTBuilder.prototype.visitTryStatement = function (node) { - var sb = this.sb; - sb.push("try {\n"); - var indentLevel = ++this.indentLevel; - var statements = node.statements; - for (var i = 0, k = statements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(statements[i]); - } - var catchVariable = node.catchVariable; - if (catchVariable) { - util_1.indent(sb, indentLevel - 1); - sb.push("} catch ("); - this.visitIdentifierExpression(catchVariable); - sb.push(") {\n"); - var catchStatements = node.catchStatements; - if (catchStatements) { - for (var i = 0, k = catchStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(catchStatements[i]); - } - } - } - var finallyStatements = node.finallyStatements; - if (finallyStatements) { - util_1.indent(sb, indentLevel - 1); - sb.push("} finally {\n"); - for (var i = 0, k = finallyStatements.length; i < k; ++i) { - util_1.indent(sb, indentLevel); - this.visitNodeAndTerminate(finallyStatements[i]); - } - } - util_1.indent(sb, indentLevel - 1); - sb.push("}"); - }; - ASTBuilder.prototype.visitTypeDeclaration = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - this.serializeExternalModifiers(node); - sb.push("type "); - this.visitIdentifierExpression(node.name); - var typeParameters = node.typeParameters; - if (typeParameters) { - var numTypeParameters = typeParameters.length; - if (numTypeParameters) { - sb.push("<"); - for (var i = 0; i < numTypeParameters; ++i) { - this.visitTypeParameter(typeParameters[i]); - } - sb.push(">"); - } - } - sb.push(" = "); - this.visitTypeNode(node.type); - }; - ASTBuilder.prototype.visitVariableDeclaration = function (node) { - this.visitIdentifierExpression(node.name); - var type = node.type; - var sb = this.sb; - if (node.flags & common_1.CommonFlags.DEFINITE_ASSIGNMENT) { - sb.push("!"); - } - if (type) { - sb.push(": "); - this.visitTypeNode(type); - } - var initializer = node.initializer; - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.visitVariableStatement = function (node) { - var decorators = node.decorators; - if (decorators) { - for (var i = 0, k = decorators.length; i < k; ++i) { - this.serializeDecorator(decorators[i]); - } - } - var sb = this.sb; - var declarations = node.declarations; - var numDeclarations = assert(declarations.length); - var firstDeclaration = declarations[0]; - this.serializeExternalModifiers(firstDeclaration); - sb.push(firstDeclaration.is(common_1.CommonFlags.CONST) ? "const " : firstDeclaration.is(common_1.CommonFlags.LET) ? "let " : "var "); - this.visitVariableDeclaration(node.declarations[0]); - for (var i = 1; i < numDeclarations; ++i) { - sb.push(", "); - this.visitVariableDeclaration(node.declarations[i]); - } - }; - ASTBuilder.prototype.visitWhileStatement = function (node) { - var sb = this.sb; - sb.push("while ("); - this.visitNode(node.condition); - var statement = node.statement; - if (statement.kind == ast_1.NodeKind.EMPTY) { - sb.push(")"); - } - else { - sb.push(") "); - this.visitNode(node.statement); - } - }; - // other - ASTBuilder.prototype.serializeDecorator = function (node) { - var sb = this.sb; - sb.push("@"); - this.visitNode(node.name); - var args = node.arguments; - if (args) { - sb.push("("); - var numArgs = args.length; - if (numArgs) { - this.visitNode(args[0]); - for (var i = 1; i < numArgs; ++i) { - sb.push(", "); - this.visitNode(args[i]); - } - } - sb.push(")\n"); - } - else { - sb.push("\n"); - } - util_1.indent(sb, this.indentLevel); - }; - ASTBuilder.prototype.serializeParameter = function (node) { - var sb = this.sb; - var kind = node.parameterKind; - var implicitFieldDeclaration = node.implicitFieldDeclaration; - if (implicitFieldDeclaration) { - this.serializeAccessModifiers(implicitFieldDeclaration); - } - if (kind == ast_1.ParameterKind.REST) { - sb.push("..."); - } - this.visitIdentifierExpression(node.name); - var type = node.type; - var initializer = node.initializer; - if (type) { - if (kind == ast_1.ParameterKind.OPTIONAL && !initializer) - sb.push("?"); - if (!ast_1.isTypeOmitted(type)) { - sb.push(": "); - this.visitTypeNode(type); - } - } - if (initializer) { - sb.push(" = "); - this.visitNode(initializer); - } - }; - ASTBuilder.prototype.serializeExternalModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.EXPORT)) { - sb.push("export "); - } - else if (node.is(common_1.CommonFlags.IMPORT)) { - sb.push("import "); - } - else if (node.is(common_1.CommonFlags.DECLARE)) { - sb.push("declare "); - } - }; - ASTBuilder.prototype.serializeAccessModifiers = function (node) { - var sb = this.sb; - if (node.is(common_1.CommonFlags.PUBLIC)) { - sb.push("public "); - } - else if (node.is(common_1.CommonFlags.PRIVATE)) { - sb.push("private "); - } - else if (node.is(common_1.CommonFlags.PROTECTED)) { - sb.push("protected "); - } - if (node.is(common_1.CommonFlags.STATIC)) { - sb.push("static "); - } - else if (node.is(common_1.CommonFlags.ABSTRACT)) { - sb.push("abstract "); - } - if (node.is(common_1.CommonFlags.READONLY)) { - sb.push("readonly "); - } - }; - ASTBuilder.prototype.finish = function () { - var ret = this.sb.join(""); - this.sb = []; - return ret; - }; - return ASTBuilder; -}()); -exports.ASTBuilder = ASTBuilder; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb3VyY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBMEV1QjtBQUV2QixvQ0FBa0M7QUFDbEMsbUNBQWlDO0FBQ2pDLGlDQUErQjtBQUUvQiwyQ0FBK0M7QUFFL0MsdUNBQWtEO0FBRWxELGlEQUE4RDtBQUM5RCxzQkFBc0I7QUFDdEI7SUFBQTtRQVNVLE9BQUUsR0FBYSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBUSxDQUFDLENBQUM7SUE2K0MvQixDQUFDO0lBci9DQyw4RUFBOEU7SUFDdkUsZ0JBQUssR0FBWixVQUFhLElBQVU7UUFDckIsSUFBSSxPQUFPLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFLRCw4QkFBUyxHQUFULFVBQVUsSUFBVTtRQUNsQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsS0FBSyxjQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07YUFDUDtZQUVELFFBQVE7WUFFUixLQUFLLGNBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFnQixJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTthQUNQO1lBQ0QsS0FBSyxjQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBbUIsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELE1BQU07YUFDUDtZQUNELEtBQUssY0FBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQW9CLElBQUks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QztTQUN0QjtJQUNILENBQUM7SUFFRCwyQkFBTSxHQUFOO1FBQ0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFDSCxpQkFBQztBQUFELENBQUMsQUF2L0NELElBdS9DQztBQXYvQ1ksZ0NBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWNsYXJhdGlvblN0YXRlbWVudCxcbiAgTm9kZSxcbiAgTm9kZUtpbmQsXG4gIFNvdXJjZSxcbiAgTmFtZWRUeXBlTm9kZSxcbiAgRnVuY3Rpb25UeXBlTm9kZSxcbiAgVHlwZVBhcmFtZXRlck5vZGUsXG4gIElkZW50aWZpZXJFeHByZXNzaW9uLFxuICBBc3NlcnRpb25FeHByZXNzaW9uLFxuICBCaW5hcnlFeHByZXNzaW9uLFxuICBDYWxsRXhwcmVzc2lvbixcbiAgQ2xhc3NFeHByZXNzaW9uLFxuICBDb21tYUV4cHJlc3Npb24sXG4gIEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uLFxuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIEluc3RhbmNlT2ZFeHByZXNzaW9uLFxuICBMaXRlcmFsRXhwcmVzc2lvbixcbiAgTmV3RXhwcmVzc2lvbixcbiAgUGFyZW50aGVzaXplZEV4cHJlc3Npb24sXG4gIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbixcbiAgVGVybmFyeUV4cHJlc3Npb24sXG4gIFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24sXG4gIFVuYXJ5UHJlZml4RXhwcmVzc2lvbixcbiAgQmxvY2tTdGF0ZW1lbnQsXG4gIEJyZWFrU3RhdGVtZW50LFxuICBDb250aW51ZVN0YXRlbWVudCxcbiAgRG9TdGF0ZW1lbnQsXG4gIEVtcHR5U3RhdGVtZW50LFxuICBFeHBvcnRTdGF0ZW1lbnQsXG4gIEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQsXG4gIEV4cG9ydEltcG9ydFN0YXRlbWVudCxcbiAgRXhwcmVzc2lvblN0YXRlbWVudCxcbiAgRm9yU3RhdGVtZW50LFxuICBJZlN0YXRlbWVudCxcbiAgSW1wb3J0U3RhdGVtZW50LFxuICBSZXR1cm5TdGF0ZW1lbnQsXG4gIFN3aXRjaFN0YXRlbWVudCxcbiAgVGhyb3dTdGF0ZW1lbnQsXG4gIFRyeVN0YXRlbWVudCxcbiAgVmFyaWFibGVTdGF0ZW1lbnQsXG4gIFdoaWxlU3RhdGVtZW50LFxuICBDbGFzc0RlY2xhcmF0aW9uLFxuICBFbnVtRGVjbGFyYXRpb24sXG4gIEVudW1WYWx1ZURlY2xhcmF0aW9uLFxuICBGaWVsZERlY2xhcmF0aW9uLFxuICBGdW5jdGlvbkRlY2xhcmF0aW9uLFxuICBJbXBvcnREZWNsYXJhdGlvbixcbiAgSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIE1ldGhvZERlY2xhcmF0aW9uLFxuICBOYW1lc3BhY2VEZWNsYXJhdGlvbixcbiAgVHlwZURlY2xhcmF0aW9uLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uLFxuICBEZWNvcmF0b3JOb2RlLFxuICBFeHBvcnRNZW1iZXIsXG4gIFBhcmFtZXRlck5vZGUsXG4gIFN3aXRjaENhc2UsXG4gIFR5cGVOb2RlLFxuICBUeXBlTmFtZSxcbiAgQXJyYXlMaXRlcmFsRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbixcbiAgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sXG4gIEFzc2VydGlvbktpbmQsXG4gIExpdGVyYWxLaW5kLFxuICBGbG9hdExpdGVyYWxFeHByZXNzaW9uLFxuICBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24sXG4gIFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uLFxuICBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbixcbiAgVW5hcnlFeHByZXNzaW9uLFxuICBTdGF0ZW1lbnQsXG4gIEFycm93S2luZCxcbiAgaXNUeXBlT21pdHRlZCxcbiAgUGFyYW1ldGVyS2luZFxufSBmcm9tIFwiLi4vLi4vc3JjL2FzdFwiO1xuXG5pbXBvcnQgXCIuLi8uLi9zdGQvcG9ydGFibGUvaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uL3NyYy9nbHVlL2pzL2Zsb2F0XCI7XG5pbXBvcnQgXCIuLi8uLi9zcmMvZ2x1ZS9qcy9pNjRcIjtcblxuaW1wb3J0IHsgQ29tbW9uRmxhZ3MgfSBmcm9tIFwiLi4vLi4vc3JjL2NvbW1vblwiO1xuXG5pbXBvcnQgeyBpbmRlbnQsIENoYXJDb2RlIH0gZnJvbSBcIi4uLy4uL3NyYy91dGlsXCI7XG5cbmltcG9ydCB7ICBvcGVyYXRvclRva2VuVG9TdHJpbmcsIH0gZnJvbSBcIi4uLy4uL3NyYy90b2tlbml6ZXJcIjtcbi8qKiBBbiBBU1QgYnVpbGRlci4gKi9cbmV4cG9ydCBjbGFzcyBBU1RCdWlsZGVyIHtcblxuICAvKiogUmVidWlsZHMgdGhlIHRleHR1YWwgc291cmNlIGZyb20gdGhlIHNwZWNpZmllZCBBU1QsIGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cbiAgc3RhdGljIGJ1aWxkKG5vZGU6IE5vZGUpOiBzdHJpbmcge1xuICAgIHZhciBidWlsZGVyID0gbmV3IEFTVEJ1aWxkZXIoKTtcbiAgICBidWlsZGVyLnZpc2l0Tm9kZShub2RlKTtcbiAgICByZXR1cm4gYnVpbGRlci5maW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgc2I6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaW5kZW50TGV2ZWw6IGkzMiA9IDA7XG5cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBOb2RlS2luZC5TT1VSQ0U6IHtcbiAgICAgICAgdGhpcy52aXNpdFNvdXJjZSg8U291cmNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gdHlwZXNcblxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FRFRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVkVHlwZU5vZGUoPE5hbWVkVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GVU5DVElPTlRZUEU6IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uVHlwZU5vZGUoPEZ1bmN0aW9uVHlwZU5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5UWVBFUEFSQU1FVEVSOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKDxUeXBlUGFyYW1ldGVyTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGV4cHJlc3Npb25zXG5cbiAgICAgIGNhc2UgTm9kZUtpbmQuRkFMU0U6XG4gICAgICBjYXNlIE5vZGVLaW5kLk5VTEw6XG4gICAgICBjYXNlIE5vZGVLaW5kLlNVUEVSOlxuICAgICAgY2FzZSBOb2RlS2luZC5USElTOlxuICAgICAgY2FzZSBOb2RlS2luZC5UUlVFOlxuICAgICAgY2FzZSBOb2RlS2luZC5DT05TVFJVQ1RPUjpcbiAgICAgIGNhc2UgTm9kZUtpbmQuSURFTlRJRklFUjoge1xuICAgICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24oPElkZW50aWZpZXJFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQVNTRVJUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRBc3NlcnRpb25FeHByZXNzaW9uKDxBc3NlcnRpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQklOQVJZOiB7XG4gICAgICAgIHRoaXMudmlzaXRCaW5hcnlFeHByZXNzaW9uKDxCaW5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0FMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Q2FsbEV4cHJlc3Npb24oPENhbGxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ0xBU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdENsYXNzRXhwcmVzc2lvbig8Q2xhc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09NTUE6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbW1hRXhwcmVzc2lvbig8Q29tbWFFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRUxFTUVOVEFDQ0VTUzoge1xuICAgICAgICB0aGlzLnZpc2l0RWxlbWVudEFjY2Vzc0V4cHJlc3Npb24oPEVsZW1lbnRBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEZ1bmN0aW9uRXhwcmVzc2lvbig8RnVuY3Rpb25FeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5TVEFOQ0VPRjoge1xuICAgICAgICB0aGlzLnZpc2l0SW5zdGFuY2VPZkV4cHJlc3Npb24oPEluc3RhbmNlT2ZFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTElURVJBTDoge1xuICAgICAgICB0aGlzLnZpc2l0TGl0ZXJhbEV4cHJlc3Npb24oPExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkVXOiB7XG4gICAgICAgIHRoaXMudmlzaXROZXdFeHByZXNzaW9uKDxOZXdFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUEFSRU5USEVTSVpFRDoge1xuICAgICAgICB0aGlzLnZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24oPFBhcmVudGhlc2l6ZWRFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuUFJPUEVSVFlBQ0NFU1M6IHtcbiAgICAgICAgdGhpcy52aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbig8UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEVSTkFSWToge1xuICAgICAgICB0aGlzLnZpc2l0VGVybmFyeUV4cHJlc3Npb24oPFRlcm5hcnlFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RhdGVtZW50c1xuXG4gICAgICBjYXNlIE5vZGVLaW5kLkJMT0NLOiB7XG4gICAgICAgIHRoaXMudmlzaXRCbG9ja1N0YXRlbWVudCg8QmxvY2tTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5CUkVBSzoge1xuICAgICAgICB0aGlzLnZpc2l0QnJlYWtTdGF0ZW1lbnQoPEJyZWFrU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuQ09OVElOVUU6IHtcbiAgICAgICAgdGhpcy52aXNpdENvbnRpbnVlU3RhdGVtZW50KDxDb250aW51ZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkRPOiB7XG4gICAgICAgIHRoaXMudmlzaXREb1N0YXRlbWVudCg8RG9TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FTVBUWToge1xuICAgICAgICB0aGlzLnZpc2l0RW1wdHlTdGF0ZW1lbnQoPEVtcHR5U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRFeHBvcnRTdGF0ZW1lbnQoPEV4cG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVERFRkFVTFQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQoPEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5FWFBPUlRJTVBPUlQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydEltcG9ydFN0YXRlbWVudCg8RXhwb3J0SW1wb3J0U3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRVhQUkVTU0lPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwcmVzc2lvblN0YXRlbWVudCg8RXhwcmVzc2lvblN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZPUjoge1xuICAgICAgICB0aGlzLnZpc2l0Rm9yU3RhdGVtZW50KDxGb3JTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JRjoge1xuICAgICAgICB0aGlzLnZpc2l0SWZTdGF0ZW1lbnQoPElmU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU1QT1JUOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnRTdGF0ZW1lbnQoPEltcG9ydFN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlJFVFVSTjoge1xuICAgICAgICB0aGlzLnZpc2l0UmV0dXJuU3RhdGVtZW50KDxSZXR1cm5TdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0g6IHtcbiAgICAgICAgdGhpcy52aXNpdFN3aXRjaFN0YXRlbWVudCg8U3dpdGNoU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVEhST1c6IHtcbiAgICAgICAgdGhpcy52aXNpdFRocm93U3RhdGVtZW50KDxUaHJvd1N0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlRSWToge1xuICAgICAgICB0aGlzLnZpc2l0VHJ5U3RhdGVtZW50KDxUcnlTdGF0ZW1lbnQ+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5WQVJJQUJMRToge1xuICAgICAgICB0aGlzLnZpc2l0VmFyaWFibGVTdGF0ZW1lbnQoPFZhcmlhYmxlU3RhdGVtZW50Pm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuV0hJTEU6IHtcbiAgICAgICAgdGhpcy52aXNpdFdoaWxlU3RhdGVtZW50KDxXaGlsZVN0YXRlbWVudD5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGRlY2xhcmF0aW9uIHN0YXRlbWVudHNcblxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRU5VTURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtRGVjbGFyYXRpb24oPEVudW1EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1WQUxVRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRFbnVtVmFsdWVEZWNsYXJhdGlvbig8RW51bVZhbHVlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5GSUVMRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRGaWVsZERlY2xhcmF0aW9uKDxGaWVsZERlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklNUE9SVERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbig8SW1wb3J0RGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5JTkRFWFNJR05BVFVSRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKDxJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuSU5URVJGQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdEludGVyZmFjZURlY2xhcmF0aW9uKDxJbnRlcmZhY2VEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLk1FVEhPRERFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRNZXRob2REZWNsYXJhdGlvbig8TWV0aG9kRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5OQU1FU1BBQ0VERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZXNwYWNlRGVjbGFyYXRpb24oPE5hbWVzcGFjZURlY2xhcmF0aW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVFlQRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlRGVjbGFyYXRpb24oPFR5cGVEZWNsYXJhdGlvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLlZBUklBQkxFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdFZhcmlhYmxlRGVjbGFyYXRpb24oPFZhcmlhYmxlRGVjbGFyYXRpb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBvdGhlclxuXG4gICAgICBjYXNlIE5vZGVLaW5kLkRFQ09SQVRPUjoge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcig8RGVjb3JhdG9yTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkVYUE9SVE1FTUJFUjoge1xuICAgICAgICB0aGlzLnZpc2l0RXhwb3J0TWVtYmVyKDxFeHBvcnRNZW1iZXI+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5QQVJBTUVURVI6IHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIoPFBhcmFtZXRlck5vZGU+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5TV0lUQ0hDQVNFOiB7XG4gICAgICAgIHRoaXMudmlzaXRTd2l0Y2hDYXNlKDxTd2l0Y2hDYXNlPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTb3VyY2Uoc291cmNlOiBTb3VyY2UpOiB2b2lkIHtcbiAgICB2YXIgc3RhdGVtZW50cyA9IHNvdXJjZS5zdGF0ZW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBrID0gc3RhdGVtZW50cy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHR5cGVzXG5cbiAgdmlzaXRUeXBlTm9kZShub2RlOiBUeXBlTm9kZSk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLk5BTUVEVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0TmFtZWRUeXBlTm9kZSg8TmFtZWRUeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLkZVTkNUSU9OVFlQRToge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25UeXBlTm9kZSg8RnVuY3Rpb25UeXBlTm9kZT5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VHlwZU5hbWUobm9kZTogVHlwZU5hbWUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5pZGVudGlmaWVyKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBjdXJyZW50ID0gbm9kZS5uZXh0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBzYi5wdXNoKFwiLlwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjdXJyZW50LmlkZW50aWZpZXIpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICB2aXNpdE5hbWVkVHlwZU5vZGUobm9kZTogTmFtZWRUeXBlTm9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlzaXRUeXBlTmFtZShub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlQXJndW1lbnRzID0gbm9kZS50eXBlQXJndW1lbnRzO1xuICAgIGlmICh0eXBlQXJndW1lbnRzKSB7XG4gICAgICBsZXQgbnVtVHlwZUFyZ3VtZW50cyA9IHR5cGVBcmd1bWVudHMubGVuZ3RoO1xuICAgICAgbGV0IHNiID0gdGhpcy5zYjtcbiAgICAgIGlmIChudW1UeXBlQXJndW1lbnRzKSB7XG4gICAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVHlwZUFyZ3VtZW50czsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlQXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLmlzTnVsbGFibGUpIHNiLnB1c2goXCIgfCBudWxsXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25UeXBlTm9kZShub2RlOiBGdW5jdGlvblR5cGVOb2RlKTogdm9pZCB7XG4gICAgdmFyIGlzTnVsbGFibGUgPSBub2RlLmlzTnVsbGFibGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKGlzTnVsbGFibGUgPyBcIigoXCIgOiBcIihcIik7XG4gICAgdmFyIGV4cGxpY2l0VGhpc1R5cGUgPSBub2RlLmV4cGxpY2l0VGhpc1R5cGU7XG4gICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCJ0aGlzOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXhwbGljaXRUaGlzVHlwZSk7XG4gICAgfVxuICAgIHZhciBwYXJhbWV0ZXJzID0gbm9kZS5wYXJhbWV0ZXJzO1xuICAgIHZhciBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgIGlmIChleHBsaWNpdFRoaXNUeXBlKSBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnNlcmlhbGl6ZVBhcmFtZXRlcihwYXJhbWV0ZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXR1cm5UeXBlID0gbm9kZS5yZXR1cm5UeXBlO1xuICAgIGlmIChyZXR1cm5UeXBlKSB7XG4gICAgICBzYi5wdXNoKFwiKSA9PiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIpID0+IHZvaWRcIik7XG4gICAgfVxuICAgIGlmIChpc051bGxhYmxlKSBzYi5wdXNoKFwiKSB8IG51bGxcIik7XG4gIH1cblxuICB2aXNpdFR5cGVQYXJhbWV0ZXIobm9kZTogVHlwZVBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGV4dGVuZHMgXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4dGVuZHNUeXBlKTtcbiAgICB9XG4gICAgdmFyIGRlZmF1bHRUeXBlID0gbm9kZS5kZWZhdWx0VHlwZTtcbiAgICBpZiAoZGVmYXVsdFR5cGUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcIj1cIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZGVmYXVsdFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cHJlc3Npb25zXG5cbiAgdmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlOiBJZGVudGlmaWVyRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIGlmIChub2RlLmlzUXVvdGVkKSB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbChub2RlLnRleHQpO1xuICAgIGVsc2UgdGhpcy5zYi5wdXNoKG5vZGUudGV4dCk7XG4gIH1cblxuICB2aXNpdEFycmF5TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogQXJyYXlMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIltcIik7XG4gICAgdmFyIGVsZW1lbnRzID0gbm9kZS5lbGVtZW50RXhwcmVzc2lvbnM7XG4gICAgdmFyIG51bUVsZW1lbnRzID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgaWYgKGVsZW1lbnRzWzBdKSB0aGlzLnZpc2l0Tm9kZSg8RXhwcmVzc2lvbj5lbGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUVsZW1lbnRzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICBpZiAoZWxlbWVudHNbaV0pIHRoaXMudmlzaXROb2RlKDxFeHByZXNzaW9uPmVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIl1cIik7XG4gIH1cblxuICB2aXNpdE9iamVjdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IE9iamVjdExpdGVyYWxFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgbmFtZXMgPSBub2RlLm5hbWVzO1xuICAgIHZhciB2YWx1ZXMgPSBub2RlLnZhbHVlcztcbiAgICB2YXIgbnVtRWxlbWVudHMgPSBuYW1lcy5sZW5ndGg7XG4gICAgYXNzZXJ0KG51bUVsZW1lbnRzID09IHZhbHVlcy5sZW5ndGgpO1xuICAgIGlmIChudW1FbGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsICsrdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShuYW1lc1swXSk7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZXNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1FbGVtZW50czsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICBsZXQgdmFsdWUgPSB2YWx1ZXNbaV07XG4gICAgICAgIGlmIChuYW1lID09PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlKG5hbWUpO1xuICAgICAgICAgIHNiLnB1c2goXCI6IFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCJcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QXNzZXJ0aW9uRXhwcmVzc2lvbihub2RlOiBBc3NlcnRpb25FeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzd2l0Y2ggKG5vZGUuYXNzZXJ0aW9uS2luZCkge1xuICAgICAgY2FzZSBBc3NlcnRpb25LaW5kLlBSRUZJWDoge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGFzc2VydChub2RlLnRvVHlwZSkpO1xuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuQVM6IHtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICAgICAgc2IucHVzaChcIiBhcyBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShhc3NlcnQobm9kZS50b1R5cGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEFzc2VydGlvbktpbmQuTk9OTlVMTDoge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgICAgICBzYi5wdXNoKFwiIVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiBhc3NlcnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlOiBCaW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmxlZnQpO1xuICAgIHNiLnB1c2goXCIgXCIpO1xuICAgIHNiLnB1c2gob3BlcmF0b3JUb2tlblRvU3RyaW5nKG5vZGUub3BlcmF0b3IpKTtcbiAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnJpZ2h0KTtcbiAgfVxuXG4gIHZpc2l0Q2FsbEV4cHJlc3Npb24obm9kZTogQ2FsbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdmFyIHR5cGVBcmd1bWVudHMgPSBub2RlLnR5cGVBcmd1bWVudHM7XG4gICAgaWYgKHR5cGVBcmd1bWVudHMpIHtcbiAgICAgIGxldCBudW1UeXBlQXJndW1lbnRzID0gdHlwZUFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGVBcmd1bWVudHNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVBcmd1bWVudHM7ICsraSkge1xuICAgICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZUFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc2IucHVzaChcIj4oXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBub2RlLmFyZ3VtZW50cztcbiAgICB2YXIgbnVtQXJncyA9IGFyZ3MubGVuZ3RoO1xuICAgIGlmIChudW1BcmdzKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtQXJnczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNiLnB1c2goXCIpXCIpO1xuICB9XG5cbiAgdmlzaXRDbGFzc0V4cHJlc3Npb24obm9kZTogQ2xhc3NFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdmFyIGRlY2xhcmF0aW9uID0gbm9kZS5kZWNsYXJhdGlvbjtcbiAgICB0aGlzLnZpc2l0Q2xhc3NEZWNsYXJhdGlvbihkZWNsYXJhdGlvbik7XG4gIH1cblxuICB2aXNpdENvbW1hRXhwcmVzc2lvbihub2RlOiBDb21tYUV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBub2RlLmV4cHJlc3Npb25zO1xuICAgIHZhciBudW1FeHByZXNzaW9ucyA9IGFzc2VydChleHByZXNzaW9ucy5sZW5ndGgpO1xuICAgIHRoaXMudmlzaXROb2RlKGV4cHJlc3Npb25zWzBdKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtRXhwcmVzc2lvbnM7ICsraSkge1xuICAgICAgc2IucHVzaChcIixcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShleHByZXNzaW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFbGVtZW50QWNjZXNzRXhwcmVzc2lvbihub2RlOiBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5leHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiW1wiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmVsZW1lbnRFeHByZXNzaW9uKTtcbiAgICBzYi5wdXNoKFwiXVwiKTtcbiAgfVxuXG4gIHZpc2l0RnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IEZ1bmN0aW9uRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgaWYgKCFkZWNsYXJhdGlvbi5hcnJvd0tpbmQpIHtcbiAgICAgIGlmIChkZWNsYXJhdGlvbi5uYW1lLnRleHQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2IucHVzaChcImZ1bmN0aW9uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQoZGVjbGFyYXRpb24ubmFtZS50ZXh0Lmxlbmd0aCA9PSAwKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHZpc2l0TGl0ZXJhbEV4cHJlc3Npb24obm9kZTogTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG5vZGUubGl0ZXJhbEtpbmQpIHtcbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuRkxPQVQ6IHtcbiAgICAgICAgdGhpcy52aXNpdEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24oPEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5JTlRFR0VSOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24oPEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLlNUUklORzoge1xuICAgICAgICB0aGlzLnZpc2l0U3RyaW5nTGl0ZXJhbEV4cHJlc3Npb24oPFN0cmluZ0xpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTGl0ZXJhbEtpbmQuUkVHRVhQOiB7XG4gICAgICAgIHRoaXMudmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbig8UmVnZXhwTGl0ZXJhbEV4cHJlc3Npb24+bm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBMaXRlcmFsS2luZC5BUlJBWToge1xuICAgICAgICB0aGlzLnZpc2l0QXJyYXlMaXRlcmFsRXhwcmVzc2lvbig8QXJyYXlMaXRlcmFsRXhwcmVzc2lvbj5ub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIExpdGVyYWxLaW5kLk9CSkVDVDoge1xuICAgICAgICB0aGlzLnZpc2l0T2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oPE9iamVjdExpdGVyYWxFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgYXNzZXJ0KGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRGbG9hdExpdGVyYWxFeHByZXNzaW9uKG5vZGU6IEZsb2F0TGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2gobm9kZS52YWx1ZS50b1N0cmluZygxMCkpO1xuICB9XG5cbiAgdmlzaXRJbnN0YW5jZU9mRXhwcmVzc2lvbihub2RlOiBJbnN0YW5jZU9mRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgdGhpcy5zYi5wdXNoKFwiIGluc3RhbmNlb2YgXCIpO1xuICAgIHRoaXMudmlzaXRUeXBlTm9kZShub2RlLmlzVHlwZSk7XG4gIH1cblxuICB2aXNpdEludGVnZXJMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBJbnRlZ2VyTGl0ZXJhbEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goaTY0X3RvX3N0cmluZyhub2RlLnZhbHVlKSk7XG4gIH1cblxuICB2aXNpdFN0cmluZ0xpdGVyYWwoc3RyOiBzdHJpbmcsIHNpbmdsZVF1b3RlZDogYm9vbCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgcXVvdGUgPSBzaW5nbGVRdW90ZWQgPyBcIidcIiA6IFwiXFxcIlwiO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKGxldCBrID0gc3RyLmxlbmd0aDsgaSA8IGs7KSB7XG4gICAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuTlVMTDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBvZmYgPSBpICsgMSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcMFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU1BBQ0U6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5UQUI6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5MSU5FRkVFRDoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgb2ZmID0gKytpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLlZFUlRJQ0FMVEFCOiB7XG4gICAgICAgICAgaWYgKGkgPiBvZmYpIHNiLnB1c2goc3RyLnN1YnN0cmluZyhvZmYsIGkpKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFx2XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQ2hhckNvZGUuRk9STUZFRUQ6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBzYi5wdXNoKFwiXFxcXGZcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5DQVJSSUFHRVJFVFVSTjoge1xuICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgc2IucHVzaChcIlxcXFxyXCIpO1xuICAgICAgICAgIG9mZiA9ICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIENoYXJDb2RlLkRPVUJMRVFVT1RFOiB7XG4gICAgICAgICAgaWYgKCFzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXFxcXCJcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5TSU5HTEVRVU9URToge1xuICAgICAgICAgIGlmIChzaW5nbGVRdW90ZWQpIHtcbiAgICAgICAgICAgIGlmIChpID4gb2ZmKSBzYi5wdXNoKHN0ci5zdWJzdHJpbmcob2ZmLCBpKSk7XG4gICAgICAgICAgICBzYi5wdXNoKFwiXFxcXCdcIik7XG4gICAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICsraTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBDaGFyQ29kZS5CQUNLU0xBU0g6IHtcbiAgICAgICAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgICAgICAgIHNiLnB1c2goXCJcXFxcXFxcXFwiKTtcbiAgICAgICAgICBvZmYgPSArK2k7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICsraTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IG9mZikgc2IucHVzaChzdHIuc3Vic3RyaW5nKG9mZiwgaSkpO1xuICAgIHNiLnB1c2gocXVvdGUpO1xuICB9XG5cbiAgdmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsKG5vZGUudmFsdWUpO1xuICB9XG5cbiAgdmlzaXRSZWdleHBMaXRlcmFsRXhwcmVzc2lvbihub2RlOiBSZWdleHBMaXRlcmFsRXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIi9cIik7XG4gICAgc2IucHVzaChub2RlLnBhdHRlcm4pO1xuICAgIHNiLnB1c2goXCIvXCIpO1xuICAgIHNiLnB1c2gobm9kZS5wYXR0ZXJuRmxhZ3MpO1xuICB9XG5cbiAgdmlzaXROZXdFeHByZXNzaW9uKG5vZGU6IE5ld0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnNiLnB1c2goXCJuZXcgXCIpO1xuICAgIHRoaXMudmlzaXRDYWxsRXhwcmVzc2lvbihub2RlKTtcbiAgfVxuXG4gIHZpc2l0UGFyZW50aGVzaXplZEV4cHJlc3Npb24obm9kZTogUGFyZW50aGVzaXplZEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCIoXCIpO1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgc2IucHVzaChcIilcIik7XG4gIH1cblxuICB2aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLmV4cHJlc3Npb24pO1xuICAgIHRoaXMuc2IucHVzaChcIi5cIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUucHJvcGVydHkpO1xuICB9XG5cbiAgdmlzaXRUZXJuYXJ5RXhwcmVzc2lvbihub2RlOiBUZXJuYXJ5RXhwcmVzc2lvbik6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIgPyBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZlRoZW4pO1xuICAgIHNiLnB1c2goXCIgOiBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5pZkVsc2UpO1xuICB9XG5cbiAgdmlzaXRVbmFyeUV4cHJlc3Npb24obm9kZTogVW5hcnlFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQT1NURklYOiB7XG4gICAgICAgIHRoaXMudmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKDxVbmFyeVBvc3RmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuVU5BUllQUkVGSVg6IHtcbiAgICAgICAgdGhpcy52aXNpdFVuYXJ5UHJlZml4RXhwcmVzc2lvbig8VW5hcnlQcmVmaXhFeHByZXNzaW9uPm5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IGFzc2VydChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRVbmFyeVBvc3RmaXhFeHByZXNzaW9uKG5vZGU6IFVuYXJ5UG9zdGZpeEV4cHJlc3Npb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLm9wZXJhbmQpO1xuICAgIHRoaXMuc2IucHVzaChvcGVyYXRvclRva2VuVG9TdHJpbmcobm9kZS5vcGVyYXRvcikpO1xuICB9XG5cbiAgdmlzaXRVbmFyeVByZWZpeEV4cHJlc3Npb24obm9kZTogVW5hcnlQcmVmaXhFeHByZXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5zYi5wdXNoKG9wZXJhdG9yVG9rZW5Ub1N0cmluZyhub2RlLm9wZXJhdG9yKSk7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5vcGVyYW5kKTtcbiAgfVxuXG4gIC8vIHN0YXRlbWVudHNcblxuICB2aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50OiBTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0Tm9kZShzdGF0ZW1lbnQpO1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgaWYgKFxuICAgICAgIXNiLmxlbmd0aCB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyBFbXB0eVN0YXRlbWVudFxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuVkFSSUFCTEUgfHwgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICAgc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRVhQUkVTU0lPTiAgLy8gcG90ZW50aWFsbHkgYXNzaWducyBhIEZ1bmN0aW9uRXhwcmVzc2lvblxuICAgICkge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsYXN0ID0gc2Jbc2IubGVuZ3RoIC0gMV07XG4gICAgICBsZXQgbGFzdENoYXJQb3MgPSBsYXN0Lmxlbmd0aCAtIDE7XG4gICAgICBpZiAobGFzdENoYXJQb3MgPj0gMCAmJiAoXG4gICAgICAgIGxhc3QuY2hhckNvZGVBdChsYXN0Q2hhclBvcykgPT0gQ2hhckNvZGUuQ0xPU0VCUkFDRSB8fFxuICAgICAgICBsYXN0LmNoYXJDb2RlQXQobGFzdENoYXJQb3MpID09IENoYXJDb2RlLlNFTUlDT0xPTilcbiAgICAgICkge1xuICAgICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRCbG9ja1N0YXRlbWVudChub2RlOiBCbG9ja1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIHN0YXRlbWVudHMgPSBub2RlLnN0YXRlbWVudHM7XG4gICAgdmFyIG51bVN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLmxlbmd0aDtcbiAgICBpZiAobnVtU3RhdGVtZW50cykge1xuICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICBsZXQgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICBpbmRlbnQoc2IsIC0tdGhpcy5pbmRlbnRMZXZlbCk7XG4gICAgICBzYi5wdXNoKFwifVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcInt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0QnJlYWtTdGF0ZW1lbnQobm9kZTogQnJlYWtTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICAgIGlmIChsYWJlbCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWsgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiYnJlYWtcIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRDb250aW51ZVN0YXRlbWVudChub2RlOiBDb250aW51ZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZSBcIik7XG4gICAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJjb250aW51ZVwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdENsYXNzRGVjbGFyYXRpb24obm9kZTogQ2xhc3NEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgaWYgKG5vZGUubmFtZS50ZXh0Lmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcImNsYXNzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiY2xhc3NcIik7XG4gICAgfVxuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzICYmIHR5cGVQYXJhbWV0ZXJzLmxlbmd0aCkge1xuICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMSwgayA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgIH1cbiAgICB2YXIgZXh0ZW5kc1R5cGUgPSBub2RlLmV4dGVuZHNUeXBlO1xuICAgIGlmIChleHRlbmRzVHlwZSkge1xuICAgICAgc2IucHVzaChcIiBleHRlbmRzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRUeXBlTm9kZShleHRlbmRzVHlwZSk7XG4gICAgfVxuICAgIHZhciBpbXBsZW1lbnRzVHlwZXMgPSBub2RlLmltcGxlbWVudHNUeXBlcztcbiAgICBpZiAoaW1wbGVtZW50c1R5cGVzKSB7XG4gICAgICBsZXQgbnVtSW1wbGVtZW50c1R5cGVzID0gaW1wbGVtZW50c1R5cGVzLmxlbmd0aDtcbiAgICAgIGlmIChudW1JbXBsZW1lbnRzVHlwZXMpIHtcbiAgICAgICAgc2IucHVzaChcIiBpbXBsZW1lbnRzIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtSW1wbGVtZW50c1R5cGVzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGltcGxlbWVudHNUeXBlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgdmFyIG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICBpZiAobnVtTWVtYmVycykge1xuICAgICAgc2IucHVzaChcIiB7XFxuXCIpO1xuICAgICAgbGV0IGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICBsZXQgbWVtYmVyID0gbWVtYmVyc1tpXTtcbiAgICAgICAgaWYgKG1lbWJlci5raW5kICE9IE5vZGVLaW5kLkZJRUxEREVDTEFSQVRJT04gfHwgKDxGaWVsZERlY2xhcmF0aW9uPm1lbWJlcikucGFyYW1ldGVySW5kZXggPCAwKSB7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUobWVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXREb1N0YXRlbWVudChub2RlOiBEb1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImRvIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgaWYgKG5vZGUuc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCIgd2hpbGUgKFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcXG5cIik7XG4gICAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuY29uZGl0aW9uKTtcbiAgICBzYi5wdXNoKFwiKVwiKTtcbiAgfVxuXG4gIHZpc2l0RW1wdHlTdGF0ZW1lbnQobm9kZTogRW1wdHlTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgfVxuXG4gIHZpc2l0RW51bURlY2xhcmF0aW9uKG5vZGU6IEVudW1EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkNPTlNUKSkgc2IucHVzaChcImNvbnN0IFwiKTtcbiAgICBzYi5wdXNoKFwiZW51bSBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHZhbHVlcyA9IG5vZGUudmFsdWVzO1xuICAgIHZhciBudW1WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xuICAgIGlmIChudW1WYWx1ZXMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEVudW1WYWx1ZURlY2xhcmF0aW9uKG5vZGUudmFsdWVzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtVmFsdWVzOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZS52YWx1ZXNbaV0pO1xuICAgICAgfVxuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICAgIGluZGVudChzYiwgLS10aGlzLmluZGVudExldmVsKTtcbiAgICAgIHNiLnB1c2goXCJ9XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiIHt9XCIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0RW51bVZhbHVlRGVjbGFyYXRpb24obm9kZTogRW51bVZhbHVlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUobm9kZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRFeHBvcnRJbXBvcnRTdGF0ZW1lbnQobm9kZTogRXhwb3J0SW1wb3J0U3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwiZXhwb3J0IGltcG9ydCBcIik7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXh0ZXJuYWxOYW1lKTtcbiAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICB9XG5cbiAgdmlzaXRFeHBvcnRNZW1iZXIobm9kZTogRXhwb3J0TWVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubG9jYWxOYW1lKTtcbiAgICBpZiAobm9kZS5leHBvcnRlZE5hbWUudGV4dCAhPSBub2RlLmxvY2FsTmFtZS50ZXh0KSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCIgYXMgXCIpO1xuICAgICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUuZXhwb3J0ZWROYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cG9ydFN0YXRlbWVudChub2RlOiBFeHBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmlzRGVjbGFyZSkge1xuICAgICAgc2IucHVzaChcImRlY2xhcmUgXCIpO1xuICAgIH1cbiAgICB2YXIgbWVtYmVycyA9IG5vZGUubWVtYmVycztcbiAgICBpZiAobWVtYmVycyAmJiBtZW1iZXJzLmxlbmd0aCkge1xuICAgICAgbGV0IG51bU1lbWJlcnMgPSBtZW1iZXJzLmxlbmd0aDtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzWzBdKTtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtTWVtYmVyczsgKytpKSB7XG4gICAgICAgIHNiLnB1c2goXCIsXFxuXCIpO1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdEV4cG9ydE1lbWJlcihtZW1iZXJzW2ldKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIHNiLnB1c2goXCJcXG59XCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IHt9XCIpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG5vZGUucGF0aDtcbiAgICBpZiAocGF0aCkge1xuICAgICAgc2IucHVzaChcIiBmcm9tIFwiKTtcbiAgICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihwYXRoKTtcbiAgICB9XG4gICAgc2IucHVzaChcIjtcIik7XG4gIH1cblxuICB2aXNpdEV4cG9ydERlZmF1bHRTdGF0ZW1lbnQobm9kZTogRXhwb3J0RGVmYXVsdFN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBkZWNsYXJhdGlvbiA9IG5vZGUuZGVjbGFyYXRpb247XG4gICAgc3dpdGNoIChkZWNsYXJhdGlvbi5raW5kKSB7XG4gICAgICBjYXNlIE5vZGVLaW5kLkVOVU1ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RW51bURlY2xhcmF0aW9uKDxFbnVtRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuRlVOQ1RJT05ERUNMQVJBVElPTjoge1xuICAgICAgICB0aGlzLnZpc2l0RnVuY3Rpb25EZWNsYXJhdGlvbig8RnVuY3Rpb25EZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBOb2RlS2luZC5DTEFTU0RFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRDbGFzc0RlY2xhcmF0aW9uKDxDbGFzc0RlY2xhcmF0aW9uPmRlY2xhcmF0aW9uLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIE5vZGVLaW5kLklOVEVSRkFDRURFQ0xBUkFUSU9OOiB7XG4gICAgICAgIHRoaXMudmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbig8SW50ZXJmYWNlRGVjbGFyYXRpb24+ZGVjbGFyYXRpb24sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgTm9kZUtpbmQuTkFNRVNQQUNFREVDTEFSQVRJT046IHtcbiAgICAgICAgdGhpcy52aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKDxOYW1lc3BhY2VEZWNsYXJhdGlvbj5kZWNsYXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDogYXNzZXJ0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEV4cHJlc3Npb25TdGF0ZW1lbnQobm9kZTogRXhwcmVzc2lvblN0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudmlzaXROb2RlKG5vZGUuZXhwcmVzc2lvbik7XG4gIH1cblxuICB2aXNpdEZpZWxkRGVjbGFyYXRpb24obm9kZTogRmllbGREZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChub2RlLmZsYWdzICYgQ29tbW9uRmxhZ3MuREVGSU5JVEVfQVNTSUdOTUVOVCkge1xuICAgICAgc2IucHVzaChcIiFcIik7XG4gICAgfVxuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUodHlwZSk7XG4gICAgfVxuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0Rm9yU3RhdGVtZW50KG5vZGU6IEZvclN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImZvciAoXCIpO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpbml0aWFsaXplcik7XG4gICAgfVxuICAgIHZhciBjb25kaXRpb24gPSBub2RlLmNvbmRpdGlvbjtcbiAgICBpZiAoY29uZGl0aW9uKSB7XG4gICAgICBzYi5wdXNoKFwiOyBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShjb25kaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiO1wiKTtcbiAgICB9XG4gICAgdmFyIGluY3JlbWVudG9yID0gbm9kZS5pbmNyZW1lbnRvcjtcbiAgICBpZiAoaW5jcmVtZW50b3IpIHtcbiAgICAgIHNiLnB1c2goXCI7IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluY3JlbWVudG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2IucHVzaChcIjtcIik7XG4gICAgfVxuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gIH1cblxuICB2aXNpdEZ1bmN0aW9uRGVjbGFyYXRpb24obm9kZTogRnVuY3Rpb25EZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVBY2Nlc3NNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLm5hbWUudGV4dC5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvbiBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCJmdW5jdGlvblwiKTtcbiAgICB9XG4gICAgdGhpcy52aXNpdEZ1bmN0aW9uQ29tbW9uKG5vZGUpO1xuICB9XG5cbiAgdmlzaXRGdW5jdGlvbkNvbW1vbihub2RlOiBGdW5jdGlvbkRlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgc2lnbmF0dXJlID0gbm9kZS5zaWduYXR1cmU7XG4gICAgdmFyIHR5cGVQYXJhbWV0ZXJzID0gbm9kZS50eXBlUGFyYW1ldGVycztcbiAgICBpZiAodHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgIGxldCBudW1UeXBlUGFyYW1ldGVycyA9IHR5cGVQYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgIGlmIChudW1UeXBlUGFyYW1ldGVycykge1xuICAgICAgICBzYi5wdXNoKFwiPFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVR5cGVQYXJhbWV0ZXJzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCI+XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGFzc2VydChwYXJhbWV0ZXJzLmxlbmd0aCA9PSAxKTtcbiAgICAgIGFzc2VydCghc2lnbmF0dXJlLmV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIoXCIpO1xuICAgICAgbGV0IHBhcmFtZXRlcnMgPSBzaWduYXR1cmUucGFyYW1ldGVycztcbiAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBsZXQgZXhwbGljaXRUaGlzVHlwZSA9IHNpZ25hdHVyZS5leHBsaWNpdFRoaXNUeXBlO1xuICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHtcbiAgICAgICAgc2IucHVzaChcInRoaXM6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKGV4cGxpY2l0VGhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKG51bVBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKGV4cGxpY2l0VGhpc1R5cGUpIHNiLnB1c2goXCIsIFwiKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXJhbWV0ZXIocGFyYW1ldGVyc1swXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICAgIHRoaXMuc2VyaWFsaXplUGFyYW1ldGVyKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBib2R5ID0gbm9kZS5ib2R5O1xuICAgIHZhciByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGU7XG4gICAgaWYgKG5vZGUuYXJyb3dLaW5kKSB7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAobm9kZS5hcnJvd0tpbmQgPT0gQXJyb3dLaW5kLkFSUk9XX1NJTkdMRSkge1xuICAgICAgICAgIGFzc2VydChpc1R5cGVPbWl0dGVkKHJldHVyblR5cGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSkge1xuICAgICAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNiLnB1c2goXCIpOiBcIik7XG4gICAgICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShib2R5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFzc2VydCghaXNUeXBlT21pdHRlZChyZXR1cm5UeXBlKSk7XG4gICAgICAgIHNiLnB1c2goXCIgPT4gXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZU5vZGUocmV0dXJuVHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWlzVHlwZU9taXR0ZWQocmV0dXJuVHlwZSkgJiZcbiAgICAgICAgIW5vZGUuaXNBbnkoQ29tbW9uRmxhZ3MuQ09OU1RSVUNUT1IgfCBDb21tb25GbGFncy5TRVQpXG4gICAgICApIHtcbiAgICAgICAgc2IucHVzaChcIik6IFwiKTtcbiAgICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHJldHVyblR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2IucHVzaChcIilcIik7XG4gICAgICB9XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBzYi5wdXNoKFwiIFwiKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGUoYm9keSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmlzaXRJZlN0YXRlbWVudChub2RlOiBJZlN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcImlmIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIFwiKTtcbiAgICB2YXIgaWZUcnVlID0gbm9kZS5pZlRydWU7XG4gICAgdGhpcy52aXNpdE5vZGUoaWZUcnVlKTtcbiAgICBpZiAoaWZUcnVlLmtpbmQgIT0gTm9kZUtpbmQuQkxPQ0spIHtcbiAgICAgIHNiLnB1c2goXCI7XFxuXCIpO1xuICAgIH1cbiAgICB2YXIgaWZGYWxzZSA9IG5vZGUuaWZGYWxzZTtcbiAgICBpZiAoaWZGYWxzZSkge1xuICAgICAgaWYgKGlmVHJ1ZS5raW5kID09IE5vZGVLaW5kLkJMT0NLKSB7XG4gICAgICAgIHNiLnB1c2goXCIgZWxzZSBcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzYi5wdXNoKFwiZWxzZSBcIik7XG4gICAgICB9XG4gICAgICB0aGlzLnZpc2l0Tm9kZShpZkZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IEltcG9ydERlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdmFyIGV4dGVybmFsTmFtZSA9IG5vZGUuZm9yZWlnbk5hbWU7XG4gICAgdmFyIG5hbWUgPSBub2RlLm5hbWU7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKGV4dGVybmFsTmFtZSk7XG4gICAgaWYgKGV4dGVybmFsTmFtZS50ZXh0ICE9IG5hbWUudGV4dCkge1xuICAgICAgdGhpcy5zYi5wdXNoKFwiIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdEltcG9ydFN0YXRlbWVudChub2RlOiBJbXBvcnRTdGF0ZW1lbnQpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJpbXBvcnQgXCIpO1xuICAgIHZhciBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucztcbiAgICB2YXIgbmFtZXNwYWNlTmFtZSA9IG5vZGUubmFtZXNwYWNlTmFtZTtcbiAgICBpZiAoZGVjbGFyYXRpb25zKSB7XG4gICAgICBsZXQgbnVtRGVjbGFyYXRpb25zID0gZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgIGlmIChudW1EZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgc2IucHVzaChcIntcXG5cIik7XG4gICAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXRJbXBvcnREZWNsYXJhdGlvbihkZWNsYXJhdGlvbnNbMF0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICAgICAgc2IucHVzaChcIixcXG5cIik7XG4gICAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgICAgdGhpcy52aXNpdEltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgLS10aGlzLmluZGVudExldmVsO1xuICAgICAgICBzYi5wdXNoKFwiXFxufSBmcm9tIFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNiLnB1c2goXCJ7fSBmcm9tIFwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVzcGFjZU5hbWUpIHtcbiAgICAgIHNiLnB1c2goXCIqIGFzIFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihuYW1lc3BhY2VOYW1lKTtcbiAgICAgIHNiLnB1c2goXCIgZnJvbSBcIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRTdHJpbmdMaXRlcmFsRXhwcmVzc2lvbihub2RlLnBhdGgpO1xuICB9XG5cbiAgdmlzaXRJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG5vZGU6IEluZGV4U2lnbmF0dXJlRGVjbGFyYXRpb24pOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHNiLnB1c2goXCJba2V5OiBcIik7XG4gICAgdGhpcy52aXNpdFR5cGVOb2RlKG5vZGUua2V5VHlwZSk7XG4gICAgc2IucHVzaChcIl06IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS52YWx1ZVR5cGUpO1xuICB9XG5cbiAgdmlzaXRJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNEZWZhdWx0OiBib29sID0gZmFsc2UpOiB2b2lkIHtcbiAgICB2YXIgZGVjb3JhdG9ycyA9IG5vZGUuZGVjb3JhdG9ycztcbiAgICBpZiAoZGVjb3JhdG9ycykge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGsgPSBkZWNvcmF0b3JzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZURlY29yYXRvcihkZWNvcmF0b3JzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAoaXNEZWZhdWx0KSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IGRlZmF1bHQgXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGUpO1xuICAgIH1cbiAgICBzYi5wdXNoKFwiaW50ZXJmYWNlIFwiKTtcbiAgICB0aGlzLnZpc2l0SWRlbnRpZmllckV4cHJlc3Npb24obm9kZS5uYW1lKTtcbiAgICB2YXIgdHlwZVBhcmFtZXRlcnMgPSBub2RlLnR5cGVQYXJhbWV0ZXJzO1xuICAgIGlmICh0eXBlUGFyYW1ldGVycyAmJiB0eXBlUGFyYW1ldGVycy5sZW5ndGgpIHtcbiAgICAgIHNiLnB1c2goXCI8XCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVQYXJhbWV0ZXIodHlwZVBhcmFtZXRlcnNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDEsIGsgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgc2IucHVzaChcIiwgXCIpO1xuICAgICAgICB0aGlzLnZpc2l0VHlwZVBhcmFtZXRlcih0eXBlUGFyYW1ldGVyc1tpXSk7XG4gICAgICB9XG4gICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICB9XG4gICAgdmFyIGV4dGVuZHNUeXBlID0gbm9kZS5leHRlbmRzVHlwZTtcbiAgICBpZiAoZXh0ZW5kc1R5cGUpIHtcbiAgICAgIHNiLnB1c2goXCIgZXh0ZW5kcyBcIik7XG4gICAgICB0aGlzLnZpc2l0VHlwZU5vZGUoZXh0ZW5kc1R5cGUpO1xuICAgIH1cbiAgICAvLyBtdXN0IG5vdCBoYXZlIGltcGxlbWVudHNUeXBlc1xuICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICB2YXIgaW5kZW50TGV2ZWwgPSArK3RoaXMuaW5kZW50TGV2ZWw7XG4gICAgdmFyIG1lbWJlcnMgPSBub2RlLm1lbWJlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBtZW1iZXJzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShtZW1iZXJzW2ldKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRNZXRob2REZWNsYXJhdGlvbihub2RlOiBNZXRob2REZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhub2RlKTtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5HRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJnZXQgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5TRVQpKSB7XG4gICAgICB0aGlzLnNiLnB1c2goXCJzZXQgXCIpO1xuICAgIH1cbiAgICB0aGlzLnZpc2l0RnVuY3Rpb25Db21tb24obm9kZSk7XG4gIH1cblxuICB2aXNpdE5hbWVzcGFjZURlY2xhcmF0aW9uKG5vZGU6IE5hbWVzcGFjZURlY2xhcmF0aW9uLCBpc0RlZmF1bHQ6IGJvb2wgPSBmYWxzZSk6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgIHNiLnB1c2goXCJleHBvcnQgZGVmYXVsdCBcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgfVxuICAgIHNiLnB1c2goXCJuYW1lc3BhY2UgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciBtZW1iZXJzID0gbm9kZS5tZW1iZXJzO1xuICAgIHZhciBudW1NZW1iZXJzID0gbWVtYmVycy5sZW5ndGg7XG4gICAgaWYgKG51bU1lbWJlcnMpIHtcbiAgICAgIHNiLnB1c2goXCIge1xcblwiKTtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gbWVtYmVycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCk7XG4gICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKG1lbWJlcnNbaV0pO1xuICAgICAgfVxuICAgICAgaW5kZW50KHNiLCAtLXRoaXMuaW5kZW50TGV2ZWwpO1xuICAgICAgc2IucHVzaChcIn1cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnB1c2goXCIge31cIik7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRSZXR1cm5TdGF0ZW1lbnQobm9kZTogUmV0dXJuU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVybiBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2IucHVzaChcInJldHVyblwiKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFN3aXRjaENhc2Uobm9kZTogU3dpdGNoQ2FzZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGxhYmVsID0gbm9kZS5sYWJlbDtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHNiLnB1c2goXCJjYXNlIFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGxhYmVsKTtcbiAgICAgIHNiLnB1c2goXCI6XFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiZGVmYXVsdDpcXG5cIik7XG4gICAgfVxuICAgIHZhciBzdGF0ZW1lbnRzID0gbm9kZS5zdGF0ZW1lbnRzO1xuICAgIHZhciBudW1TdGF0ZW1lbnRzID0gc3RhdGVtZW50cy5sZW5ndGg7XG4gICAgaWYgKG51bVN0YXRlbWVudHMpIHtcbiAgICAgIGxldCBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1swXSk7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bVN0YXRlbWVudHM7ICsraSkge1xuICAgICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgICAgdGhpcy52aXNpdE5vZGVBbmRUZXJtaW5hdGUoc3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgICAtLXRoaXMuaW5kZW50TGV2ZWw7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRTd2l0Y2hTdGF0ZW1lbnQobm9kZTogU3dpdGNoU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBzYi5wdXNoKFwic3dpdGNoIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgdmFyIGluZGVudExldmVsID0gKyt0aGlzLmluZGVudExldmVsO1xuICAgIHZhciBjYXNlcyA9IG5vZGUuY2FzZXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGsgPSBjYXNlcy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgdGhpcy52aXNpdFN3aXRjaENhc2UoY2FzZXNbaV0pO1xuICAgICAgc2IucHVzaChcIlxcblwiKTtcbiAgICB9XG4gICAgLS10aGlzLmluZGVudExldmVsO1xuICAgIHNiLnB1c2goXCJ9XCIpO1xuICB9XG5cbiAgdmlzaXRUaHJvd1N0YXRlbWVudChub2RlOiBUaHJvd1N0YXRlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuc2IucHVzaChcInRocm93IFwiKTtcbiAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnZhbHVlKTtcbiAgfVxuXG4gIHZpc2l0VHJ5U3RhdGVtZW50KG5vZGU6IFRyeVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcInRyeSB7XFxuXCIpO1xuICAgIHZhciBpbmRlbnRMZXZlbCA9ICsrdGhpcy5pbmRlbnRMZXZlbDtcbiAgICB2YXIgc3RhdGVtZW50cyA9IG5vZGUuc3RhdGVtZW50cztcbiAgICBmb3IgKGxldCBpID0gMCwgayA9IHN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICBpbmRlbnQoc2IsIGluZGVudExldmVsKTtcbiAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKHN0YXRlbWVudHNbaV0pO1xuICAgIH1cbiAgICB2YXIgY2F0Y2hWYXJpYWJsZSA9IG5vZGUuY2F0Y2hWYXJpYWJsZTtcbiAgICBpZiAoY2F0Y2hWYXJpYWJsZSkge1xuICAgICAgaW5kZW50KHNiLCBpbmRlbnRMZXZlbCAtIDEpO1xuICAgICAgc2IucHVzaChcIn0gY2F0Y2ggKFwiKTtcbiAgICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihjYXRjaFZhcmlhYmxlKTtcbiAgICAgIHNiLnB1c2goXCIpIHtcXG5cIik7XG4gICAgICBsZXQgY2F0Y2hTdGF0ZW1lbnRzID0gbm9kZS5jYXRjaFN0YXRlbWVudHM7XG4gICAgICBpZiAoY2F0Y2hTdGF0ZW1lbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gY2F0Y2hTdGF0ZW1lbnRzLmxlbmd0aDsgaSA8IGs7ICsraSkge1xuICAgICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICAgIHRoaXMudmlzaXROb2RlQW5kVGVybWluYXRlKGNhdGNoU3RhdGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGZpbmFsbHlTdGF0ZW1lbnRzID0gbm9kZS5maW5hbGx5U3RhdGVtZW50cztcbiAgICBpZiAoZmluYWxseVN0YXRlbWVudHMpIHtcbiAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICAgIHNiLnB1c2goXCJ9IGZpbmFsbHkge1xcblwiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZmluYWxseVN0YXRlbWVudHMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwpO1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZUFuZFRlcm1pbmF0ZShmaW5hbGx5U3RhdGVtZW50c1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGluZGVudChzYiwgaW5kZW50TGV2ZWwgLSAxKTtcbiAgICBzYi5wdXNoKFwifVwiKTtcbiAgfVxuXG4gIHZpc2l0VHlwZURlY2xhcmF0aW9uKG5vZGU6IFR5cGVEZWNsYXJhdGlvbik6IHZvaWQge1xuICAgIHZhciBkZWNvcmF0b3JzID0gbm9kZS5kZWNvcmF0b3JzO1xuICAgIGlmIChkZWNvcmF0b3JzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgayA9IGRlY29yYXRvcnMubGVuZ3RoOyBpIDwgazsgKytpKSB7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplRGVjb3JhdG9yKGRlY29yYXRvcnNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHRoaXMuc2VyaWFsaXplRXh0ZXJuYWxNb2RpZmllcnMobm9kZSk7XG4gICAgc2IucHVzaChcInR5cGUgXCIpO1xuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlUGFyYW1ldGVycyA9IG5vZGUudHlwZVBhcmFtZXRlcnM7XG4gICAgaWYgKHR5cGVQYXJhbWV0ZXJzKSB7XG4gICAgICBsZXQgbnVtVHlwZVBhcmFtZXRlcnMgPSB0eXBlUGFyYW1ldGVycy5sZW5ndGg7XG4gICAgICBpZiAobnVtVHlwZVBhcmFtZXRlcnMpIHtcbiAgICAgICAgc2IucHVzaChcIjxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtVHlwZVBhcmFtZXRlcnM7ICsraSkge1xuICAgICAgICAgIHRoaXMudmlzaXRUeXBlUGFyYW1ldGVyKHR5cGVQYXJhbWV0ZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzYi5wdXNoKFwiPlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICB0aGlzLnZpc2l0VHlwZU5vZGUobm9kZS50eXBlKTtcbiAgfVxuXG4gIHZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aXNpdElkZW50aWZpZXJFeHByZXNzaW9uKG5vZGUubmFtZSk7XG4gICAgdmFyIHR5cGUgPSBub2RlLnR5cGU7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5mbGFncyAmIENvbW1vbkZsYWdzLkRFRklOSVRFX0FTU0lHTk1FTlQpIHtcbiAgICAgIHNiLnB1c2goXCIhXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgc2IucHVzaChcIjogXCIpO1xuICAgICAgdGhpcy52aXNpdFR5cGVOb2RlKHR5cGUpO1xuICAgIH1cbiAgICB2YXIgaW5pdGlhbGl6ZXIgPSBub2RlLmluaXRpYWxpemVyO1xuICAgIGlmIChpbml0aWFsaXplcikge1xuICAgICAgc2IucHVzaChcIiA9IFwiKTtcbiAgICAgIHRoaXMudmlzaXROb2RlKGluaXRpYWxpemVyKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFZhcmlhYmxlU3RhdGVtZW50KG5vZGU6IFZhcmlhYmxlU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIGRlY29yYXRvcnMgPSBub2RlLmRlY29yYXRvcnM7XG4gICAgaWYgKGRlY29yYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBrID0gZGVjb3JhdG9ycy5sZW5ndGg7IGkgPCBrOyArK2kpIHtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVEZWNvcmF0b3IoZGVjb3JhdG9yc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgdmFyIGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICAgIHZhciBudW1EZWNsYXJhdGlvbnMgPSBhc3NlcnQoZGVjbGFyYXRpb25zLmxlbmd0aCk7XG4gICAgdmFyIGZpcnN0RGVjbGFyYXRpb24gPSBkZWNsYXJhdGlvbnNbMF07XG4gICAgdGhpcy5zZXJpYWxpemVFeHRlcm5hbE1vZGlmaWVycyhmaXJzdERlY2xhcmF0aW9uKTtcbiAgICBzYi5wdXNoKGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuQ09OU1QpID8gXCJjb25zdCBcIiA6IGZpcnN0RGVjbGFyYXRpb24uaXMoQ29tbW9uRmxhZ3MuTEVUKSA/IFwibGV0IFwiIDogXCJ2YXIgXCIpO1xuICAgIHRoaXMudmlzaXRWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUuZGVjbGFyYXRpb25zWzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bURlY2xhcmF0aW9uczsgKytpKSB7XG4gICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICB0aGlzLnZpc2l0VmFyaWFibGVEZWNsYXJhdGlvbihub2RlLmRlY2xhcmF0aW9uc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgdmlzaXRXaGlsZVN0YXRlbWVudChub2RlOiBXaGlsZVN0YXRlbWVudCk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIndoaWxlIChcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5jb25kaXRpb24pO1xuICAgIHZhciBzdGF0ZW1lbnQgPSBub2RlLnN0YXRlbWVudDtcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gTm9kZUtpbmQuRU1QVFkpIHtcbiAgICAgIHNiLnB1c2goXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiKSBcIik7XG4gICAgICB0aGlzLnZpc2l0Tm9kZShub2RlLnN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gb3RoZXJcblxuICBzZXJpYWxpemVEZWNvcmF0b3Iobm9kZTogRGVjb3JhdG9yTm9kZSk6IHZvaWQge1xuICAgIHZhciBzYiA9IHRoaXMuc2I7XG4gICAgc2IucHVzaChcIkBcIik7XG4gICAgdGhpcy52aXNpdE5vZGUobm9kZS5uYW1lKTtcbiAgICB2YXIgYXJncyA9IG5vZGUuYXJndW1lbnRzO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBzYi5wdXNoKFwiKFwiKTtcbiAgICAgIGxldCBudW1BcmdzID0gYXJncy5sZW5ndGg7XG4gICAgICBpZiAobnVtQXJncykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShhcmdzWzBdKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1BcmdzOyArK2kpIHtcbiAgICAgICAgICBzYi5wdXNoKFwiLCBcIik7XG4gICAgICAgICAgdGhpcy52aXNpdE5vZGUoYXJnc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNiLnB1c2goXCIpXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzYi5wdXNoKFwiXFxuXCIpO1xuICAgIH1cbiAgICBpbmRlbnQoc2IsIHRoaXMuaW5kZW50TGV2ZWwpO1xuICB9XG5cbiAgc2VyaWFsaXplUGFyYW1ldGVyKG5vZGU6IFBhcmFtZXRlck5vZGUpOiB2b2lkIHtcbiAgICB2YXIgc2IgPSB0aGlzLnNiO1xuICAgIHZhciBraW5kID0gbm9kZS5wYXJhbWV0ZXJLaW5kO1xuICAgIHZhciBpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24gPSBub2RlLmltcGxpY2l0RmllbGREZWNsYXJhdGlvbjtcbiAgICBpZiAoaW1wbGljaXRGaWVsZERlY2xhcmF0aW9uKSB7XG4gICAgICB0aGlzLnNlcmlhbGl6ZUFjY2Vzc01vZGlmaWVycyhpbXBsaWNpdEZpZWxkRGVjbGFyYXRpb24pO1xuICAgIH1cbiAgICBpZiAoa2luZCA9PSBQYXJhbWV0ZXJLaW5kLlJFU1QpIHtcbiAgICAgIHNiLnB1c2goXCIuLi5cIik7XG4gICAgfVxuICAgIHRoaXMudmlzaXRJZGVudGlmaWVyRXhwcmVzc2lvbihub2RlLm5hbWUpO1xuICAgIHZhciB0eXBlID0gbm9kZS50eXBlO1xuICAgIHZhciBpbml0aWFsaXplciA9IG5vZGUuaW5pdGlhbGl6ZXI7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChraW5kID09IFBhcmFtZXRlcktpbmQuT1BUSU9OQUwgJiYgIWluaXRpYWxpemVyKSBzYi5wdXNoKFwiP1wiKTtcbiAgICAgIGlmICghaXNUeXBlT21pdHRlZCh0eXBlKSkge1xuICAgICAgICBzYi5wdXNoKFwiOiBcIik7XG4gICAgICAgIHRoaXMudmlzaXRUeXBlTm9kZSh0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluaXRpYWxpemVyKSB7XG4gICAgICBzYi5wdXNoKFwiID0gXCIpO1xuICAgICAgdGhpcy52aXNpdE5vZGUoaW5pdGlhbGl6ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHNlcmlhbGl6ZUV4dGVybmFsTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5FWFBPUlQpKSB7XG4gICAgICBzYi5wdXNoKFwiZXhwb3J0IFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuSU1QT1JUKSkge1xuICAgICAgc2IucHVzaChcImltcG9ydCBcIik7XG4gICAgfSBlbHNlIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLkRFQ0xBUkUpKSB7XG4gICAgICBzYi5wdXNoKFwiZGVjbGFyZSBcIik7XG4gICAgfVxuICB9XG5cbiAgc2VyaWFsaXplQWNjZXNzTW9kaWZpZXJzKG5vZGU6IERlY2xhcmF0aW9uU3RhdGVtZW50KTogdm9pZCB7XG4gICAgdmFyIHNiID0gdGhpcy5zYjtcbiAgICBpZiAobm9kZS5pcyhDb21tb25GbGFncy5QVUJMSUMpKSB7XG4gICAgICBzYi5wdXNoKFwicHVibGljIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJJVkFURSkpIHtcbiAgICAgIHNiLnB1c2goXCJwcml2YXRlIFwiKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuaXMoQ29tbW9uRmxhZ3MuUFJPVEVDVEVEKSkge1xuICAgICAgc2IucHVzaChcInByb3RlY3RlZCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlNUQVRJQykpIHtcbiAgICAgIHNiLnB1c2goXCJzdGF0aWMgXCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS5pcyhDb21tb25GbGFncy5BQlNUUkFDVCkpIHtcbiAgICAgIHNiLnB1c2goXCJhYnN0cmFjdCBcIik7XG4gICAgfVxuICAgIGlmIChub2RlLmlzKENvbW1vbkZsYWdzLlJFQURPTkxZKSkge1xuICAgICAgc2IucHVzaChcInJlYWRvbmx5IFwiKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2goKTogc3RyaW5nIHtcbiAgICB2YXIgcmV0ID0gdGhpcy5zYi5qb2luKFwiXCIpO1xuICAgIHRoaXMuc2IgPSBbXTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0= - -/***/ }), - -/***/ "./src/visitor.ts": -/*!************************!*\ - !*** ./src/visitor.ts ***! - \************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var __values = (this && this.__values) || function (o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -}; -var __read = (this && this.__read) || function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// export type Collection = NonNullCollection| null; -var isIterable = function (object) { - //@ts-ignore - return object != null && typeof object[Symbol.iterator] === "function"; -}; -var DefaultWriter = /** @class */ (function () { - function DefaultWriter() { - } - DefaultWriter.prototype.writeString = function (s) { }; - DefaultWriter.prototype.writeNode = function (node) { }; - return DefaultWriter; -}()); -exports.DefaultWriter = DefaultWriter; -var AbstractVisitor = /** @class */ (function () { - function AbstractVisitor(writer) { - if (writer === void 0) { writer = new DefaultWriter(); } - this.writer = writer; - } - AbstractVisitor.prototype.writeString = function (str) { - return this.writeString(str); - }; - AbstractVisitor.prototype.writeNode = function (item) { - this.writer.writeNode(item); - }; - AbstractVisitor.prototype.visit = function (node) { - var e_1, _a, e_2, _b; - var _this = this; - if (node == null) - return; - if (node instanceof Array) { - node.map(function (node) { _this.visit(node); }); - } - else if (node instanceof Map) { - try { - for (var _c = __values(node.entries()), _d = _c.next(); !_d.done; _d = _c.next()) { - var _e = __read(_d.value, 2), key = _e[0], _node = _e[1]; - this.visit(_node); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_d && !_d.done && (_a = _c.return)) _a.call(_c); - } - finally { if (e_1) throw e_1.error; } - } - //@ts-ignore Need a better way to test type - } - else if (isIterable(node)) { - try { - //TODO: Find better way to test if iterable - for (var node_1 = __values(node), node_1_1 = node_1.next(); !node_1_1.done; node_1_1 = node_1.next()) { - var _node = node_1_1.value; - this.visit(_node); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (node_1_1 && !node_1_1.done && (_b = node_1.return)) _b.call(node_1); - } - finally { if (e_2) throw e_2.error; } - } - } - else { - //@ts-ignore Node is not iterable. - this._visit(node); - } - }; - return AbstractVisitor; -}()); -exports.AbstractVisitor = AbstractVisitor; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSwwREFBMEQ7QUFFMUQsSUFBTSxVQUFVLEdBQUcsVUFBQyxNQUFjO0lBQ2hDLFlBQVk7SUFDWixPQUFBLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFVBQVU7QUFBL0QsQ0FBK0QsQ0FBQztBQU9sRTtJQUFBO0lBSUEsQ0FBQztJQUhDLG1DQUFXLEdBQVgsVUFBWSxDQUFTLElBQVUsQ0FBQztJQUNoQyxpQ0FBUyxHQUFULFVBQVUsSUFBbUIsSUFBUyxDQUFDO0lBRXpDLG9CQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFKWSxzQ0FBYTtBQU0xQjtJQUVFLHlCQUFzQixNQUEwQztRQUExQyx1QkFBQSxFQUFBLGFBQXdCLGFBQWEsRUFBSztRQUExQyxXQUFNLEdBQU4sTUFBTSxDQUFvQztJQUFHLENBQUM7SUFFcEUscUNBQVcsR0FBWCxVQUFZLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQ0FBUyxHQUFULFVBQVUsSUFBbUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtCQUFLLEdBQUwsVUFBTSxJQUEwQjs7UUFBaEMsaUJBa0JDO1FBakJDLElBQUksSUFBSSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBQ3pCLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUMsSUFBTyxJQUFhLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRTs7Z0JBQzlCLEtBQXlCLElBQUEsS0FBQSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBaEMsSUFBQSx3QkFBWSxFQUFYLFdBQUcsRUFBRSxhQUFLO29CQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuQjs7Ozs7Ozs7O1lBQ0QsMkNBQTJDO1NBQzVDO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7O2dCQUN6QiwyQ0FBMkM7Z0JBQzdDLEtBQWtCLElBQUEsU0FBQSxTQUFBLElBQUksQ0FBQSwwQkFBQSw0Q0FBRTtvQkFBbkIsSUFBSSxLQUFLLGlCQUFBO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3JCOzs7Ozs7Ozs7U0FDRjthQUFNO1lBQ0wsa0NBQWtDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBR0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDO0FBakNxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgQ29sbGVjdGlvbjxUPiA9IFQgfCBUW10gfCBNYXA8c3RyaW5nLCBUIHwgVFtdIHwgSXRlcmFibGU8VD4+IHwgSXRlcmFibGU8VD47XG4vLyBleHBvcnQgdHlwZSBDb2xsZWN0aW9uPFQ+ID0gTm9uTnVsbENvbGxlY3Rpb248VD58IG51bGw7XG5cbmNvbnN0IGlzSXRlcmFibGUgPSAob2JqZWN0OiBvYmplY3QpOiBib29sZWFuID0+XG4gIC8vQHRzLWlnbm9yZVxuICBvYmplY3QgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqZWN0W1N5bWJvbC5pdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBXcml0ZXI8VD4ge1xuICB3cml0ZVN0cmluZyh4OiBDb2xsZWN0aW9uPFQ+IHwgc3RyaW5nKTogdm9pZDtcbiAgd3JpdGVOb2RlKHg6IENvbGxlY3Rpb248VD4pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFdyaXRlcjxUPiBpbXBsZW1lbnRzIFdyaXRlcjxUPiB7XG4gIHdyaXRlU3RyaW5nKHM6IHN0cmluZyk6IHZvaWQgeyB9XG4gIHdyaXRlTm9kZShub2RlOiBDb2xsZWN0aW9uPFQ+KTogdm9pZCB7fVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3I8VD4ge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB3cml0ZXI6IFdyaXRlcjxUPiA9IG5ldyBEZWZhdWx0V3JpdGVyPFQ+KCkpIHt9XG5cbiAgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndyaXRlU3RyaW5nKHN0cik7XG4gIH1cblxuICB3cml0ZU5vZGUoaXRlbTogQ29sbGVjdGlvbjxUPiApOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlci53cml0ZU5vZGUoaXRlbSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBDb2xsZWN0aW9uPFQ+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybjtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBub2RlLm1hcCgobm9kZTogVCk6IHZvaWQgPT4geyB0aGlzLnZpc2l0KG5vZGUpOyB9KTtcbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgIGZvciAobGV0IFtrZXksIF9ub2RlXSBvZiBub2RlLmVudHJpZXMoKSkge1xuICAgICAgICB0aGlzLnZpc2l0KF9ub2RlKTtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZSBOZWVkIGEgYmV0dGVyIHdheSB0byB0ZXN0IHR5cGVcbiAgICB9IGVsc2UgaWYgKGlzSXRlcmFibGUobm9kZSkpIHtcbiAgICAgICAgLy9UT0RPOiBGaW5kIGJldHRlciB3YXkgdG8gdGVzdCBpZiBpdGVyYWJsZVxuICAgICAgZm9yIChsZXQgX25vZGUgb2Ygbm9kZSkge1xuICAgICAgICAgIHRoaXMudmlzaXQoX25vZGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL0B0cy1pZ25vcmUgTm9kZSBpcyBub3QgaXRlcmFibGUuXG4gICAgICB0aGlzLl92aXNpdChub2RlKTtcbiAgICB9XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92aXNpdChub2RlOiBUKTogdm9pZDtcblxufVxuIl19 - -/***/ }) - -/******/ }); -}); -//# sourceMappingURL=transformerBundle.js.map \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.transformer=t():e.transformer=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=6)}([function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]="SOURCE",e[e.NAMEDTYPE=1]="NAMEDTYPE",e[e.FUNCTIONTYPE=2]="FUNCTIONTYPE",e[e.TYPENAME=3]="TYPENAME",e[e.TYPEPARAMETER=4]="TYPEPARAMETER",e[e.PARAMETER=5]="PARAMETER",e[e.IDENTIFIER=6]="IDENTIFIER",e[e.ASSERTION=7]="ASSERTION",e[e.BINARY=8]="BINARY",e[e.CALL=9]="CALL",e[e.CLASS=10]="CLASS",e[e.COMMA=11]="COMMA",e[e.ELEMENTACCESS=12]="ELEMENTACCESS",e[e.FALSE=13]="FALSE",e[e.FUNCTION=14]="FUNCTION",e[e.INSTANCEOF=15]="INSTANCEOF",e[e.LITERAL=16]="LITERAL",e[e.NEW=17]="NEW",e[e.NULL=18]="NULL",e[e.PARENTHESIZED=19]="PARENTHESIZED",e[e.PROPERTYACCESS=20]="PROPERTYACCESS",e[e.TERNARY=21]="TERNARY",e[e.SUPER=22]="SUPER",e[e.THIS=23]="THIS",e[e.TRUE=24]="TRUE",e[e.CONSTRUCTOR=25]="CONSTRUCTOR",e[e.UNARYPOSTFIX=26]="UNARYPOSTFIX",e[e.UNARYPREFIX=27]="UNARYPREFIX",e[e.BLOCK=28]="BLOCK",e[e.BREAK=29]="BREAK",e[e.CONTINUE=30]="CONTINUE",e[e.DO=31]="DO",e[e.EMPTY=32]="EMPTY",e[e.EXPORT=33]="EXPORT",e[e.EXPORTDEFAULT=34]="EXPORTDEFAULT",e[e.EXPORTIMPORT=35]="EXPORTIMPORT",e[e.EXPRESSION=36]="EXPRESSION",e[e.FOR=37]="FOR",e[e.IF=38]="IF",e[e.IMPORT=39]="IMPORT",e[e.RETURN=40]="RETURN",e[e.SWITCH=41]="SWITCH",e[e.THROW=42]="THROW",e[e.TRY=43]="TRY",e[e.VARIABLE=44]="VARIABLE",e[e.VOID=45]="VOID",e[e.WHILE=46]="WHILE",e[e.CLASSDECLARATION=47]="CLASSDECLARATION",e[e.ENUMDECLARATION=48]="ENUMDECLARATION",e[e.ENUMVALUEDECLARATION=49]="ENUMVALUEDECLARATION",e[e.FIELDDECLARATION=50]="FIELDDECLARATION",e[e.FUNCTIONDECLARATION=51]="FUNCTIONDECLARATION",e[e.IMPORTDECLARATION=52]="IMPORTDECLARATION",e[e.INDEXSIGNATUREDECLARATION=53]="INDEXSIGNATUREDECLARATION",e[e.INTERFACEDECLARATION=54]="INTERFACEDECLARATION",e[e.METHODDECLARATION=55]="METHODDECLARATION",e[e.NAMESPACEDECLARATION=56]="NAMESPACEDECLARATION",e[e.TYPEDECLARATION=57]="TYPEDECLARATION",e[e.VARIABLEDECLARATION=58]="VARIABLEDECLARATION",e[e.DECORATOR=59]="DECORATOR",e[e.EXPORTMEMBER=60]="EXPORTMEMBER",e[e.SWITCHCASE=61]="SWITCHCASE",e[e.COMMENT=62]="COMMENT"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName("",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text="",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(".")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(".")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]="DEFAULT",e[e.OPTIONAL=1]="OPTIONAL",e[e.REST=2]="REST"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if("builtin"==t)return E.BUILTIN;break;case 101:if("external"==t)return E.EXTERNAL;break;case 103:if("global"==t)return E.GLOBAL;break;case 105:if("inline"==t)return E.INLINE;break;case 108:if("lazy"==t)return E.LAZY;break;case 111:if("operator"==t)return E.OPERATOR;break;case 115:if("sealed"==t)return E.SEALED;break;case 117:if("unmanaged"==t)return E.UNMANAGED;if("unsafe"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),"operator"==t)switch(i.charCodeAt(0)){case 98:if("binary"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case"prefix":return E.OPERATOR_PREFIX;case"postfix":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]="CUSTOM",e[e.GLOBAL=1]="GLOBAL",e[e.OPERATOR=2]="OPERATOR",e[e.OPERATOR_BINARY=3]="OPERATOR_BINARY",e[e.OPERATOR_PREFIX=4]="OPERATOR_PREFIX",e[e.OPERATOR_POSTFIX=5]="OPERATOR_POSTFIX",e[e.UNMANAGED=6]="UNMANAGED",e[e.SEALED=7]="SEALED",e[e.INLINE=8]="INLINE",e[e.EXTERNAL=9]="EXTERNAL",e[e.BUILTIN=10]="BUILTIN",e[e.LAZY=11]="LAZY",e[e.UNSAFE=12]="UNSAFE"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]="LINE",e[e.TRIPLE=1]="TRIPLE",e[e.BLOCK=2]="BLOCK"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]="FLOAT",e[e.INTEGER=1]="INTEGER",e[e.STRING=2]="STRING",e[e.REGEXP=3]="REGEXP",e[e.ARRAY=4]="ARRAY",e[e.OBJECT=5]="OBJECT"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]="PREFIX",e[e.AS=1]="AS",e[e.NONNULL=2]="NONNULL"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,"typeArgumentsRange",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"argumentsRange",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text="constructor",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text="null",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text="super",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text="this",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text="true",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text="false",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]="USER",e[e.USER_ENTRY=1]="USER_ENTRY",e[e.LIBRARY=2]="LIBRARY",e[e.LIBRARY_ENTRY=3]="LIBRARY_ENTRY"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i";case s.LESSTHAN_EQUALS:return"<=";case s.GREATERTHAN_EQUALS:return">=";case s.EQUALS_EQUALS:return"==";case s.EXCLAMATION_EQUALS:return"!=";case s.EQUALS_EQUALS_EQUALS:return"===";case s.EXCLAMATION_EQUALS_EQUALS:return"!==";case s.PLUS:return"+";case s.MINUS:return"-";case s.ASTERISK_ASTERISK:return"**";case s.ASTERISK:return"*";case s.SLASH:return"/";case s.PERCENT:return"%";case s.PLUS_PLUS:return"++";case s.MINUS_MINUS:return"--";case s.LESSTHAN_LESSTHAN:return"<<";case s.GREATERTHAN_GREATERTHAN:return">>";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case s.AMPERSAND:return"&";case s.BAR:return"|";case s.CARET:return"^";case s.EXCLAMATION:return"!";case s.TILDE:return"~";case s.AMPERSAND_AMPERSAND:return"&&";case s.BAR_BAR:return"||";case s.EQUALS:return"=";case s.PLUS_EQUALS:return"+=";case s.MINUS_EQUALS:return"-=";case s.ASTERISK_EQUALS:return"*=";case s.ASTERISK_ASTERISK_EQUALS:return"**=";case s.SLASH_EQUALS:return"/=";case s.PERCENT_EQUALS:return"%=";case s.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case s.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case s.AMPERSAND_EQUALS:return"&=";case s.BAR_EQUALS:return"|=";case s.CARET_EQUALS:return"^=";default:return assert(!1),""}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error("source mismatch");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?"":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes("@nearfile")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},t.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return"void"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),s=p(n).includes("null"),a=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+a+"(): void {"),i.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==p(n)?this.sb.push(" let result: "+p(n)+" = "+a+"("):this.sb.push(" "+a+"("),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==p(n)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+r+">() || isNullable<"+r+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+r+">(encoder, result"+(s?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+a+" as "+a+" }\n")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+="<"+e.typeParameters.map(p).join(", ")+">"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf("}")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var r=t.typeName(n);i+="\n static decode(json: Uint8Array): "+r+" {\n let value = instantiate<"+r+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+r+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+r+" {\n "+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,"this."+t+' = obj.has("'+t+'") ? ')+": this."+t+";"})}(n).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return"encode<"+t+">(encoder, this."+i+', "'+i+'");'})}(n).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return i});return this.sb.concat(i).join("\n")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=""),t+"decode<"+p(e.type)+', Obj>(obj, "'+p(e.name)+'")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf("\n")).includes("out");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t("out/"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?"":"./")+n.normalizedPath,h(n))})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(t.Feature||(t.Feature={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(t.Target||(t.Target={}))},function(e,t,i){"use strict";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return"INFO";case n.WARNING:return"WARNING";case n.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),""}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE="",t.COLOR_YELLOW="",t.COLOR_RED="",t.COLOR_RESET="",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace("{0}",n)),null!=s&&(o=o.replace("{1}",s)),null!=a&&(o=o.replace("{2}",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):o(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:"."}function a(e){var t=e.length;if(t<=1){if(0==t)return".";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return"."}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith("std/")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=" ",r=" ",s=" ";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){"use strict";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i")}e.isNullable&&n.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?"((":"(");var n=e.explicitThisType;n&&(i.push("this: "),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(", "),this.serializeParameter(r[0]);for(var a=1;a "),this.visitTypeNode(o)):i.push(") => void"),t&&i.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(" extends "),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push("="),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push("[");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(" as "),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(" "),t.push(a.operatorTokenToString(e.operator)),t.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push("<"),this.visitTypeNode(i[0]);for(var r=1;r(")}}else t.push("(");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push("\\0"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\b");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\t");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\n");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\v");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push("\\f");break;case 13:s>n&&i.push(e.substring(n,s)),i.push("\\r"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push("\\'"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push("\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push("/"),t.push(e.pattern),t.push("/"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push("("),this.visitNode(e.expression),t.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(" ? "),this.visitNode(e.ifThen),t.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push("\n"):t.push(";\n")}else t.push(";\n")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push("{\n");for(var r=++this.indentLevel,a=0;a")}var _=e.extendsType;_&&(u.push(" extends "),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(" implements "),this.visitTypeNode(p[0]);for(a=1;a")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push("(");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push("this: "),this.visitTypeNode(_)),c){_&&t.push(", "),this.serializeParameter(u[0]);for(o=1;o "),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(" => "),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(")"):(t.push("): "),this.visitTypeNode(h)),p&&(t.push(" "),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push("if ("),this.visitNode(e.condition),t.push(") ");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(";\n");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(" else "):t.push("else "),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(" as "),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push("import ");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push("{\n");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o")}var u=e.extendsType;u&&(a.push(" extends "),this.visitTypeNode(u)),a.push(" {\n");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n")}}r.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push("!"),t&&(i.push(": "),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(" = "),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name="UnreachableError",r.prototype.message="unreachable",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name="AssertionError",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return"number"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return"object"==typeof e||"string"==typeof e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"string"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return A;if("number"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error("interior hyphen");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c="0"+c;a=""+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&"function"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])}); \ No newline at end of file diff --git a/dist/asc.js b/dist/asc.js index 37338027ba..240d395cad 100644 --- a/dist/asc.js +++ b/dist/asc.js @@ -1,2 +1,2 @@ -!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = []\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}"\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n // private static handler: Handler = new Handler();\n static parse(str: Uint8Array ): Obj {\n let decoder = new JSONDecoder(new Handler());\n decoder.deserialize(str);\n let res = decoder.handler.peek as Obj;\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n \n \n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buffer: Value, name: string = ""): T {\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n value.decode(JSON.parse(json));\n return value;\n }\n\n decode(obj: Obj): "+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+'>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); +!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(function(){try{return require("assemblyscript")}catch(e){}}()):"function"==typeof define&&define.amd?define(["assemblyscript"],n):"object"==typeof exports?exports.asc=n(function(){try{return require("assemblyscript")}catch(e){}}()):e.asc=n(e.assemblyscript)}("undefined"!=typeof self?self:this,function(__WEBPACK_EXTERNAL_MODULE__11__){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var i in e)t.d(r,i,function(n){return e[n]}.bind(null,i));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=4)}([function(e,n,t){var r,i;n.nextTick=function(e){var n=Array.prototype.slice.call(arguments);n.shift(),setTimeout(function(){e.apply(null,n)},0)},n.platform=n.arch=n.execPath=n.title="browser",n.pid=1,n.browser=!0,n.env={},n.argv=[],n.binding=function(e){throw new Error("No such module. (Possibly not yet loaded)")},i="/",n.cwd=function(){return i},n.chdir=function(e){r||(r=t(1)),i=r.resolve(e,i)},n.exit=n.kill=n.umask=n.dlopen=n.uptime=n.memoryUsage=n.uvCounters=function(){},n.features={}},function(e,n,t){(function(e){function t(e,n){for(var t=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),t++):t&&(e.splice(r,1),t--)}if(n)for(;t--;t)e.unshift("..");return e}function r(e,n){if(e.filter)return e.filter(n);for(var t=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return(i?"/":"")+(n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"))||"."},n.normalize=function(e){var a=n.isAbsolute(e),o="/"===i(e,-1);return(e=t(r(e.split("/"),function(e){return!!e}),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,n){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var n=0;n=0&&""===e[t];t--);return n>t?[]:e.slice(n,t-n+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?t?"/":".":t&&1===r?"/":e.slice(0,r)},n.basename=function(e,n){var t=function(e){"string"!=typeof e&&(e+="");var n,t=0,r=-1,i=!0;for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!i){t=n+1;break}}else-1===r&&(i=!1,r=n+1);return-1===r?"":e.slice(t,r)}(e);return n&&t.substr(-1*n.length)===n&&(t=t.substr(0,t.length-n.length)),t},n.extname=function(e){"string"!=typeof e&&(e+="");for(var n=-1,t=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){t=o+1;break}}return-1===n||-1===r||0===a||1===a&&n===r-1&&n===t+1?"":e.slice(n,r)};var i="b"==="ab".substr(-1)?function(e,n,t){return e.substr(n,t)}:function(e,n,t){return n<0&&(n=e.length+n),e.substr(n,t)}}).call(this,t(0))},function(e,n){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(e){"object"==typeof window&&(t=window)}e.exports=t},function(e,n){},function(e,n,t){e.exports=t(5)},function(module,exports,__webpack_require__){(function(process,global){process.browser&&(process.cwd=function(){return"."});const fs=__webpack_require__(3),path=__webpack_require__(1),utf8=__webpack_require__(6),colorsUtil=__webpack_require__(7),optionsUtil=__webpack_require__(8),mkdirp=__webpack_require__(9),EOL="win32"===process.platform?"\r\n":"\n",SEP="win32"===process.platform?"\\":"/",nearBindings=__webpack_require__(10),nearLibEntry=path.join(".","..","bindings","assembly","nearEntry.ts");process.removeAllListeners&&process.removeAllListeners("uncaughtException");var assemblyscript,isDev=!1;function checkDiagnostics(e,n){for(var t,r=!1;null!=(t=assemblyscript.nextDiagnostic(e));)n&&n.write(assemblyscript.formatDiagnostic(t,n.isTTY,!0)+EOL+EOL),assemblyscript.isError(t)&&(r=!0);return r}function createStats(){return{readTime:0,readCount:0,writeTime:0,writeCount:0,parseTime:0,parseCount:0,compileTime:0,compileCount:0,emitTime:0,emitCount:0,validateTime:0,validateCount:0,optimizeTime:0,optimizeCount:0}}function measure(e){const n=process.hrtime();e();const t=process.hrtime(n);return 1e9*t[0]+t[1]}function formatTime(e){return e?(e/1e6).toFixed(3)+" ms":"N/A"}function printStats(e,n){function t(e,n){return formatTime(e)}(n||process.stdout).write(["I/O Read : "+t(e.readTime,e.readCount),"I/O Write : "+t(e.writeTime,e.writeCount),"Parse : "+t(e.parseTime,e.parseCount),"Compile : "+t(e.compileTime,e.compileCount),"Emit : "+t(e.emitTime,e.emitCount),"Validate : "+t(e.validateTime,e.validateCount),"Optimize : "+t(e.optimizeTime,e.optimizeCount)].join(EOL)+EOL)}function printRTTI(e,n){n||(n=process.stderr),n.write("# Runtime type information (RTTI)\n"),n.write(assemblyscript.buildRTTI(e))}(()=>{try{assemblyscript=__webpack_require__(11)}catch(e){try{__webpack_require__(!function(){var e=new Error("Cannot find module 'ts-node'");throw e.code="MODULE_NOT_FOUND",e}()).register({project:path.join(".","..","src","tsconfig.json")}),__webpack_require__(!function(){var e=new Error("Cannot find module '../src/glue/js'");throw e.code="MODULE_NOT_FOUND",e}()),assemblyscript=__webpack_require__(!function(){var e=new Error("Cannot find module '../src'");throw e.code="MODULE_NOT_FOUND",e}()),isDev=!0}catch(e_ts){try{assemblyscript=eval("require('./assemblyscript')")}catch(e){throw e.stack=e_ts.stack+"\n---\n"+e.stack,e}}}})(),exports.isBundle=!0,exports.isDev=isDev,exports.version=exports.isBundle?"0.7.0":__webpack_require__(!function(){var e=new Error("Cannot find module '../package.json'");throw e.code="MODULE_NOT_FOUND",e}()).version,exports.options=__webpack_require__(12),exports.sourceMapRoot="assemblyscript:///",exports.libraryPrefix=assemblyscript.LIBRARY_PREFIX,exports.defaultOptimizeLevel=3,exports.defaultShrinkLevel=1,exports.libraryFiles=exports.isBundle?Object({nearEntry:'\nimport { storage, near, base64, base58 } from \'near-runtime-ts\';\n//@ts-ignore\nimport { Buffer } from "assemblyscript-json/util";\nimport { JSONEncoder, JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\nimport { u128 } from "bignum";\n// Runtime functions\n// tslint:disable: no-unsafe-any\n\n\n\ntype Usize = u64;\n//@ts-ignore\n@global\n@external("env", "read_register")\ndeclare function read_register(register_id: Usize, ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "register_len")\ndeclare function register_len(register_id: Usize): Usize;\n\n//@ts-ignore\n@global\n@external("env", "input")\ndeclare function input(register_id: Usize): void;\n//@ts-ignore\n@global\n@external("env", "value_return")\ndeclare function value_return(value_len: Usize, value_ptr: Usize): void;\n//@ts-ignore\n@global\n@external("env", "panic")\ndeclare function panic(): void;\n\n\n\n/// \n\nabstract class Value {\n static String(str: string): Value {\n return new Str(str)\n }\n static Number(num: i64): Value {\n return new Num(num)\n }\n static Bool(b: bool): Value {\n return new Bools(b)\n }\n static Null(): Value {\n return new Null();\n }\n static Array(): Value {\n return new Arr();\n }\n static Object(): Value {\n return new Obj();\n }\n\n toString(): string {\n if (this instanceof Str){\n return (this).toString();\n }\n if (this instanceof Num){\n return (this).toString();\n }\n if (this instanceof Bools){\n return (this).toString();\n }\n if (this instanceof Null){\n return (this).toString();\n }\n if (this instanceof Arr){\n return (this).toString();\n }\n if (this instanceof Obj){\n return (this).toString();\n }\n return "Value";\n }\n}\n@global\nclass Str extends Value {\n constructor(public _str: string) {\n super();\n }\n\n toString(): string {\n return "\\"" + this._str + "\\"";\n }\n}\n@global\nclass Num extends Value {\n constructor(public _num: i64) {\n super();\n }\n\n toString(): string {\n return this._num.toString();\n }\n}\n@global\nclass Null extends Value {\n constructor() {\n super();\n }\n\n toString(): string {\n return "null";\n }\n}\n\n@global class Bools extends Value {\n constructor(public _bool: bool) {\n super();\n }\n\n toString(): string {\n return this._bool.toString();\n }\n}\n\n@global\nclass Arr extends Value {\n _arr: Array;\n constructor() {\n super();\n this._arr = new Array();\n }\n\n push(obj: Value): void {\n this._arr.push(obj)\n }\n\n toString(): string {\n return "[" + this._arr.map((val: Value,i: i32,_arr: Value[]): string => val.toString()).join(",") + "]";\n }\n}\n\n@global\nclass Obj extends Value {\n _obj: Map;\n keys: Array;\n\n constructor() {\n super();\n this._obj = new Map();\n this.keys = new Array();\n }\n\n set(key: string, value: Value): void {\n if (!this._obj.has(key)) {\n this.keys.push(key);\n }\n this._obj.set(key, value);\n }\n\n get(key: string): Value | null {\n if (!this._obj.has(key)) {\n return null;\n }\n return this._obj.get(key)\n }\n\n toString(): string {\n let objs: string[] = [];\n for (let i: i32 = 0; i < this.keys.length; i++){\n objs.push("\\"" +this.keys[i]+"\\":"+ this._obj.get(this.keys[i]).toString());\n }\n return "{"+ objs.join(",") + "}";\n }\n\n has(key: string): bool {\n return this._obj.has(key);\n }\n}\n\nclass Handler extends ThrowingJSONHandler {\n stack: Value[];\n constructor() {\n super();\n this.stack = new Array();\n }\n\n reset(): void {\n while (this.stack.length > 0){\n this.stack.pop();\n }\n }\n\n get peek(): Value {\n return this.stack[this.stack.length - 1];\n }\n\n setString(name: string, value: string): void {\n let obj: Value = Value.String(value);\n this.addValue(name, obj);\n }\n\n setBoolean(name: string, value: bool): void {\n let obj = Value.Bool(value);\n this.addValue(name, obj);\n }\n\n setNull(name: string): void {\n let obj = Value.Null();\n this.addValue(name, obj);\n }\n\n setInteger(name: string, value: i64): void {\n let obj = Value.Number(value);\n this.addValue(name, obj);\n }\n\n pushArray(name: string): bool {\n let obj: Value = Value.Array();\n this.addValue(name, obj);\n this.stack.push(obj);\n return true;\n }\n\n popArray(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n pushObject(name: string): bool {\n let obj: Value = Value.Object();\n this.addValue(name, obj);\n this.stack.push(obj)\n return true;\n }\n\n popObject(): void {\n if (this.stack.length > 1) {\n this.stack.pop();\n }\n }\n\n addValue(name: string, obj: Value): void {\n if (name.length == 0 && obj instanceof Obj && this.stack.length == 0) {\n this.stack.push(obj);\n return;\n }\n if (this.peek instanceof Obj) {\n (this.peek as Obj).set(name, obj)\n }\n else if (this.peek instanceof Arr) {\n (this.peek).push(obj);\n }\n }\n}\n\n\n@global()\nclass JSON {\n private static handler: Handler = new Handler();\n private static decoder: JSONDecoder = new JSONDecoder(JSON.handler);\n static parse(str: Uint8Array ): Obj {\n JSON.decoder.deserialize(str);\n let res = JSON.decoder.handler.peek as Obj;\n JSON.decoder.handler.reset();\n return res;\n }\n}\n\n\n\n\n\n\n//@ts-ignore\n@global\nfunction encode(encoder: JSONEncoder, value: T, name: string | null = ""): JSONEncoder {\n if (isBoolean()) {\n //@ts-ignore\n encoder.setBoolean(name, value);\n } else if (isInteger()) {\n if (value instanceof i64 || value instanceof u64) {\n //@ts-ignore\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n encoder.setInteger(name, value);\n }\n //@ts-ignore\n } else if (value == null) {\n encoder.setNull(name);\n } else if (isString()) {\n //@ts-ignore\n encoder.setString(name, value);\n } else if (isReference()) {\n if (isArrayLike(value)) {\n if (value instanceof Uint8Array) {\n //@ts-ignore\n encoder.setString(name, base64.encode( value));\n } else {\n encoder.pushArray(name);\n for (let i: i32 = 0; i < value.length; i++) {\n //@ts-ignore\n encode(encoder, value[i], null);\n }\n encoder.popArray();\n }\n } else { // Is an object\n if (value instanceof u128){\n encoder.setString(name, value.toString());\n } else {\n //@ts-ignore\n value.encode(encoder, name);\n }\n }\n } else {\n throw new Error("Encoding failed");\n }\n return encoder;\n}\n\n//@ts-ignore\n@inline\nfunction getStr(val: Value, name: String): string {\n assert(val instanceof Str, "Value with Key: "+ name +" is not a string or null");\n return (val)._str;\n}\n\nfunction decodeArray(val: Value, name: string): Array {\n assert(val instanceof Arr, "Value with Key: " + name + " is not an array or null.");\n let res = new Array();\n let arr = (val)._arr;\n for (let i: i32 = 0; i < arr.length; i++){\n let item: T = decode(arr[i]);\n res.push(item);\n }\n return res;\n}\n\n\n//@ts-ignore\n@global\nfunction decode(buf: V, name: string = ""): T {\n let buffer = (buf instanceof Uint8Array ? JSON.parse(buf) : buf);\n let val: Value;\n if (buffer instanceof Obj && name != ""){\n const obj: Obj = buffer;\n let res = obj.get(name);\n if (res == null){\n //@ts-ignore\n return null\n }\n val = res;\n }else {\n val = buffer;\n }\n if (val instanceof Null) {\n assert(isReference() || isArrayLike() || isNullable() || isString(), "Key: " + name + " with type " + nameof() + "is not nullable.");\n //@ts-ignore\n return null;\n }\n if (isString()) {\n //@ts-ignore\n return getStr(val, name);\n }\n if (isBoolean()) {\n assert(val instanceof Bools, "Value with Key: "+ name + " with type " + nameof() +" is not a string");\n //@ts-ignore\n return (val)._bool\n }\n var value: T;\n if (isInteger()) {\n //@ts-ignore\n if (value instanceof u64 || value instanceof i64) {\n assert(val instanceof Str, "Value with Key: "+ name + " with type " + nameof() +" is an 64-bit integer and is expected to be encoded as a string");\n let str = (val)._str;\n //@ts-ignore\n return (val instanceof u64) ? U64.parseInt(str) : I64.parseInt(str);\n }\n assert(val instanceof Num, "Value with Key: "+ name + " with type " + nameof() +" is not an Integer");\n //@ts-ignore\n return (val)._num;\n }\n assert(isReference(), name + " with type " + nameof() + " must be an integer, boolean, string, object, or array");\n if (isArrayLike()) {\n //@ts-ignore\n if (value instanceof Uint8Array ) {\n //@ts-ignore\n return base64.decode(getStr(val, name)) \n }\n //@ts-ignore\n // assert(val instanceof Arr, "Value with Key: " + name + " with type " + nameof() + " is expected to be an array")\n //@ts-ignore only checking the instance\n return decodeArray>(val, name);\n }\n if (val instanceof Str){\n //@ts-ignore\n if (value instanceof u128) {\n //@ts-ignore\n return u128.fromString(getStr(val, name));\n }\n }\n assert(val instanceof Obj, "Value with Key: " + name + " with type " + nameof() + " is not an object or null")\n value = instantiate();\n //@ts-ignore\n return value.decode(val);\n}\n',array:'/// \n\nimport { BLOCK_MAXSIZE } from "./rt/common";\nimport { COMPARATOR, SORT } from "./util/sort";\nimport { ArrayBuffer, ArrayBufferView } from "./arraybuffer";\nimport { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number";\nimport { idof, isArray as builtin_isArray } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error";\n\n/** Ensures that the given array has _at least_ the specified backing size. */\nfunction ensureSize(array: usize, minSize: usize, alignLog2: u32): void {\n var oldCapacity = changetype(array).dataLength;\n if (minSize > oldCapacity >>> alignLog2) {\n if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n let oldData = changetype(changetype(array).data);\n let newCapacity = minSize << alignLog2;\n let newData = __realloc(oldData, newCapacity);\n memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity);\n if (newData !== oldData) { // oldData has been free\'d\n store(changetype(array), __retain(newData), offsetof("data"));\n changetype(array).dataStart = newData;\n }\n changetype(array).dataLength = newCapacity;\n }\n}\n\nexport class Array extends ArrayBufferView {\n [key: number]: T;\n\n // Implementing ArrayBufferView isn\'t strictly necessary here but is done to allow glue code\n // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need\n // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`).\n\n // Also note that Array with non-nullable T must guard against implicit null values whenever\n // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn\'t be\n // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey".\n\n private length_: i32;\n\n static isArray(value: U): bool {\n return builtin_isArray(value) && value !== null;\n }\n\n static create(capacity: i32 = 0): Array {\n if (capacity > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n var array = changetype>(__allocArray(capacity, alignof(), idof())); // retains\n changetype>(array).length_ = 0; // safe even if T is a non-nullable reference\n memory.fill(array.dataStart, 0, array.dataLength);\n return array;\n }\n\n constructor(length: i32 = 0) {\n super(length, alignof());\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n this.length_ = length;\n }\n\n @unsafe get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.length_;\n }\n\n set length(newLength: i32) {\n var oldLength = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (newLength > oldLength) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) { // release no longer used refs\n if (oldLength > newLength) {\n let dataStart = this.dataStart;\n do __release(load(dataStart + (--oldLength << alignof())));\n while (oldLength > newLength);\n // no need to zero memory on shrink -> is zeroed on grow\n }\n }\n this.length_ = newLength;\n }\n\n every(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (!fn(load(this.dataStart + (index << alignof())), index, this)) return false;\n }\n return true;\n }\n\n findIndex(predicate: (value: T, index: i32, array: Array) => bool): i32 {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (predicate(load(this.dataStart + (index << alignof())), index, this)) return index;\n }\n return -1;\n }\n\n @operator("[]") private __get(index: i32): T {\n if (isReference()) {\n if (!isNullable()) {\n if (index >= this.length_) throw new Error(E_HOLEYARRAY);\n }\n }\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n var length = this.length_;\n if (isReference()) {\n if (!isNullable()) {\n if (index > length) throw new Error(E_HOLEYARRAY);\n }\n }\n ensureSize(changetype(this), index + 1, alignof());\n this.__unchecked_set(index, value);\n if (index >= length) this.length_ = index + 1;\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = this.dataStart + (index << alignof());\n let oldRef: usize = load(offset);\n if (changetype(value) != oldRef) {\n store(offset, __retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n store(this.dataStart + (index << alignof()), value);\n }\n }\n\n fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (isManaged()) {\n for (; start < end; ++start) {\n let oldRef: usize = load(dataStart + (start << alignof()));\n if (changetype(value) != oldRef) {\n store(dataStart + (start << alignof()), __retain(changetype(value)));\n __release(oldRef);\n }\n }\n } else if (sizeof() == 1) {\n if (start < end) {\n memory.fill(\n dataStart + start,\n u8(value),\n (end - start)\n );\n }\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return this;\n }\n\n includes(value: T, fromIndex: i32 = 0): bool {\n return this.indexOf(value, fromIndex) >= 0;\n }\n\n indexOf(value: T, fromIndex: i32 = 0): i32 {\n var length = this.length_;\n if (length == 0 || fromIndex >= length) return -1;\n if (fromIndex < 0) fromIndex = max(length + fromIndex, 0);\n var dataStart = this.dataStart;\n while (fromIndex < length) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n ++fromIndex;\n }\n return -1;\n }\n\n lastIndexOf(value: T, fromIndex: i32 = this.length_): i32 {\n var length = this.length_;\n if (length == 0) return -1;\n if (fromIndex < 0) fromIndex = length + fromIndex;\n else if (fromIndex >= length) fromIndex = length - 1;\n var dataStart = this.dataStart;\n while (fromIndex >= 0) {\n if (load(dataStart + (fromIndex << alignof())) == value) return fromIndex;\n --fromIndex;\n }\n return -1;\n }\n\n push(value: T): i32 {\n var length = this.length_;\n var newLength = length + 1;\n ensureSize(changetype(this), newLength, alignof());\n if (isManaged()) {\n store(this.dataStart + (length << alignof()), __retain(changetype(value)));\n } else {\n store(this.dataStart + (length << alignof()), value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n concat(other: Array): Array {\n var thisLen = this.length_;\n var otherLen = select(0, other.length_, other === null);\n var outLen = thisLen + otherLen;\n if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH);\n var out = changetype>(__allocArray(outLen, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n var thisSize = thisLen << alignof();\n if (isManaged()) {\n let thisStart = this.dataStart;\n for (let offset: usize = 0; offset < thisSize; offset += sizeof()) {\n let ref = load(thisStart + offset);\n store(outStart + offset, __retain(ref));\n }\n outStart += thisSize;\n let otherStart = other.dataStart;\n let otherSize = otherLen << alignof();\n for (let offset: usize = 0; offset < otherSize; offset += sizeof()) {\n let ref = load(otherStart + offset);\n store(outStart + offset, __retain(ref));\n }\n } else {\n memory.copy(outStart, this.dataStart, thisSize);\n memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof());\n }\n return out;\n }\n\n copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this {\n var dataStart = this.dataStart;\n var len = this.length_;\n\n end = min(end, len);\n var to = target < 0 ? max(len + target, 0) : min(target, len);\n var from = start < 0 ? max(len + start, 0) : min(start, len);\n var last = end < 0 ? max(len + end, 0) : min(end, len);\n var count = min(last - from, len - to);\n\n if (isManaged()) {\n if (from < to && to < (from + count)) { // right to left\n from += count - 1;\n to += count - 1;\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n --from, --to, --count;\n }\n } else { // left to right\n while (count) {\n let oldRef: usize = load(dataStart + (to << alignof()));\n let newRef: usize = load(dataStart + (from << alignof()));\n if (newRef != oldRef) {\n store(dataStart + (to << alignof()), __retain(newRef));\n __release(oldRef);\n }\n ++from, ++to, --count;\n }\n }\n } else {\n memory.copy( // is memmove\n dataStart + (to << alignof()),\n dataStart + (from << alignof()),\n count << alignof()\n );\n }\n return this;\n }\n\n pop(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var element = load(this.dataStart + ((--length) << alignof()));\n this.length_ = length;\n return element; // no need to retain -> is moved\n }\n\n forEach(fn: (value: T, index: i32, array: Array) => void): void {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n fn(load(this.dataStart + (index << alignof())), index, this);\n }\n }\n\n map(fn: (value: T, index: i32, array: Array) => U): Array {\n var length = this.length_;\n var out = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var outStart = out.dataStart;\n for (let index = 0; index < min(length, this.length_); ++index) {\n let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains\n if (isManaged()) {\n store(outStart + (index << alignof()), __retain(changetype(result)));\n } else {\n store(outStart + (index << alignof()), result);\n }\n // releases result\n }\n return out;\n }\n\n filter(fn: (value: T, index: i32, array: Array) => bool): Array {\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n let value = load(this.dataStart + (index << alignof()));\n if (fn(value, index, this)) result.push(value);\n }\n return result;\n }\n\n reduce(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n reduceRight(\n fn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U,\n initialValue: U\n ): U {\n var accum = initialValue;\n for (let index = this.length_ - 1; index >= 0; --index) {\n accum = fn(accum, load(this.dataStart + (index << alignof())), index, this);\n }\n return accum;\n }\n\n shift(): T {\n var length = this.length_;\n if (length < 1) throw new RangeError(E_EMPTYARRAY);\n var base = this.dataStart;\n var element = load(base);\n var lastIndex = length - 1;\n memory.copy(\n base,\n base + sizeof(),\n lastIndex << alignof()\n );\n store(base + (lastIndex << alignof()),\n // @ts-ignore: cast\n null\n );\n this.length_ = lastIndex;\n return element; // no need to retain -> is moved\n }\n\n some(fn: (value: T, index: i32, array: Array) => bool): bool {\n for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) {\n if (fn(load(this.dataStart + (index << alignof())), index, this)) return true;\n }\n return false;\n }\n\n unshift(value: T): i32 {\n var newLength = this.length_ + 1;\n ensureSize(changetype(this), newLength, alignof());\n var dataStart = this.dataStart;\n memory.copy(\n dataStart + sizeof(),\n dataStart,\n (newLength - 1) << alignof()\n );\n if (isManaged()) {\n store(dataStart, __retain(changetype(value)));\n } else {\n store(dataStart, value);\n }\n this.length_ = newLength;\n return newLength;\n }\n\n slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(start + length, 0) : min(start, length);\n end = end < 0 ? max(end + length, 0) : min(end , length);\n length = max(end - start, 0);\n var slice = changetype>(__allocArray(length, alignof(), idof>())); // retains\n var sliceBase = slice.dataStart;\n var thisBase = this.dataStart + (start << alignof());\n if (isManaged()) {\n let off = 0;\n let end = length << alignof();\n while (off < end) {\n let ref = load(thisBase + off);\n store(sliceBase + off, __retain(ref));\n off += sizeof();\n }\n } else {\n memory.copy(sliceBase, thisBase, length << alignof());\n }\n return slice;\n }\n\n splice(start: i32, deleteCount: i32 = i32.MAX_VALUE): Array {\n var length = this.length_;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n deleteCount = max(min(deleteCount, length - start), 0);\n var result = changetype>(__allocArray(deleteCount, alignof(), idof>())); // retains\n var resultStart = result.dataStart;\n var thisStart = this.dataStart;\n var thisBase = thisStart + (start << alignof());\n if (isManaged()) {\n for (let i = 0; i < deleteCount; ++i) {\n store(resultStart + (i << alignof()),\n load(thisBase + (i << alignof()))\n );\n // no need to retain -> is moved\n }\n } else {\n memory.copy(\n resultStart,\n thisBase,\n deleteCount << alignof()\n );\n }\n var offset = start + deleteCount;\n if (length != offset) {\n memory.copy(\n thisBase,\n thisStart + (offset << alignof()),\n (length - offset) << alignof()\n );\n }\n this.length_ = length - deleteCount;\n return result;\n }\n\n reverse(): Array {\n var length = this.length_;\n if (length) {\n let front = this.dataStart;\n let back = this.dataStart + ((length - 1) << alignof());\n while (front < back) {\n let temp = load(front);\n store(front, load(back));\n store(back, temp);\n front += sizeof();\n back -= sizeof();\n }\n }\n return this;\n }\n\n sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this {\n var length = this.length_;\n if (length <= 1) return this;\n var base = this.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b;\n store(base, a); // arr[0] = a;\n }\n return this;\n }\n SORT(base, length, comparator);\n return this;\n }\n\n join(separator: string = ","): string {\n if (isBoolean()) return this.join_bool(separator);\n if (isInteger()) return this.join_int(separator);\n if (isFloat()) return this.join_flt(separator);\n if (isString()) return this.join_str(separator);\n if (isArray()) return this.join_arr(separator);\n if (isReference()) return this.join_ref(separator);\n ERROR("unspported element type");\n return unreachable();\n }\n\n private join_bool(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return select("true", "false", load(dataStart));\n\n var sepLen = separator.length;\n var valueLen = 5; // max possible length of element len("false")\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: bool;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + i);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + lastIndex);\n valueLen = 4 + i32(!value);\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(select("true", "false", value)),\n valueLen << 1\n );\n offset += valueLen;\n\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_int(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n // @ts-ignore: type\n if (!lastIndex) return changetype(itoa(load(dataStart))); // retains\n\n var sepLen = separator.length;\n const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned());\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n // @ts-ignore: type\n offset += itoa_stream(changetype(result), offset, value);\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_flt(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) {\n return changetype(dtoa(\n // @ts-ignore: type\n load(dataStart))\n ); // retains\n }\n\n const valueLen = MAX_DOUBLE_LENGTH;\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof())); // retains\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n offset += dtoa_stream(changetype(result), offset,\n // @ts-ignore: type\n value\n );\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n private join_str(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var dataStart = this.dataStart;\n if (!lastIndex) return load(dataStart);\n\n var sepLen = separator.length;\n var estLen = 0;\n var value: string | null;\n for (let i = 0, len = lastIndex + 1; i < len; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) estLen += value.length;\n }\n var offset = 0;\n var result = changetype(__alloc((estLen + sepLen * lastIndex) << 1, idof())); // retains\n for (let i = 0; i < lastIndex; ++i) {\n value = load(dataStart + (i << alignof()));\n if (value !== null) {\n let valueLen = changetype(value).length;\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n value = load(dataStart + (lastIndex << alignof()));\n if (value !== null) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(value),\n changetype(value).length << 1\n );\n }\n return result;\n }\n\n private join_arr(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n\n var result = "";\n var sepLen = separator.length;\n var base = this.dataStart;\n var value: T;\n if (!lastIndex) {\n value = load(base);\n // @ts-ignore: type\n return value ? value.join(separator) : "";\n }\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n if (sepLen) result += separator;\n }\n value = load(base + (lastIndex << alignof()));\n // @ts-ignore: type\n if (value) result += value.join(separator);\n return result; // registered by concatenation (FIXME: lots of garbage)\n }\n\n private join_ref(separator: string = ","): string {\n var lastIndex = this.length_ - 1;\n if (lastIndex < 0) return "";\n var base = this.dataStart;\n if (!lastIndex) return "[object Object]";\n\n const valueLen = 15; // max possible length of element len("[object Object]")\n var sepLen = separator.length;\n var estLen = (valueLen + sepLen) * lastIndex + valueLen;\n var result = changetype(__alloc(estLen << 1, idof()));\n var offset = 0;\n var value: T;\n for (let i = 0; i < lastIndex; ++i) {\n value = load(base + (i << alignof()));\n if (value) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (sepLen) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype(separator),\n sepLen << 1\n );\n offset += sepLen;\n }\n }\n if (load(base + (lastIndex << alignof()))) {\n memory.copy(\n changetype(result) + (offset << 1),\n changetype("[object Object]"),\n valueLen << 1\n );\n offset += valueLen;\n }\n if (estLen > offset) return result.substring(0, offset);\n return result;\n }\n\n toString(): string {\n return this.join();\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = this.dataStart;\n let end = cur + (this.length_ << alignof());\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n // automatically visits ArrayBufferView (.data) next\n }\n}\n',arraybuffer:'/// \n\nimport { BLOCK, BLOCK_MAXSIZE, BLOCK_OVERHEAD } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INVALIDLENGTH } from "./util/error";\n\nexport abstract class ArrayBufferView {\n\n @unsafe data: ArrayBuffer;\n @unsafe dataStart: usize;\n @unsafe dataLength: u32;\n\n protected constructor(length: i32, alignLog2: i32) {\n if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length = length << alignLog2, idof());\n memory.fill(buffer, 0, length);\n this.data = changetype(buffer); // retains\n this.dataStart = buffer;\n this.dataLength = length;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n get length(): i32 {\n ERROR("missing implementation: subclasses must implement ArrayBufferView#length");\n return unreachable();\n }\n}\n\n@sealed export class ArrayBuffer {\n\n static isView(value: T): bool {\n if (value) {\n if (value instanceof Int8Array) return true;\n if (value instanceof Uint8Array) return true;\n if (value instanceof Uint8ClampedArray) return true;\n if (value instanceof Int16Array) return true;\n if (value instanceof Uint16Array) return true;\n if (value instanceof Int32Array) return true;\n if (value instanceof Uint32Array) return true;\n if (value instanceof Int64Array) return true;\n if (value instanceof Uint64Array) return true;\n if (value instanceof Float32Array) return true;\n if (value instanceof Float64Array) return true;\n if (value instanceof DataView) return true;\n }\n return false;\n }\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH);\n var buffer = __alloc(length, idof());\n memory.fill(buffer, 0, length);\n return changetype(buffer); // retains\n }\n\n get byteLength(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n }\n\n slice(begin: i32 = 0, end: i32 = BLOCK_MAXSIZE): ArrayBuffer {\n var length = this.byteLength;\n begin = begin < 0 ? max(length + begin, 0) : min(begin, length);\n end = end < 0 ? max(length + end , 0) : min(end , length);\n var outSize = max(end - begin, 0);\n var out = __alloc(outSize, idof());\n memory.copy(out, changetype(this) + begin, outSize);\n return changetype(out); // retains\n }\n\n toString(): string {\n return "[object ArrayBuffer]";\n }\n}\n',"bindings/Date":"export declare function UTC(\n // NOTE: Using i32 below saves us a f64.convert_s instruction and moves the responsibility for\n // converting the value to the WASM/JS boundary.\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: f64\n): f64;\nexport declare function now(): f64;\n","bindings/Math":"export declare const E: f64;\nexport declare const LN2: f64;\nexport declare const LN10: f64;\nexport declare const LOG2E: f64;\nexport declare const LOG10E: f64;\nexport declare const PI: f64;\nexport declare const SQRT1_2: f64;\nexport declare const SQRT2: f64;\n\nexport declare function abs(x: f64): f64;\nexport declare function acos(x: f64): f64;\nexport declare function acosh(x: f64): f64;\nexport declare function asin(x: f64): f64;\nexport declare function asinh(x: f64): f64;\nexport declare function atan(x: f64): f64;\nexport declare function atan2(y: f64, x: f64): f64;\nexport declare function atanh(x: f64): f64;\nexport declare function cbrt(x: f64): f64;\nexport declare function ceil(x: f64): f64;\nexport declare function clz32(x: f64): f64;\nexport declare function cos(x: f64): f64;\nexport declare function cosh(x: f64): f64;\nexport declare function exp(x: f64): f64;\nexport declare function expm1(x: f64): f64;\nexport declare function floor(x: f64): f64;\nexport declare function fround(x: f64): f32;\nexport declare function hypot(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function imul(a: f64, b: f64): f64;\nexport declare function log(x: f64): f64;\nexport declare function log10(x: f64): f64;\nexport declare function log1p(x: f64): f64;\nexport declare function log2(x: f64): f64;\nexport declare function max(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function min(value1: f64, value2: f64): f64; // TODO: rest\nexport declare function pow(base: f64, exponent: f64): f64;\nexport declare function random(): f64;\nexport declare function round(x: f64): f64;\nexport declare function sign(x: f64): f64;\nexport declare function sin(x: f64): f64;\nexport declare function sinh(x: f64): f64;\nexport declare function sqrt(x: f64): f64;\nexport declare function tan(x: f64): f64;\nexport declare function tanh(x: f64): f64;\nexport declare function trunc(x: f64): f64;\n","bindings/wasi_unstable":"// see: https://wasi.dev\n\n/* tslint:disable:max-line-length */\n\n// helper types to be more explicit\ntype char = u8;\ntype ptr = usize; // all pointers are usize'd\ntype struct = T; // structs are references already in AS\n\n/** Read command-line argument data. */\nexport declare function args_get(\n /** Input: Pointer to a buffer to write the argument pointers. */\n argv: ptr>,\n /** Input: Pointer to a buffer to write the argument string data. */\n argv_buf: ptr\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function args_sizes_get(\n /** Output: Number of arguments. */\n argc: ptr,\n /** Output: Size of the argument string data. */\n argv_buf_size: ptr\n): errno;\n\n/** Return the resolution of a clock. */\nexport declare function clock_res_get(\n /** Input: The clock for which to return the resolution. */\n clock: clockid,\n /** Output: The resolution of the clock. */\n resolution: ptr\n): errno;\n\n/** Return the time value of a clock. */\nexport declare function clock_time_get(\n /** Input: Cock for which to return the time. */\n clock: clockid,\n /** Input: Maximum lag (exclusive) that the returned time value may have, compared to its actual value. */\n precision: timestamp,\n /** Output: Time value of the clock. */\n time: ptr\n): errno;\n\n/** Read environment variable data. */\nexport declare function environ_get(\n /** Input: Pointer to a buffer to write the environment variable pointers. */\n environ: ptr,\n /** Input: Pointer to a buffer to write the environment variable string data. */\n environ_buf: usize\n): errno;\n\n/** Return command-line argument data sizes. */\nexport declare function environ_sizes_get(\n /** Output: The number of environment variables. */\n environ_count: ptr,\n /** Output: The size of the environment variable string data. */\n environ_buf_size: ptr\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_advise(\n /** Input: The file descriptor for the file for which to provide file advisory information. */\n fd: fd,\n /** Input: The offset within the file to which the advisory applies. */\n offset: filesize,\n /** Input: The length of the region to which the advisory applies. */\n len: filesize,\n /** Input: The advice. */\n advice: advice\n): errno;\n\n/** Provide file advisory information on a file descriptor. */\nexport declare function fd_allocate(\n /** Input: The file descriptor for the file in which to allocate space. */\n fd: fd,\n /** Input: The offset at which to start the allocation. */\n offset: filesize,\n /** Input: The length of the area that is allocated. */\n len: filesize\n): errno;\n\n/** Close a file descriptor. */\nexport declare function fd_close(\n /** Input: The file descriptor to close. */\n fd: fd\n): errno;\n\n/** Synchronize the data of a file to disk. */\nexport declare function fd_datasync(\n /** Input: The file descriptor of the file to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Get the attributes of a file descriptor. */\nexport declare function fd_fdstat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file descriptor's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the flags associated with a file descriptor. */\nexport declare function fd_fdstat_set_flags(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the file descriptor flags. */\n flags: fdflags\n): errno;\n\n/** Adjust the rights associated with a file descriptor. */\nexport declare function fd_fdstat_set_rights(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_base: rights,\n /** Input: The desired rights of the file descriptor. */\n fs_rights_inheriting: rights\n): errno;\n\n/** Return the attributes of an open file. */\nexport declare function fd_filestat_get(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros. */\nexport declare function fd_filestat_set_size(\n /** Input: A file descriptor for the file to adjust. */\n fd: fd,\n /** Input: The desired file size. */\n size: filesize\n): errno;\n\n/** Adjust the timestamps of an open file or directory. */\nexport declare function fd_filestat_set_times(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Read from a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pread(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors in which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors in which to store data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to read. */\n offset: filesize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_get(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: The buffer where the description is stored. */\n buf: struct\n): errno;\n\n/** Return a description of the given preopened file descriptor. */\nexport declare function fd_prestat_dir_name(\n /** Input: The file descriptor about which to retrieve information. */\n fd: fd,\n /** Input: Buffer into which to write the preopened directory name. */\n path: ptr,\n /** Input: Length of the buffer into which to write the preopened directory name. */\n path_len: usize\n): errno;\n\n/** Write to a file descriptor, without using and updating the file descriptor's offset. */\nexport declare function fd_pwrite(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Input: The offset within the file at which to write. */\n offset: filesize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/** Read from a file descriptor. */\nexport declare function fd_read(\n /** Input: The file descriptor from which to read data. */\n fd: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n iovs: ptr>,\n /** Input: Length of the list of scatter/gather vectors to which to store data. */\n iovs_len: usize,\n /** Output: The number of bytes read. */\n nread: ptr\n): errno;\n\n/** Read directory entries from a directory. */\nexport declare function fd_readdir(\n /** Input: Directory from which to read the directory entries. */\n fd: fd,\n /** Input: Buffer where directory entries are stored. */\n buf: ptr>,\n /** Input: Length of the buffer where directory entries are stored. */\n buf_len: usize,\n /** Input: Location within the directory to start reading. */\n cookie: dircookie,\n /** Output: Number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached. */\n buf_used: ptr\n): errno;\n\n/** Atomically replace a file descriptor by renumbering another file descriptor. */\nexport declare function fd_renumber(\n /** Input: The file descriptor to renumber. */\n from: fd,\n /** Input: The file descriptor to overwrite. */\n to: fd\n): errno;\n\n/** Move the offset of a file descriptor. */\nexport declare function fd_seek(\n /** Input: The file descriptor to operate on. */\n fd: fd,\n /** Input: The number of bytes to move. */\n offset: filedelta,\n /** Input: The base from which the offset is relative. */\n whence: whence,\n /** Output: The new offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Synchronize the data and metadata of a file to disk. */\nexport declare function fd_sync(\n /** Input: The file descriptor of the file containing the data and metadata to synchronize to disk. */\n fd: fd\n): errno;\n\n/** Return the current offset of a file descriptor. */\nexport declare function fd_tell(\n /** Input: The file descriptor to inspect. */\n fd: fd,\n /** Output: The current offset of the file descriptor, relative to the start of the file. */\n newoffset: ptr\n): errno;\n\n/** Write to a file descriptor. */\nexport declare function fd_write(\n /** Input: The file descriptor to which to write data. */\n fd: fd,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs: ptr>,\n /** Input: List of scatter/gather vectors from which to retrieve data. */\n iovs_len: usize,\n /** Output: The number of bytes written. */\n nwritten: ptr\n): errno;\n\n/* Create a directory. */\nexport declare function path_create_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path at which to create the directory. */\n path: ptr,\n /** Input: The path at which to create the directory. */\n path_len: usize\n): errno;\n\n/** Return the attributes of a file or directory. */\nexport declare function path_filestat_get(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to inspect. */\n path: ptr,\n /** Input: The path of the file or directory to inspect. */\n path_len: usize,\n /** Input: The buffer where the file's attributes are stored. */\n buf: struct\n): errno;\n\n/** Adjust the timestamps of a file or directory. */\nexport declare function path_filestat_set_times(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n flags: lookupflags,\n /** Input: The path of the file or directory to operate on. */\n path: ptr,\n /** Input: The path of the file or directory to operate on. */\n path_len: usize,\n /** Input: The desired values of the data access timestamp. */\n st_atim: timestamp,\n /** Input: The desired values of the data modification timestamp. */\n st_mtim: timestamp,\n /** Input: A bitmask indicating which timestamps to adjust. */\n fstflags: fstflags\n): errno;\n\n/** Create a hard link. */\nexport declare function path_link(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n old_flags: lookupflags,\n /** Input: The source path from which to link. */\n old_path: ptr,\n /** Input: The source path from which to link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path at which to create the hard link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the hard link. */\n new_path_len: usize\n): errno;\n\n/** Open a file or directory. */\nexport declare function path_open(\n /** Input: The working directory at which the resolution of the path starts. */\n dirfd: fd,\n /** Input: Flags determining the method of how the path is resolved. */\n dirflags: lookupflags,\n /** Input: The path of the file or directory to open. */\n path: ptr,\n /** Input: The length of the path of the file or directory to open. */\n path_len: usize,\n /** Input: The method by which to open the file. */\n oflags: oflags,\n /** Input: The initial base rights that apply to operations using the file descriptor itself. */\n fs_rights_base: rights,\n /** Input: The initial inheriting rights that apply to file descriptors derived from it. */\n fs_rights_inheriting: rights,\n /** Input: The initial flags of the file descriptor. */\n fs_flags: fdflags,\n /** Output: The file descriptor of the file that has been opened. */\n fd: ptr\n): errno;\n\n/** Read the contents of a symbolic link. */\nexport declare function path_readlink(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path of the symbolic link from which to read. */\n path: ptr,\n /** Input: The length of the path of the symbolic link from which to read. */\n path_len: usize,\n /** Input: The buffer to which to write the contents of the symbolic link. */\n buf: ptr,\n /** Input: The length of the buffer to which to write the contents of the symbolic link. */\n buf_len: usize,\n /** Output: The number of bytes placed in the buffer. */\n buf_used: ptr\n): errno;\n\n/** Remove a directory. */\nexport declare function path_remove_directory(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a directory to remove. */\n path: ptr,\n /** Input: The length of the path to a directory to remove. */\n path_len: usize\n): errno;\n\n/** Rename a file or directory. */\nexport declare function path_rename(\n /** Input: The working directory at which the resolution of the old path starts. */\n old_fd: fd,\n /** Input: The source path of the file or directory to rename. */\n old_path: ptr,\n /** Input: The length of the source path of the file or directory to rename. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the new path starts. */\n new_fd: fd,\n /** Input: The destination path to which to rename the file or directory. */\n new_path: ptr,\n /** Input: The length of the destination path to which to rename the file or directory. */\n new_path_len: usize\n): errno;\n\n/** Create a symbolic link. */\nexport declare function path_symlink(\n /** Input: The contents of the symbolic link. */\n old_path: ptr,\n /** Input: The length of the contents of the symbolic link. */\n old_path_len: usize,\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The destination path at which to create the symbolic link. */\n new_path: ptr,\n /** Input: The length of the destination path at which to create the symbolic link. */\n new_path_len: usize\n): errno;\n\n/** Unlink a file. */\nexport declare function path_unlink_file(\n /** Input: The working directory at which the resolution of the path starts. */\n fd: fd,\n /** Input: The path to a file to unlink. */\n path: ptr,\n /** Input: The length of the path to a file to unlink. */\n path_len: usize\n): errno;\n\n/** Concurrently poll for the occurrence of a set of events. */\nexport declare function poll_oneoff(\n /** Input: The events to which to subscribe. */\n in_: ptr>,\n /** Input: The events that have occurred. */\n out: ptr>,\n /** Input: Both the number of subscriptions and events. */\n nsubscriptions: usize,\n /** Output: The number of events stored. */\n nevents: ptr\n): errno;\n\n/** Terminate the process normally. An exit code of 0 indicates successful termination of the program. The meanings of other values is dependent on the environment. */\nexport declare function proc_exit(\n /** Input: The exit code returned by the process. */\n rval: u32\n): void;\n\n/** Send a signal to the process of the calling thread. */\nexport declare function proc_raise(\n /** Input: The signal condition to trigger. */\n sig: signal\n): errno;\n\n/** Write high-quality random data into a buffer. */\nexport declare function random_get(\n /** Input: The buffer to fill with random data. */\n buf: usize,\n /** Input: The length of the buffer to fill with random data. */\n buf_len: usize\n): errno;\n\n/** Temporarily yield execution of the calling thread. */\nexport declare function sched_yield(): errno;\n\n/** Receive a message from a socket. */\nexport declare function sock_recv(\n /** Input: The socket on which to receive data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to store data. */\n ri_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to store data. */\n ri_data_len: usize,\n /** Input: Message flags. */\n ri_flags: riflags,\n /** Output: Number of bytes stored in `ri_data`. */\n ro_datalen: ptr,\n /** Output: Message flags. */\n ro_flags: ptr\n): errno;\n\n/** Send a message on a socket. */\nexport declare function sock_send(\n /** Input: The socket on which to send data. */\n sock: fd,\n /** Input: List of scatter/gather vectors to which to retrieve data */\n si_data: ptr>,\n /** Input: The length of the list of scatter/gather vectors to which to retrieve data */\n si_data_len: usize,\n /** Input: Message flags. */\n si_flags: siflags,\n /** Output: Number of bytes transmitted. */\n so_datalen: ptr\n): errno;\n\n/** Shut down socket send and receive channels. */\nexport declare function sock_shutdown(\n /** Input: The socket on which to shutdown channels. */\n sock: fd,\n /** Input: Which channels on the socket to shut down. */\n how: sdflags\n): errno;\n\n// === Types ======================================================================================\n\n/** File or memory access pattern advisory information. */\nexport namespace advice {\n /** The application has no advice to give on its behavior with respect to the specified data. */\n // @ts-ignore: decorator\n @inline\n export const NORMAL: advice = 0;\n /** The application expects to access the specified data sequentially from lower offsets to higher offsets. */\n // @ts-ignore: decorator\n @inline\n export const SEQUENTIAL : advice = 1;\n /** The application expects to access the specified data in a random order. */\n // @ts-ignore: decorator\n @inline\n export const RANDOM: advice = 2;\n /** The application expects to access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const WILLNEED: advice = 3;\n /** The application expects that it will not access the specified data in the near future. */\n // @ts-ignore: decorator\n @inline\n export const DONTNEED: advice = 4;\n /** The application expects to access the specified data once and then not reuse it thereafter. */\n // @ts-ignore: decorator\n @inline\n export const NOREUSE: advice = 5;\n}\nexport type advice = u8;\n\n/** Identifiers for clocks. */\nexport namespace clockid {\n /** The clock measuring real time. Time value zero corresponds with 1970-01-01T00:00:00Z. */\n // @ts-ignore: decorator\n @inline\n export const REALTIME: clockid = 0;\n /** The store-wide monotonic clock. Absolute value has no meaning. */\n // @ts-ignore: decorator\n @inline\n export const MONOTONIC: clockid = 1;\n /** The CPU-time clock associated with the current process. */\n // @ts-ignore: decorator\n @inline\n export const PROCESS_CPUTIME_ID: clockid = 2;\n /** The CPU-time clock associated with the current thread. */\n // @ts-ignore: decorator\n @inline\n export const THREAD_CPUTIME_ID: clockid = 3;\n}\nexport type clockid = u32;\n\n/** Identifier for a device containing a file system. Can be used in combination with `inode` to uniquely identify a file or directory in the filesystem. */\nexport type device = u64;\n\n/** A reference to the offset of a directory entry. */\nexport type dircookie = u64;\n\n/** A directory entry. */\n@unmanaged export class dirent {\n /** The offset of the next directory entry stored in this directory. */\n next: dircookie;\n /** The serial number of the file referred to by this directory entry. */\n ino: inode;\n /** The length of the name of the directory entry. */\n namlen: u32;\n /** The type of the file referred to by this directory entry. */\n type: filetype;\n private __padding0: u16;\n}\n\n/** Error codes returned by functions. */\nexport namespace errno {\n /** No error occurred. System call completed successfully. */\n // @ts-ignore: decorator\n @inline\n export const SUCCESS: errno = 0;\n /** Argument list too long. */\n // @ts-ignore: decorator\n @inline\n export const TOOBIG: errno = 1;\n /** Permission denied. */\n // @ts-ignore: decorator\n @inline\n export const ACCES: errno = 2;\n /** Address in use. */\n // @ts-ignore: decorator\n @inline\n export const ADDRINUSE: errno = 3;\n /** Address not available. */\n // @ts-ignore: decorator\n @inline\n export const ADDRNOTAVAIL: errno = 4;\n /** Address family not supported. */\n // @ts-ignore: decorator\n @inline\n export const AFNOSUPPORT: errno = 5;\n /** Resource unavailable, or operation would block. */\n // @ts-ignore: decorator\n @inline\n export const AGAIN: errno = 6;\n /** Connection already in progress. */\n // @ts-ignore: decorator\n @inline\n export const ALREADY: errno = 7;\n /** Bad file descriptor. */\n // @ts-ignore: decorator\n @inline\n export const BADF: errno = 8;\n /** Bad message. */\n // @ts-ignore: decorator\n @inline\n export const BADMSG: errno = 9;\n /** Device or resource busy. */\n // @ts-ignore: decorator\n @inline\n export const BUSY: errno = 10;\n /** Operation canceled. */\n // @ts-ignore: decorator\n @inline\n export const CANCELED: errno = 11;\n /** No child processes. */\n // @ts-ignore: decorator\n @inline\n export const CHILD: errno = 12;\n /** Connection aborted. */\n // @ts-ignore: decorator\n @inline\n export const CONNABORTED: errno = 13;\n /** Connection refused. */\n // @ts-ignore: decorator\n @inline\n export const CONNREFUSED: errno = 14;\n /** Connection reset. */\n // @ts-ignore: decorator\n @inline\n export const CONNRESET: errno = 15;\n /** Resource deadlock would occur. */\n // @ts-ignore: decorator\n @inline\n export const DEADLK: errno = 16;\n /** Destination address required. */\n // @ts-ignore: decorator\n @inline\n export const DESTADDRREQ: errno = 17;\n /** Mathematics argument out of domain of function. */\n // @ts-ignore: decorator\n @inline\n export const DOM: errno = 18;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const DQUOT: errno = 19;\n /** File exists. */\n // @ts-ignore: decorator\n @inline\n export const EXIST: errno = 20;\n /** Bad address. */\n // @ts-ignore: decorator\n @inline\n export const FAULT: errno = 21;\n /** File too large. */\n // @ts-ignore: decorator\n @inline\n export const FBIG: errno = 22;\n /** Host is unreachable. */\n // @ts-ignore: decorator\n @inline\n export const HOSTUNREACH: errno = 23;\n /** Identifier removed. */\n // @ts-ignore: decorator\n @inline\n export const IDRM: errno = 24;\n /** Illegal byte sequence. */\n // @ts-ignore: decorator\n @inline\n export const ILSEQ: errno = 25;\n /** Operation in progress. */\n // @ts-ignore: decorator\n @inline\n export const INPROGRESS: errno = 26;\n /** Interrupted function. */\n // @ts-ignore: decorator\n @inline\n export const INTR: errno = 27;\n /** Invalid argument. */\n // @ts-ignore: decorator\n @inline\n export const INVAL: errno = 28;\n /** I/O error. */\n // @ts-ignore: decorator\n @inline\n export const IO: errno = 29;\n /** Socket is connected. */\n // @ts-ignore: decorator\n @inline\n export const ISCONN: errno = 30;\n /** Is a directory. */\n // @ts-ignore: decorator\n @inline\n export const ISDIR: errno = 31;\n /** Too many levels of symbolic links. */\n // @ts-ignore: decorator\n @inline\n export const LOOP: errno = 32;\n /** File descriptor value too large. */\n // @ts-ignore: decorator\n @inline\n export const MFILE: errno = 33;\n /** Too many links. */\n // @ts-ignore: decorator\n @inline\n export const MLINK: errno = 34;\n /** Message too large. */\n // @ts-ignore: decorator\n @inline\n export const MSGSIZE: errno = 35;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const MULTIHOP: errno = 36;\n /** Filename too long. */\n // @ts-ignore: decorator\n @inline\n export const NAMETOOLONG: errno = 37;\n /** Network is down. */\n // @ts-ignore: decorator\n @inline\n export const NETDOWN: errno = 38;\n /** Connection aborted by network. */\n // @ts-ignore: decorator\n @inline\n export const NETRESET: errno = 39;\n /** Network unreachable. */\n // @ts-ignore: decorator\n @inline\n export const NETUNREACH: errno = 40;\n /** Too many files open in system. */\n // @ts-ignore: decorator\n @inline\n export const NFILE: errno = 41;\n /** No buffer space available. */\n // @ts-ignore: decorator\n @inline\n export const NOBUFS: errno = 42;\n /** No such device. */\n // @ts-ignore: decorator\n @inline\n export const NODEV: errno = 43;\n /** No such file or directory. */\n // @ts-ignore: decorator\n @inline\n export const NOENT: errno = 44;\n /** Executable file format error. */\n // @ts-ignore: decorator\n @inline\n export const NOEXEC: errno = 45;\n /** No locks available. */\n // @ts-ignore: decorator\n @inline\n export const NOLCK: errno = 46;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const NOLINK: errno = 47;\n /** Not enough space. */\n // @ts-ignore: decorator\n @inline\n export const NOMEM: errno = 48;\n /** No message of the desired type. */\n // @ts-ignore: decorator\n @inline\n export const NOMSG: errno = 49;\n /** Protocol not available. */\n // @ts-ignore: decorator\n @inline\n export const NOPROTOOPT: errno = 50;\n /** No space left on device. */\n // @ts-ignore: decorator\n @inline\n export const NOSPC: errno = 51;\n /** Function not supported. */\n // @ts-ignore: decorator\n @inline\n export const NOSYS: errno = 52;\n /** The socket is not connected. */\n // @ts-ignore: decorator\n @inline\n export const NOTCONN: errno = 53;\n /** Not a directory or a symbolic link to a directory. */\n // @ts-ignore: decorator\n @inline\n export const NOTDIR: errno = 54;\n /** Directory not empty. */\n // @ts-ignore: decorator\n @inline\n export const NOTEMPTY: errno = 55;\n /** State not recoverable. */\n // @ts-ignore: decorator\n @inline\n export const NOTRECOVERABLE: errno = 56;\n /** Not a socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSOCK: errno = 57;\n /** Not supported, or operation not supported on socket. */\n // @ts-ignore: decorator\n @inline\n export const NOTSUP: errno = 58;\n /** Inappropriate I/O control operation. */\n // @ts-ignore: decorator\n @inline\n export const NOTTY: errno = 59;\n /** No such device or address. */\n // @ts-ignore: decorator\n @inline\n export const NXIO: errno = 60;\n /** Value too large to be stored in data type. */\n // @ts-ignore: decorator\n @inline\n export const OVERFLOW: errno = 61;\n /** Previous owner died. */\n // @ts-ignore: decorator\n @inline\n export const OWNERDEAD: errno = 62;\n /** Operation not permitted. */\n // @ts-ignore: decorator\n @inline\n export const PERM: errno = 63;\n /** Broken pipe. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: errno = 64;\n /** Protocol error. */\n // @ts-ignore: decorator\n @inline\n export const PROTO: errno = 65;\n /** Protocol not supported. */\n // @ts-ignore: decorator\n @inline\n export const PROTONOSUPPORT: errno = 66;\n /** Protocol wrong type for socket. */\n // @ts-ignore: decorator\n @inline\n export const PROTOTYPE: errno = 67;\n /** Result too large. */\n // @ts-ignore: decorator\n @inline\n export const RANGE: errno = 68;\n /** Read-only file system. */\n // @ts-ignore: decorator\n @inline\n export const ROFS: errno = 69;\n /** Invalid seek. */\n // @ts-ignore: decorator\n @inline\n export const SPIPE: errno = 70;\n /** No such process. */\n // @ts-ignore: decorator\n @inline\n export const SRCH: errno = 71;\n /** Reserved. */\n // @ts-ignore: decorator\n @inline\n export const STALE: errno = 72;\n /** Connection timed out. */\n // @ts-ignore: decorator\n @inline\n export const TIMEDOUT: errno = 73;\n /** Text file busy. */\n // @ts-ignore: decorator\n @inline\n export const TXTBSY: errno = 74;\n /** Cross-device link. */\n // @ts-ignore: decorator\n @inline\n export const XDEV: errno = 75;\n /** Extension: Capabilities insufficient. */\n // @ts-ignore: decorator\n @inline\n export const NOTCAPABLE: errno = 76;\n}\nexport type errno = u16;\n\n/** An event that occurred. */\n@unmanaged export abstract class event {\n /** User-provided value that got attached to `subscription#userdata`. */\n userdata: userdata;\n /** If non-zero, an error that occurred while processing the subscription request. */\n error: errno;\n /* The type of the event that occurred. */\n type: eventtype;\n private __padding0: u16;\n}\n\n/** An event that occurred when type is `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\n@unmanaged export class rwevent extends event {\n /* The number of bytes available for reading or writing. */\n nbytes: filesize;\n /* The state of the file descriptor. */\n flags: eventrwflags;\n private __padding1: u32;\n}\n\n/** The state of the file descriptor subscribed to with `eventtype.FD_READ` or `eventtype.FD_WRITE`. */\nexport namespace eventrwflags {\n /** The peer of this socket has closed or disconnected. */\n // @ts-ignore: decorator\n @inline\n export const HANGUP: eventrwflags = 1;\n}\nexport type eventrwflags = u16;\n\n/** Type of a subscription to an event or its occurrence. */\nexport namespace eventtype {\n /** The time value of clock has reached the timestamp. */\n // @ts-ignore: decorator\n @inline\n export const CLOCK: eventtype = 0;\n /** File descriptor has data available for reading. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: eventtype = 1;\n /** File descriptor has capacity available for writing */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: eventtype = 2;\n}\nexport type eventtype = u8;\n\n/** Exit code generated by a process when exiting. */\nexport type exitcode = u32;\n\n/** A file descriptor number. */\nexport type fd = u32;\n\n/** File descriptor flags. */\nexport namespace fdflags {\n /** Append mode: Data written to the file is always appended to the file's end. */\n // @ts-ignore: decorator\n @inline\n export const APPEND: fdflags = 1;\n /** Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized. */\n // @ts-ignore: decorator\n @inline\n export const DSYNC: fdflags = 2;\n /** Non-blocking mode. */\n // @ts-ignore: decorator\n @inline\n export const NONBLOCK: fdflags = 4;\n /** Synchronized read I/O operations. */\n // @ts-ignore: decorator\n @inline\n export const RSYNC: fdflags = 8;\n /** Write according to synchronized I/O file integrity completion. */\n // @ts-ignore: decorator\n @inline\n export const SYNC: fdflags = 16;\n}\nexport type fdflags = u16;\n\n/** File descriptor attributes. */\n@unmanaged export class fdstat {\n /** File type. */\n filetype: filetype;\n /** File descriptor flags. */\n flags: fdflags;\n /** Rights that apply to this file descriptor. */\n rights_base: rights;\n /** Maximum set of rights that may be installed on new file descriptors that are created through this file descriptor, e.g., through `path_open`. */\n rights_inheriting: rights;\n}\n\n/** Relative offset within a file. */\nexport type filedelta = i64;\n\n/** Non-negative file size or length of a region within a file. */\nexport type filesize = u64;\n\n/** File attributes. */\n@unmanaged export class filestat {\n /** Device ID of device containing the file. */\n dev: device;\n /** File serial number. */\n ino: inode;\n /** File type. */\n filetype: filetype;\n /** Number of hard links to the file. */\n nlink: linkcount;\n /** For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link. */\n size: filesize;\n /** Last data access timestamp. */\n atim: timestamp;\n /** Last data modification timestamp. */\n mtim: timestamp;\n /** Last file status change timestamp. */\n ctim: timestamp;\n}\n\n/** The type of a file descriptor or file. */\nexport namespace filetype {\n /** The type of the file descriptor or file is unknown or is different from any of the other types specified. */\n // @ts-ignore: decorator\n @inline\n export const UNKNOWN: filetype = 0;\n /** The file descriptor or file refers to a block device inode. */\n // @ts-ignore: decorator\n @inline\n export const BLOCK_DEVICE: filetype = 1;\n /** The file descriptor or file refers to a character device inode. */\n // @ts-ignore: decorator\n @inline\n export const CHARACTER_DEVICE: filetype = 2;\n /** The file descriptor or file refers to a directory inode. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: filetype = 3;\n /** The file descriptor or file refers to a regular file inode. */\n // @ts-ignore: decorator\n @inline\n export const REGULAR_FILE: filetype = 4;\n /** The file descriptor or file refers to a datagram socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_DGRAM: filetype = 5;\n /** The file descriptor or file refers to a byte-stream socket. */\n // @ts-ignore: decorator\n @inline\n export const SOCKET_STREAM: filetype = 6;\n /** The file refers to a symbolic link inode. */\n // @ts-ignore: decorator\n @inline\n export const SYMBOLIC_LINK: filetype = 7;\n}\nexport type filetype = u8;\n\n/** Which file time attributes to adjust. */\nexport namespace fstflags {\n /** Adjust the last data access timestamp to the value stored in `filestat#st_atim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM: fstflags = 1;\n /** Adjust the last data access timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_ATIM_NOW: fstflags = 2;\n /** Adjust the last data modification timestamp to the value stored in `filestat#st_mtim`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM: fstflags = 4;\n /** Adjust the last data modification timestamp to the time of clock `clockid.REALTIME`. */\n // @ts-ignore: decorator\n @inline\n export const SET_MTIM_NOW: fstflags = 8;\n}\nexport type fstflags = u16;\n\n/** File serial number that is unique within its file system. */\nexport type inode = u64;\n\n/** A region of memory for scatter/gather reads. */\n@unmanaged export class iovec {\n /** The address of the buffer to be filled. */\n buf: usize;\n /** The length of the buffer to be filled. */\n buf_len: usize;\n}\n\n/** Number of hard links to an inode. */\nexport type linkcount = u32;\n\n/** Flags determining the method of how paths are resolved. */\nexport namespace lookupflags {\n /** As long as the resolved path corresponds to a symbolic link, it is expanded. */\n // @ts-ignore: decorator\n @inline\n export const SYMLINK_FOLLOW: lookupflags = 1;\n}\nexport type lookupflags = u32;\n\n/** Open flags. */\nexport namespace oflags {\n /** Create file if it does not exist. */\n // @ts-ignore: decorator\n @inline\n export const CREAT: oflags = 1;\n /** Fail if not a directory. */\n // @ts-ignore: decorator\n @inline\n export const DIRECTORY: oflags = 2;\n /** Fail if file already exists. */\n // @ts-ignore: decorator\n @inline\n export const EXCL: oflags = 4;\n /** Truncate file to size 0. */\n // @ts-ignore: decorator\n @inline\n export const TRUNC: oflags = 8;\n}\nexport type oflags = u16;\n\n// TODO: undocumented\nexport namespace preopentype {\n // @ts-ignore: decorator\n @inline\n export const DIR: preopentype = 0;\n}\nexport type preopentype = u8;\n\n// TODO: undocumented\nexport abstract class prestat {\n type: preopentype;\n}\n\n// TODO: undocumented\nexport class dirprestat extends prestat {\n name_len: usize;\n}\n\n/** Flags provided to `sock_recv`. */\nexport namespace riflags {\n /** Returns the message without removing it from the socket's receive queue. */\n // @ts-ignore: decorator\n @inline\n export const PEEK: riflags = 1;\n /** On byte-stream sockets, block until the full amount of data can be returned. */\n // @ts-ignore: decorator\n @inline\n export const WAITALL: riflags = 2;\n}\nexport type riflags = u16;\n\n/** File descriptor rights, determining which actions may be performed. */\nexport namespace rights {\n /** The right to invoke `fd_datasync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_DATASYNC: rights = 1;\n /** The right to invoke `fd_read` and `sock_recv`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READ: rights = 2;\n /** The right to invoke `fd_seek`. This flag implies `rights.FD_TELL`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SEEK: rights = 4;\n /** The right to invoke `fd_fdstat_set_flags`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FDSTAT_SET_FLAGS: rights = 8;\n /** The right to invoke `fd_sync`. */\n // @ts-ignore: decorator\n @inline\n export const FD_SYNC: rights = 16;\n /** The right to invoke `fd_seek` in such a way that the file offset remains unaltered (i.e., `whence.CUR` with offset zero), or to invoke `fd_tell`). */\n // @ts-ignore: decorator\n @inline\n export const FD_TELL: rights = 32;\n /** The right to invoke `fd_write` and `sock_send`. If `rights.FD_SEEK` is set, includes the right to invoke `fd_pwrite`. */\n // @ts-ignore: decorator\n @inline\n export const FD_WRITE: rights = 64;\n /** The right to invoke `fd_advise`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ADVISE: rights = 128;\n /** The right to invoke `fd_allocate`. */\n // @ts-ignore: decorator\n @inline\n export const FD_ALLOCATE: rights = 256;\n /** The right to invoke `path_create_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_DIRECTORY: rights = 512;\n /** If `rights.PATH_OPEN` is set, the right to invoke `path_open` with `oflags.CREAT`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_CREATE_FILE: rights = 1024;\n /** The right to invoke `path_link` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_SOURCE: rights = 2048;\n /** The right to invoke `path_link` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_LINK_TARGET: rights = 4096;\n /** The right to invoke `path_open`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_OPEN: rights = 8192;\n /** The right to invoke `fd_readdir`. */\n // @ts-ignore: decorator\n @inline\n export const FD_READDIR: rights = 16384;\n /** The right to invoke `path_readlink`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_READLINK: rights = 32768;\n /** The right to invoke `path_rename` with the file descriptor as the source directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_SOURCE: rights = 65536;\n /** The right to invoke `path_rename` with the file descriptor as the target directory. */\n // @ts-ignore: decorator\n @inline\n export const PATH_RENAME_TARGET: rights = 131072;\n /** The right to invoke `path_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_GET: rights = 262144;\n /** The right to change a file's size (there is no `path_filestat_set_size`). If `rights.PATH_OPEN` is set, includes the right to invoke `path_open` with `oflags.TRUNC`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_SIZE: rights = 524288;\n /** The right to invoke `path_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_FILESTAT_SET_TIMES: rights = 1048576;\n /** The right to invoke `fd_filestat_get`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_GET: rights = 2097152;\n /** The right to invoke `fd_filestat_set_size`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_SIZE: rights = 4194304;\n /** The right to invoke `fd_filestat_set_times`. */\n // @ts-ignore: decorator\n @inline\n export const FD_FILESTAT_SET_TIMES: rights = 8388608;\n /** The right to invoke `path_symlink`. */\n // @ts-ignore: decorator\n @inline\n export const RIGHT_PATH_SYMLINK: rights = 16777216;\n /** The right to invoke `path_remove_directory`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_REMOVE_DIRECTORY: rights = 33554432;\n /** The right to invoke `path_unlink_file`. */\n // @ts-ignore: decorator\n @inline\n export const PATH_UNLINK_FILE: rights = 67108864;\n /** If `rights.FD_READ` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_READ`. If `rights.FD_WRITE` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype.FD_WRITE`. */\n // @ts-ignore: decorator\n @inline\n export const POLL_FD_READWRITE: rights = 134217728;\n /** The right to invoke `sock_shutdown`. */\n // @ts-ignore: decorator\n @inline\n export const SOCK_SHUTDOWN: rights = 268435456;\n}\nexport type rights = u64;\n\n/** Flags returned by `sock_recv`. */\nexport namespace roflags {\n /** Message data has been truncated. */\n // @ts-ignore: decorator\n @inline\n export const DATA_TRUNCATED: roflags = 1;\n}\nexport type roflags = u16;\n\n/** Which channels on a socket to shut down. */\nexport namespace sdflags {\n /** Disables further receive operations. */\n // @ts-ignore: decorator\n @inline\n export const RD: sdflags = 1;\n /** Disables further send operations. */\n // @ts-ignore: decorator\n @inline\n export const WR: sdflags = 2;\n}\nexport type sdflags = u8;\n\n/** Flags provided to `sock_send`. */\nexport namespace siflags {\n // As there are currently no flags defined, it must be set to zero.\n}\nexport type siflags = u16;\n\n/** Signal condition. */\nexport namespace signal {\n /** Hangup. */\n // @ts-ignore: decorator\n @inline\n export const HUP: signal = 1;\n /** Terminate interrupt signal. */\n // @ts-ignore: decorator\n @inline\n export const INT: signal = 2;\n /** Terminal quit signal. */\n // @ts-ignore: decorator\n @inline\n export const QUIT: signal = 3;\n /** Illegal instruction. */\n // @ts-ignore: decorator\n @inline\n export const ILL: signal = 4;\n /** Trace/breakpoint trap. */\n // @ts-ignore: decorator\n @inline\n export const TRAP: signal = 5;\n /** Process abort signal. */\n // @ts-ignore: decorator\n @inline\n export const ABRT: signal = 6;\n /** Access to an undefined portion of a memory object. */\n // @ts-ignore: decorator\n @inline\n export const BUS: signal = 7;\n /** Erroneous arithmetic operation. */\n // @ts-ignore: decorator\n @inline\n export const FPE: signal = 8;\n /** Kill. */\n // @ts-ignore: decorator\n @inline\n export const KILL: signal = 9;\n /** User-defined signal 1. */\n // @ts-ignore: decorator\n @inline\n export const USR1: signal = 10;\n /** Invalid memory reference. */\n // @ts-ignore: decorator\n @inline\n export const SEGV: signal = 11;\n /** User-defined signal 2. */\n // @ts-ignore: decorator\n @inline\n export const USR2: signal = 12;\n /** Write on a pipe with no one to read it. */\n // @ts-ignore: decorator\n @inline\n export const PIPE: signal = 13;\n /** Alarm clock. */\n // @ts-ignore: decorator\n @inline\n export const ALRM: signal = 14;\n /** Termination signal. */\n // @ts-ignore: decorator\n @inline\n export const TERM: signal = 15;\n /** Child process terminated, stopped, or continued. */\n // @ts-ignore: decorator\n @inline\n export const CHLD: signal = 16;\n /** Continue executing, if stopped. */\n // @ts-ignore: decorator\n @inline\n export const CONT: signal = 17;\n /** Stop executing. */\n // @ts-ignore: decorator\n @inline\n export const STOP: signal = 18;\n /** Terminal stop signal. */\n // @ts-ignore: decorator\n @inline\n export const TSTP: signal = 19;\n /** Background process attempting read. */\n // @ts-ignore: decorator\n @inline\n export const TTIN: signal = 20;\n /** Background process attempting write. */\n // @ts-ignore: decorator\n @inline\n export const TTOU: signal = 21;\n /** High bandwidth data is available at a socket. */\n // @ts-ignore: decorator\n @inline\n export const URG: signal = 22;\n /** CPU time limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XCPU: signal = 23;\n /** File size limit exceeded. */\n // @ts-ignore: decorator\n @inline\n export const XFSZ: signal = 24;\n /** Virtual timer expired. */\n // @ts-ignore: decorator\n @inline\n export const VTALRM: signal = 25;\n // @ts-ignore: decorator\n @inline\n export const PROF: signal = 26;\n // @ts-ignore: decorator\n @inline\n export const WINCH: signal = 27;\n // @ts-ignore: decorator\n @inline\n export const POLL: signal = 28;\n // @ts-ignore: decorator\n @inline\n export const PWR: signal = 29;\n /** Bad system call. */\n // @ts-ignore: decorator\n @inline\n export const SYS: signal = 30;\n}\nexport type signal = u8;\n\n/** Flags determining how to interpret the timestamp provided in `subscription_t::u.clock.timeout. */\nexport namespace subclockflags {\n /** If set, treat the timestamp provided in `clocksubscription` as an absolute timestamp. */\n // @ts-ignore: decorator\n @inline\n export const ABSTIME: subclockflags = 1;\n}\nexport type subclockflags = u16;\n\n/** Subscription to an event. */\n@unmanaged export abstract class subscription {\n /** User-provided value that is attached to the subscription. */\n userdata: userdata;\n /** The type of the event to which to subscribe. */\n type: eventtype;\n private __padding0: u32;\n}\n\n/* Subscription to an event of type `eventtype.CLOCK`.**/\n@unmanaged export class clocksubscription extends subscription {\n /** The user-defined unique identifier of the clock. */\n identifier: userdata;\n /** The clock against which to compare the timestamp. */\n clock_id: clockid;\n /** The absolute or relative timestamp. */\n timeout: timestamp;\n /** The amount of time that the implementation may wait additionally to coalesce with other events. */\n precision: timestamp;\n /** Flags specifying whether the timeout is absolute or relative. */\n flags: subclockflags;\n private __padding1: u32;\n}\n\n/* Subscription to an event of type `eventtype.FD_READ` or `eventtype.FD_WRITE`.**/\n@unmanaged export class fdsubscription extends subscription {\n /** The file descriptor on which to wait for it to become ready for reading or writing. */\n fd: fd;\n}\n\n/** Timestamp in nanoseconds. */\nexport type timestamp = u64;\n\n/** User-provided value that may be attached to objects that is retained when extracted from the implementation. */\nexport type userdata = u64;\n\n/** The position relative to which to set the offset of the file descriptor. */\nexport namespace whence {\n /** Seek relative to current position. */\n // @ts-ignore: decorator\n @inline\n export const CUR: whence = 0;\n /** Seek relative to end-of-file. */\n // @ts-ignore: decorator\n @inline\n export const END: whence = 1;\n /** Seek relative to start-of-file. */\n // @ts-ignore: decorator\n @inline\n export const SET: whence = 2;\n}\nexport type whence = u8;\n","bindings/wasi":'export * from "./wasi_unstable";\n',builtins:'// @ts-ignore: decorator\n@builtin\nexport declare function isInteger(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFloat(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isBoolean(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isSigned(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isReference(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isString(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArray(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isArrayLike(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isFunction(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isNullable(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isDefined(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isConstant(expression: void): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isManaged(value?: T): bool;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isVoid(): boolean;\n\n// @ts-ignore\n@builtin\nexport declare function lengthof(func?: T): i32;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function clz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ctz(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function popcnt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotl(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function rotr(value: T, shift: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function abs(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function max(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function min(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function ceil(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function floor(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function copysign(left: T, right: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function nearest(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function reinterpret(value: number): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sqrt(value: T): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function trunc(value: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function load(offset: usize, immOffset?: usize, immAlign?: usize): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function store(offset: usize, value: void, immOffset?: usize, immAlign?: usize): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function sizeof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function alignof(): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function offsetof(fieldName?: string): usize; // | u32 / u64\n\n// @ts-ignore: decorator\n@builtin\nexport declare function idof(): u32;\n\n// @ts-ignore\n@builtin\nexport declare function nameof(): string;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unreachable(): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function changetype(value: void): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function assert(isTrueish: T, message?: string): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function unchecked(expr: T): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_indirect(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@unsafe @builtin\nexport declare function call_direct(target: void, ...args: void[]): T;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function instantiate(...args: void[]): T;\n\nexport namespace atomic {\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: T, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(ptr: usize, value: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n\n // @ts-ignore: decorator\n @builtin\n export declare function notify(ptr: usize, count: i32): i32;\n}\n\n// @ts-ignore: decorator\n@lazy\nexport const enum AtomicWaitResult {\n OK = 0,\n NOT_EQUAL = 1,\n TIMED_OUT = 2\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8(value: void): i8;\n\nexport namespace i8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i8 = -128;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i8 = 127;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16(value: void): i16;\n\nexport namespace i16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i16 = -32768;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i16 = 32767;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32(value: void): i32;\n\nexport namespace i32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i32 = -2147483648;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i32 = 2147483647;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i32, shift: i32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f32(value: f32): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i32, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64(value: void): i64;\n\nexport namespace i64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: i64 = -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: i64 = 9223372036854775807;\n\n // @ts-ignore: decorator\n @builtin\n export declare function clz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ctz(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function popcnt(value: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotl(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function rotr(value: i64, shift: i64): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_f64(value: f64): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n\n export namespace atomic {\n\n // @ts-ignore: decorator\n @builtin\n export declare function load8_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load16_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load32_u(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store8(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store16(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store32(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: i64, immOffset?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n\n export namespace rmw8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw32 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n\n export namespace rmw {\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function isize(value: void): isize;\n\nexport namespace isize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: isize = sizeof() == sizeof()\n ? -2147483648\n : -9223372036854775808;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: isize = sizeof() == sizeof()\n ? 2147483647\n : 9223372036854775807;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u8(value: void): u8;\n\nexport namespace u8 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u8 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u8 = 255;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u16(value: void): u16;\n\nexport namespace u16 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u16 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u16 = 65535;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u32(value: void): u32;\n\nexport namespace u32 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u32 = 4294967295;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function u64(value: void): u64;\n\nexport namespace u64 {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: u64 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: u64 = 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function usize(value: void): usize;\n\nexport namespace usize {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: usize = 0;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: usize = sizeof() == sizeof()\n ? 4294967295\n : 18446744073709551615;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function bool(value: void): bool;\n\nexport namespace bool {\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE: bool = false;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE: bool = true;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32(value: void): f32;\n\nexport namespace f32 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x34000000); // 0x1p-23f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x00000001); // 0x0.000001p+0f\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7F7FFFFF); // 0x1.fffffep+127f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x00800000); // 0x1p-126f\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f32 = -16777215;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f32 = 16777215;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f32, y: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f32, right: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i32(value: i32): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f32): f32;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f32): f32;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64(value: void): f64;\n\nexport namespace f64 {\n\n // @ts-ignore: decorator\n @lazy\n export const EPSILON = reinterpret(0x3CB0000000000000); // 0x1p-52\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_VALUE = reinterpret(0x0000000000000001); // 0x0.0000000000001p+0\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_VALUE = reinterpret(0x7FEFFFFFFFFFFFFF); // 0x1.fffffffffffffp+1023\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_NORMAL_VALUE = reinterpret(0x0010000000000000); // 0x1p-1022\n\n // @ts-ignore: decorator\n @lazy\n export const MIN_SAFE_INTEGER: f64 = -9007199254740991;\n\n // @ts-ignore: decorator\n @lazy\n export const MAX_SAFE_INTEGER: f64 = 9007199254740991;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ceil(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function copysign(x: f64, y: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function floor(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(left: f64, right: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function nearest(value: f64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function reinterpret_i64(value: i64): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(value: f64): f64;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(value: f64): f64;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function v128(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace v128 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): T;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: T): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128; // except i64\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function and(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function or(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function xor(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function not(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function bitselect(v1: v128, v2: v128, c: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128; // f32, f64 only\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i8x16(\n a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8,\n i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8\n): v128;\n\nexport namespace i8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u8;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i8): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\n\nexport namespace i16x8 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_s(x: v128, idx: u8): i16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane_u(x: v128, idx: u8): u16;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i16): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub_saturate_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\n\nexport namespace i32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_s(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge_u(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f32x4_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f32x4_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function i64x2(a: i64, b: i64): v128;\n\nexport namespace i64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): i64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: i64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shl(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_s(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function shr_u(a: v128, b: i32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function any_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function all_true(a: v128): bool;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_s_f64x2_sat(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function trunc_u_f64x2_sat(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\n\nexport namespace f32x4 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f32;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f32): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i32x4(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i32x4(a: v128): v128;\n}\n\n// @ts-ignore: decorator\n@builtin\nexport declare function f64x2(a: f64, b: f64): v128;\n\nexport namespace f64x2 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function splat(x: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function extract_lane(x: v128, idx: u8): f64;\n\n // @ts-ignore: decorator\n @builtin\n export declare function replace_lane(x: v128, idx: u8, value: f64): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function add(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sub(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function mul(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function div(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function neg(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function min(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function max(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function abs(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function sqrt(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function eq(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ne(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function lt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function le(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function gt(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function ge(a: v128, b: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_s_i64x2(a: v128): v128;\n\n // @ts-ignore: decorator\n @builtin\n export declare function convert_u_i64x2(a: v128): v128;\n}\n\nexport namespace v8x16 {\n\n // @ts-ignore: decorator\n @builtin\n export declare function shuffle(\n a: v128, b: v128,\n l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8,\n l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8\n ): v128;\n}\n\n// @ts-ignore: decorator\n@external("env", "abort")\ndeclare function abort(\n message?: string | null,\n fileName?: string | null,\n lineNumber?: u32,\n columnNumber?: u32\n): void;\n\n// @ts-ignore: decorator\n@external("env", "trace")\ndeclare function trace(\n message: string,\n n?: i32,\n a0?: f64,\n a1?: f64,\n a2?: f64,\n a3?: f64,\n a4?: f64\n): void;\n',compat:"\nexport type ReturnType = returnof;\n",dataview:'import { BLOCK_MAXSIZE } from "./rt/common";\nimport { ArrayBuffer } from "./arraybuffer";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\n\n// TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte\n\nexport class DataView {\n\n private data: ArrayBuffer;\n private dataStart: usize;\n private dataLength: i32;\n\n constructor(\n buffer: ArrayBuffer,\n byteOffset: i32 = 0,\n byteLength: i32 = buffer.byteLength\n ) {\n if (\n i32(byteLength > BLOCK_MAXSIZE) |\n i32(byteOffset + byteLength > buffer.byteLength)\n ) throw new RangeError(E_INVALIDLENGTH);\n this.data = buffer; // retains\n var dataStart = changetype(buffer) + byteOffset;\n this.dataStart = dataStart;\n this.dataLength = byteLength;\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get byteOffset(): i32 {\n return (this.dataStart - changetype(this.data));\n }\n\n get byteLength(): i32 {\n return this.dataLength;\n }\n\n getFloat32(byteOffset: i32, littleEndian: boolean = false): f32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getFloat64(byteOffset: i32, littleEndian: boolean = false): f64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n return littleEndian\n ? load(this.dataStart + byteOffset)\n : reinterpret(\n bswap(\n load(this.dataStart + byteOffset)\n )\n );\n }\n\n getInt8(byteOffset: i32): i8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getInt16(byteOffset: i32, littleEndian: boolean = false): i16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getInt32(byteOffset: i32, littleEndian: boolean = false): i32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint8(byteOffset: i32): u8 {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + byteOffset);\n }\n\n getUint16(byteOffset: i32, littleEndian: boolean = false): u16 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u16 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint32(byteOffset: i32, littleEndian: boolean = false): u32 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: u32 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setFloat32(byteOffset: i32, value: f32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setFloat64(byteOffset: i32, value: f64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n if (littleEndian) store(this.dataStart + byteOffset, value);\n else store(this.dataStart + byteOffset, bswap(reinterpret(value)));\n }\n\n setInt8(byteOffset: i32, value: i8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setInt16(byteOffset: i32, value: i16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setInt32(byteOffset: i32, value: i32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint8(byteOffset: i32, value: u8): void {\n if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, value);\n }\n\n setUint16(byteOffset: i32, value: u16, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 2 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint32(byteOffset: i32, value: u32, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 4 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n // Non-standard additions that make sense in WebAssembly, but won\'t work in JS:\n\n getInt64(byteOffset: i32, littleEndian: boolean = false): i64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result: i64 = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n getUint64(byteOffset: i32, littleEndian: boolean = false): u64 {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n var result = load(this.dataStart + byteOffset);\n return littleEndian ? result : bswap(result);\n }\n\n setInt64(byteOffset: i32, value: i64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n setUint64(byteOffset: i32, value: u64, littleEndian: boolean = false): void {\n if (\n i32(byteOffset < 0) |\n i32(byteOffset + 8 > this.dataLength)\n ) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + byteOffset, littleEndian ? value : bswap(value));\n }\n\n toString(): string {\n return "[object DataView]";\n }\n}\n',date:'import {\n UTC as Date_UTC,\n now as Date_now\n} from "./bindings/Date";\n\nexport class Date {\n\n @inline static UTC(\n year: i32,\n month: i32 = 0,\n day: i32 = 1,\n hour: i32 = 0,\n minute: i32 = 0,\n second: i32 = 0,\n millisecond: i64 = 0\n ): i64 {\n return Date_UTC(year, month, day, hour, minute, second, millisecond);\n }\n\n @inline static now(): i64 {\n return Date_now();\n }\n\n private value: i64;\n\n constructor(value: i64) {\n this.value = value;\n }\n\n getTime(): i64 {\n return this.value;\n }\n\n setTime(value: i64): i64 {\n this.value = value;\n return value;\n }\n}\n',diagnostics:"// @ts-ignore: decorator\n@builtin\nexport declare function ERROR(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function WARNING(message?: string): void;\n\n// @ts-ignore: decorator\n@builtin\nexport declare function INFO(message?: string): void;\n",error:'export class Error {\n\n name: string = "Error";\n stack: string = ""; // TODO\n\n constructor(\n public message: string = ""\n ) {}\n\n toString(): string {\n var message = this.message;\n return message.length\n ? this.name + ": " + message\n : this.name;\n }\n}\n\nexport class RangeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "RangeError";\n }\n}\n\nexport class TypeError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "TypeError";\n }\n}\n\nexport class SyntaxError extends Error {\n constructor(message: string = "") {\n super(message);\n this.name = "SyntaxError";\n }\n}\n',fixedarray:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { idof } from "./builtins";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error";\n\n// NOTE: DO NOT USE YET!\n\n// TODO: FixedArray with S being the static size, i.e. `new FixedArray`.\n// Then hard-wire this special type to the compiler and do static length checks instead :)\n\nexport class FixedArray {\n [key: number]: T;\n\n constructor(length: i32) {\n if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH);\n if (isReference()) {\n if (!isNullable()) {\n if (length) throw new Error(E_HOLEYARRAY);\n }\n }\n var outSize = length << alignof();\n var out = __alloc(outSize, idof>());\n memory.fill(out, 0, outSize);\n return changetype>(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >>> alignof();\n }\n\n @operator("[]") private __get(index: i32): T {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n return this.__unchecked_get(index);\n }\n\n @operator("[]=") private __set(index: i32, value: T): void {\n if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE);\n this.__unchecked_set(index, value);\n }\n\n @operator("{}") private __unchecked_get(index: i32): T {\n return load(changetype(this) + (index << alignof()));\n }\n\n @operator("{}=") private __unchecked_set(index: i32, value: T): void {\n if (isManaged()) {\n let offset = changetype(this) + (index << alignof());\n let oldValue = load(offset);\n if (changetype(value) != oldValue) {\n store(offset, __retain(changetype(value)));\n __release(changetype(oldValue));\n }\n } else {\n store(changetype(this) + (index << alignof()), value);\n }\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n if (isManaged()) {\n let cur = changetype(this);\n let end = cur + changetype(changetype(this) - BLOCK_OVERHEAD).rtSize;\n while (cur < end) {\n let val = load(cur);\n if (val) __visit(val, cookie);\n cur += sizeof();\n }\n }\n }\n}\n',heap:"// @ts-ignore: decorator\n@builtin\nexport declare const __heap_base: usize;\n",iterator:"export abstract class Iterable {\n // ?\n}\n\n@sealed\nexport abstract class Iterator {\n\n // private constructor(iterable: Iterable) {\n // }\n\n // TODO: these need to evaluate the classId at the respective reference in order to obtain the\n // next value, i.e. arrays work differently than maps. we'd then have:\n //\n // ╒═══════════════════ Iterator layout (32-bit) ══════════════════╕\n // 3 2 1\n // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n // ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n // │ index │\n // ├─────────────────────────────────────────────────────────┬───┬─┤\n // │ reference │ 0 │D│\n // └─────────────────────────────────────────────────────────┴───┴─┘\n // D: Done flag\n\n // get value(this: u64): T {\n // ?\n // }\n\n // next(this: u64): Iterator {\n // ?\n // }\n\n done(this: u64): bool {\n return (this & 1);\n }\n}\n",map:'/// \n\nimport { HASH } from "./util/hash";\nimport { E_KEYNOTFOUND } from "util/error";\n\n// A deterministic hash map based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a map entry. */\n@unmanaged class MapEntry {\n key: K;\n value: V;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K/V is <= 32-bits\n const maxkv = sizeof() > sizeof() ? sizeof() : sizeof();\n const align = (maxkv > sizeof() ? maxkv : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Map {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // MapEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() {\n this.clear();\n }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: K, hashCode: u32): MapEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n has(key: K): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n @operator("[]")\n get(key: K): V {\n var entry = this.find(key, HASH(key));\n if (!entry) throw new Error(E_KEYNOTFOUND); // cannot represent `undefined`\n return entry.value;\n }\n\n @operator("[]=")\n set(key: K, value: V): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (entry) {\n if (isManaged()) {\n let oldRef = changetype(entry.value);\n if (changetype(value) != oldRef) {\n entry.value = changetype(__retain(changetype(value)));\n __release(oldRef);\n }\n } else {\n entry.value = value;\n }\n } else {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n let entries = this.entries;\n entry = changetype>(changetype(entries) + this.entriesOffset++ * ENTRY_SIZE());\n // link with the map\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n entry.value = isManaged()\n ? changetype(__retain(changetype(value)))\n : value;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n delete(key: K): bool {\n var entry = this.find(key, HASH(key));\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key));\n if (isManaged()) __release(changetype(entry.value));\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr);\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr);\n newEntry.key = oldEntry.key;\n newEntry.value = oldEntry.value;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n keys(): K[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var keys = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n keys.push(entry.key);\n }\n }\n return keys;\n }\n\n values(): V[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.value);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Map]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged() || isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n if (isManaged()) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n if (isManaged()) {\n let val = changetype(entry.value);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',math:'import * as JSMath from "./bindings/Math";\nexport { JSMath };\n\nimport {\n abs as builtin_abs,\n ceil as builtin_ceil,\n clz as builtin_clz,\n copysign as builtin_copysign,\n floor as builtin_floor,\n max as builtin_max,\n min as builtin_min,\n sqrt as builtin_sqrt,\n trunc as builtin_trunc\n} from "./builtins";\n\n// SUN COPYRIGHT NOTICE\n//\n// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n// Developed at SunPro, a Sun Microsystems, Inc. business.\n// Permission to use, copy, modify, and distribute this software\n// is freely granted, provided that this notice is preserved.\n//\n// Applies to all functions marked with a comment referring here.\n\n// TODO: sin, cos, tan for Math namespace\n\n/** @internal */\nfunction R(z: f64): f64 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3FC5555555555555), // 1.66666666666666657415e-01\n pS1 = reinterpret(0xBFD4D61203EB6F7D), // -3.25565818622400915405e-01\n pS2 = reinterpret(0x3FC9C1550E884455), // 2.01212532134862925881e-01\n pS3 = reinterpret(0xBFA48228B5688F3B), // -4.00555345006794114027e-02\n pS4 = reinterpret(0x3F49EFE07501B288), // 7.91534994289814532176e-04\n pS5 = reinterpret(0x3F023DE10DFDF709), // 3.47933107596021167570e-05\n qS1 = reinterpret(0xC0033A271C8A2D4B), // -2.40339491173441421878e+00\n qS2 = reinterpret(0x40002AE59C598AC8), // 2.02094576023350569471e+00\n qS3 = reinterpret(0xBFE6066C1B8D0159), // -6.88283971605453293030e-01\n qS4 = reinterpret(0x3FB3B8C5B12E9282); // 7.70381505559019352791e-02\n var p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));\n var q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));\n return p / q;\n}\n\n/** @internal */\n// @ts-ignore: decorator\n@inline\nfunction expo2(x: f64): f64 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2.c\n k = 2043,\n kln2 = reinterpret(0x40962066151ADD8B); // 0x1.62066151add8bp+10\n var scale = reinterpret(((0x3FF + k / 2) << 20) << 32);\n return NativeMath.exp(x - kln2) * scale * scale;\n}\n\n/** @internal */\nfunction dtoi32(x: f64): i32 {\n if (ASC_SHRINK_LEVEL > 0) {\n const inv32 = 1.0 / 4294967296;\n return (x - 4294967296 * floor(x * inv32));\n } else {\n let result = 0;\n let u = reinterpret(x);\n let e = (u >> 52) & 0x7ff;\n if (e <= 1023 + 30) {\n result = x;\n } else if (e <= 1023 + 30 + 53) {\n let v = (u & ((1 << 52) - 1)) | (1 << 52);\n v = v << e - 1023 - 52 + 32;\n result = (v >> 32);\n result = select(-result, result, u >> 63);\n }\n return result;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar random_seeded = false;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_64: u64;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state0_32: u32;\n\n// @ts-ignore: decorator\n@lazy\nvar random_state1_32: u32;\n\nfunction murmurHash3(h: u64): u64 { // Force all bits of a hash block to avalanche\n h ^= h >> 33; // see: https://github.com/aappleby/smhasher\n h *= 0xFF51AFD7ED558CCD;\n h ^= h >> 33;\n h *= 0xC4CEB9FE1A85EC53;\n h ^= h >> 33;\n return h;\n}\n\nfunction splitMix32(h: u32): u32 {\n h += 0x6D2B79F5;\n h = (h ^ (h >> 15)) * (h | 1);\n h ^= h + (h ^ (h >> 7)) * (h | 61);\n return h ^ (h >> 14);\n}\n\nexport namespace NativeMath {\n\n // @ts-ignore: decorator\n @lazy\n export const E = reinterpret(0x4005BF0A8B145769); // 2.7182818284590452354\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = reinterpret(0x3FE62E42FEFA39EF); // 0.69314718055994530942\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = reinterpret(0x40026BB1BBB55516); // 2.30258509299404568402\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = reinterpret(0x3FF71547652B82FE); // 1.4426950408889634074\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = reinterpret(0x3FDBCB7B1526E50E); // 0.43429448190325182765\n\n // @ts-ignore: decorator\n @lazy\n export const PI = reinterpret(0x400921FB54442D18); // 3.14159265358979323846\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = reinterpret(0x3FE6A09E667F3BCD); // 0.70710678118654752440\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = reinterpret(0x3FF6A09E667F3BCD); // 1.41421356237309504880\n\n // @ts-ignore: decorator\n @inline export function abs(x: f64): f64 {\n return builtin_abs(x);\n }\n\n export function acos(x: f64): f64 { // see: musl/src/math/acos.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix <= 0x3C600000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * R(x * x)));\n }\n var s: f64, w: f64, z: f64;\n if (hx >> 31) {\n // z = (1.0 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = R(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1.0 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n var df = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n var c = (z - df * df) / (s + df);\n w = R(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f64): f64 { // see: musl/src/math/acosh.c\n const s = reinterpret(0x3FE62E42FEFA39EF);\n var e = reinterpret(x) >> 52 & 0x7FF;\n if (e < 0x3FF + 1) return log1p(x - 1 + builtin_sqrt((x - 1) * (x - 1) + 2 * (x - 1)));\n if (e < 0x3FF + 26) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f64): f64 { // see: musl/src/math/asin.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n pio2_lo = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n Ox1p_120f = reinterpret(0x03800000);\n var hx = (reinterpret(x) >> 32);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3FF00000) {\n let lx = reinterpret(x);\n if ((ix - 0x3FF00000 | lx) == 0) return x * pio2_hi + Ox1p_120f;\n return 0 / (x - x);\n }\n if (ix < 0x3FE00000) {\n if (ix < 0x3E500000 && ix >= 0x00100000) return x;\n return x + x * R(x * x);\n }\n // var z = (1.0 - builtin_abs(x)) * 0.5;\n var z = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z);\n var r = R(z);\n if (ix >= 0x3FEF3333) x = pio2_hi - (2 * (s + s * r) - pio2_lo);\n else {\n let f = reinterpret(reinterpret(s) & 0xFFFFFFFF00000000);\n let c = (z - f * f) / (s + f);\n x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));\n }\n if (hx >> 31) return -x;\n return x;\n }\n\n export function asinh(x: f64): f64 { // see: musl/src/math/asinh.c\n const c = reinterpret(0x3FE62E42FEFA39EF); // 0.693147180559945309417232121458176568\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var y = reinterpret(u & 0x7FFFFFFFFFFFFFFF);\n if (e >= 0x3FF + 26) y = log(y) + c;\n else if (e >= 0x3FF + 1) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (e >= 0x3FF - 26) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f64): f64 { // see musl/src/math/atan.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3FDDAC670561BB4F), // 4.63647609000806093515e-01\n atanhi1 = reinterpret(0x3FE921FB54442D18), // 7.85398163397448278999e-01\n atanhi2 = reinterpret(0x3FEF730BD281F69B), // 9.82793723247329054082e-01\n atanhi3 = reinterpret(0x3FF921FB54442D18), // 1.57079632679489655800e+00\n atanlo0 = reinterpret(0x3C7A2B7F222F65E2), // 2.26987774529616870924e-17\n atanlo1 = reinterpret(0x3C81A62633145C07), // 3.06161699786838301793e-17\n atanlo2 = reinterpret(0x3C7007887AF0CBBD), // 1.39033110312309984516e-17\n atanlo3 = reinterpret(0x3C91A62633145C07), // 6.12323399573676603587e-17\n aT0 = reinterpret(0x3FD555555555550D), // 3.33333333333329318027e-01\n aT1 = reinterpret(0xBFC999999998EBC4), // -1.99999999998764832476e-01\n aT2 = reinterpret(0x3FC24924920083FF), // 1.42857142725034663711e-01\n aT3 = reinterpret(0xBFBC71C6FE231671), // -1.11111104054623557880e-01,\n aT4 = reinterpret(0x3FB745CDC54C206E), // 9.09088713343650656196e-02\n aT5 = reinterpret(0xBFB3B0F2AF749A6D), // -7.69187620504482999495e-02\n aT6 = reinterpret(0x3FB10D66A0D03D51), // 6.66107313738753120669e-02\n aT7 = reinterpret(0xBFADDE2D52DEFD9A), // -5.83357013379057348645e-02\n aT8 = reinterpret(0x3FA97B4B24760DEB), // 4.97687799461593236017e-02\n aT9 = reinterpret(0xBFA2B4442C6A6C2F), // -3.65315727442169155270e-02\n aT10 = reinterpret(0x3F90AD3AE322DA11), // 1.62858201153657823623e-02\n Ox1p_120f = reinterpret(0x03800000);\n var ix = (reinterpret(x) >> 32);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f64;\n if (ix >= 0x44100000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3FDC0000) {\n if (ix < 0x3E400000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3FF30000) {\n if (ix < 0x3FE60000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x40038000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * (aT4 + w * (aT6 + w * (aT8 + w * aT10)))));\n var s2 = w * (aT1 + w * (aT3 + w * (aT5 + w * (aT7 + w * aT9))));\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f64): f64 { // see: musl/src/math/atanh.c\n var u = reinterpret(x);\n var e = u >> 52 & 0x7FF;\n var s = u >> 63;\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n if (e < 0x3FF - 1) {\n if (e >= 0x3FF - 32) y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));\n } else {\n y = 0.5 * log1p(2 * (y / (1 - y)));\n }\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f64, x: f64): f64 { // see: musl/src/math/atan2.c and SUN COPYRIGHT NOTICE above\n const pi_lo = reinterpret(0x3CA1A62633145C07); // 1.2246467991473531772E-16\n if (isNaN(x) || isNaN(y)) return x + y;\n var u = reinterpret(x);\n var ix = (u >> 32);\n var lx = u;\n u = reinterpret(y);\n var iy = (u >> 32);\n var ly = u;\n if ((ix - 0x3FF00000 | lx) == 0) return atan(y);\n var m = ((iy >> 31) & 1) | ((ix >> 30) & 2);\n ix = ix & 0x7FFFFFFF;\n iy = iy & 0x7FFFFFFF;\n if ((iy | ly) == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n if ((ix | lx) == 0) return m & 1 ? -PI / 2 : PI / 2;\n if (ix == 0x7FF00000) {\n if (iy == 0x7FF00000) {\n switch (m) {\n case 0: return PI / 4;\n case 1: return -PI / 4;\n case 2: return 3 * PI / 4;\n case 3: return -3 * PI / 4;\n }\n } else {\n switch (m) {\n case 0: return 0.0;\n case 1: return -0.0;\n case 2: return PI;\n case 3: return -PI;\n }\n }\n }\n var z: f64;\n if (ix + (64 << 20) < iy || iy == 0x7FF00000) return m & 1 ? -PI / 2 : PI / 2;\n if ((m & 2) && iy + (64 << 20) < ix) z = 0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return PI - (z - pi_lo);\n case 3: return (z - pi_lo) - PI;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f64): f64 { // see: musl/src/math/cbrt.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 715094163,\n B2 = 696219795,\n P0 = reinterpret(0x3FFE03E60F61E692), // 1.87595182427177009643\n P1 = reinterpret(0xBFFE28E092F02420), // -1.88497979543377169875\n P2 = reinterpret(0x3FF9F1604A49D6C2), // 1.621429720105354466140\n P3 = reinterpret(0xBFE844CBBEE751D9), // -0.758397934778766047437\n P4 = reinterpret(0x3FC2B000D4E4EDD7), // 0.145996192886612446982\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32) & 0x7FFFFFFF;\n if (hx >= 0x7FF00000) return x + x;\n if (hx < 0x00100000) {\n u = reinterpret(x * Ox1p54);\n hx = (u >> 32) & 0x7FFFFFFF;\n if (hx == 0) return x;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 1 << 63;\n u |= hx << 32;\n var t = reinterpret(u);\n var r = (t * t) * (t / x);\n t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));\n t = reinterpret((reinterpret(t) + 0x80000000) & 0xFFFFFFFFC0000000);\n var s = t * t;\n r = x / s;\n r = (r - t) / (2 * t + r);\n t = t + t * r;\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f64): f64 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f64): f64 {\n if (!isFinite(x)) return 32;\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f64): f64 { // TODO\n return JSMath.cos(x);\n }\n\n export function cosh(x: f64): f64 { // see: musl/src/math/cosh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n x = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w < 0x3FE62E42) {\n if (w < 0x3FF00000 - (26 << 20)) return 1;\n t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (w < 0x40862E42) {\n t = exp(x);\n return 0.5 * (t + 1 / t);\n }\n t = expo2(x);\n return t;\n }\n\n export function exp(x: f64): f64 { // see: musl/src/math/exp.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n overflow = reinterpret(0x40862E42FEFA39EF), // 709.782712893383973096\n underflow = reinterpret(0xC0874910D52D3051), // -745.13321910194110842\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var hx = (reinterpret(x) >> 32);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x4086232B) {\n if (isNaN(x)) return x;\n if (x > overflow) return x * Ox1p1023;\n if (x < underflow) return 0;\n }\n var hi: f64, lo: f64 = 0;\n var k = 0;\n if (hx > 0x3FD62E42) {\n if (hx >= 0x3FF0A2B2) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x3E300000) {\n hi = x;\n } else return 1.0 + x;\n var xs = x * x;\n // var c = x - xp2 * (P1 + xp2 * (P2 + xp2 * (P3 + xp2 * (P4 + xp2 * P5))));\n var xq = xs * xs;\n var c = x - (xs * P1 + xq * ((P2 + xs * P3) + xq * (P4 + xs * P5)));\n var y = 1.0 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f64): f64 { // see: musl/src/math/expm1.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x40862E42FEFA39EF), // 7.09782712893383973096e+02\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n invln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n Q1 = reinterpret(0xBFA11111111110F4), // -3.33333333333331316428e-02\n Q2 = reinterpret(0x3F5A01A019FE5585), // 1.58730158725481460165e-03\n Q3 = reinterpret(0xBF14CE199EAADBB7), // -7.93650757867487942473e-05\n Q4 = reinterpret(0x3ED0CFCA86E65239), // 4.00821782732936239552e-06\n Q5 = reinterpret(0xBE8AFDB76E09C32D), // -2.01099218183624371326e-07\n Ox1p1023 = reinterpret(0x7FE0000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32 & 0x7FFFFFFF);\n var k = 0, sign_ = (u >> 63);\n if (hx >= 0x4043687A) {\n if (isNaN(x)) return x;\n if (sign_) return -1;\n if (x > o_threshold) return x * Ox1p1023;\n }\n var c = 0.0, t: f64;\n if (hx > 0x3FD62E42) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3FF0A2B2\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x3C900000) return x;\n var hfx = 0.5 * x;\n var hxs = x * hfx;\n // var r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));\n var hxq = hxs * hxs;\n var r1 = (1.0 + hxs * Q1) + hxq * ((Q2 + hxs * Q3) + hxq * (Q4 + hxs * Q5));\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x3FF + k) << 52;\n var twopk = reinterpret(u);\n var y: f64;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 1024) y = y * 2.0 * Ox1p1023;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x3FF - k) << 52;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f64): f64 {\n return builtin_floor(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f64): f64 {\n return x;\n }\n\n export function hypot(x: f64, y: f64): f64 { // see: musl/src/math/hypot.c\n const\n SPLIT = reinterpret(0x41A0000000000000) + 1, // 0x1p27 + 1\n Ox1p700 = reinterpret(0x6BB0000000000000),\n Ox1p_700 = reinterpret(0x1430000000000000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFFFFFFFFFF;\n uy &= 0x7FFFFFFFFFFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n var ex = (ux >> 52);\n var ey = (uy >> 52);\n y = reinterpret(uy);\n if (ey == 0x7FF) return y;\n x = reinterpret(ux);\n if (ex == 0x7FF || uy == 0) return x;\n if (ex - ey > 64) return x + y;\n var z = 1.0;\n if (ex > 0x3FF + 510) {\n z = Ox1p700;\n x *= Ox1p_700;\n y *= Ox1p_700;\n } else if (ey < 0x3FF - 450) {\n z = Ox1p_700;\n x *= Ox1p700;\n y *= Ox1p700;\n }\n var c = x * SPLIT;\n var h = x - c + c;\n var l = x - h;\n var hx = x * x;\n var lx = h * h - hx + (2 * h + l) * l;\n c = y * SPLIT;\n h = y - c + c;\n l = y - h;\n var hy = y * y;\n var ly = h * h - hy + (2 * h + l) * l;\n return z * builtin_sqrt(ly + lx + hy + hx);\n }\n\n export function imul(x: f64, y: f64): f64 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return dtoi32(x) * dtoi32(y);\n }\n\n export function log(x: f64): f64 { // see: musl/src/math/log.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f64): f64 { // see: musl/src/math/log10.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3FDBCB7B15200000), // 4.34294481878168880939e-01\n ivln10lo = reinterpret(0x3DBB9438CA9AADD5), // 2.50829467116452752298e-11\n log10_2hi = reinterpret(0x3FD34413509F6000), // 3.01029995663611771306e-01\n log10_2lo = reinterpret(0x3D59FEF311F12B36), // 3.69423907715893078616e-13\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln10hi;\n var dk = k;\n var y = dk * log10_2hi;\n var val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n return val_lo + w;\n }\n\n export function log1p(x: f64): f64 { // see: musl/src/math/log1p.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3FE62E42FEE00000), // 6.93147180369123816490e-01\n ln2_lo = reinterpret(0x3DEA39EF35793C76), // 1.90821492927058770002e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244); // 1.479819860511658591e-01\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 1;\n var c = 0.0, f = 0.0;\n if (hx < 0x3FDA827A || (hx >> 31)) {\n if (hx >= 0xBFF00000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (hx << 1 < 0x3CA00000 << 1) return x;\n if (hx <= 0xBFD2BEC4) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (hx >= 0x7FF00000) return x;\n if (k) {\n u = reinterpret(1 + x);\n let hu = (u >> 32);\n hu += 0x3FF00000 - 0x3FE6A09E;\n k = (hu >> 20) - 0x3FF;\n if (k < 54) {\n let uf = reinterpret(u);\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n hu = (hu & 0x000FFFFF) + 0x3FE6A09E;\n u = hu << 32 | (u & 0xFFFFFFFF);\n f = reinterpret(u) - 1;\n }\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f64): f64 { // see: musl/src/math/log2.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FF7154765200000), // 1.44269504072144627571e+00\n ivln2lo = reinterpret(0x3DE705FC2EEFA200), // 1.67517131648865118353e-10\n Lg1 = reinterpret(0x3FE5555555555593), // 6.666666666666735130e-01\n Lg2 = reinterpret(0x3FD999999997FA04), // 3.999999999940941908e-01\n Lg3 = reinterpret(0x3FD2492494229359), // 2.857142874366239149e-01\n Lg4 = reinterpret(0x3FCC71C51D8E78AF), // 2.222219843214978396e-01\n Lg5 = reinterpret(0x3FC7466496CB03DE), // 1.818357216161805012e-01\n Lg6 = reinterpret(0x3FC39A09D078C69F), // 1.531383769920937332e-01\n Lg7 = reinterpret(0x3FC2F112DF3E5244), // 1.479819860511658591e-01\n Ox1p54 = reinterpret(0x4350000000000000);\n var u = reinterpret(x);\n var hx = (u >> 32);\n var k = 0;\n if (hx < 0x00100000 || (hx >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (hx >> 31) return (x - x) / 0.0;\n k -= 54;\n x *= Ox1p54;\n u = reinterpret(x);\n hx = (u >> 32);\n } else if (hx >= 0x7FF00000) return x;\n else if (hx == 0x3FF00000 && u << 32 == 0) return 0;\n hx += 0x3FF00000 - 0x3FE6A09E;\n k += (hx >> 20) - 0x3FF;\n hx = (hx & 0x000FFFFF) + 0x3FE6A09E;\n u = hx << 32 | (u & 0xFFFFFFFF);\n x = reinterpret(u);\n var f = x - 1.0;\n var hfsq = 0.5 * f * f;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * (Lg4 + w * Lg6));\n var t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));\n var r = t2 + t1;\n var hi = f - hfsq;\n u = reinterpret(hi);\n u &= 0xFFFFFFFF00000000;\n hi = reinterpret(u);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var val_hi = hi * ivln2hi;\n var val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;\n var y = k;\n w = y + val_hi;\n val_lo += (y - w) + val_hi;\n val_hi = w;\n return val_lo + val_hi;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f64, value2: f64): f64 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f64, value2: f64): f64 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f64, y: f64): f64 { // see: musl/src/math/pow.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3FE2B80340000000), // 5.84962487220764160156e-01\n dp_l1 = reinterpret(0x3E4CFDEB43CFD006), // 1.35003920212974897128e-08\n two53 = reinterpret(0x4340000000000000), // 9007199254740992.0\n huge = reinterpret(0x7E37E43C8800759C), // 1e+300\n tiny = reinterpret(0x01A56E1FC2F8F359), // 1e-300\n L1 = reinterpret(0x3FE3333333333303), // 5.99999999999994648725e-01\n L2 = reinterpret(0x3FDB6DB6DB6FABFF), // 4.28571428578550184252e-01\n L3 = reinterpret(0x3FD55555518F264D), // 3.33333329818377432918e-01\n L4 = reinterpret(0x3FD17460A91D4101), // 2.72728123808534006489e-01\n L5 = reinterpret(0x3FCD864A93C9DB65), // 2.30660745775561754067e-01\n L6 = reinterpret(0x3FCA7E284A454EEF), // 2.06975017800338417784e-01\n P1 = reinterpret(0x3FC555555555553E), // 1.66666666666666019037e-01\n P2 = reinterpret(0xBF66C16C16BEBD93), // -2.77777777770155933842e-03\n P3 = reinterpret(0x3F11566AAF25DE2C), // 6.61375632143793436117e-05\n P4 = reinterpret(0xBEBBBD41C5D26BF1), // -1.65339022054652515390e-06\n P5 = reinterpret(0x3E66376972BEA4D0), // 4.13813679705723846039e-08\n lg2 = reinterpret(0x3FE62E42FEFA39EF), // 6.93147180559945286227e-01\n lg2_h = reinterpret(0x3FE62E4300000000), // 6.93147182464599609375e-01\n lg2_l = reinterpret(0xBE205C610CA86C39), // -1.90465429995776804525e-09\n ovt = reinterpret(0x3C971547652B82FE), // 8.0085662595372944372e-017\n cp = reinterpret(0x3FEEC709DC3A03FD), // 9.61796693925975554329e-01\n cp_h = reinterpret(0x3FEEC709E0000000), // 9.61796700954437255859e-01\n cp_l = reinterpret(0xBE3E2FE0145B01F5), // -7.02846165095275826516e-09\n ivln2 = reinterpret(0x3FF71547652B82FE), // 1.44269504088896338700e+00\n ivln2_h = reinterpret(0x3FF7154760000000), // 1.44269502162933349609e+00\n ivln2_l = reinterpret(0x3E54AE0BF85DDF44), // 1.92596299112661746887e-08\n inv3 = reinterpret(0x3FD5555555555555); // 0.3333333333333333333333\n var u_ = reinterpret(x);\n var hx = (u_ >> 32);\n var lx = u_;\n u_ = reinterpret(y);\n var hy = (u_ >> 32);\n var ly = u_;\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if ((iy | ly) == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3FF00000 && lx == 0) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if ( // NaN if either arg is NaN\n ix > 0x7FF00000 || (ix == 0x7FF00000 && lx != 0) ||\n iy > 0x7FF00000 || (iy == 0x7FF00000 && ly != 0)\n ) return x + y;\n var yisint = 0, k: i32;\n if (hx < 0) {\n if (iy >= 0x43400000) yisint = 2;\n else if (iy >= 0x3FF00000) {\n k = (iy >> 20) - 0x3FF;\n let kcond = k > 20;\n let offset = select(52, 20, kcond) - k;\n let Ly = select(ly, iy, kcond);\n let jj = Ly >> offset;\n if ((jj << offset) == Ly) yisint = 2 - (jj & 1);\n }\n }\n if (ly == 0) {\n if (iy == 0x7FF00000) { // y is +-inf\n if (((ix - 0x3FF00000) | lx) == 0) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix >= 0x3FF00000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3FF00000) {\n if (hy >= 0) return x;\n return 1 / x;\n }\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3FE00000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n }\n var ax = builtin_abs(x), z: f64;\n if (lx == 0) {\n if (ix == 0 || ix == 0x7FF00000 || ix == 0x3FF00000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3FF00000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n } else if (yisint == 1) z = -z;\n }\n return z;\n }\n }\n var s = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) s = -1.0;\n }\n var t1: f64, t2: f64, p_h: f64, p_l: f64, r: f64, t: f64, u: f64, v: f64, w: f64;\n var j: i32, n: i32;\n if (iy > 0x41E00000) {\n if (iy > 0x43F00000) {\n if (ix <= 0x3FEFFFFF) return hy < 0 ? huge * huge : tiny * tiny;\n if (ix >= 0x3FF00000) return hy > 0 ? huge * huge : tiny * tiny;\n }\n if (ix < 0x3FEFFFFF) return hy < 0 ? s * huge * huge : s * tiny * tiny;\n if (ix > 0x3FF00000) return hy > 0 ? s * huge * huge : s * tiny * tiny;\n t = ax - 1.0;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = v - (t1 - u);\n } else {\n let ss: f64, s2: f64, s_h: f64, s_l: f64, t_h: f64, t_l: f64;\n n = 0;\n if (ix < 0x00100000) {\n ax *= two53;\n n -= 53;\n ix = (reinterpret(ax) >> 32);\n }\n n += (ix >> 20) - 0x3FF;\n j = ix & 0x000FFFFF;\n ix = j | 0x3FF00000;\n if (j <= 0x3988E) k = 0;\n else if (j < 0xBB67A) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00100000;\n }\n ax = reinterpret(reinterpret(ax) & 0xFFFFFFFF | (ix << 32));\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n ss = u * v;\n s_h = ss;\n s_h = reinterpret(reinterpret(s_h) & 0xFFFFFFFF00000000);\n t_h = reinterpret((((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18)) << 32);\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = ss * ss;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + ss);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n t_h = reinterpret(reinterpret(t_h) & 0xFFFFFFFF00000000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * ss;\n p_h = u + v;\n p_h = reinterpret(reinterpret(p_h) & 0xFFFFFFFF00000000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = ((z_h + z_l) + dp_h) + t;\n t1 = reinterpret(reinterpret(t1) & 0xFFFFFFFF00000000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n var y1 = y;\n y1 = reinterpret(reinterpret(y1) & 0xFFFFFFFF00000000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n u_ = reinterpret(z);\n j = (u_ >> 32);\n var i = u_;\n if (j >= 0x40900000) {\n if (((j - 0x40900000) | i) != 0) return s * huge * huge;\n if (p_l + ovt > z - p_h) return s * huge * huge;\n } else if ((j & 0x7FFFFFFF) >= 0x4090CC00) {\n if (((j - 0xC090CC00) | i) != 0) return s * tiny * tiny;\n if (p_l <= z - p_h) return s * tiny * tiny;\n }\n i = j & 0x7FFFFFFF;\n k = (i >> 20) - 0x3FF;\n n = 0;\n if (i > 0x3FE00000) {\n n = j + (0x00100000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 20) - 0x3FF;\n t = 0.0;\n t = reinterpret((n & ~(0x000FFFFF >> k)) << 32);\n n = ((n & 0x000FFFFF) | 0x00100000) >> (20 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n t = reinterpret(reinterpret(t) & 0xFFFFFFFF00000000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = (reinterpret(z) >> 32);\n j += n << 20;\n if ((j >> 20) <= 0) z = scalbn(z, n);\n else z = reinterpret(reinterpret(z) & 0xFFFFFFFF | (j << 32));\n return s * z;\n }\n\n export function seedRandom(value: i64): void {\n assert(value);\n random_seeded = true;\n random_state0_64 = murmurHash3(value);\n random_state1_64 = murmurHash3(~random_state0_64);\n random_state0_32 = splitMix32(value);\n random_state1_32 = splitMix32(random_state0_32);\n }\n\n export function random(): f64 { // see: v8/src/base/random-number-generator.cc\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n var s1 = random_state0_64;\n var s0 = random_state1_64;\n random_state0_64 = s0;\n s1 ^= s1 << 23;\n s1 ^= s1 >> 17;\n s1 ^= s0;\n s1 ^= s0 >> 26;\n random_state1_64 = s1;\n var r = ((s0 + s1) & 0x000FFFFFFFFFFFFF) | 0x3FF0000000000000;\n return reinterpret(r) - 1;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f64): f64 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f64): f64 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f64): bool {\n // In ECMAScript all NaN values are indistinguishable from each other\n // so we need handle NaN and negative NaN in similar way\n return ((reinterpret(x) >>> 63) & i32(x == x));\n }\n\n export function sin(x: f64): f64 { // TODO\n return JSMath.sin(x);\n }\n\n export function sinh(x: f64): f64 { // see: musl/src/math/sinh.c\n var u = reinterpret(x) & 0x7FFFFFFFFFFFFFFF;\n var absx = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n var h = builtin_copysign(0.5, x);\n if (w < 0x40862E42) {\n t = expm1(absx);\n if (w < 0x3FF00000) {\n if (w < 0x3FF00000 - (26 << 20)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f64): f64 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f64): f64 { // TODO\n return JSMath.tan(x);\n }\n\n export function tanh(x: f64): f64 { // see: musl/src/math/tanh.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFFFFFFFFFF;\n var y = reinterpret(u);\n var w = (u >> 32);\n var t: f64;\n if (w > 0x3FE193EA) {\n if (w > 0x40340000) {\n t = 1 - 0 / y;\n } else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (w > 0x3FD058AE) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (w >= 0x00100000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f64): f64 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f64, n: i32): f64 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbn.c\n const\n Ox1p53 = reinterpret(0x4340000000000000),\n Ox1p1023 = reinterpret(0x7FE0000000000000),\n Ox1p_1022 = reinterpret(0x0010000000000000);\n var y = x;\n if (n > 1023) {\n y *= Ox1p1023;\n n -= 1023;\n if (n > 1023) {\n y *= Ox1p1023;\n n = builtin_min(n - 1023, 1023);\n }\n } else if (n < -1022) {\n /* make sure final n < -53 to avoid double\n rounding in the subnormal range */\n y *= Ox1p_1022 * Ox1p53;\n n += 1022 - 53;\n if (n < -1022) {\n y *= Ox1p_1022 * Ox1p53;\n n = builtin_max(n + 1022 - 53, -1022);\n }\n }\n return y * reinterpret((0x3FF + n) << 52);\n }\n\n export function mod(x: f64, y: f64): f64 { // see: musl/src/math/fmod.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = ux >> 63;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 12);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 12;\n ux |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 52); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 11);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 52;\n ux |= ex << 52;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx << 63;\n return reinterpret(ux);\n }\n\n export function rem(x: f64, y: f64): f64 { // see: musl/src/math/remquo.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 52 & 0x7FF);\n var ey = (uy >> 52 & 0x7FF);\n var sx = (ux >> 63);\n if (uy << 1 == 0 || ex == 0x7FF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n if (ux << 1 == 0) return x;\n var uxi = ux;\n if (!ex) {\n ex -= builtin_clz(uxi << 12);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 12;\n uxi |= 1 << 52;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 12);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 12;\n uy |= 1 << 52;\n }\n var q: u32 = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -60;\n else {\n let shift = builtin_clz(uxi << 11);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end:\n if (ex > 0) {\n uxi -= 1 << 52;\n uxi |= ex << 52;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // ++q;\n }\n return sx ? -x : x;\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar rempio2f_y: f64;\n\n// @ts-ignore: decorator\n@lazy\nconst PIO2_TABLE: u64[] = [\n 0xA2F9836E4E441529,\n 0xFC2757D1F534DDC0,\n 0xDB6295993C439041,\n 0xFE5163ABDEBBC561\n];\n\nfunction Rf(z: f32): f32 { // Rational approximation of (asin(x)-x)/x^3\n const // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n pS0 = reinterpret(0x3E2AAA75), // 1.6666586697e-01f\n pS1 = reinterpret(0xBD2F13BA), // -4.2743422091e-02f\n pS2 = reinterpret(0xBC0DD36B), // -8.6563630030e-03f\n qS1 = reinterpret(0xBF34E5AE); // -7.0662963390e-01f\n var p = z * (pS0 + z * (pS1 + z * pS2));\n var q: f32 = 1 + z * qS1;\n return p / q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction expo2f(x: f32): f32 { // exp(x)/2 for x >= log(DBL_MAX)\n const // see: musl/src/math/__expo2f.c\n k = 235,\n kln2 = reinterpret(0x4322E3BC); // 0x1.45c778p+7f\n var scale = reinterpret((0x7F + (k >> 1)) << 23);\n return NativeMathf.exp(x - kln2) * scale * scale;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction pio2_large_quot(x: f32, u: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const coeff = reinterpret(0x3BF921FB54442D18); // π * 0x1p-65 = 8.51530395021638647334e-20\n const bits = PIO2_TABLE;\n\n var offset = (u >> 23) - 152;\n var index = offset >> 6;\n var shift = offset & 63;\n\n var b0 = unchecked(bits[index + 0]);\n var b1 = unchecked(bits[index + 1]);\n var lo: u64;\n\n if (shift > 32) {\n let b2 = unchecked(bits[index + 2]);\n lo = b2 >> (96 - shift);\n lo |= b1 << (shift - 32);\n } else {\n lo = b1 >> (32 - shift);\n }\n\n var hi = (b1 >> (64 - shift)) | (b0 << shift);\n var mantissa: u64 = (u & 0x007FFFFF) | 0x00800000;\n var product: u64 = mantissa * hi + (mantissa * lo >> 32);\n var r: i64 = product << 2;\n var q: i32 = ((product >> 62) + (r >>> 63));\n rempio2f_y = copysign(coeff, x) * r;\n return q;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction rempio2f(x: f32, u: u32, sign: i32): i32 { // see: jdh8/metallic/blob/master/src/math/float/rem_pio2f.c\n const pi2hi = reinterpret(0x3FF921FB50000000); // 1.57079631090164184570\n const pi2lo = reinterpret(0x3E5110B4611A6263); // 1.58932547735281966916e-8\n const _2_pi = reinterpret(0x3FE45F306DC9C883); // 0.63661977236758134308\n\n if (u < 0x4DC90FDB) { /* π * 0x1p28 */\n let q = nearest(x * _2_pi);\n rempio2f_y = x - q * pi2hi - q * pi2lo;\n return q;\n }\n\n var q = pio2_large_quot(x, u);\n return select(-q, q, sign);\n}\n\n/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */\n// @ts-ignore: decorator\n@inline\nfunction sin_kernf(x: f64): f32 { // see: musl/tree/src/math/__sindf.c\n const S1 = reinterpret(0xBFC5555554CBAC77); // -0x15555554cbac77.0p-55\n const S2 = reinterpret(0x3F811110896EFBB2); // 0x111110896efbb2.0p-59\n const S3 = reinterpret(0xBF2A00F9E2CAE774); // -0x1a00f9e2cae774.0p-65\n const S4 = reinterpret(0x3EC6CD878C3B46A7); // 0x16cd878c3b46a7.0p-71\n\n var z = x * x;\n var w = z * z;\n var r = S3 + z * S4;\n var s = z * x;\n return ((x + s * (S1 + z * S2)) + s * w * r);\n}\n\n/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */\n// @ts-ignore: decorator\n@inline\nfunction cos_kernf(x: f64): f32 { // see: musl/tree/src/math/__cosdf.c\n const C0 = reinterpret(0xBFDFFFFFFD0C5E81); // -0x1ffffffd0c5e81.0p-54\n const C1 = reinterpret(0x3FA55553E1053A42); // 0x155553e1053a42.0p-57\n const C2 = reinterpret(0xBF56C087E80F1E27); // -0x16c087e80f1e27.0p-62\n const C3 = reinterpret(0x3EF99342E0EE5069); // 0x199342e0ee5069.0p-68\n\n var z = x * x;\n var w = z * z;\n var r = C2 + z * C3;\n return (((1 + z * C0) + w * C1) + (w * z) * r);\n}\n\n/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */\n// @ts-ignore: decorator\n@inline\nfunction tan_kernf(x: f64, odd: i32): f32 { // see: musl/tree/src/math/__tandf.c\n\n const T0 = reinterpret(0x3FD5554D3418C99F); /* 0x15554d3418c99f.0p-54 */\n const T1 = reinterpret(0x3FC112FD38999F72); /* 0x1112fd38999f72.0p-55 */\n const T2 = reinterpret(0x3FAB54C91D865AFE); /* 0x1b54c91d865afe.0p-57 */\n const T3 = reinterpret(0x3F991DF3908C33CE); /* 0x191df3908c33ce.0p-58 */\n const T4 = reinterpret(0x3F685DADFCECF44E); /* 0x185dadfcecf44e.0p-61 */\n const T5 = reinterpret(0x3F8362B9BF971BCD); /* 0x1362b9bf971bcd.0p-59 */\n\n var z = x * x;\n var r = T4 + z * T5;\n var t = T2 + z * T3;\n var w = z * z;\n var s = z * x;\n var u = T0 + z * T1;\n\n r = (x + s * u) + (s * w) * (t + w * r);\n return (odd ? -1 / r : r);\n}\n\nexport namespace NativeMathf {\n\n // @ts-ignore: decorator\n @lazy\n export const E = NativeMath.E;\n\n // @ts-ignore: decorator\n @lazy\n export const LN2 = NativeMath.LN2;\n\n // @ts-ignore: decorator\n @lazy\n export const LN10 = NativeMath.LN10;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG2E = NativeMath.LOG2E;\n\n // @ts-ignore: decorator\n @lazy\n export const LOG10E = NativeMath.LOG10E;\n\n // @ts-ignore: decorator\n @lazy\n export const PI = NativeMath.PI;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT1_2 = NativeMath.SQRT1_2;\n\n // @ts-ignore: decorator\n @lazy\n export const SQRT2 = NativeMath.SQRT2;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_sin: f32 = 0;\n\n // @ts-ignore: decorator\n @lazy\n export var sincos_cos: f32 = 0;\n\n // @ts-ignore: decorator\n @inline\n export function abs(x: f32): f32 {\n return builtin_abs(x);\n }\n\n export function acos(x: f32): f32 { // see: musl/src/math/acosf.c and SUN COPYRIGHT NOTICE above\n const\n pio2_hi = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n pio2_lo = reinterpret(0x33A22168), // 7.5497894159e-08f\n Ox1p_120f = reinterpret(0x03800000);\n var hx = reinterpret(x);\n var ix = hx & 0x7FFFFFFF;\n if (ix >= 0x3F800000) {\n if (ix == 0x3F800000) {\n if (hx >> 31) return 2 * pio2_hi + Ox1p_120f;\n return 0;\n }\n return 0 / (x - x);\n }\n if (ix < 0x3F000000) {\n if (ix <= 0x32800000) return pio2_hi + Ox1p_120f;\n return pio2_hi - (x - (pio2_lo - x * Rf(x * x)));\n }\n var z: f32, w: f32, s: f32;\n if (hx >> 31) {\n // z = (1 + x) * 0.5;\n z = 0.5 + x * 0.5;\n s = builtin_sqrt(z);\n w = Rf(z) * s - pio2_lo;\n return 2 * (pio2_hi - (s + w));\n }\n // z = (1 - x) * 0.5;\n z = 0.5 - x * 0.5;\n s = builtin_sqrt(z);\n hx = reinterpret(s);\n var df = reinterpret(hx & 0xFFFFF000);\n var c = (z - df * df) / (s + df);\n w = Rf(z) * s + c;\n return 2 * (df + w);\n }\n\n export function acosh(x: f32): f32 { // see: musl/src/math/acoshf.c\n const s = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x);\n var a = u & 0x7FFFFFFF;\n if (a < 0x3F800000 + (1 << 23)) {\n let xm1 = x - 1;\n return log1p(xm1 + builtin_sqrt(xm1 * (xm1 + 2)));\n }\n if (a < 0x3F800000 + (12 << 23)) return log(2 * x - 1 / (x + builtin_sqrt(x * x - 1)));\n return log(x) + s;\n }\n\n export function asin(x: f32): f32 { // see: musl/src/math/asinf.c and SUN COPYRIGHT NOTICE above\n const\n pio2 = reinterpret(0x3FC90FDB), // 1.570796326794896558e+00f\n Ox1p_120f = reinterpret(0x03800000);\n var sx = x;\n var hx = reinterpret(x) & 0x7FFFFFFF;\n if (hx >= 0x3F800000) {\n if (hx == 0x3F800000) return x * pio2 + Ox1p_120f;\n return 0 / (x - x);\n }\n if (hx < 0x3F000000) {\n if (hx < 0x39800000 && hx >= 0x00800000) return x;\n return x + x * Rf(x * x);\n }\n // var z: f32 = (1 - builtin_abs(x)) * 0.5;\n var z: f32 = 0.5 - builtin_abs(x) * 0.5;\n var s = builtin_sqrt(z); // sic\n x = (pio2 - 2 * (s + s * Rf(z)));\n return builtin_copysign(x, sx);\n }\n\n export function asinh(x: f32): f32 { // see: musl/src/math/asinhf.c\n const c = reinterpret(0x3F317218); // 0.693147180559945309417232121458176568f\n var u = reinterpret(x) & 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u >= 0x3F800000 + (12 << 23)) y = log(y) + c;\n else if (u >= 0x3F800000 + (1 << 23)) y = log(2 * y + 1 / (builtin_sqrt(y * y + 1) + y));\n else if (u >= 0x3F800000 - (12 << 23)) y = log1p(y + y * y / (builtin_sqrt(y * y + 1) + 1));\n return builtin_copysign(y, x);\n }\n\n export function atan(x: f32): f32 { // see: musl/src/math/atanf.c and SUN COPYRIGHT NOTICE above\n const\n atanhi0 = reinterpret(0x3EED6338), // 4.6364760399e-01f\n atanhi1 = reinterpret(0x3F490FDA), // 7.8539812565e-01f\n atanhi2 = reinterpret(0x3F7B985E), // 9.8279368877e-01f\n atanhi3 = reinterpret(0x3FC90FDA), // 1.5707962513e+00f\n atanlo0 = reinterpret(0x31AC3769), // 5.0121582440e-09f\n atanlo1 = reinterpret(0x33222168), // 3.7748947079e-08f\n atanlo2 = reinterpret(0x33140FB4), // 3.4473217170e-08f\n atanlo3 = reinterpret(0x33A22168), // 7.5497894159e-08f\n aT0 = reinterpret(0x3EAAAAA9), // 3.3333328366e-01f\n aT1 = reinterpret(0xBE4CCA98), // -1.9999158382e-01f\n aT2 = reinterpret(0x3E11F50D), // 1.4253635705e-01f\n aT3 = reinterpret(0xBDDA1247), // -1.0648017377e-01f\n aT4 = reinterpret(0x3D7CAC25), // 6.1687607318e-02f\n Ox1p_120f = reinterpret(0x03800000);\n var ix = reinterpret(x);\n var sx = x;\n ix &= 0x7FFFFFFF;\n var z: f32;\n if (ix >= 0x4C800000) {\n if (isNaN(x)) return x;\n z = atanhi3 + Ox1p_120f;\n return builtin_copysign(z, sx);\n }\n var id: i32;\n if (ix < 0x3EE00000) {\n if (ix < 0x39800000) return x;\n id = -1;\n } else {\n x = builtin_abs(x);\n if (ix < 0x3F980000) {\n if (ix < 0x3F300000) {\n id = 0;\n x = (2.0 * x - 1.0) / (2.0 + x);\n } else {\n id = 1;\n x = (x - 1.0) / (x + 1.0);\n }\n } else {\n if (ix < 0x401C0000) {\n id = 2;\n x = (x - 1.5) / (1.0 + 1.5 * x);\n } else {\n id = 3;\n x = -1.0 / x;\n }\n }\n }\n z = x * x;\n var w = z * z;\n var s1 = z * (aT0 + w * (aT2 + w * aT4));\n var s2 = w * (aT1 + w * aT3);\n var s3 = x * (s1 + s2);\n if (id < 0) return x - s3;\n switch (id) {\n case 0: { z = atanhi0 - ((s3 - atanlo0) - x); break; }\n case 1: { z = atanhi1 - ((s3 - atanlo1) - x); break; }\n case 2: { z = atanhi2 - ((s3 - atanlo2) - x); break; }\n case 3: { z = atanhi3 - ((s3 - atanlo3) - x); break; }\n default: unreachable();\n }\n return builtin_copysign(z, sx);\n }\n\n export function atanh(x: f32): f32 { // see: musl/src/math/atanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n if (u < 0x3F800000 - (1 << 23)) {\n if (u >= 0x3F800000 - (32 << 23)) y = 0.5 * log1p(2 * y * (1.0 + y / (1 - y)));\n } else y = 0.5 * log1p(2 * (y / (1 - y)));\n return builtin_copysign(y, x);\n }\n\n export function atan2(y: f32, x: f32): f32 { // see: musl/src/math/atan2f.c and SUN COPYRIGHT NOTICE above\n const\n pi = reinterpret(0x40490FDB), // 3.1415927410e+00f\n pi_lo = reinterpret(0xB3BBBD2E); // -8.7422776573e-08f\n if (isNaN(x) || isNaN(y)) return x + y;\n var ix = reinterpret(x);\n var iy = reinterpret(y);\n if (ix == 0x3F800000) return atan(y);\n var m = (((iy >> 31) & 1) | ((ix >> 30) & 2));\n ix &= 0x7FFFFFFF;\n iy &= 0x7FFFFFFF;\n if (iy == 0) {\n switch (m) {\n case 0:\n case 1: return y;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n if (ix == 0) return m & 1 ? -pi / 2 : pi / 2;\n if (ix == 0x7F800000) {\n if (iy == 0x7F800000) {\n switch (m) {\n case 0: return pi / 4;\n case 1: return -pi / 4;\n case 2: return 3 * pi / 4;\n case 3: return -3 * pi / 4;\n }\n } else {\n switch (m) {\n case 0: return 0;\n case 1: return -0;\n case 2: return pi;\n case 3: return -pi;\n }\n }\n }\n if (ix + (26 << 23) < iy || iy == 0x7F800000) return m & 1 ? -pi / 2 : pi / 2;\n var z: f32;\n if ((m & 2) && iy + (26 << 23) < ix) z = 0.0;\n else z = atan(builtin_abs(y / x));\n switch (m) {\n case 0: return z;\n case 1: return -z;\n case 2: return pi - (z - pi_lo);\n case 3: return (z - pi_lo) - pi;\n }\n unreachable();\n return 0;\n }\n\n export function cbrt(x: f32): f32 { // see: musl/src/math/cbrtf.c and SUN COPYRIGHT NOTICE above\n const\n B1 = 709958130,\n B2 = 642849266,\n Ox1p24f = reinterpret(0x4B800000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n if (hx >= 0x7F800000) return x + x;\n if (hx < 0x00800000) {\n if (hx == 0) return x;\n u = reinterpret(x * Ox1p24f);\n hx = u & 0x7FFFFFFF;\n hx = hx / 3 + B2;\n } else {\n hx = hx / 3 + B1;\n }\n u &= 0x80000000;\n u |= hx;\n var t = reinterpret(u);\n var r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n r = t * t * t;\n t = t * (x + x + r) / (x + r + r);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function ceil(x: f32): f32 {\n return builtin_ceil(x);\n }\n\n export function clz32(x: f32): f32 {\n if (!isFinite(x)) return 32;\n return builtin_clz(dtoi32(x));\n }\n\n export function cos(x: f32): f32 { // see: musl/src/math/cosf.c\n const c1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const c2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const c3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const c4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n /* raise inexact if x != 0 */\n return 1;\n }\n return cos_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix > 0x4016cbe3) { /* |x| ~> 3π/4 */\n return -cos_kernf(sign ? x + c2pio2 : x - c2pio2);\n } else {\n return sign ? sin_kernf(x + c1pio2) : sin_kernf(c1pio2 - x);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix > 0x40afeddf) { /* |x| ~> 7π/4 */\n return cos_kernf(sign ? x + c4pio2 : x - c4pio2);\n } else {\n return sign ? sin_kernf(-x - c3pio2) : sin_kernf(x - c3pio2);\n }\n }\n }\n\n /* cos(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? sin_kernf(y) : cos_kernf(y);\n return (n + 1) & 2 ? -t : t;\n }\n\n export function cosh(x: f32): f32 { // see: musl/src/math/coshf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n x = reinterpret(u);\n if (u < 0x3F317217) {\n if (u < 0x3F800000 - (12 << 23)) return 1;\n let t = expm1(x);\n // return 1 + t * t / (2 * (1 + t));\n return 1 + t * t / (2 + 2 * t);\n }\n if (u < 0x42B17217) {\n let t = exp(x);\n // return 0.5 * (t + 1 / t);\n return 0.5 * t + 0.5 / t;\n }\n return expo2f(x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function floor(x: f32): f32 {\n return builtin_floor(x);\n }\n\n export function exp(x: f32): f32 { // see: musl/src/math/expf.c and SUN COPYRIGHT NOTICE above\n const\n ln2hi = reinterpret(0x3F317200), // 6.9314575195e-1f\n ln2lo = reinterpret(0x35BFBE8E), // 1.4286067653e-6f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+0f\n P1 = reinterpret(0x3E2AAA8F), // 1.6666625440e-1f\n P2 = reinterpret(0xBB355215), // -2.7667332906e-3f\n Ox1p127f = reinterpret(0x7F000000);\n var hx = reinterpret(x);\n var sign_ = (hx >> 31);\n hx &= 0x7FFFFFFF;\n if (hx >= 0x42AEAC50) {\n if (hx >= 0x42B17218) {\n if (!sign_) return x * Ox1p127f;\n else if (hx >= 0x42CFF1B5) return 0;\n }\n }\n var hi: f32, lo: f32;\n var k: i32;\n if (hx > 0x3EB17218) {\n if (hx > 0x3F851592) {\n k = (invln2 * x + builtin_copysign(0.5, x));\n } else {\n k = 1 - (sign_ << 1);\n }\n hi = x - k * ln2hi;\n lo = k * ln2lo;\n x = hi - lo;\n } else if (hx > 0x39000000) {\n k = 0;\n hi = x;\n lo = 0;\n } else {\n return 1 + x;\n }\n var xx = x * x;\n var c = x - xx * (P1 + xx * P2);\n var y: f32 = 1 + (x * c / (2 - c) - lo + hi);\n if (k == 0) return y;\n return scalbn(y, k);\n }\n\n export function expm1(x: f32): f32 { // see: musl/src/math/expm1f.c and SUN COPYRIGHT NOTICE above\n const\n o_threshold = reinterpret(0x42B17180), // 8.8721679688e+01f\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n invln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00f\n Q1 = reinterpret(0xBD088868), // -3.3333212137e-02f\n Q2 = reinterpret(0x3ACF3010), // 1.5807170421e-03f\n Ox1p127f = reinterpret(0x7F000000);\n var u = reinterpret(x);\n var hx = u & 0x7FFFFFFF;\n var sign_ = (u >> 31);\n if (hx >= 0x4195B844) {\n if (hx > 0x7F800000) return x;\n if (sign_) return -1;\n if (x > o_threshold) {\n x *= Ox1p127f;\n return x;\n }\n }\n var c: f32 = 0.0, t: f32, k: i32;\n if (hx > 0x3EB17218) {\n k = select(\n 1 - (sign_ << 1),\n (invln2 * x + builtin_copysign(0.5, x)),\n hx < 0x3F851592\n );\n t = k;\n let hi = x - t * ln2_hi;\n let lo = t * ln2_lo;\n x = hi - lo;\n c = (hi - x) - lo;\n } else if (hx < 0x33000000) {\n return x;\n } else k = 0;\n var hfx: f32 = 0.5 * x;\n var hxs: f32 = x * hfx;\n var r1: f32 = 1.0 + hxs * (Q1 + hxs * Q2);\n t = 3.0 - r1 * hfx;\n var e = hxs * ((r1 - t) / (6.0 - x * t));\n if (k == 0) return x - (x * e - hxs);\n e = x * (e - c) - c;\n e -= hxs;\n if (k == -1) return 0.5 * (x - e) - 0.5;\n if (k == 1) {\n if (x < -0.25) return -2.0 * (e - (x + 0.5));\n return 1.0 + 2.0 * (x - e);\n }\n u = (0x7F + k) << 23;\n var twopk = reinterpret(u);\n var y: f32;\n if (k < 0 || k > 56) {\n y = x - e + 1.0;\n if (k == 128) y = y * 2.0 * Ox1p127f;\n else y = y * twopk;\n return y - 1.0;\n }\n u = (0x7F - k) << 23;\n y = reinterpret(u);\n if (k < 20) y = (1 - y) - e;\n else y = 1 - (e + y);\n return (x + y) * twopk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function fround(x: f32): f32 {\n return x;\n }\n\n export function hypot(x: f32, y: f32): f32 { // see: musl/src/math/hypotf.c\n const\n Ox1p90f = reinterpret(0x6C800000),\n Ox1p_90f = reinterpret(0x12800000);\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n ux &= 0x7FFFFFFF;\n uy &= 0x7FFFFFFF;\n if (ux < uy) {\n let ut = ux;\n ux = uy;\n uy = ut;\n }\n x = reinterpret(ux);\n y = reinterpret(uy);\n if (uy == 0xFF << 23) return y;\n if (ux >= 0xFF << 23 || uy == 0 || ux - uy >= 25 << 23) return x + y;\n var z: f32 = 1;\n if (ux >= (0x7F + 60) << 23) {\n z = Ox1p90f;\n x *= Ox1p_90f;\n y *= Ox1p_90f;\n } else if (uy < (0x7F - 60) << 23) {\n z = Ox1p_90f;\n x *= Ox1p90f;\n y *= Ox1p90f;\n }\n return z * builtin_sqrt((x * x + y * y));\n }\n\n // @ts-ignore: decorator\n @inline\n export function imul(x: f32, y: f32): f32 {\n /*\n * Wasm (MVP) and JS have different approaches for double->int conversions.\n *\n * For emulate JS conversion behavior and avoid trapping from wasm we should modulate by MAX_INT\n * our float-point arguments before actual convertion to integers.\n */\n if (!isFinite(x + y)) return 0;\n return (dtoi32(x) * dtoi32(y));\n }\n\n export function log(x: f32): f32 { // see: musl/src/math/logf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01f\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f\n Ox1p25f = reinterpret(0x4C000000);\n var u = reinterpret(x);\n var k = 0;\n if (u < 0x00800000 || (u >> 31)) {\n if (u << 1 == 0) return -1 / (x * x);\n if (u >> 31) return (x - x) / 0;\n k -= 25;\n x *= Ox1p25f;\n u = reinterpret(x);\n } else if (u >= 0x7F800000) return x;\n else if (u == 0x3F800000) return 0;\n u += 0x3F800000 - 0x3F3504F3;\n k += (u >> 23) - 0x7F;\n u = (u & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(u);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + dk * ln2_lo - hfsq + f + dk * ln2_hi;\n }\n\n export function log10(x: f32): f32 { // see: musl/src/math/log10f.c and SUN COPYRIGHT NOTICE above\n const\n ivln10hi = reinterpret(0x3EDE6000), // 4.3432617188e-01f\n ivln10lo = reinterpret(0xB804EAD9), // -3.1689971365e-05f\n log10_2hi = reinterpret(0x3E9A2080), // 3.0102920532e-01f\n log10_2lo = reinterpret(0x355427DB), // 7.9034151668e-07f\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n ix = reinterpret(hi);\n ix &= 0xFFFFF000;\n hi = reinterpret(ix);\n var lo = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi;\n }\n\n export function log1p(x: f32): f32 { // see: musl/src/math/log1pf.c and SUN COPYRIGHT NOTICE above\n const\n ln2_hi = reinterpret(0x3F317180), // 6.9313812256e-01\n ln2_lo = reinterpret(0x3717F7D1), // 9.0580006145e-06\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26); // 0xf89e26.0p-26f, 0.24279078841f\n var ix = reinterpret(x);\n var c: f32 = 0, f: f32 = 0;\n var k: i32 = 1;\n if (ix < 0x3ED413D0 || (ix >> 31)) {\n if (ix >= 0xBF800000) {\n if (x == -1) return x / 0.0;\n return (x - x) / 0.0;\n }\n if (ix << 1 < 0x33800000 << 1) return x;\n if (ix <= 0xBE95F619) {\n k = 0;\n c = 0;\n f = x;\n }\n } else if (ix >= 0x7F800000) return x;\n if (k) {\n let uf: f32 = 1 + x;\n let iu = reinterpret(uf);\n iu += 0x3F800000 - 0x3F3504F3;\n k = (iu >> 23) - 0x7F;\n if (k < 25) {\n c = k >= 2 ? 1 - (uf - x) : x - (uf - 1);\n c /= uf;\n } else c = 0;\n iu = (iu & 0x007FFFFF) + 0x3F3504F3;\n f = reinterpret(iu) - 1;\n }\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var dk = k;\n return s * (hfsq + r) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;\n }\n\n export function log2(x: f32): f32 { // see: musl/src/math/log2f.c and SUN COPYRIGHT NOTICE above\n const\n ivln2hi = reinterpret(0x3FB8B000), // 1.4428710938e+00f\n ivln2lo = reinterpret(0xB9389AD4), // -1.7605285393e-04\n Lg1 = reinterpret(0x3F2AAAAA), // 0xaaaaaa.0p-24f, 0.66666662693f\n Lg2 = reinterpret(0x3ECCCE13), // 0xccce13.0p-25f, 0.40000972152f\n Lg3 = reinterpret(0x3E91E9EE), // 0x91e9ee.0p-25f, 0.28498786688f\n Lg4 = reinterpret(0x3E789E26), // 0xf89e26.0p-26f, 0.24279078841f\n Ox1p25f = reinterpret(0x4C000000);\n var ix = reinterpret(x);\n var k: i32 = 0;\n if (ix < 0x00800000 || (ix >> 31)) {\n if (ix << 1 == 0) return -1 / (x * x);\n if (ix >> 31) return (x - x) / 0.0;\n k -= 25;\n x *= Ox1p25f;\n ix = reinterpret(x);\n } else if (ix >= 0x7F800000) return x;\n else if (ix == 0x3F800000) return 0;\n ix += 0x3F800000 - 0x3F3504F3;\n k += (ix >> 23) - 0x7F;\n ix = (ix & 0x007FFFFF) + 0x3F3504F3;\n x = reinterpret(ix);\n var f = x - 1.0;\n var s = f / (2.0 + f);\n var z = s * s;\n var w = z * z;\n var t1 = w * (Lg2 + w * Lg4);\n var t2 = z * (Lg1 + w * Lg3);\n var r = t2 + t1;\n var hfsq: f32 = 0.5 * f * f;\n var hi = f - hfsq;\n var u = reinterpret(hi);\n u &= 0xFFFFF000;\n hi = reinterpret(u);\n var lo: f32 = f - hi - hfsq + s * (hfsq + r);\n var dk = k;\n return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + dk;\n }\n\n // @ts-ignore: decorator\n @inline\n export function max(value1: f32, value2: f32): f32 {\n return builtin_max(value1, value2);\n }\n\n // @ts-ignore: decorator\n @inline\n export function min(value1: f32, value2: f32): f32 {\n return builtin_min(value1, value2);\n }\n\n export function pow(x: f32, y: f32): f32 { // see: musl/src/math/powf.c and SUN COPYRIGHT NOTICE above\n const\n dp_h1 = reinterpret(0x3F15C000), // 5.84960938e-01f\n dp_l1 = reinterpret(0x35D1CFDC), // 1.56322085e-06f\n two24 = reinterpret(0x4B800000), // 16777216f\n huge = reinterpret(0x7149F2CA), // 1.0e+30f\n tiny = reinterpret(0x0DA24260), // 1.0e-30f\n L1 = reinterpret(0x3F19999A), // 6.0000002384e-01f\n L2 = reinterpret(0x3EDB6DB7), // 4.2857143283e-01f\n L3 = reinterpret(0x3EAAAAAB), // 3.3333334327e-01f\n L4 = reinterpret(0x3E8BA305), // 2.7272811532e-01f\n L5 = reinterpret(0x3E6C3255), // 2.3066075146e-01f\n L6 = reinterpret(0x3E53F142), // 2.0697501302e-01f\n P1 = reinterpret(0x3E2AAAAB), // 1.6666667163e-01f\n P2 = reinterpret(0xBB360B61), // -2.7777778450e-03f\n P3 = reinterpret(0x388AB355), // 6.6137559770e-05f\n P4 = reinterpret(0xB5DDEA0E), // -1.6533901999e-06f\n P5 = reinterpret(0x3331BB4C), // 4.1381369442e-08f\n lg2 = reinterpret(0x3F317218), // 6.9314718246e-01f\n lg2_h = reinterpret(0x3F317200), // 6.93145752e-01f\n lg2_l = reinterpret(0x35BFBE8C), // 1.42860654e-06f\n ovt = reinterpret(0x3338AA3C), // 4.2995665694e-08f\n cp = reinterpret(0x3F76384F), // 9.6179670095e-01\n cp_h = reinterpret(0x3F764000), // 9.6191406250e-01\n cp_l = reinterpret(0xB8F623C6), // -1.1736857402e-04\n ivln2 = reinterpret(0x3FB8AA3B), // 1.4426950216e+00\n ivln2_h = reinterpret(0x3FB8AA00), // 1.4426879883e+00\n ivln2_l = reinterpret(0x36ECA570), // 7.0526075433e-06\n inv3 = reinterpret(0x3EAAAAAB); // 0.333333333333\n var hx = reinterpret(x);\n var hy = reinterpret(y);\n var ix = hx & 0x7FFFFFFF;\n var iy = hy & 0x7FFFFFFF;\n if (iy == 0) return 1.0; // x**0 = 1, even if x is NaN\n // if (hx == 0x3F800000) return 1.0; // C: 1**y = 1, even if y is NaN, JS: NaN\n if (ix > 0x7F800000 || iy > 0x7F800000) return x + y; // NaN if either arg is NaN\n var yisint = 0, j: i32, k: i32;\n if (hx < 0) {\n if (iy >= 0x4B800000) yisint = 2;\n else if (iy >= 0x3F800000) {\n k = (iy >> 23) - 0x7F;\n let ki = 23 - k;\n j = iy >> ki;\n if ((j << ki) == iy) yisint = 2 - (j & 1);\n }\n }\n if (iy == 0x7F800000) { // y is +-inf\n if (ix == 0x3F800000) return NaN; // C: (-1)**+-inf is 1, JS: NaN\n else if (ix > 0x3F800000) return hy >= 0 ? y : 0.0; // (|x|>1)**+-inf = inf,0\n else return hy >= 0 ? 0.0 : -y; // (|x|<1)**+-inf = 0,inf\n }\n if (iy == 0x3F800000) return hy >= 0 ? x : 1.0 / x;\n if (hy == 0x40000000) return x * x;\n if (hy == 0x3F000000) {\n if (hx >= 0) return builtin_sqrt(x);\n }\n var ax = builtin_abs(x);\n var z: f32;\n if (ix == 0x7F800000 || ix == 0 || ix == 0x3F800000) {\n z = ax;\n if (hy < 0) z = 1.0 / z;\n if (hx < 0) {\n if (((ix - 0x3F800000) | yisint) == 0) {\n let d = z - z;\n z = d / d;\n }\n else if (yisint == 1) z = -z;\n }\n return z;\n }\n var sn = 1.0;\n if (hx < 0) {\n if (yisint == 0) {\n let d = x - x;\n return d / d;\n }\n if (yisint == 1) sn = -1.0;\n }\n var t1: f32, t2: f32, r: f32, s: f32, t: f32, u: f32, v: f32, w: f32, p_h: f32, p_l: f32;\n var n: i32, is: i32;\n if (iy > 0x4D000000) {\n if (ix < 0x3F7FFFF8) return hy < 0 ? sn * huge * huge : sn * tiny * tiny;\n if (ix > 0x3F800007) return hy > 0 ? sn * huge * huge : sn * tiny * tiny;\n t = ax - 1;\n w = (t * t) * (0.5 - t * (inv3 - t * 0.25));\n u = ivln2_h * t;\n v = t * ivln2_l - w * ivln2;\n t1 = u + v;\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = v - (t1 - u);\n } else {\n let s2: f32, s_h: f32, s_l: f32, t_h: f32, t_l: f32;\n n = 0;\n if (ix < 0x00800000) {\n ax *= two24;\n n -= 24;\n ix = reinterpret(ax);\n }\n n += (ix >> 23) - 0x7F;\n j = ix & 0x007FFFFF;\n ix = j | 0x3F800000;\n if (j <= 0x1CC471) k = 0;\n else if (j < 0x5DB3D7) k = 1;\n else {\n k = 0;\n n += 1;\n ix -= 0x00800000;\n }\n ax = reinterpret(ix);\n let bp = select(1.5, 1.0, k); // k ? 1.5 : 1.0\n u = ax - bp;\n v = 1.0 / (ax + bp);\n s = u * v;\n s_h = s;\n is = reinterpret(s_h);\n s_h = reinterpret(is & 0xFFFFF000);\n is = ((ix >> 1) & 0xFFFFF000) | 0x20000000;\n t_h = reinterpret(is + 0x00400000 + (k << 21));\n t_l = ax - (t_h - bp);\n s_l = v * ((u - s_h * t_h) - s_h * t_l);\n s2 = s * s;\n r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));\n r += s_l * (s_h + s);\n s2 = s_h * s_h;\n t_h = 3.0 + s2 + r;\n is = reinterpret(t_h);\n t_h = reinterpret(is & 0xFFFFF000);\n t_l = r - ((t_h - 3.0) - s2);\n u = s_h * t_h;\n v = s_l * t_h + t_l * s;\n p_h = u + v;\n is = reinterpret(p_h);\n p_h = reinterpret(is & 0xFFFFF000);\n p_l = v - (p_h - u);\n let z_h = cp_h * p_h;\n let dp_l = select(dp_l1, 0.0, k);\n let z_l = cp_l * p_h + p_l * cp + dp_l;\n t = n;\n let dp_h = select(dp_h1, 0.0, k);\n t1 = (((z_h + z_l) + dp_h) + t);\n is = reinterpret(t1);\n t1 = reinterpret(is & 0xFFFFF000);\n t2 = z_l - (((t1 - t) - dp_h) - z_h);\n }\n is = reinterpret(y);\n var y1 = reinterpret(is & 0xFFFFF000);\n p_l = (y - y1) * t1 + y * t2;\n p_h = y1 * t1;\n z = p_l + p_h;\n j = reinterpret(z);\n if (j > 0x43000000) {\n return sn * huge * huge;\n } else if (j == 0x43000000) {\n if (p_l + ovt > z - p_h) return sn * huge * huge;\n } else if ((j & 0x7FFFFFFF) > 0x43160000) {\n return sn * tiny * tiny;\n } else if (j == 0xC3160000) {\n if (p_l <= z - p_h) return sn * tiny * tiny;\n }\n var i = j & 0x7FFFFFFF;\n k = (i >> 23) - 0x7F;\n n = 0;\n if (i > 0x3F000000) {\n n = j + (0x00800000 >> (k + 1));\n k = ((n & 0x7FFFFFFF) >> 23) - 0x7F;\n t = reinterpret(n & ~(0x007FFFFF >> k));\n n = ((n & 0x007FFFFF) | 0x00800000) >> (23 - k);\n if (j < 0) n = -n;\n p_h -= t;\n }\n t = p_l + p_h;\n is = reinterpret(t);\n t = reinterpret(is & 0xFFFF8000);\n u = t * lg2_h;\n v = (p_l - (t - p_h)) * lg2 + t * lg2_l;\n z = u + v;\n w = v - (z - u);\n t = z * z;\n t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));\n r = (z * t1) / (t1 - 2.0) - (w + z * w);\n z = 1.0 - (r - z);\n j = reinterpret(z);\n j += n << 23;\n if ((j >> 23) <= 0) z = scalbn(z, n);\n else z = reinterpret(j);\n return sn * z;\n }\n\n // @ts-ignore: decorator\n @inline\n export function seedRandom(value: i64): void {\n NativeMath.seedRandom(value);\n }\n\n // Using xoroshiro64starstar from http://xoshiro.di.unimi.it/xoroshiro64starstar.c\n export function random(): f32 {\n if (!random_seeded) throw new Error("PRNG must be seeded.");\n\n var s0 = random_state0_32;\n var s1 = random_state1_32;\n var r = rotl(s0 * 0x9E3779BB, 5) * 5;\n\n s1 ^= s0;\n random_state0_32 = rotl(s0, 26) ^ s1 ^ (s1 << 9);\n random_state1_32 = rotl(s1, 13);\n\n return reinterpret((r >> 9) | (127 << 23)) - 1.0;\n }\n\n // @ts-ignore: decorator\n @inline\n export function round(x: f32): f32 {\n return builtin_copysign(builtin_floor(x + 0.5), x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function sign(x: f32): f32 {\n if (ASC_SHRINK_LEVEL > 0) {\n return builtin_abs(x) > 0 ? builtin_copysign(1, x) : x;\n } else {\n return x > 0 ? 1 : x < 0 ? -1 : x;\n }\n }\n\n // @ts-ignore: decorator\n @inline\n export function signbit(x: f32): bool {\n // @ts-ignore: type\n return ((reinterpret(x) >>> 31) & (x == x));\n }\n\n export function sin(x: f32): f32 { // see: musl/src/math/sinf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // M_PI_2 * 1\n const s2pio2 = reinterpret(0x400921FB54442D18); // M_PI_2 * 2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // M_PI_2 * 3\n const s4pio2 = reinterpret(0x401921FB54442D18); // M_PI_2 * 4\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return sin_kernf(x);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return sign ? -cos_kernf(x + s1pio2) : cos_kernf(x - s1pio2);\n }\n return sin_kernf(-(sign ? x + s2pio2 : x - s2pio2));\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return sign ? cos_kernf(x + s3pio2) : -cos_kernf(x - s3pio2);\n }\n return sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n\n var t = n & 1 ? cos_kernf(y) : sin_kernf(y);\n return n & 2 ? -t : t;\n }\n\n export function sinh(x: f32): f32 { // see: musl/src/math/sinhf.c\n var u = reinterpret(x) & 0x7FFFFFFF;\n var absx = reinterpret(u);\n var t: f32;\n var h = builtin_copysign(0.5, x);\n if (u < 0x42B17217) {\n t = expm1(absx);\n if (u < 0x3F800000) {\n if (u < 0x3F800000 - (12 << 23)) return x;\n return h * (2 * t - t * t / (t + 1));\n }\n return h * (t + t / (t + 1));\n }\n t = 2 * h * expo2f(absx);\n return t;\n }\n\n // @ts-ignore: decorator\n @inline\n export function sqrt(x: f32): f32 {\n return builtin_sqrt(x);\n }\n\n export function tan(x: f32): f32 { // see: musl/src/math/tanf.c\n const t1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const t2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const t3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const t4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7FFFFFFF;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n return x;\n }\n return tan_kernf(x, 0);\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n return tan_kernf((sign ? x + t1pio2 : x - t1pio2), 1);\n } else {\n return tan_kernf((sign ? x + t2pio2 : x - t2pio2), 0);\n }\n }\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n return tan_kernf((sign ? x + t3pio2 : x - t3pio2), 1);\n } else {\n return tan_kernf((sign ? x + t4pio2 : x - t4pio2), 0);\n }\n }\n }\n\n /* tan(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) return x - x;\n\n /* argument reduction */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n return tan_kernf(y, n & 1);\n }\n\n export function tanh(x: f32): f32 { // see: musl/src/math/tanhf.c\n var u = reinterpret(x);\n u &= 0x7FFFFFFF;\n var y = reinterpret(u);\n var t: f32;\n if (u > 0x3F0C9F54) {\n if (u > 0x41200000) t = 1 + 0 / y;\n else {\n t = expm1(2 * y);\n t = 1 - 2 / (t + 2);\n }\n } else if (u > 0x3E82C578) {\n t = expm1(2 * y);\n t = t / (t + 2);\n } else if (u >= 0x00800000) {\n t = expm1(-2 * y);\n t = -t / (t + 2);\n } else t = y;\n return builtin_copysign(t, x);\n }\n\n // @ts-ignore: decorator\n @inline\n export function trunc(x: f32): f32 {\n return builtin_trunc(x);\n }\n\n export function scalbn(x: f32, n: i32): f32 { // see: https://git.musl-libc.org/cgit/musl/tree/src/math/scalbnf.c\n const\n Ox1p24f = reinterpret(0x4B800000),\n Ox1p127f = reinterpret(0x7F000000),\n Ox1p_126f = reinterpret(0x00800000);\n var y = x;\n if (n > 127) {\n y *= Ox1p127f;\n n -= 127;\n if (n > 127) {\n y *= Ox1p127f;\n n = builtin_min(n - 127, 127);\n }\n } else if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n += 126 - 24;\n if (n < -126) {\n y *= Ox1p_126f * Ox1p24f;\n n = builtin_max(n + 126 - 24, -126);\n }\n }\n return y * reinterpret((0x7F + n) << 23);\n }\n\n export function mod(x: f32, y: f32): f32 { // see: musl/src/math/fmodf.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = ux & 0x80000000;\n var uy1 = uy << 1;\n if (uy1 == 0 || ex == 0xFF || isNaN(y)) {\n let m = x * y;\n return m / m;\n }\n var ux1 = ux << 1;\n if (ux1 <= uy1) {\n if (ux1 == uy1) return 0 * x;\n return x;\n }\n if (!ex) {\n ex -= builtin_clz(ux << 9);\n ux <<= -ex + 1;\n } else {\n ux &= -1 >> 9;\n ux |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n while (ex > ey) {\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n ux <<= 1;\n --ex;\n }\n if (ux >= uy) {\n if (ux == uy) return 0 * x;\n ux -= uy;\n }\n // for (; !(ux >> 23); ux <<= 1) --ex;\n var shift = builtin_clz(ux << 8);\n ex -= shift;\n ux <<= shift;\n if (ex > 0) {\n ux -= 1 << 23;\n ux |= ex << 23;\n } else {\n ux >>= -ex + 1;\n }\n ux |= sx;\n return reinterpret(ux);\n }\n\n export function rem(x: f32, y: f32): f32 { // see: musl/src/math/remquof.c\n var ux = reinterpret(x);\n var uy = reinterpret(y);\n var ex = (ux >> 23 & 0xFF);\n var ey = (uy >> 23 & 0xFF);\n var sx = (ux >> 31);\n var uxi = ux;\n if (uy << 1 == 0 || ex == 0xFF || isNaN(y)) return (x * y) / (x * y);\n if (ux << 1 == 0) return x;\n if (!ex) {\n ex -= builtin_clz(uxi << 9);\n uxi <<= -ex + 1;\n } else {\n uxi &= -1 >> 9;\n uxi |= 1 << 23;\n }\n if (!ey) {\n ey -= builtin_clz(uy << 9);\n uy <<= -ey + 1;\n } else {\n uy &= -1 >> 9;\n uy |= 1 << 23;\n }\n var q = 0;\n do {\n if (ex < ey) {\n if (ex + 1 == ey) break; // goto end\n return x;\n }\n while (ex > ey) {\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n uxi <<= 1;\n q <<= 1;\n --ex;\n }\n if (uxi >= uy) {\n uxi -= uy;\n ++q;\n }\n if (uxi == 0) ex = -30;\n else {\n let shift = builtin_clz(uxi << 8);\n ex -= shift;\n uxi <<= shift;\n }\n break;\n } while (false);\n // end\n if (ex > 0) {\n uxi -= 1 << 23;\n uxi |= ex << 23;\n } else {\n uxi >>= -ex + 1;\n }\n x = reinterpret(uxi);\n y = builtin_abs(y);\n var x2 = x + x;\n if (ex == ey || (ex + 1 == ey && (x2 > y || (x2 == y && (q & 1))))) {\n x -= y;\n // q++;\n }\n return sx ? -x : x;\n }\n\n export function sincos(x: f32): void { // see: musl/tree/src/math/sincosf.c\n const s1pio2 = reinterpret(0x3FF921FB54442D18); // 1 * M_PI_2\n const s2pio2 = reinterpret(0x400921FB54442D18); // 2 * M_PI_2\n const s3pio2 = reinterpret(0x4012D97C7F3321D2); // 3 * M_PI_2\n const s4pio2 = reinterpret(0x401921FB54442D18); // 4 * M_PI_2\n\n var ix = reinterpret(x);\n var sign = ix >> 31;\n ix &= 0x7fffffff;\n\n if (ix <= 0x3f490fda) { /* |x| ~<= π/4 */\n if (ix < 0x39800000) { /* |x| < 2**-12 */\n sincos_sin = x;\n sincos_cos = 1;\n return;\n }\n sincos_sin = sin_kernf(x);\n sincos_cos = cos_kernf(x);\n return;\n }\n\n if (ASC_SHRINK_LEVEL < 1) {\n if (ix <= 0x407b53d1) { /* |x| ~<= 5π/4 */\n if (ix <= 0x4016cbe3) { /* |x| ~<= 3π/4 */\n if (sign) {\n sincos_sin = -cos_kernf(x + s1pio2);\n sincos_cos = sin_kernf(x + s1pio2);\n } else {\n sincos_sin = cos_kernf(s1pio2 - x);\n sincos_cos = sin_kernf(s1pio2 - x);\n }\n return;\n }\n /* -sin(x + c) is not correct if x+c could be 0: -0 vs +0 */\n sincos_sin = -sin_kernf(sign ? x + s2pio2 : x - s2pio2);\n sincos_cos = -cos_kernf(sign ? x + s2pio2 : x - s2pio2);\n return;\n }\n\n if (ix <= 0x40e231d5) { /* |x| ~<= 9π/4 */\n if (ix <= 0x40afeddf) { /* |x| ~<= 7π/4 */\n if (sign) {\n sincos_sin = cos_kernf(x + s3pio2);\n sincos_cos = -sin_kernf(x + s3pio2);\n } else {\n sincos_sin = -cos_kernf(x - s3pio2);\n sincos_cos = sin_kernf(x - s3pio2);\n }\n return;\n }\n sincos_sin = sin_kernf(sign ? x + s4pio2 : x - s4pio2);\n sincos_cos = cos_kernf(sign ? x + s4pio2 : x - s4pio2);\n return;\n }\n }\n\n /* sin(Inf or NaN) is NaN */\n if (ix >= 0x7f800000) {\n let xx = x - x;\n sincos_sin = xx;\n sincos_cos = xx;\n return;\n }\n\n /* general argument reduction needed */\n var n = rempio2f(x, ix, sign);\n var y = rempio2f_y;\n var s = sin_kernf(y);\n var c = cos_kernf(y);\n\n switch (n & 3) {\n case 0: {\n sincos_sin = s;\n sincos_cos = c;\n break;\n }\n case 1: {\n sincos_sin = c;\n sincos_cos = -s;\n break;\n }\n case 2: {\n sincos_sin = -s;\n sincos_cos = -c;\n break;\n }\n case 3:\n default: {\n sincos_sin = -c;\n sincos_cos = s;\n break;\n }\n }\n }\n}\n\nexport function ipow32(x: i32, e: i32): i32 {\n var out = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 5) {\n // 32 = 2 ^ 5, so need only five cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow64(x: i64, e: i32): i64 {\n var out: i64 = 1;\n if (ASC_SHRINK_LEVEL < 1) {\n if (e < 0) return 0;\n switch (e) {\n case 0: return 1;\n case 1: return x;\n case 2: return x * x;\n }\n\n let log = 32 - clz(e);\n if (log <= 6) {\n // 64 = 2 ^ 6, so need only six cases.\n // But some extra cases needs for properly overflowing\n switch (log) {\n case 6: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 5: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 4: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 3: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 2: {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n case 1: {\n if (e & 1) out *= x;\n }\n }\n return out;\n }\n }\n\n while (e > 0) {\n if (e & 1) out *= x;\n e >>= 1;\n x *= x;\n }\n return out;\n}\n\nexport function ipow32f(x: f32, e: i32): f32 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out: f32 = 1;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n\nexport function ipow64f(x: f64, e: i32): f64 {\n var sign = e >> 31;\n e = (e + sign) ^ sign; // abs(e)\n var out = 1.0;\n while (e) {\n out *= select(x, 1.0, e & 1);\n e >>= 1;\n x *= x;\n }\n return sign ? 1.0 / out : out;\n}\n',memory:'import { memcmp, memmove, memset } from "./util/memory";\nimport { E_NOTIMPLEMENTED } from "./util/error";\n\n/** Memory manager interface. */\nexport namespace memory {\n\n /** Gets the size of the memory in pages. */\n // @ts-ignore: decorator\n @builtin\n export declare function size(): i32;\n\n /** Grows the memory by the given size in pages and returns the previous size in pages. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export declare function grow(pages: i32): i32;\n\n /** Fills a section in memory with the specified byte value. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function fill(dst: usize, c: u8, n: usize): void {\n memset(dst, c, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Copies a section of memory to another. Has move semantics. */\n // @ts-ignore: decorator\n @unsafe @builtin\n export function copy(dst: usize, src: usize, n: usize): void {\n memmove(dst, src, n); // fallback if "bulk-memory" isn\'t enabled\n }\n\n /** Initializes a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Drops a memory segment. */\n // @ts-ignore: decorator\n @unsafe\n export function drop(segmentIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n /** Repeats a section of memory at a specific address. */\n // @ts-ignore: decorator\n @unsafe\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void {\n var index: usize = 0;\n var total = srcLength * count;\n while (index < total) {\n memory.copy(dst + index, src, srcLength);\n index += srcLength;\n }\n }\n\n /** Compares a section of memory to another. */\n // @ts-ignore: decorator\n @inline\n export function compare(vl: usize, vr: usize, n: usize): i32 {\n return memcmp(vl, vr, n);\n }\n}\n',number:'import { itoa, dtoa } from "./util/number";\nimport { strtol } from "./util/string";\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const NaN: f64 = 0 / 0;\n\n// @ts-ignore: decorator\n@builtin @inline\nexport const Infinity: f64 = 1 / 0;\n\nexport function isNaN(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value != value;\n}\n\nexport function isFinite(value: T): bool {\n if (!isFloat()) {\n if (!isInteger()) ERROR("numeric type expected");\n }\n return value - value == 0;\n}\n\n@sealed @unmanaged\nexport abstract class I8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i8 = i8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i8 = i8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i8 {\n return strtol(value, radix);\n }\n\n toString(this: i8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i16 = i16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i16 = i16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i16 {\n return strtol(value, radix);\n }\n\n toString(this: i16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i32 = i32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i32 = i32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i32 {\n return strtol(value, radix);\n }\n\n toString(this: i32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class I64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: i64 = i64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: i64 = i64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): i64 {\n return strtol(value, radix);\n }\n\n toString(this: i64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Isize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: isize = isize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: isize = isize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): isize {\n return strtol(value, radix);\n }\n\n toString(this: isize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U8 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u8 = u8.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u8 = u8.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u8 {\n return strtol(value, radix);\n }\n\n toString(this: u8): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U16 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u16 = u16.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u16 = u16.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u16 {\n return strtol(value, radix);\n }\n\n toString(this: u16): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u32 = u32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u32 = u32.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u32 {\n return strtol(value, radix);\n }\n\n toString(this: u32): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class U64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: u64 = u64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: u64 = u64.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): u64 {\n return strtol(value, radix);\n }\n\n toString(this: u64): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Usize {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: usize = usize.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: usize = usize.MAX_VALUE;\n\n static parseInt(value: string, radix: i32 = 0): usize {\n return strtol(value, radix);\n }\n\n toString(this: usize): String {\n // TODO: radix\n return itoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class Bool {\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: bool = bool.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: bool = bool.MAX_VALUE;\n\n toString(this: bool): String {\n // TODO: radix?\n return this ? "true" : "false";\n }\n}\n\nexport { Bool as Boolean };\n\n@sealed @unmanaged\nexport abstract class F32 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f32 = f32.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f32 = f32.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f32 = f32.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f32 = f32.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f32 = f32.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f32 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f32 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f32 = NaN;\n\n static isNaN(value: f32): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f32): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f32): bool {\n return abs(value) <= f32.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f32): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f32 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f32 {\n return parseFloat(value);\n }\n\n toString(this: f32): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\n@sealed @unmanaged\nexport abstract class F64 {\n\n // @ts-ignore: decorator\n @lazy\n static readonly EPSILON: f64 = f64.EPSILON;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_VALUE: f64 = f64.MIN_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_VALUE: f64 = f64.MAX_VALUE;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MIN_SAFE_INTEGER: f64 = f64.MIN_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly MAX_SAFE_INTEGER: f64 = f64.MAX_SAFE_INTEGER;\n\n // @ts-ignore: decorator\n @lazy\n static readonly POSITIVE_INFINITY: f64 = Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NEGATIVE_INFINITY: f64 = -Infinity;\n\n // @ts-ignore: decorator\n @lazy\n static readonly NaN: f64 = NaN;\n\n static isNaN(value: f64): bool {\n return isNaN(value);\n }\n\n static isFinite(value: f64): bool {\n return isFinite(value);\n }\n\n static isSafeInteger(value: f64): bool {\n return abs(value) <= f64.MAX_SAFE_INTEGER && trunc(value) == value;\n }\n\n static isInteger(value: f64): bool {\n return isFinite(value) && trunc(value) == value;\n }\n\n static parseInt(value: string, radix: i32 = 0): f64 {\n return strtol(value, radix);\n }\n\n static parseFloat(value: string): f64 {\n return parseFloat(value);\n }\n\n toString(this: f64, radix: i32 = 0): String {\n // TODO: radix\n return dtoa(this);\n }\n}\n\nexport { F64 as Number };\n',polyfills:"export function bswap(value: T): T {\n if (isInteger()) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n }\n if (sizeof() == 4) {\n return (\n rotl(value & 0xFF00FF00, 8) |\n rotr(value & 0x00FF00FF, 8)\n );\n }\n if (sizeof() == 8) {\n let a = (value >> 8) & 0x00FF00FF00FF00FF;\n let b = (value & 0x00FF00FF00FF00FF) << 8;\n let v = a | b;\n\n a = (v >> 16) & 0x0000FFFF0000FFFF;\n b = (v & 0x0000FFFF0000FFFF) << 16;\n\n return rotr(a | b, 32);\n }\n return value;\n }\n assert(false);\n return value;\n}\n\nexport function bswap16(value: T): T {\n if (isInteger() && sizeof() <= 4) {\n if (sizeof() == 2) {\n return ((value << 8) | ((value >> 8) & 0x00FF));\n } else if (sizeof() == 4) {\n return (((value << 8) & 0xFF00) | ((value >> 8) & 0x00FF) | (value & 0xFFFF0000));\n }\n return value;\n }\n assert(false);\n return value;\n}\n",regexp:'export class RegExp {\n\n // @binding(CALL_NEW, [ STRING, STRING], OBJECT_HANDLE)\n constructor(pattern: string, flags: string = "") { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [ STRING ], PASS_THRU)\n test(search: string): bool { throw new Error("unreachable"); }\n\n // @binding(CALL_THIS, [], STRING)\n toString(): string { throw new Error("unreachable"); }\n\n}\n',rt:'import { Typeinfo, TypeinfoFlags } from "./shared/typeinfo";\nimport { E_INDEXOUTOFRANGE } from "./util/error";\nimport { BLOCK, BLOCK_OVERHEAD } from "./rt/common";\nimport { ArrayBufferView } from "./arraybuffer";\n\n// @ts-ignore: decorator\n@builtin\nexport declare const __rtti_base: usize;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_globals(cookie: u32): void;\n\n// @ts-ignore: decorator\n@builtin @unsafe\nexport declare function __visit_members(ref: usize, cookie: u32): void;\n\n// @ts-ignore: decorator\n@unsafe\nexport function __typeinfo(id: u32): TypeinfoFlags {\n var ptr = __rtti_base;\n if (id > load(ptr)) throw new Error(E_INDEXOUTOFRANGE);\n return changetype(ptr + sizeof() + id * offsetof()).flags;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __instanceof(ref: usize, superId: u32): bool { // keyword\n var id = changetype(ref - BLOCK_OVERHEAD).rtId;\n var ptr = __rtti_base;\n if (id <= load(ptr)) {\n do if (id == superId) return true;\n while (id = changetype(ptr + sizeof() + id * offsetof()).base);\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@unsafe\nexport function __allocArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize {\n var array = __alloc(offsetof(), id);\n var bufferSize = length << alignLog2;\n var buffer = __alloc(bufferSize, idof());\n store(array, __retain(buffer), offsetof("data"));\n changetype(array).dataStart = buffer;\n changetype(array).dataLength = bufferSize;\n store(changetype(array), length, offsetof("length_"));\n if (data) memory.copy(buffer, data, bufferSize);\n return array;\n}\n\n// These are provided by the respective implementation, included as another entry file by asc:\n\n// @builtin @unsafe\n// export declare function __alloc(size: usize, id: u32): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __realloc(ref: usize, size: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __free(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __retain(ref: usize): usize;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __release(ref: usize): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __collect(): void;\n\n// // @ts-ignore: decorator\n// @builtin @unsafe\n// export declare function __visit(ref: usize, cookie: u32): void;\n',"rt/common":"// Alignment guarantees\n\n// @ts-ignore: decorator\n@inline export const AL_BITS: u32 = 4; // 16 bytes to fit up to v128\n// @ts-ignore: decorator\n@inline export const AL_SIZE: usize = 1 << AL_BITS;\n// @ts-ignore: decorator\n@inline export const AL_MASK: usize = AL_SIZE - 1;\n\n// Extra debugging\n\n// @ts-ignore: decorator\n@inline export const DEBUG = true;\n\n// ╒════════════════ Common block layout (32-bit) ═════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │ MM info │ -16\n// ├───────────────────────────────────────────────────────────────┤\n// │ GC info │ -12\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime id │ -8\n// ├───────────────────────────────────────────────────────────────┤\n// │ runtime size │ -4\n// ╞═══════════════════════════════════════════════════════════════╡\n// │ ... │ ref\n@unmanaged export class BLOCK {\n /** Memory manager info. */\n mmInfo: usize; // WASM64 needs adaption\n /** Garbage collector info. */\n gcInfo: u32;\n /** Runtime class id. */\n rtId: u32;\n /** Runtime object size. */\n rtSize: u32;\n}\n\n// @ts-ignore: decorator\n@inline export const BLOCK_OVERHEAD = (offsetof() + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@inline export const BLOCK_MAXSIZE: usize = (1 << 30) - BLOCK_OVERHEAD;\n","rt/index-full":'export { __alloc } from "rt/tlsf";\nexport { __retain, __release, __collect } from "rt/pure";\nexport { __rtti_base } from "rt";\n',"rt/index-half":'import "rt/index-full";\n',"rt/index-none":'import "rt/index-stub";\n',"rt/index-stub":'export { __alloc, __retain, __release, __collect } from "rt/stub";\nexport { __rtti_base } from "rt";\n',"rt/pure":'import { DEBUG, BLOCK_OVERHEAD } from "rt/common";\nimport { Block, freeBlock, ROOT } from "rt/tlsf";\nimport { TypeinfoFlags } from "shared/typeinfo";\nimport { onincrement, ondecrement, onfree, onalloc } from "./rtrace";\n\n/////////////////////////// A Pure Reference Counting Garbage Collector ///////////////////////////\n// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf\n\n// ╒══════════════════════ GC Info structure ══════════════════════╕\n// │ 3 2 1 │\n// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│\n// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤\n// │B│color│ refCount │\n// └─┴─────┴───────────────────────────────────────────────────────┘\n// B: buffered\n\n// @ts-ignore: decorator\n@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1);\n// @ts-ignore: decorator\n@inline const COLOR_BITS = 3;\n// @ts-ignore: decorator\n@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS;\n// @ts-ignore: decorator\n@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1;\n\n// ╒════════╤═══════════════════ Colors ═══════════════════════════╕\n// │ Color │ Meaning │\n// ├────────┼──────────────────────────────────────────────────────┤\n// │ BLACK │ In use or free │\n// │ GRAY │ Possible member of cycle │\n// │ WHITE │ Member of garbage cycle │\n// │ PURPLE │ Possible root of cycle │\n// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │\n// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │\n// └────────┴──────────────────────────────────────────────────────┘\n// Acyclic detection has been decoupled, hence no GREEN.\n\n// @ts-ignore: decorator\n@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_RED: u32 = 4 << COLOR_SHIFT;\n// @ts-ignore: decorator\n@inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT;\n\n// @ts-ignore: decorator\n@inline const VISIT_DECREMENT = 1; // guard 0\n// @ts-ignore: decorator\n@inline const VISIT_MARKGRAY = 2;\n// @ts-ignore: decorator\n@inline const VISIT_SCAN = 3;\n// @ts-ignore: decorator\n@inline const VISIT_SCANBLACK = 4;\n// @ts-ignore: decorator\n@inline const VISIT_COLLECTWHITE = 5;\n\n// @ts-ignore: decorator\n@global @unsafe\nfunction __visit(ref: usize, cookie: i32): void {\n if (ref < __heap_base) return;\n var s = changetype(ref - BLOCK_OVERHEAD);\n switch (cookie) {\n case VISIT_DECREMENT: {\n decrement(s);\n break;\n }\n case VISIT_MARKGRAY: {\n if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0);\n s.gcInfo = s.gcInfo - 1;\n markGray(s);\n break;\n }\n case VISIT_SCAN: {\n scan(s);\n break;\n }\n case VISIT_SCANBLACK: {\n let info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if ((info & COLOR_MASK) != COLOR_BLACK) {\n scanBlack(s);\n }\n break;\n }\n case VISIT_COLLECTWHITE: {\n collectWhite(s);\n break;\n }\n default: if (DEBUG) assert(false);\n }\n}\n\n/** Increments the reference count of the specified block by one.*/\nfunction increment(s: Block): void {\n var info = s.gcInfo;\n assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow\n s.gcInfo = info + 1;\n if (isDefined(ASC_RTRACE)) onincrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n}\n\n/** Decrements the reference count of the specified block by one, possibly freeing it. */\nfunction decrement(s: Block): void {\n var info = s.gcInfo;\n var rc = info & REFCOUNT_MASK;\n if (isDefined(ASC_RTRACE)) ondecrement(s);\n if (DEBUG) assert(!(s.mmInfo & 1)); // used\n if (rc == 1) {\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_DECREMENT);\n if (!(info & BUFFERED_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0;\n }\n } else {\n if (DEBUG) assert(rc > 0);\n if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) {\n s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1);\n if (!(info & BUFFERED_MASK)) {\n appendRoot(s);\n }\n } else {\n s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1);\n }\n }\n}\n\n/** Buffer of possible roots. */\n// @ts-ignore: decorator\n@lazy var ROOTS: usize;\n/** Current absolute offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var CUR: usize = 0;\n/** Current absolute end offset into the `ROOTS` buffer. */\n// @ts-ignore: decorator\n@lazy var END: usize = 0;\n\n/** Appends a block to possible roots. */\nfunction appendRoot(s: Block): void {\n var cur = CUR;\n if (cur >= END) {\n growRoots(); // TBD: either that or pick a default and force collection on overflow\n cur = CUR;\n }\n store(cur, s);\n CUR = cur + sizeof();\n}\n\n/** Grows the roots buffer if it ran full. */\nfunction growRoots(): void {\n var oldRoots = ROOTS;\n var oldSize = CUR - oldRoots;\n var newSize = max(oldSize * 2, 64 << alignof());\n var newRoots = __alloc(newSize, 0);\n if (isDefined(ASC_RTRACE)) onfree(changetype(newRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n memory.copy(newRoots, oldRoots, oldSize);\n if (oldRoots) {\n if (isDefined(ASC_RTRACE)) onalloc(changetype(oldRoots - BLOCK_OVERHEAD)); // neglect unmanaged\n __free(oldRoots);\n }\n ROOTS = newRoots;\n CUR = newRoots + oldSize;\n END = newRoots + newSize;\n}\n\n/** Collects cyclic garbage. */\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n\n // markRoots\n var roots = ROOTS;\n var cur = roots;\n for (let pos = cur, end = CUR; pos < end; pos += sizeof()) {\n let s = load(pos);\n let info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) {\n markGray(s);\n store(cur, s);\n cur += sizeof();\n } else {\n if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) {\n freeBlock(ROOT, s);\n } else {\n s.gcInfo = info & ~BUFFERED_MASK;\n }\n }\n }\n CUR = cur;\n\n // scanRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n scan(load(pos));\n }\n\n // collectRoots\n for (let pos = roots; pos < cur; pos += sizeof()) {\n let s = load(pos);\n s.gcInfo = s.gcInfo & ~BUFFERED_MASK;\n collectWhite(s);\n }\n CUR = roots;\n}\n\n/** Marks a block as gray (possible member of cycle) during the collection phase. */\nfunction markGray(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) != COLOR_GRAY) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_MARKGRAY);\n }\n}\n\n/** Scans a block during the collection phase, determining whether it is garbage or not. */\nfunction scan(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_GRAY) {\n if ((info & REFCOUNT_MASK) > 0) {\n scanBlack(s);\n } else {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCAN);\n }\n }\n}\n\n/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */\nfunction scanBlack(s: Block): void {\n s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_SCANBLACK);\n}\n\n/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */\nfunction collectWhite(s: Block): void {\n var info = s.gcInfo;\n if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) {\n s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK;\n __visit_members(changetype(s) + BLOCK_OVERHEAD, VISIT_COLLECTWHITE);\n freeBlock(ROOT, s);\n }\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n if (ref > __heap_base) increment(changetype(ref - BLOCK_OVERHEAD));\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n if (ref > __heap_base) decrement(changetype(ref - BLOCK_OVERHEAD));\n}\n',"rt/rtrace":'import { BLOCK } from "./common";\n\nexport declare function onalloc(s: BLOCK): void;\nexport declare function onincrement(s: BLOCK): void;\nexport declare function ondecrement(s: BLOCK): void;\nexport declare function onfree(s: BLOCK): void;\n',"rt/stub":'import { AL_MASK, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE, AL_SIZE, DEBUG } from "rt/common";\n\n// @ts-ignore: decorator\n@lazy\nvar startOffset: usize = (__heap_base + AL_MASK) & ~AL_MASK;\n\n// @ts-ignore: decorator\n@lazy\nvar offset: usize = startOffset;\n\nfunction maybeGrowMemory(newOffset: usize): void {\n // assumes newOffset is aligned\n var pagesBefore = memory.size();\n var maxOffset = pagesBefore << 16;\n if (newOffset > maxOffset) {\n let pagesNeeded = ((newOffset - maxOffset + 0xffff) & ~0xffff) >>> 16;\n let pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable(); // out of memory\n }\n }\n offset = newOffset;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __alloc(size: usize, id: u32): usize {\n if (size > BLOCK_MAXSIZE) unreachable();\n var ptr = offset + BLOCK_OVERHEAD;\n var actualSize = max((size + AL_MASK) & ~AL_MASK, AL_SIZE);\n maybeGrowMemory(ptr + actualSize);\n var block = changetype(ptr - BLOCK_OVERHEAD);\n block.mmInfo = actualSize;\n if (DEBUG) block.gcInfo = -1;\n block.rtId = id;\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __realloc(ptr: usize, size: usize): usize {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n var actualSize = block.mmInfo;\n if (DEBUG) assert(block.gcInfo == -1);\n if (size > actualSize) {\n if (ptr + actualSize == offset) { // last block: grow\n if (size > BLOCK_MAXSIZE) unreachable();\n actualSize = (size + AL_MASK) & ~AL_MASK;\n maybeGrowMemory(ptr + actualSize);\n block.mmInfo = actualSize;\n } else { // copy to new block at least double the size\n actualSize = max((size + AL_MASK) & ~AL_MASK, actualSize << 1);\n let newPtr = __alloc(actualSize, block.rtId);\n memory.copy(newPtr, ptr, block.rtSize);\n block = changetype((ptr = newPtr) - BLOCK_OVERHEAD);\n }\n } else if (ptr + actualSize == offset) { // last block: shrink\n actualSize = (size + AL_MASK) & ~AL_MASK;\n offset = ptr + actualSize;\n block.mmInfo = actualSize;\n }\n block.rtSize = size;\n return ptr;\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nexport function __free(ptr: usize): void {\n assert(ptr != 0 && !(ptr & AL_MASK)); // must exist and be aligned\n var block = changetype(ptr - BLOCK_OVERHEAD);\n if (DEBUG) assert(block.gcInfo == -1);\n if (ptr + block.mmInfo == offset) { // last block: discard\n offset = changetype(block);\n }\n}\n\n// @ts-ignore: decorator\n@unsafe @global\nfunction __reset(): void { // special\n offset = startOffset;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __retain(ref: usize): usize {\n return ref;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __release(ref: usize): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __visit(ref: usize, cookie: u32): void {\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __collect(): void {\n}\n',"rt/tlsf":"import { AL_BITS, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from \"rt/common\";\nimport { onfree, onalloc } from \"./rtrace\";\nimport { REFCOUNT_MASK } from \"./pure\";\n\n/////////////////////// The TLSF (Two-Level Segregate Fit) memory allocator ///////////////////////\n// see: http://www.gii.upv.es/tlsf/\n\n// - `ffs(x)` is equivalent to `ctz(x)` with x != 0\n// - `fls(x)` is equivalent to `sizeof(x) * 8 - clz(x) - 1`\n\n// ╒══════════════ Block size interpretation (32-bit) ═════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┴─┴─┴─╫─┴─┴─┴─┤\n// │ | FL │ SB = SL + AL │ ◄─ usize\n// └───────────────────────────────────────────────┴───────╨───────┘\n// FL: first level, SL: second level, AL: alignment, SB: small block\n\n// @ts-ignore: decorator\n@inline const SL_BITS: u32 = 4;\n// @ts-ignore: decorator\n@inline const SL_SIZE: usize = 1 << SL_BITS;\n\n// @ts-ignore: decorator\n@inline const SB_BITS: usize = (SL_BITS + AL_BITS);\n// @ts-ignore: decorator\n@inline const SB_SIZE: usize = 1 << SB_BITS;\n\n// @ts-ignore: decorator\n@inline const FL_BITS: u32 = 31 - SB_BITS;\n\n// [00]: < 256B (SB) [12]: < 1M\n// [01]: < 512B [13]: < 2M\n// [02]: < 1K [14]: < 4M\n// [03]: < 2K [15]: < 8M\n// [04]: < 4K [16]: < 16M\n// [05]: < 8K [17]: < 32M\n// [06]: < 16K [18]: < 64M\n// [07]: < 32K [19]: < 128M\n// [08]: < 64K [20]: < 256M\n// [09]: < 128K [21]: < 512M\n// [10]: < 256K [22]: <= 1G - OVERHEAD\n// [11]: < 512K\n// VMs limit to 2GB total (currently), making one 1G block max (or three 512M etc.) due to block overhead\n\n// Tags stored in otherwise unused alignment bits\n\n// @ts-ignore: decorator\n@inline const FREE: usize = 1 << 0;\n// @ts-ignore: decorator\n@inline const LEFTFREE: usize = 1 << 1;\n// @ts-ignore: decorator\n@inline const TAGS_MASK: usize = FREE | LEFTFREE; // <= AL_MASK\n\n// ╒════════════════════ Block layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┼─┼─┼─┤ overhead ┐\n// │ size │0│L│F│ ◄─┐ info\n// ├─────────────────────────────────────────────────────────┴─┴─┴─┤ │\n// │ │ │\n// │ ... additional runtime overhead ... │ │\n// │ │ │\n// ╞═══════════════════════════════════════════════════════════════╡ │ ┐ ┘\n// │ if free: ◄ prev │ ◄─┤ usize\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: next ► │ ◄─┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ │ = 0\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ if free: back ▲ │ ◄─┘\n// └───────────────────────────────────────────────────────────────┘ payload ┘ >= MIN SIZE\n// F: FREE, L: LEFTFREE\n@unmanaged export class Block extends BLOCK {\n\n /** Previous free block, if any. Only valid if free, otherwise part of payload. */\n prev: Block | null;\n /** Next free block, if any. Only valid if free, otherwise part of payload. */\n next: Block | null;\n\n // If the block is free, there is a 'back'reference at its end pointing at its start.\n}\n\n// Block constants. A block must have a minimum size of three pointers so it can hold `prev`,\n// `next` and `back` if free.\n\n// @ts-ignore: decorator\n@inline const BLOCK_MINSIZE: usize = (3 * sizeof() + AL_MASK) & ~AL_MASK; // prev + next + back\n// @ts-ignore: decorator\n// @inline const BLOCK_MAXSIZE: usize = 1 << (FL_BITS + SB_BITS - 1); // exclusive, lives in common.ts\n\n/** Gets the left block of a block. Only valid if the left block is free. */\n// @ts-ignore: decorator\n@inline function GETFREELEFT(block: Block): Block {\n return load(changetype(block) - sizeof());\n}\n\n/** Gets the right block of of a block by advancing to the right by its size. */\n// @ts-ignore: decorator\n@inline function GETRIGHT(block: Block): Block {\n return changetype(changetype(block) + BLOCK_OVERHEAD + (block.mmInfo & ~TAGS_MASK));\n}\n\n// ╒═════════════════════ Root layout (32-bit) ════════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ┐\n// │ 0 | flMap S│ ◄────┐\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ slMap[0] S │ ◄─┐ │\n// ├───────────────────────────────────────────────────────────────┤ │ │\n// │ slMap[1] │ ◄─┤ │\n// ├───────────────────────────────────────────────────────────────┤ u32 │\n// │ slMap[22] │ ◄─┘ │\n// ╞═══════════════════════════════════════════════════════════════╡ usize\n// │ head[0] │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ ... │ ◄────┤\n// ├───────────────────────────────────────────────────────────────┤ │\n// │ head[367] │ ◄────┤\n// ╞═══════════════════════════════════════════════════════════════╡ │\n// │ tail │ ◄────┘\n// └───────────────────────────────────────────────────────────────┘ SIZE ┘\n// S: Small blocks map\n@unmanaged class Root {\n /** First level bitmap. */\n flMap: usize;\n}\n\n// Root constants. Where stuff is stored inside of the root structure.\n\n// @ts-ignore: decorator\n@inline const SL_START = sizeof();\n// @ts-ignore: decorator\n@inline const SL_END = SL_START + (FL_BITS << alignof());\n// @ts-ignore: decorator\n@inline const HL_START = (SL_END + AL_MASK) & ~AL_MASK;\n// @ts-ignore: decorator\n@inline const HL_END = HL_START + FL_BITS * SL_SIZE * sizeof();\n// @ts-ignore: decorator\n@inline const ROOT_SIZE = HL_END + sizeof();\n\n// @ts-ignore: decorator\n@lazy export var ROOT: Root;\n\n/** Gets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function GETSL(root: Root, fl: usize): u32 {\n return load(\n changetype(root) + (fl << alignof()),\n SL_START\n );\n}\n\n/** Sets the second level map of the specified first level. */\n// @ts-ignore: decorator\n@inline function SETSL(root: Root, fl: usize, slMap: u32): void {\n store(\n changetype(root) + (fl << alignof()),\n slMap,\n SL_START\n );\n}\n\n/** Gets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function GETHEAD(root: Root, fl: usize, sl: u32): Block | null {\n return load(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n HL_START\n );\n}\n\n/** Sets the head of the free list for the specified combination of first and second level. */\n// @ts-ignore: decorator\n@inline function SETHEAD(root: Root, fl: usize, sl: u32, head: Block | null): void {\n store(\n changetype(root) + (((fl << SL_BITS) + sl) << alignof()),\n head,\n HL_START\n );\n}\n\n/** Gets the tail block.. */\n// @ts-ignore: decorator\n@inline function GETTAIL(root: Root): Block {\n return load(\n changetype(root),\n HL_END\n );\n}\n\n/** Sets the tail block. */\n// @ts-ignore: decorator\n@inline function SETTAIL(root: Root, tail: Block): void {\n store(\n changetype(root),\n tail,\n HL_END\n );\n}\n\n/** Inserts a previously used block back into the free list. */\nfunction insertBlock(root: Root, block: Block): void {\n if (DEBUG) assert(block); // cannot be null\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n\n // merge with right block if also free\n if (rightInfo & FREE) {\n let newSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, right);\n block.mmInfo = blockInfo = (blockInfo & TAGS_MASK) | newSize;\n right = GETRIGHT(block);\n rightInfo = right.mmInfo;\n // 'back' is set below\n }\n }\n\n // merge with left block if also free\n if (blockInfo & LEFTFREE) {\n let left = GETFREELEFT(block);\n let leftInfo = left.mmInfo;\n if (DEBUG) assert(leftInfo & FREE); // must be free according to right tags\n let newSize = (leftInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (blockInfo & ~TAGS_MASK);\n if (newSize < BLOCK_MAXSIZE) {\n removeBlock(root, left);\n left.mmInfo = blockInfo = (leftInfo & TAGS_MASK) | newSize;\n block = left;\n // 'back' is set below\n }\n }\n\n right.mmInfo = rightInfo | LEFTFREE;\n // right is no longer used now, hence rightInfo is not synced\n\n // we now know the size of the block\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be a valid size\n if (DEBUG) assert(changetype(block) + BLOCK_OVERHEAD + size == changetype(right)); // must match\n\n // set 'back' to itself at the end of block\n store(changetype(right) - sizeof(), block);\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // perform insertion\n var head = GETHEAD(root, fl, sl);\n block.prev = null;\n block.next = head;\n if (head) head.prev = block;\n SETHEAD(root, fl, sl, block);\n\n // update first and second level maps\n root.flMap |= (1 << fl);\n SETSL(root, fl, GETSL(root, fl) | (1 << sl));\n}\n\n/** Removes a free block from internal lists. */\nfunction removeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(blockInfo & FREE); // must be free\n var size = blockInfo & ~TAGS_MASK;\n if (DEBUG) assert(size >= BLOCK_MINSIZE && size < BLOCK_MAXSIZE); // must be valid\n\n // mapping_insert\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const inv: usize = sizeof() * 8 - 1;\n fl = inv - clz(size);\n sl = ((size >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // link previous and next free block\n var prev = block.prev;\n var next = block.next;\n if (prev) prev.next = next;\n if (next) next.prev = prev;\n\n // update head if we are removing it\n if (block == GETHEAD(root, fl, sl)) {\n SETHEAD(root, fl, sl, next);\n\n // clear second level map if head is empty now\n if (!next) {\n let slMap = GETSL(root, fl);\n SETSL(root, fl, slMap &= ~(1 << sl));\n\n // clear first level map if second level is empty now\n if (!slMap) root.flMap &= ~(1 << fl);\n }\n }\n // note: does not alter left/back because it is likely that splitting\n // is performed afterwards, invalidating those changes. so, the caller\n // must perform those updates.\n}\n\n/** Searches for a free block of at least the specified size. */\nfunction searchBlock(root: Root, size: usize): Block | null {\n // size was already asserted by caller\n\n // mapping_search\n var fl: usize, sl: u32;\n if (size < SB_SIZE) {\n fl = 0;\n sl = (size >> AL_BITS);\n } else {\n const halfMaxSize = BLOCK_MAXSIZE >> 1; // don't round last fl\n const inv: usize = sizeof() * 8 - 1;\n const invRound = inv - SL_BITS;\n let requestSize = size < halfMaxSize\n ? size + (1 << (invRound - clz(size))) - 1\n : size;\n fl = inv - clz(requestSize);\n sl = ((requestSize >> (fl - SL_BITS)) ^ (1 << SL_BITS));\n fl -= SB_BITS - 1;\n }\n if (DEBUG) assert(fl < FL_BITS && sl < SL_SIZE); // fl/sl out of range\n\n // search second level\n var slMap = GETSL(root, fl) & (~0 << sl);\n var head: Block | null = null;\n if (!slMap) {\n // search next larger first level\n let flMap = root.flMap & (~0 << (fl + 1));\n if (!flMap) {\n head = null;\n } else {\n fl = ctz(flMap);\n slMap = GETSL(root, fl);\n if (DEBUG) assert(slMap); // can't be zero if fl points here\n head = GETHEAD(root, fl, ctz(slMap));\n }\n } else {\n head = GETHEAD(root, fl, ctz(slMap));\n }\n return head;\n}\n\n/** Prepares the specified block before (re-)use, possibly splitting it. */\nfunction prepareBlock(root: Root, block: Block, size: usize): void {\n // size was already asserted by caller\n\n var blockInfo = block.mmInfo;\n if (DEBUG) assert(!(size & AL_MASK)); // size must be aligned so the new block is\n\n // split if the block can hold another MINSIZE block incl. overhead\n var remaining = (blockInfo & ~TAGS_MASK) - size;\n if (remaining >= BLOCK_OVERHEAD + BLOCK_MINSIZE) {\n block.mmInfo = size | (blockInfo & LEFTFREE); // also discards FREE\n\n let spare = changetype(changetype(block) + BLOCK_OVERHEAD + size);\n spare.mmInfo = (remaining - BLOCK_OVERHEAD) | FREE; // not LEFTFREE\n insertBlock(root, spare); // also sets 'back'\n\n // otherwise tag block as no longer FREE and right as no longer LEFTFREE\n } else {\n block.mmInfo = blockInfo & ~FREE;\n GETRIGHT(block).mmInfo &= ~LEFTFREE;\n }\n}\n\n/** Adds more memory to the pool. */\nfunction addMemory(root: Root, start: usize, end: usize): bool {\n if (DEBUG) {\n assert(\n start <= end && // must be valid\n !(start & AL_MASK) && // must be aligned\n !(end & AL_MASK) // must be aligned\n );\n }\n\n var tail = GETTAIL(root);\n var tailInfo: usize = 0;\n if (tail) { // more memory\n if (DEBUG) assert(start >= changetype(tail) + BLOCK_OVERHEAD);\n\n // merge with current tail if adjacent\n if (start - BLOCK_OVERHEAD == changetype(tail)) {\n start -= BLOCK_OVERHEAD;\n tailInfo = tail.mmInfo;\n } else {\n // We don't do this, but a user might `memory.grow` manually\n // leading to non-adjacent pages managed by TLSF.\n }\n\n } else if (DEBUG) { // first memory\n assert(start >= changetype(root) + ROOT_SIZE); // starts after root\n }\n\n // check if size is large enough for a free block and the tail block\n var size = end - start;\n if (size < BLOCK_OVERHEAD + BLOCK_MINSIZE + BLOCK_OVERHEAD) {\n return false;\n }\n\n // left size is total minus its own and the zero-length tail's header\n var leftSize = size - (BLOCK_OVERHEAD << 1);\n var left = changetype(start);\n left.mmInfo = leftSize | FREE | (tailInfo & LEFTFREE);\n left.prev = null;\n left.next = null;\n\n // tail is a zero-length used block\n tail = changetype(start + size - BLOCK_OVERHEAD);\n tail.mmInfo = 0 | LEFTFREE;\n SETTAIL(root, tail);\n\n insertBlock(root, left); // also merges with free left before tail / sets 'back'\n\n return true;\n}\n\n/** Grows memory to fit at least another block of the specified size. */\nfunction growMemory(root: Root, size: usize): void {\n // Here, both rounding performed in searchBlock ...\n const halfMaxSize = BLOCK_MAXSIZE >> 1;\n if (size < halfMaxSize) { // don't round last fl\n const invRound = (sizeof() * 8 - 1) - SL_BITS;\n size += (1 << (invRound - clz(size))) - 1;\n }\n // and additional BLOCK_OVERHEAD must be taken into account. If we are going\n // to merge with the tail block, that's one time, otherwise it's two times.\n var pagesBefore = memory.size();\n size += BLOCK_OVERHEAD << usize((pagesBefore << 16) - BLOCK_OVERHEAD != changetype(GETTAIL(root)));\n var pagesNeeded = (((size + 0xffff) & ~0xffff) >>> 16);\n var pagesWanted = max(pagesBefore, pagesNeeded); // double memory\n if (memory.grow(pagesWanted) < 0) {\n if (memory.grow(pagesNeeded) < 0) unreachable();\n }\n var pagesAfter = memory.size();\n addMemory(root, pagesBefore << 16, pagesAfter << 16);\n}\n\n/** Prepares and checks an allocation size. */\nfunction prepareSize(size: usize): usize {\n if (size >= BLOCK_MAXSIZE) throw new Error(\"allocation too large\");\n return max((size + AL_MASK) & ~AL_MASK, BLOCK_MINSIZE); // align and ensure min size\n}\n\n/** Initilizes the root structure. */\nexport function initializeRoot(): void {\n var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK;\n var pagesBefore = memory.size();\n var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16);\n if (pagesNeeded > pagesBefore && memory.grow(pagesNeeded - pagesBefore) < 0) unreachable();\n var root = changetype(rootOffset);\n root.flMap = 0;\n SETTAIL(root, changetype(0));\n for (let fl: usize = 0; fl < FL_BITS; ++fl) {\n SETSL(root, fl, 0);\n for (let sl: u32 = 0; sl < SL_SIZE; ++sl) {\n SETHEAD(root, fl, sl, null);\n }\n }\n addMemory(root, (rootOffset + ROOT_SIZE + AL_MASK) & ~AL_MASK, memory.size() << 16);\n ROOT = root;\n}\n\n/** Allocates a block of the specified size. */\nexport function allocateBlock(root: Root, size: usize): Block {\n var payloadSize = prepareSize(size);\n var block = searchBlock(root, payloadSize);\n if (!block) {\n growMemory(root, payloadSize);\n block = searchBlock(root, payloadSize);\n if (DEBUG) assert(block); // must be found now\n }\n if (DEBUG) assert((block.mmInfo & ~TAGS_MASK) >= payloadSize); // must fit\n block.gcInfo = 0; // RC=0\n // block.rtId = 0; // set by the caller (__alloc)\n block.rtSize = size;\n removeBlock(root, block);\n prepareBlock(root, block, payloadSize);\n if (isDefined(ASC_RTRACE)) onalloc(block);\n return block;\n}\n\n/** Reallocates a block to the specified size. */\nexport function reallocateBlock(root: Root, block: Block, size: usize): Block {\n var payloadSize = prepareSize(size);\n var blockInfo = block.mmInfo;\n if (DEBUG) {\n assert(\n !(blockInfo & FREE) && // must be used\n !(block.gcInfo & ~REFCOUNT_MASK) // not buffered or != BLACK\n );\n }\n\n // possibly split and update runtime size if it still fits\n if (payloadSize <= (blockInfo & ~TAGS_MASK)) {\n prepareBlock(root, block, payloadSize);\n block.rtSize = size;\n return block;\n }\n\n // merge with right free block if merger is large enough\n var right = GETRIGHT(block);\n var rightInfo = right.mmInfo;\n if (rightInfo & FREE) {\n let mergeSize = (blockInfo & ~TAGS_MASK) + BLOCK_OVERHEAD + (rightInfo & ~TAGS_MASK);\n if (mergeSize >= payloadSize) {\n removeBlock(root, right);\n // TODO: this can yield an intermediate block larger than BLOCK_MAXSIZE, which\n // is immediately split though. does this trigger any assertions / issues?\n block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize;\n block.rtSize = size;\n prepareBlock(root, block, payloadSize);\n return block;\n }\n }\n\n // otherwise move the block\n var newBlock = allocateBlock(root, size);\n newBlock.rtId = block.rtId;\n memory.copy(changetype(newBlock) + BLOCK_OVERHEAD, changetype(block) + BLOCK_OVERHEAD, size);\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n return newBlock;\n}\n\n/** Frees a block. */\nexport function freeBlock(root: Root, block: Block): void {\n var blockInfo = block.mmInfo;\n assert(!(blockInfo & FREE)); // must be used (user might call through to this)\n block.mmInfo = blockInfo | FREE;\n insertBlock(root, block);\n if (isDefined(ASC_RTRACE)) onfree(block);\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __alloc(size: usize, id: u32): usize {\n var root = ROOT;\n if (!root) {\n initializeRoot();\n root = ROOT;\n }\n var block = allocateBlock(root, size);\n block.rtId = id;\n return changetype(block) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __realloc(ref: usize, size: usize): usize {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n return changetype(reallocateBlock(ROOT, changetype(ref - BLOCK_OVERHEAD), size)) + BLOCK_OVERHEAD;\n}\n\n// @ts-ignore: decorator\n@global @unsafe\nexport function __free(ref: usize): void {\n if (DEBUG) assert(ROOT); // must be initialized\n assert(ref != 0 && !(ref & AL_MASK)); // must exist and be aligned\n freeBlock(ROOT, changetype(ref - BLOCK_OVERHEAD));\n}\n",set:'/// \n\nimport { HASH } from "./util/hash";\n\n// A deterministic hash set based on CloseTable from https://github.com/jorendorff/dht\n\n// @ts-ignore: decorator\n@inline\nconst INITIAL_CAPACITY = 4;\n\n// @ts-ignore: decorator\n@inline\nconst FILL_FACTOR: f64 = 8 / 3;\n\n// @ts-ignore: decorator\n@inline\nconst FREE_FACTOR: f64 = 3 / 4;\n\n/** Structure of a set entry. */\n@unmanaged class SetEntry {\n key: K;\n taggedNext: usize; // LSB=1 indicates EMPTY\n}\n\n/** Empty bit. */\n// @ts-ignore: decorator\n@inline\nconst EMPTY: usize = 1 << 0;\n\n/** Size of a bucket. */\n// @ts-ignore: decorator\n@inline\nconst BUCKET_SIZE = sizeof();\n\n/** Computes the alignment of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_ALIGN(): usize {\n // can align to 4 instead of 8 if 32-bit and K is <= 32-bits\n const align = (sizeof() > sizeof() ? sizeof() : sizeof()) - 1;\n return align;\n}\n\n/** Computes the aligned size of an entry. */\n// @ts-ignore: decorator\n@inline\nfunction ENTRY_SIZE(): usize {\n const align = ENTRY_ALIGN();\n const size = (offsetof>() + align) & ~align;\n return size;\n}\n\nexport class Set {\n\n // buckets holding references to the respective first entry within\n private buckets: ArrayBuffer; // usize[bucketsMask + 1]\n private bucketsMask: u32;\n\n // entries in insertion order\n private entries: ArrayBuffer; // SetEntry[entriesCapacity]\n private entriesCapacity: i32;\n private entriesOffset: i32;\n private entriesCount: i32;\n\n get size(): i32 { return this.entriesCount; }\n\n constructor() { this.clear(); }\n\n clear(): void {\n const bucketsSize = INITIAL_CAPACITY * BUCKET_SIZE;\n this.buckets = new ArrayBuffer(bucketsSize);\n this.bucketsMask = INITIAL_CAPACITY - 1;\n const entriesSize = INITIAL_CAPACITY * ENTRY_SIZE();\n this.entries = new ArrayBuffer(entriesSize);\n this.entriesCapacity = INITIAL_CAPACITY;\n this.entriesOffset = 0;\n this.entriesCount = 0;\n }\n\n private find(key: T, hashCode: u32): SetEntry | null {\n var entry = load>( // unmanaged!\n changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE\n );\n while (entry) {\n if (!(entry.taggedNext & EMPTY) && entry.key == key) return entry;\n entry = changetype>(entry.taggedNext & ~EMPTY);\n }\n return null;\n }\n\n @operator("[]")\n has(key: T): bool {\n return this.find(key, HASH(key)) !== null;\n }\n\n add(key: T): void {\n var hashCode = HASH(key);\n var entry = this.find(key, hashCode); // unmanaged!\n if (!entry) {\n // check if rehashing is necessary\n if (this.entriesOffset == this.entriesCapacity) {\n this.rehash(\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ? this.bucketsMask // just rehash if 1/4+ entries are empty\n : (this.bucketsMask << 1) | 1 // grow capacity to next 2^N\n );\n }\n // append new entry\n entry = changetype>(changetype(this.entries) + this.entriesOffset++ * ENTRY_SIZE());\n entry.key = isManaged()\n ? changetype(__retain(changetype(key)))\n : key;\n ++this.entriesCount;\n // link with previous entry in bucket\n let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE;\n entry.taggedNext = load(bucketPtrBase);\n store(bucketPtrBase, changetype(entry));\n }\n }\n\n @operator("[]=")\n private __set(key: T, value: bool): void {\n if (value) this.add(key);\n else this.delete(key);\n }\n\n delete(key: T): bool {\n var entry = this.find(key, HASH(key)); // unmanaged!\n if (!entry) return false;\n if (isManaged()) __release(changetype(entry.key)); // exact \'key\'\n entry.taggedNext |= EMPTY;\n --this.entriesCount;\n // check if rehashing is appropriate\n var halfBucketsMask = this.bucketsMask >> 1;\n if (\n halfBucketsMask + 1 >= max(INITIAL_CAPACITY, this.entriesCount) &&\n this.entriesCount < (this.entriesCapacity * FREE_FACTOR)\n ) this.rehash(halfBucketsMask);\n return true;\n }\n\n private rehash(newBucketsMask: u32): void {\n var newBucketsCapacity = (newBucketsMask + 1);\n var newBuckets = new ArrayBuffer(newBucketsCapacity * BUCKET_SIZE);\n var newEntriesCapacity = (newBucketsCapacity * FILL_FACTOR);\n var newEntries = new ArrayBuffer(newEntriesCapacity * ENTRY_SIZE());\n\n // copy old entries to new entries\n var oldPtr = changetype(this.entries);\n var oldEnd = oldPtr + this.entriesOffset * ENTRY_SIZE();\n var newPtr = changetype(newEntries);\n while (oldPtr != oldEnd) {\n let oldEntry = changetype>(oldPtr); // unmanaged!\n if (!(oldEntry.taggedNext & EMPTY)) {\n let newEntry = changetype>(newPtr); // unmanaged!\n newEntry.key = oldEntry.key;\n let newBucketIndex = HASH(oldEntry.key) & newBucketsMask;\n let newBucketPtrBase = changetype(newBuckets) + newBucketIndex * BUCKET_SIZE;\n newEntry.taggedNext = load(newBucketPtrBase);\n store(newBucketPtrBase, newPtr);\n newPtr += ENTRY_SIZE();\n }\n oldPtr += ENTRY_SIZE();\n }\n\n this.buckets = newBuckets;\n this.bucketsMask = newBucketsMask;\n this.entries = newEntries;\n this.entriesCapacity = newEntriesCapacity;\n this.entriesOffset = this.entriesCount;\n }\n\n values(): T[] {\n // FIXME: this is preliminary, needs iterators/closures\n var start = changetype(this.entries);\n var size = this.entriesOffset;\n var values = Array.create(size);\n for (let i = 0; i < size; ++i) {\n let entry = changetype>(start + i * ENTRY_SIZE());\n if (!(entry.taggedNext & EMPTY)) {\n values.push(entry.key);\n }\n }\n return values;\n }\n\n toString(): string {\n return "[object Set]";\n }\n\n // RT integration\n\n @unsafe private __visit_impl(cookie: u32): void {\n __visit(changetype(this.buckets), cookie);\n var entries = changetype(this.entries);\n if (isManaged()) {\n let cur = entries;\n let end = cur + this.entriesOffset * ENTRY_SIZE();\n while (cur < end) {\n let entry = changetype>(cur);\n if (!(entry.taggedNext & EMPTY)) {\n let val = changetype(entry.key);\n if (isNullable()) {\n if (val) __visit(val, cookie);\n } else __visit(val, cookie);\n }\n cur += ENTRY_SIZE();\n }\n }\n __visit(entries, cookie);\n }\n}\n',"shared/feature":"// This file is shared with the compiler and must remain portable\n\n/** Indicates specific features to activate. */\nexport const enum Feature {\n /** No additional features. */\n NONE = 0,\n /** Sign extension operations. */\n SIGN_EXTENSION = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops\n /** Mutable global imports and exports. */\n MUTABLE_GLOBAL = 1 << 1, // see: https://github.com/WebAssembly/mutable-global\n /** Bulk memory operations. */\n BULK_MEMORY = 1 << 2, // see: https://github.com/WebAssembly/bulk-memory-operations\n /** SIMD types and operations. */\n SIMD = 1 << 3, // see: https://github.com/WebAssembly/simd\n /** Threading and atomic operations. */\n THREADS = 1 << 4 // see: https://github.com/WebAssembly/threads\n}\n","shared/target":"// This file is shared with the compiler and must remain portable\n\n/** Compilation target. */\nexport enum Target {\n /** WebAssembly with 32-bit pointers. */\n WASM32,\n /** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */\n WASM64,\n /** Portable. */\n JS\n}\n","shared/typeinfo":"// This file is shared with the compiler and must remain portable\n\n// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕\n// 3 2 1\n// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits\n// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base\n// │ count │\n// ╞═══════════════════════════════════════════════════════════════╡ ┐\n// │ Typeinfo#flags [id=0] │ id < count\n// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤\n// │ Typeinfo#base [id=0] │\n// ├───────────────────────────────────────────────────────────────┤\n// │ ... │\n\n/** Runtime type information data structure. */\n@unmanaged\nexport class Typeinfo {\n /** Flags describing the shape of this class type. */\n flags: TypeinfoFlags;\n /** Base class id or `0` if none. */\n base: u32;\n}\n\n/** Runtime type information flags. */\nexport const enum TypeinfoFlags {\n /** No specific flags. */\n NONE = 0,\n /** Type is an `ArrayBufferView`. */\n ARRAYBUFFERVIEW = 1 << 0,\n /** Type is an `Array`. */\n ARRAY = 1 << 1,\n /** Type is a `Set`. */\n SET = 1 << 2,\n /** Type is a `Map`. */\n MAP = 1 << 3,\n /** Type is inherently acyclic. */\n ACYCLIC = 1 << 4,\n /** Value alignment of 1 byte. */\n VALUE_ALIGN_0 = 1 << 5,\n /** Value alignment of 2 bytes. */\n VALUE_ALIGN_1 = 1 << 6,\n /** Value alignment of 4 bytes. */\n VALUE_ALIGN_2 = 1 << 7,\n /** Value alignment of 8 bytes. */\n VALUE_ALIGN_3 = 1 << 8,\n /** Value alignment of 16 bytes. */\n VALUE_ALIGN_4 = 1 << 9,\n /** Value is a signed type. */\n VALUE_SIGNED = 1 << 10,\n /** Value is a float type. */\n VALUE_FLOAT = 1 << 11,\n /** Value type is nullable. */\n VALUE_NULLABLE = 1 << 12,\n /** Value type is managed. */\n VALUE_MANAGED = 1 << 13,\n /** Key alignment of 1 byte. */\n KEY_ALIGN_0 = 1 << 14,\n /** Key alignment of 2 bytes. */\n KEY_ALIGN_1 = 1 << 15,\n /** Key alignment of 4 bytes. */\n KEY_ALIGN_2 = 1 << 16,\n /** Key alignment of 8 bytes. */\n KEY_ALIGN_3 = 1 << 17,\n /** Key alignment of 16 bytes. */\n KEY_ALIGN_4 = 1 << 18,\n /** Key is a signed type. */\n KEY_SIGNED = 1 << 19,\n /** Key is a float type. */\n KEY_FLOAT = 1 << 20,\n /** Key type is nullable. */\n KEY_NULLABLE = 1 << 21,\n /** Key type is managed. */\n KEY_MANAGED = 1 << 22\n}\n",string:'/// \n\nimport { BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./rt/common";\nimport { compareImpl, strtol, strtod, isSpace } from "./util/string";\nimport { E_INVALIDLENGTH } from "./util/error";\nimport { ArrayBufferView } from "./arraybuffer";\nimport { idof } from "./builtins";\n\n@sealed export abstract class String {\n\n @lazy static readonly MAX_LENGTH: i32 = BLOCK_MAXSIZE >>> alignof();\n\n static fromCharCode(unit: i32, surr: i32 = -1): string {\n var hasSur = surr > 0;\n var out = __alloc(2 << i32(hasSur), idof());\n store(out, unit);\n if (hasSur) store(out, surr, 2);\n return changetype(out); // retains\n }\n\n static fromCodePoint(code: i32): string {\n assert(code <= 0x10FFFF);\n var hasSur = code > 0xFFFF;\n var out = __alloc(2 << i32(hasSur), idof());\n if (!hasSur) {\n store(out, code);\n } else {\n code -= 0x10000;\n let hi: u32 = (code >>> 10) + 0xD800;\n let lo: u32 = (code & 0x3FF) + 0xDC00;\n store(out, (hi << 16) | lo);\n }\n return changetype(out); // retains\n }\n\n get length(): i32 {\n return changetype(changetype(this) - BLOCK_OVERHEAD).rtSize >> 1;\n }\n\n @operator("[]") charAt(pos: i32): String {\n if (pos >= this.length) return changetype("");\n var out = __alloc(2, idof());\n store(out, load(changetype(this) + (pos << 1)));\n return changetype(out); // retains\n }\n\n charCodeAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (NaN)\n return load(changetype(this) + (pos << 1));\n }\n\n codePointAt(pos: i32): i32 {\n if (pos >= this.length) return -1; // (undefined)\n var first = load(changetype(this) + (pos << 1));\n if (first < 0xD800 || first > 0xDBFF || pos + 1 == this.length) return first;\n var second = load(changetype(this) + ((pos + 1) << 1));\n if (second < 0xDC00 || second > 0xDFFF) return first;\n return ((first - 0xD800) << 10) + (second - 0xDC00) + 0x10000;\n }\n\n @operator("+") private static __concat(left: String, right: String): String {\n return select(left, changetype("null"), left !== null).concat(right);\n }\n\n concat(other: String): String {\n if (other === null) other = changetype("null");\n var thisSize: isize = this.length << 1;\n var otherSize: isize = other.length << 1;\n var outSize: usize = thisSize + otherSize;\n if (outSize == 0) return changetype("");\n var out = changetype(__alloc(outSize, idof())); // retains\n memory.copy(changetype(out), changetype(this), thisSize);\n memory.copy(changetype(out) + thisSize, changetype(other), otherSize);\n return out;\n }\n\n endsWith(search: String, end: i32 = String.MAX_LENGTH): bool {\n if (search === null) return false;\n end = min(max(end, 0), this.length);\n var searchLength = search.length;\n var searchStart = end - searchLength;\n if (searchStart < 0) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n @operator("==") private static __eq(left: String | null, right: String | null): bool {\n if (left === right) return true;\n if (left === null || right === null) return false;\n var leftLength = left.length;\n if (leftLength != right.length) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(left, 0, right, 0, leftLength);\n }\n\n @operator.prefix("!")\n private static __not(str: String | null): bool {\n return str === null || !str.length;\n }\n\n @operator("!=")\n private static __ne(left: String | null, right: String | null): bool {\n return !this.__eq(left, right);\n }\n\n @operator(">") private static __gt(left: String | null, right: String | null): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!leftLength) return false;\n if (!rightLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) > 0;\n }\n\n @operator(">=") private static __gte(left: String, right: String): bool {\n return !this.__lt(left, right);\n }\n\n @operator("<") private static __lt(left: String, right: String): bool {\n if (left === right || left === null || right === null) return false;\n var leftLength = left.length;\n var rightLength = right.length;\n if (!rightLength) return false;\n if (!leftLength) return true;\n // @ts-ignore: string <-> String\n return compareImpl(left, 0, right, 0, min(leftLength, rightLength)) < 0;\n }\n\n @operator("<=") private static __lte(left: String, right: String): bool {\n return !this.__gt(left, right);\n }\n\n includes(search: String, start: i32 = 0): bool {\n return this.indexOf(search, start) != -1;\n }\n\n indexOf(search: String, start: i32 = 0): i32 {\n var searchLen = search.length;\n if (!searchLen) return 0;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len);\n for (len -= searchLen; searchStart <= len; ++searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n lastIndexOf(search: String, start: i32 = i32.MAX_VALUE): i32 {\n var searchLen = search.length;\n if (!searchLen) return this.length;\n var len = this.length;\n if (!len) return -1;\n var searchStart = min(max(start, 0), len - searchLen);\n for (; searchStart >= 0; --searchStart) {\n // @ts-ignore: string <-> String\n if (!compareImpl(this, searchStart, search, 0, searchLen)) return searchStart;\n }\n return -1;\n }\n\n startsWith(search: String, start: i32 = 0): bool {\n if (search === null) search = changetype("null");\n var len = this.length;\n var searchStart = min(max(start, 0), len);\n var searchLength = search.length;\n if (searchLength + searchStart > len) return false;\n // @ts-ignore: string <-> String\n return !compareImpl(this, searchStart, search, 0, searchLength);\n }\n\n substr(start: i32, length: i32 = i32.MAX_VALUE): String { // legacy\n var intStart: isize = start;\n var end: isize = length;\n var size: isize = this.length;\n if (intStart < 0) intStart = max(size + intStart, 0);\n var resultLength = min(max(end, 0), size - intStart);\n if (resultLength <= 0) return changetype("");\n var out = __alloc(resultLength << 1, idof());\n memory.copy(out, changetype(this) + intStart, resultLength);\n return changetype(out); // retains\n }\n\n substring(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len: isize = this.length;\n var finalStart = min(max(start, 0), len);\n var finalEnd = min(max(end, 0), len);\n var fromPos = min(finalStart, finalEnd) << 1;\n var toPos = max(finalStart, finalEnd) << 1;\n len = toPos - fromPos;\n if (!len) return changetype("");\n if (!fromPos && toPos == this.length << 1) return this;\n var out = __alloc(len, idof());\n memory.copy(out, changetype(this) + fromPos, len);\n return changetype(out); // retains\n }\n\n trim(): String {\n var length = this.length;\n var size: usize = length << 1;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2; size -= 2;\n }\n if (!size) return changetype("");\n if (!offset && size == length << 1) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n @inline\n trimLeft(): String {\n return this.trimStart();\n }\n\n @inline\n trimRight(): String {\n return this.trimEnd();\n }\n\n trimStart(): String {\n var size = this.length << 1;\n var offset: usize = 0;\n while (offset < size && isSpace(load(changetype(this) + offset))) {\n offset += 2;\n }\n if (!offset) return this;\n size -= offset;\n if (!size) return changetype("");\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this) + offset, size);\n return changetype(out); // retains\n }\n\n trimEnd(): String {\n var originalSize = this.length << 1;\n var size = originalSize;\n while (size && isSpace(load(changetype(this) + size - 2))) {\n size -= 2;\n }\n if (!size) return changetype("");\n if (size == originalSize) return this;\n var out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n return changetype(out); // retains\n }\n\n padStart(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var prependSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n if (prependSize > padSize) {\n let repeatCount = (prependSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = prependSize - restBase;\n memory.repeat(out, changetype(pad), padSize, repeatCount);\n memory.copy(out + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out, changetype(pad), prependSize);\n }\n memory.copy(out + prependSize, changetype(this), thisSize);\n return changetype(out); // retains\n }\n\n padEnd(length: i32, pad: string = " "): String {\n var thisSize = this.length << 1;\n var targetSize = length << 1;\n var padSize = pad.length << 1;\n if (targetSize < thisSize || !padSize) return this;\n var appendSize = targetSize - thisSize;\n var out = __alloc(targetSize, idof());\n memory.copy(out, changetype(this), thisSize);\n if (appendSize > padSize) {\n let repeatCount = (appendSize - 2) / padSize;\n let restBase = repeatCount * padSize;\n let restSize = appendSize - restBase;\n memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount);\n memory.copy(out + thisSize + restBase, changetype(pad), restSize);\n } else {\n memory.copy(out + thisSize, changetype(pad), appendSize);\n }\n return changetype(out); // retains\n }\n\n repeat(count: i32 = 0): String {\n var length = this.length;\n\n // Most browsers can\'t handle strings 1 << 28 chars or longer\n if (count < 0 || length * count > (1 << 28)) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n\n if (count == 0 || !length) return changetype("");\n if (count == 1) return this;\n var out = __alloc((length * count) << 1, idof());\n memory.repeat(out, changetype(this), length << 1, count);\n return changetype(out); // retains\n }\n\n replace(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var index: isize = this.indexOf(search);\n if (~index) {\n let rlen: usize = replacement.length;\n len -= slen;\n let olen = len + rlen;\n if (olen) {\n let out = __alloc(olen << 1, idof());\n memory.copy(out, changetype(this), index << 1);\n memory.copy(\n out + (index << 1),\n changetype(replacement),\n rlen << 1\n );\n memory.copy(\n out + ((index + rlen) << 1),\n changetype(this) + ((index + slen) << 1),\n (len - index) << 1\n );\n return changetype(out);\n }\n }\n return this;\n }\n\n replaceAll(search: String, replacement: String): String {\n var len: usize = this.length;\n var slen: usize = search.length;\n if (len <= slen) {\n return len < slen ? this : select(replacement, this, search == this);\n }\n var rlen: usize = replacement.length;\n if (!slen) {\n if (!rlen) return this;\n // Special case: \'abc\'.replaceAll(\'\', \'-\') -> \'-a-b-c-\'\n let out = __alloc((len + (len + 1) * rlen) << 1, idof());\n memory.copy(out, changetype(replacement), rlen << 1);\n let offset = rlen;\n for (let i: usize = 0; i < len; ++i) {\n store(\n changetype(out) + (offset++ << 1),\n load(changetype(this) + (i << 1))\n );\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n }\n return changetype(out);\n }\n var prev: isize = 0, next: isize = 0;\n if (slen == rlen) {\n // Fast path when search and replacement have same length\n let size = len << 1;\n let out = __alloc(size, idof());\n memory.copy(out, changetype(this), size);\n while (~(next = this.indexOf(search, prev))) {\n memory.copy(out + (next << 1), changetype(replacement), rlen << 1);\n prev = next + slen;\n }\n return changetype(out);\n }\n var out: usize = 0, offset: usize = 0, resLen = len;\n while (~(next = this.indexOf(search, prev))) {\n if (!out) out = __alloc(len << 1, idof());\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let chunk = next - prev;\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n chunk << 1\n );\n offset += chunk;\n memory.copy(\n out + (offset << 1),\n changetype(replacement),\n rlen << 1\n );\n offset += rlen;\n prev = next + slen;\n }\n if (offset) {\n if (offset > resLen) {\n let newLength = resLen << 1;\n out = __realloc(out, newLength << 1);\n resLen = newLength;\n }\n let rest = len - prev;\n if (rest) {\n memory.copy(\n out + (offset << 1),\n changetype(this) + (prev << 1),\n rest << 1\n );\n }\n rest += offset;\n if (resLen > rest) out = __realloc(out, rest << 1);\n return changetype(out);\n }\n return this;\n }\n\n slice(start: i32, end: i32 = i32.MAX_VALUE): String {\n var len = this.length;\n start = start < 0 ? max(start + len, 0) : min(start, len);\n end = end < 0 ? max(end + len, 0) : min(end, len);\n len = end - start;\n if (len <= 0) return changetype("");\n var out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n return changetype(out); // retains\n }\n\n split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] {\n if (!limit) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n if (separator === null) return [this];\n var length: isize = this.length;\n var sepLen: isize = separator.length;\n if (limit < 0) limit = i32.MAX_VALUE;\n if (!sepLen) {\n if (!length) return changetype>(__allocArray(0, alignof(), idof>())); // retains\n // split by chars\n length = min(length, limit);\n let result = __allocArray(length, alignof(), idof>());\n let resultStart = changetype(result).dataStart;\n for (let i: isize = 0; i < length; ++i) {\n let charStr = __alloc(2, idof());\n store(charStr, load(changetype(this) + (i << 1)));\n store(resultStart + (i << alignof()), charStr); // result[i] = charStr\n if (isManaged()) __retain(charStr);\n }\n return changetype>(result); // retains\n } else if (!length) {\n let result = __allocArray(1, alignof(), idof>());\n store(changetype(result).dataStart, changetype("")); // static ""\n return changetype>(result); // retains\n }\n var result = changetype>(__allocArray(0, alignof(), idof>())); // retains\n var end = 0, start = 0, i = 0;\n while (~(end = this.indexOf(separator, start))) {\n let len = end - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out));\n } else {\n result.push(changetype(""));\n }\n if (++i == limit) return changetype>(result); // retains\n start = end + sepLen;\n }\n if (!start) { // also means: loop above didn\'t do anything\n result.push(this);\n return changetype>(result); // retains\n }\n var len = length - start;\n if (len > 0) {\n let out = __alloc(len << 1, idof());\n memory.copy(out, changetype(this) + (start << 1), len << 1);\n result.push(changetype(out)); // retains\n } else {\n result.push(changetype("")); // static ""\n }\n return changetype>(result); // retains\n // releases result\n }\n\n toString(): String {\n return this;\n }\n}\n\n// @ts-ignore: nolib\nexport type string = String;\n\nexport function parseInt(str: string, radix: i32 = 0): f64 {\n return strtol(str, radix);\n}\n\nexport function parseFloat(str: string): f64 {\n return strtod(str);\n}\n\n// Encoding helpers\nexport namespace String {\n\n export namespace UTF8 {\n\n export function byteLength(str: string, nullTerminated: bool = false): i32 {\n var strOff = changetype(str);\n var strEnd = strOff + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var bufLen = nullTerminated ? 1 : 0;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n bufLen += 1; strOff += 2;\n } else if (c1 < 2048) {\n bufLen += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n if ((load(strOff, 2) & 0xFC00) == 0xDC00) {\n strOff += 4; bufLen += 4;\n continue;\n }\n }\n strOff += 2; bufLen += 3;\n }\n }\n return bufLen;\n }\n\n export function encode(str: string, nullTerminated: bool = false): ArrayBuffer {\n var strOff = changetype(str);\n var strEnd = changetype(str) + changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(UTF8.byteLength(str, nullTerminated), idof());\n var bufOff = buf;\n while (strOff < strEnd) {\n let c1 = load(strOff);\n if (c1 < 128) {\n if (nullTerminated && !c1) break;\n store(bufOff, c1);\n bufOff += 1; strOff += 2;\n } else if (c1 < 2048) {\n store(bufOff, c1 >> 6 | 192);\n store(bufOff, c1 & 63 | 128, 1);\n bufOff += 2; strOff += 2;\n } else {\n if ((c1 & 0xFC00) == 0xD800 && strOff + 2 < strEnd) {\n let c2 = load(strOff, 2);\n if ((c2 & 0xFC00) == 0xDC00) {\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\n store(bufOff, c1 >> 18 | 240);\n store(bufOff, c1 >> 12 & 63 | 128, 1);\n store(bufOff, c1 >> 6 & 63 | 128, 2);\n store(bufOff, c1 & 63 | 128, 3);\n strOff += 4; bufOff += 4;\n continue;\n }\n }\n store(bufOff, c1 >> 12 | 224);\n store(bufOff, c1 >> 6 & 63 | 128, 1);\n store(bufOff, c1 & 63 | 128, 2);\n strOff += 2; bufOff += 3;\n }\n }\n if (nullTerminated) {\n assert(strOff <= strEnd);\n buf = __realloc(buf, bufOff - buf + 1);\n store(bufOff, 0);\n } else {\n assert(strOff == strEnd);\n }\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer, nullTerminated: bool = false): string {\n return decodeUnsafe(changetype(buf), buf.byteLength, nullTerminated);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated: bool = false): string {\n var bufOff = buf;\n var bufEnd = buf + len;\n assert(bufEnd >= bufOff); // guard wraparound\n var str = __alloc(len << 1, idof()); // max is one u16 char per u8 byte\n var strOff = str;\n while (bufOff < bufEnd) {\n let cp = load(bufOff++);\n if (cp < 128) {\n if (nullTerminated && !cp) break;\n store(strOff, cp);\n strOff += 2;\n } else if (cp > 191 && cp < 224) {\n if (bufEnd - bufOff < 1) break;\n store(strOff, (cp & 31) << 6 | load(bufOff++) & 63);\n strOff += 2;\n } else if (cp > 239 && cp < 365) {\n if (bufEnd - bufOff < 3) break;\n cp = (\n (cp & 7) << 18 |\n (load(bufOff) & 63) << 12 |\n (load(bufOff, 1) & 63) << 6 |\n load(bufOff, 2) & 63\n ) - 0x10000;\n bufOff += 3;\n store(strOff, 0xD800 + (cp >> 10));\n store(strOff, 0xDC00 + (cp & 1023), 2);\n strOff += 4;\n } else {\n if (bufEnd - bufOff < 2) break;\n store(strOff,\n (cp & 15) << 12 |\n (load(bufOff) & 63) << 6 |\n load(bufOff, 1) & 63\n );\n bufOff += 2; strOff += 2;\n }\n }\n return changetype(__realloc(str, strOff - str)); // retains\n }\n }\n\n export namespace UTF16 {\n\n export function byteLength(str: string): i32 {\n return changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n }\n\n export function encode(str: string): ArrayBuffer {\n var size = changetype(changetype(str) - BLOCK_OVERHEAD).rtSize;\n var buf = __alloc(size, idof());\n memory.copy(buf, changetype(str), size);\n return changetype(buf); // retains\n }\n\n export function decode(buf: ArrayBuffer): string {\n return decodeUnsafe(changetype(buf), buf.byteLength);\n }\n\n // @ts-ignore: decorator\n @unsafe\n export function decodeUnsafe(buf: usize, len: usize): string {\n var str = __alloc(len &= ~1, idof());\n memory.copy(str, buf, len);\n return changetype(str); // retains\n }\n }\n}\n',symbol:'import { Map } from "./map";\n\n// @ts-ignore: decorator\n@lazy\nvar stringToId: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar idToString: Map;\n\n// @ts-ignore: decorator\n@lazy\nvar nextId: usize = 12; // Symbol.unscopables + 1\n\n@unmanaged @sealed abstract class _Symbol {\n\n // TODO: all of the following default symbols are unused currently yet add to\n // binary size if #toString becomes compiled. Ultimately we\'ll most likely want\n // to remove the unsupported ones and only keep what\'s actually supported.\n\n // @ts-ignore: decorator\n @lazy\n static readonly hasInstance: symbol = changetype(1);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isConcatSpreadable: symbol = changetype(2);\n\n // @ts-ignore: decorator\n @lazy\n static readonly isRegExp: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly iterator: symbol = changetype(3);\n\n // @ts-ignore: decorator\n @lazy\n static readonly match: symbol = changetype(4);\n\n // @ts-ignore: decorator\n @lazy\n static readonly replace: symbol = changetype(5);\n\n // @ts-ignore: decorator\n @lazy\n static readonly search: symbol = changetype(6);\n\n // @ts-ignore: decorator\n @lazy\n static readonly species: symbol = changetype(7);\n\n // @ts-ignore: decorator\n @lazy\n static readonly split: symbol = changetype(8);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toPrimitive: symbol = changetype(9);\n\n // @ts-ignore: decorator\n @lazy\n static readonly toStringTag: symbol = changetype(10);\n\n // @ts-ignore: decorator\n @lazy\n static readonly unscopables: symbol = changetype(11);\n\n static for(key: string): symbol {\n if (!stringToId) { stringToId = new Map(); idToString = new Map(); }\n else if (stringToId.has(key)) return changetype(stringToId.get(key));\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n stringToId.set(key, id);\n idToString.set(id, key);\n return changetype(id);\n }\n\n static keyFor(sym: symbol): string | null {\n return idToString !== null && idToString.has(changetype(sym))\n ? idToString.get(changetype(sym))\n : null;\n }\n\n toString(): string {\n var id = changetype(this);\n var str = "";\n switch (id) {\n case 1: { str = "hasInstance"; break; }\n case 2: { str = "isConcatSpreadable"; break; }\n case 3: { str = "isRegExp"; break; }\n case 4: { str = "match"; break; }\n case 5: { str = "replace"; break; }\n case 6: { str = "search"; break; }\n case 7: { str = "species"; break; }\n case 8: { str = "split"; break; }\n case 9: { str = "toPrimitive"; break; }\n case 10: { str = "toStringTag"; break; }\n case 11: { str = "unscopables"; break; }\n default: {\n if (idToString !== null && idToString.has(id)) str = idToString.get(id);\n break;\n }\n }\n return "Symbol(" + str + ")";\n }\n}\n\nexport function Symbol(description: string | null = null): symbol {\n var id = nextId++;\n if (!id) unreachable(); // out of ids\n return changetype(id);\n}\n\nexport type Symbol = _Symbol;\n\n// @ts-ignore: nolib\nexport type symbol = _Symbol;\n',table:'import { E_NOTIMPLEMENTED } from "./util/error";\n\nexport namespace table {\n\n export function copy(dst: u32, src: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n\n export function drop(elementIndex: u32): void {\n throw new Error(E_NOTIMPLEMENTED);\n }\n}\n',typedarray:'import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort";\nimport { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";\nimport { idof } from "./builtins";\nimport { ArrayBufferView } from "./arraybuffer";\n\nexport class Int8Array extends ArrayBufferView {\n [key: number]: i8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): i8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: i8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i8, index: i32, array: Int8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i8, index: i32, self: Int8Array) => i8): Int8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i8, index: i32, self: Int8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i8, index: i32, self: Int8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i8, index: i32, self: Int8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8Array extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, value);\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint8Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8Array) => u8): Uint8Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint8ClampedArray extends ArrayBufferView {\n [key: number]: u8;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength;\n }\n\n @operator("[]")\n private __get(index: i32): u8 {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + index);\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u8 {\n return load(this.dataStart + index);\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value));\n }\n\n includes(searchElement: u8, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u8, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u8, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray {\n return FILL(this, value, start, end);\n }\n\n sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray {\n return SORT(this, fn);\n }\n\n subarray(start: i32 = 0, end: i32 = 0x7fffffff): Uint8ClampedArray {\n return SUBARRAY(this, start, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u8, index: i32, array: Uint8ClampedArray) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u8, index: i32, self: Uint8ClampedArray) => u8): Uint8ClampedArray {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u8, index: i32, self: Uint8ClampedArray) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u8, index: i32, self: Uint8ClampedArray) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint8ClampedArray {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int16Array extends ArrayBufferView {\n [key: number]: i16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i16, index: i32, array: Int16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i16, index: i32, self: Int16Array) => i16): Int16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i16, index: i32, self: Int16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i16, index: i32, self: Int16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i16, index: i32, self: Int16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint16Array extends ArrayBufferView {\n [key: number]: u16;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u16 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u16 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: native): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: native): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u16, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u16, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u16, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint16Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u16, index: i32, array: Uint16Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u16, index: i32, self: Uint16Array) => u16): Uint16Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u16, index: i32, self: Uint16Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u16, index: i32, self: Uint16Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u16, index: i32, self: Uint16Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint16Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int32Array extends ArrayBufferView {\n [key: number]: i32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i32, index: i32, array: Int32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i32, index: i32, self: Int32Array) => i32): Int32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i32, index: i32, self: Int32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i32, index: i32, self: Int32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i32, index: i32, self: Int32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint32Array extends ArrayBufferView {\n [key: number]: u32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u32, index: i32, array: Uint32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u32, index: i32, self: Uint32Array) => u32): Uint32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u32, index: i32, self: Uint32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u32, index: i32, self: Uint32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u32, index: i32, self: Uint32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Int64Array extends ArrayBufferView {\n [key: number]: i64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): i64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): i64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: i64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: i64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: i64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: i64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: i64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: i64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Int64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: i64, index: i32, array: Int64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: i64, index: i32, self: Int64Array) => i64): Int64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: i64, index: i32, self: Int64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: i64, index: i32, self: Int64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: i64, index: i32, self: Int64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Int64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Uint64Array extends ArrayBufferView {\n [key: number]: u64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): u64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): u64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: u64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: u64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: u64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: u64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: u64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: u64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Uint64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: u64, index: i32, array: Uint64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: u64, index: i32, self: Uint64Array) => u64): Uint64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: u64, index: i32, self: Uint64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: u64, index: i32, self: Uint64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: u64, index: i32, self: Uint64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Uint64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float32Array extends ArrayBufferView {\n [key: number]: f32;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f32 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f32 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f32): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f32): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f32, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f32, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f32, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f32, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float32Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f32, index: i32, array: Float32Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f32, index: i32, self: Float32Array) => f32): Float32Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f32, index: i32, self: Float32Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f32, index: i32, self: Float32Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f32, index: i32, self: Float32Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float32Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\nexport class Float64Array extends ArrayBufferView {\n [key: number]: f64;\n\n // @ts-ignore: decorator\n @lazy\n static readonly BYTES_PER_ELEMENT: usize = sizeof();\n\n constructor(length: i32) {\n super(length, alignof());\n }\n\n get buffer(): ArrayBuffer {\n return this.data;\n }\n\n get length(): i32 {\n return this.byteLength >>> alignof();\n }\n\n @operator("[]")\n private __get(index: i32): f64 {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n return load(this.dataStart + (index << alignof()));\n }\n\n @unsafe @operator("{}")\n private __uget(index: i32): f64 {\n return load(this.dataStart + (index << alignof()));\n }\n\n @operator("[]=")\n private __set(index: i32, value: f64): void {\n if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE);\n store(this.dataStart + (index << alignof()), value);\n }\n\n @unsafe @operator("{}=")\n private __uset(index: i32, value: f64): void {\n store(this.dataStart + (index << alignof()), value);\n }\n\n includes(searchElement: f64, fromIndex: i32 = 0): bool {\n return INCLUDES(this, searchElement, fromIndex);\n }\n\n indexOf(searchElement: f64, fromIndex: i32 = 0): i32 {\n return INDEX_OF(this, searchElement, fromIndex);\n }\n\n lastIndexOf(searchElement: f64, fromIndex: i32 = this.length): i32 {\n return LAST_INDEX_OF(this, searchElement, fromIndex);\n }\n\n fill(value: f64, start: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array {\n return FILL(this, value, start, end);\n }\n\n sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array {\n return SORT(this, comparator);\n }\n\n subarray(begin: i32 = 0, end: i32 = 0x7fffffff): Float64Array {\n return SUBARRAY(this, begin, end);\n }\n\n reduce(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE(this, fn, initialValue);\n }\n\n reduceRight(\n fn: (accumulator: T, value: f64, index: i32, array: Float64Array) => T,\n initialValue: T,\n ): T {\n return REDUCE_RIGHT(this, fn, initialValue);\n }\n\n map(fn: (value: f64, index: i32, self: Float64Array) => f64): Float64Array {\n return MAP(this, fn);\n }\n\n findIndex(fn: (value: f64, index: i32, self: Float64Array) => bool): i32 {\n return FIND_INDEX(this, fn);\n }\n\n some(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return SOME(this, fn);\n }\n\n every(fn: (value: f64, index: i32, self: Float64Array) => bool): bool {\n return EVERY(this, fn);\n }\n\n forEach(fn: (value: f64, index: i32, self: Float64Array) => void): void {\n FOREACH(this, fn);\n }\n\n reverse(): this {\n return REVERSE(this);\n }\n\n static wrap(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): Float64Array {\n return WRAP(buffer, byteOffset, length);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FILL(\n array: TArray,\n value: native,\n start: i32,\n end: i32\n): TArray {\n var dataStart = array.dataStart;\n var length = array.length;\n start = start < 0 ? max(length + start, 0) : min(start, length);\n end = end < 0 ? max(length + end, 0) : min(end, length);\n if (sizeof() == 1) {\n if (start < end) memory.fill(dataStart + start, value, (end - start));\n } else {\n for (; start < end; ++start) {\n store(dataStart + (start << alignof()), value);\n }\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SORT(\n array: TArray,\n comparator: (a: T, b: T) => i32\n): TArray {\n var length = array.length;\n if (length <= 1) return array;\n var base = array.dataStart;\n if (length == 2) {\n let a: T = load(base, sizeof()); // a = arr[1]\n let b: T = load(base); // b = arr[0]\n if (comparator(a, b) < 0) {\n store(base, b, sizeof()); // arr[1] = b\n store(base, a); // arr[0] = a\n }\n return array;\n }\n SORT_IMPL(base, length, comparator);\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SUBARRAY(\n array: TArray,\n begin: i32,\n end: i32\n): TArray {\n var len = array.length;\n begin = begin < 0 ? max(len + begin, 0) : min(begin, len);\n end = end < 0 ? max(len + end, 0) : min(end, len);\n end = max(end, begin);\n var out = changetype(__alloc(offsetof(), idof())); // retains\n out.data = array.data; // retains\n out.dataStart = array.dataStart + (begin << alignof());\n out.dataLength = (end - begin) << alignof();\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REDUCE_RIGHT(\n array: TArray,\n fn: (accumulator: TRet, value: T, index: i32, array: TArray) => TRet,\n initialValue: TRet\n): TRet {\n var dataStart = array.dataStart;\n for (let i = array.length - 1; i >= 0; i--) {\n initialValue = fn(initialValue, load(dataStart + (i << alignof())), i, array);\n }\n return initialValue;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction MAP(\n array: TArray,\n fn: (value: T, index: i32, self: TArray) => T,\n): TArray {\n var length = array.length;\n var dataStart = array.dataStart;\n var out = instantiate(length);\n var outDataStart = out.dataStart;\n for (let i = 0; i < length; i++) {\n store(\n outDataStart + (i << alignof()),\n fn(load(dataStart + (i << alignof())), i, array)\n );\n }\n return out;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FIND_INDEX(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): i32 {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return i;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INCLUDES(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): bool {\n return INDEX_OF(array, searchElement, fromIndex) >= 0;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0 || index >= length) return -1;\n if (index < 0) index = max(length + index, 0);\n var dataStart = array.dataStart;\n while (index < length) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n ++index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction LAST_INDEX_OF(\n array: TArray,\n searchElement: T,\n fromIndex: i32,\n): i32 {\n var index: isize = fromIndex;\n var length: isize = array.length;\n if (length == 0) return -1;\n if (index < 0) index = length + index; // no need to clamp\n else if (index >= length) index = length - 1;\n var dataStart = array.dataStart;\n while (index >= 0) {\n if (load(dataStart + (index << alignof())) == searchElement) return index;\n --index;\n }\n return -1;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction SOME(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) return true;\n }\n return false;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction EVERY(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => bool,\n): bool {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n if (fn(load(dataStart + (i << alignof())), i, array)) continue;\n return false;\n }\n return true;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction FOREACH(\n array: TArray,\n fn: (value: T, index: i32, array: TArray) => void,\n): void {\n var dataStart = array.dataStart;\n for (let i = 0, k = array.length; i < k; i++) {\n fn(load(dataStart + (i << alignof())), i, array);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nfunction REVERSE(array: TArray): TArray {\n var dataStart = array.dataStart;\n for (let front: usize = 0, back: usize = array.length - 1; front < back; ++front, --back) {\n let frontPtr = dataStart + (front << alignof());\n let backPtr = dataStart + (back << alignof());\n let temp = load(frontPtr);\n store(frontPtr, load(backPtr));\n store(backPtr, temp);\n }\n return array;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction WRAP(buffer: ArrayBuffer, byteOffset: i32 = 0, length: i32 = -1): TArray {\n var bufferByteLength = buffer.byteLength;\n if (byteOffset >= bufferByteLength) {\n throw new RangeError(E_INDEXOUTOFRANGE);\n }\n var byteLength: i32;\n if (length < 0) {\n if (length == -1) {\n const mask = (1 << alignof() - 1);\n if (buffer.byteLength & mask) {\n throw new RangeError(E_INVALIDLENGTH);\n } else {\n byteLength = buffer.byteLength;\n }\n } else {\n throw new RangeError(E_INVALIDLENGTH);\n }\n } else {\n byteLength = length << alignof();\n }\n if (byteOffset + byteLength > buffer.byteLength) {\n throw new RangeError(E_INVALIDLENGTH);\n }\n var out = changetype(__alloc(offsetof(), idof()));\n out.data = buffer;\n out.dataLength = byteLength;\n out.dataStart = changetype(buffer) + byteOffset;\n return out;\n}\n',"util/error":'// Common error messages for use accross the standard library. Keeping error messages compact\n// and reusing them where possible ensures minimal static data in binaries.\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INDEXOUTOFRANGE: string = "Index out of range";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_INVALIDLENGTH: string = "Invalid length";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_EMPTYARRAY: string = "Array is empty";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_HOLEYARRAY: string = "Element type must be nullable if array is holey";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_NOTIMPLEMENTED: string = "Not implemented";\n\n// @ts-ignore: decorator\n@lazy @inline\nexport const E_KEYNOTFOUND: string = "Key does not exist";\n',"util/hash":"// @ts-ignore: decorator\n@inline\nexport function HASH(key: T): u32 {\n if (isString()) {\n return hashStr(changetype(key));\n } else if (isReference()) {\n if (sizeof() == 4) return hash32(changetype(key));\n if (sizeof() == 8) return hash64(changetype(key));\n } else if (isFloat()) {\n if (sizeof() == 4) return hash32(reinterpret(f32(key)));\n if (sizeof() == 8) return hash64(reinterpret(f64(key)));\n } else {\n if (sizeof() == 1) return hash8 (u32(key));\n if (sizeof() == 2) return hash16(u32(key));\n if (sizeof() == 4) return hash32(u32(key));\n if (sizeof() == 8) return hash64(u64(key));\n }\n return unreachable();\n}\n\n// FNV-1a 32-bit as a starting point, see: http://isthe.com/chongo/tech/comp/fnv/\n\n// @ts-ignore: decorator\n@inline\nconst FNV_OFFSET: u32 = 2166136261;\n\n// @ts-ignore: decorator\n@inline\nconst FNV_PRIME: u32 = 16777619;\n\nfunction hash8(key: u32): u32 {\n return (FNV_OFFSET ^ key) * FNV_PRIME;\n}\n\nfunction hash16(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 8 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash32(key: u32): u32 {\n var v = FNV_OFFSET;\n v = (v ^ ( key & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((key >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( key >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hash64(key: u64): u32 {\n var l = key;\n var h = (key >>> 32);\n var v = FNV_OFFSET;\n v = (v ^ ( l & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((l >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( l >> 24 )) * FNV_PRIME;\n v = (v ^ ( h & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 8) & 0xff)) * FNV_PRIME;\n v = (v ^ ((h >> 16) & 0xff)) * FNV_PRIME;\n v = (v ^ ( h >> 24 )) * FNV_PRIME;\n return v;\n}\n\nfunction hashStr(key: string): u32 {\n var v = FNV_OFFSET;\n if (key !== null) {\n for (let i: usize = 0, k: usize = key.length << 1; i < k; ++i) {\n v = (v ^ load(changetype(key) + i)) * FNV_PRIME;\n }\n }\n return v;\n}\n","util/memory":"export function memcpy(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memcpy.c\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n let w: u32, x: u32;\n\n // copy 1 byte each until src is aligned to 4 bytes\n while (n && (src & 3)) {\n store(dest++, load(src++));\n n--;\n }\n\n // if dst is aligned to 4 bytes as well, copy 4 bytes each\n if ((dest & 3) == 0) {\n while (n >= 16) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n store(dest + 8, load(src + 8));\n store(dest + 12, load(src + 12));\n src += 16; dest += 16; n -= 16;\n }\n if (n & 8) {\n store(dest , load(src ));\n store(dest + 4, load(src + 4));\n dest += 8; src += 8;\n }\n if (n & 4) {\n store(dest, load(src));\n dest += 4; src += 4;\n }\n if (n & 2) { // drop to 2 bytes each\n store(dest, load(src));\n dest += 2; src += 2;\n }\n if (n & 1) { // drop to 1 byte\n store(dest++, load(src++));\n }\n return;\n }\n\n // if dst is not aligned to 4 bytes, use alternating shifts to copy 4 bytes each\n // doing shifts if faster when copying enough bytes (here: 32 or more)\n if (n >= 32) {\n switch (dest & 3) {\n // known to be != 0\n case 1: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 3;\n while (n >= 17) {\n x = load(src + 1);\n store(dest, w >> 24 | x << 8);\n w = load(src + 5);\n store(dest + 4, x >> 24 | w << 8);\n x = load(src + 9);\n store(dest + 8, w >> 24 | x << 8);\n w = load(src + 13);\n store(dest + 12, x >> 24 | w << 8);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 2: {\n w = load(src);\n store(dest++, load(src++));\n store(dest++, load(src++));\n n -= 2;\n while (n >= 18) {\n x = load(src + 2);\n store(dest, w >> 16 | x << 16);\n w = load(src + 6);\n store(dest + 4, x >> 16 | w << 16);\n x = load(src + 10);\n store(dest + 8, w >> 16 | x << 16);\n w = load(src + 14);\n store(dest + 12, x >> 16 | w << 16);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n case 3: {\n w = load(src);\n store(dest++, load(src++));\n n -= 1;\n while (n >= 19) {\n x = load(src + 3);\n store(dest, w >> 8 | x << 24);\n w = load(src + 7);\n store(dest + 4, x >> 8 | w << 24);\n x = load(src + 11);\n store(dest + 8, w >> 8 | x << 24);\n w = load(src + 15);\n store(dest + 12, x >> 8 | w << 24);\n src += 16; dest += 16; n -= 16;\n }\n break;\n }\n }\n }\n\n // copy remaining bytes one by one\n if (n & 16) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 8) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 4) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 2) {\n store(dest++, load(src++));\n store(dest++, load(src++));\n }\n if (n & 1) {\n store(dest++, load(src++));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memmove(dest: usize, src: usize, n: usize): void { // see: musl/src/string/memmove.c\n if (dest === src) return;\n if (ASC_SHRINK_LEVEL < 1) {\n if (src + n <= dest || dest + n <= src) {\n memcpy(dest, src, n);\n return;\n }\n }\n if (dest < src) {\n if ((src & 7) == (dest & 7)) {\n while (dest & 7) {\n if (!n) return;\n --n;\n store(dest++, load(src++));\n }\n while (n >= 8) {\n store(dest, load(src));\n n -= 8;\n dest += 8;\n src += 8;\n }\n }\n while (n) {\n store(dest++, load(src++));\n --n;\n }\n } else {\n if ((src & 7) == (dest & 7)) {\n while ((dest + n) & 7) {\n if (!n) return;\n store(dest + --n, load(src + n));\n }\n while (n >= 8) {\n n -= 8;\n store(dest + n, load(src + n));\n }\n }\n while (n) {\n store(dest + --n, load(src + n));\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/string/memset\n if (ASC_SHRINK_LEVEL > 1) {\n while (n) {\n store(dest++, c);\n --n;\n }\n } else {\n // fill head and tail with minimal branching\n if (!n) return;\n store(dest, c);\n store(dest + n - 1, c);\n if (n <= 2) return;\n\n store(dest + 1, c);\n store(dest + 2, c);\n store(dest + n - 2, c);\n store(dest + n - 3, c);\n if (n <= 6) return;\n store(dest + 3, c);\n store(dest + n - 4, c);\n if (n <= 8) return;\n\n // advance pointer to align it at 4-byte boundary\n let k: usize = -dest & 3;\n dest += k;\n n -= k;\n n &= -4;\n\n let c32: u32 = -1 / 255 * c;\n\n // fill head/tail up to 28 bytes each in preparation\n store(dest, c32);\n store(dest + n - 4, c32);\n if (n <= 8) return;\n store(dest + 4, c32);\n store(dest + 8, c32);\n store(dest + n - 12, c32);\n store(dest + n - 8, c32);\n if (n <= 24) return;\n store(dest + 12, c32);\n store(dest + 16, c32);\n store(dest + 20, c32);\n store(dest + 24, c32);\n store(dest + n - 28, c32);\n store(dest + n - 24, c32);\n store(dest + n - 20, c32);\n store(dest + n - 16, c32);\n\n // align to a multiple of 8\n k = 24 + (dest & 4);\n dest += k;\n n -= k;\n\n // copy 32 bytes each\n let c64: u64 = c32 | (c32 << 32);\n while (n >= 32) {\n store(dest, c64);\n store(dest + 8, c64);\n store(dest + 16, c64);\n store(dest + 24, c64);\n n -= 32;\n dest += 32;\n }\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function memcmp(vl: usize, vr: usize, n: usize): i32 { // see: musl/src/string/memcmp.c\n if (vl == vr) return 0;\n while (n != 0 && load(vl) == load(vr)) {\n n--; vl++; vr++;\n }\n return n ? load(vl) - load(vr) : 0;\n}\n","util/number":'/// \n\nimport { idof } from "../builtins";\nimport { CharCode } from "./string";\nimport { ArrayBufferView } from "../arraybuffer";\n\n// @ts-ignore: decorator\n@inline\nexport const MAX_DOUBLE_LENGTH = 28;\n\n// @ts-ignore: decorator\n@lazy @inline\nconst POWERS10: u32[] = [\n 1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000,\n 1000000000\n];\n\n/*\n Lookup table for pairwise char codes in range [0-99]\n\n "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",\n "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",\n "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",\n "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",\n "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",\n "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",\n "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",\n "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",\n "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",\n "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"\n*/\n// @ts-ignore: decorator\n@lazy @inline\nconst DIGITS: u32[] = [\n 0x00300030, 0x00310030, 0x00320030, 0x00330030, 0x00340030,\n 0x00350030, 0x00360030, 0x00370030, 0x00380030, 0x00390030,\n 0x00300031, 0x00310031, 0x00320031, 0x00330031, 0x00340031,\n 0x00350031, 0x00360031, 0x00370031, 0x00380031, 0x00390031,\n 0x00300032, 0x00310032, 0x00320032, 0x00330032, 0x00340032,\n 0x00350032, 0x00360032, 0x00370032, 0x00380032, 0x00390032,\n 0x00300033, 0x00310033, 0x00320033, 0x00330033, 0x00340033,\n 0x00350033, 0x00360033, 0x00370033, 0x00380033, 0x00390033,\n 0x00300034, 0x00310034, 0x00320034, 0x00330034, 0x00340034,\n 0x00350034, 0x00360034, 0x00370034, 0x00380034, 0x00390034,\n 0x00300035, 0x00310035, 0x00320035, 0x00330035, 0x00340035,\n 0x00350035, 0x00360035, 0x00370035, 0x00380035, 0x00390035,\n 0x00300036, 0x00310036, 0x00320036, 0x00330036, 0x00340036,\n 0x00350036, 0x00360036, 0x00370036, 0x00380036, 0x00390036,\n 0x00300037, 0x00310037, 0x00320037, 0x00330037, 0x00340037,\n 0x00350037, 0x00360037, 0x00370037, 0x00380037, 0x00390037,\n 0x00300038, 0x00310038, 0x00320038, 0x00330038, 0x00340038,\n 0x00350038, 0x00360038, 0x00370038, 0x00380038, 0x00390038,\n 0x00300039, 0x00310039, 0x00320039, 0x00330039, 0x00340039,\n 0x00350039, 0x00360039, 0x00370039, 0x00380039, 0x00390039\n];\n\n// @ts-ignore: decorator\n@lazy @inline\nconst EXP_POWERS: i16[] = [\n -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,\n -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,\n -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,\n -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,\n -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,\n 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,\n 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,\n 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,\n 907, 933, 960, 986, 1013, 1039, 1066\n];\n\n// 1e-348, 1e-340, ..., 1e340\n// @ts-ignore: decorator\n@lazy @inline\nconst FRC_POWERS: u64[] = [\n 0xFA8FD5A0081C0288, 0xBAAEE17FA23EBF76, 0x8B16FB203055AC76, 0xCF42894A5DCE35EA,\n 0x9A6BB0AA55653B2D, 0xE61ACF033D1A45DF, 0xAB70FE17C79AC6CA, 0xFF77B1FCBEBCDC4F,\n 0xBE5691EF416BD60C, 0x8DD01FAD907FFC3C, 0xD3515C2831559A83, 0x9D71AC8FADA6C9B5,\n 0xEA9C227723EE8BCB, 0xAECC49914078536D, 0x823C12795DB6CE57, 0xC21094364DFB5637,\n 0x9096EA6F3848984F, 0xD77485CB25823AC7, 0xA086CFCD97BF97F4, 0xEF340A98172AACE5,\n 0xB23867FB2A35B28E, 0x84C8D4DFD2C63F3B, 0xC5DD44271AD3CDBA, 0x936B9FCEBB25C996,\n 0xDBAC6C247D62A584, 0xA3AB66580D5FDAF6, 0xF3E2F893DEC3F126, 0xB5B5ADA8AAFF80B8,\n 0x87625F056C7C4A8B, 0xC9BCFF6034C13053, 0x964E858C91BA2655, 0xDFF9772470297EBD,\n 0xA6DFBD9FB8E5B88F, 0xF8A95FCF88747D94, 0xB94470938FA89BCF, 0x8A08F0F8BF0F156B,\n 0xCDB02555653131B6, 0x993FE2C6D07B7FAC, 0xE45C10C42A2B3B06, 0xAA242499697392D3,\n 0xFD87B5F28300CA0E, 0xBCE5086492111AEB, 0x8CBCCC096F5088CC, 0xD1B71758E219652C,\n 0x9C40000000000000, 0xE8D4A51000000000, 0xAD78EBC5AC620000, 0x813F3978F8940984,\n 0xC097CE7BC90715B3, 0x8F7E32CE7BEA5C70, 0xD5D238A4ABE98068, 0x9F4F2726179A2245,\n 0xED63A231D4C4FB27, 0xB0DE65388CC8ADA8, 0x83C7088E1AAB65DB, 0xC45D1DF942711D9A,\n 0x924D692CA61BE758, 0xDA01EE641A708DEA, 0xA26DA3999AEF774A, 0xF209787BB47D6B85,\n 0xB454E4A179DD1877, 0x865B86925B9BC5C2, 0xC83553C5C8965D3D, 0x952AB45CFA97A0B3,\n 0xDE469FBD99A05FE3, 0xA59BC234DB398C25, 0xF6C69A72A3989F5C, 0xB7DCBF5354E9BECE,\n 0x88FCF317F22241E2, 0xCC20CE9BD35C78A5, 0x98165AF37B2153DF, 0xE2A0B5DC971F303A,\n 0xA8D9D1535CE3B396, 0xFB9B7CD9A4A7443C, 0xBB764C4CA7A44410, 0x8BAB8EEFB6409C1A,\n 0xD01FEF10A657842C, 0x9B10A4E5E9913129, 0xE7109BFBA19C0C9D, 0xAC2820D9623BF429,\n 0x80444B5E7AA7CF85, 0xBF21E44003ACDD2D, 0x8E679C2F5E44FF8F, 0xD433179D9C8CB841,\n 0x9E19DB92B4E31BA9, 0xEB96BF6EBADF77D9, 0xAF87023B9BF0EE6B\n];\n\n// Count number of decimals for u32 values\n// In our case input value always non-zero so we can simplify some parts\nexport function decimalCount32(value: u32): u32 {\n if (value < 100000) {\n if (value < 100) {\n return select(1, 2, value < 10);\n } else {\n let m = select(4, 5, value < 10000);\n return select(3, m, value < 1000);\n }\n } else {\n if (value < 10000000) {\n return select(6, 7, value < 1000000);\n } else {\n let m = select(9, 10, value < 1000000000);\n return select(8, m, value < 100000000);\n }\n }\n}\n\n// Count number of decimals for u64 values\n// In our case input value always greater than 2^32-1 so we can skip some parts\nexport function decimalCount64(value: u64): u32 {\n if (value < 1000000000000000) {\n if (value < 1000000000000) {\n let m = select(11, 12, value < 100000000000);\n return select(10, m, value < 10000000000);\n } else {\n let m = select(14, 15, value < 100000000000000);\n return select(13, m, value < 10000000000000);\n }\n } else {\n if (value < 100000000000000000) {\n return select(16, 17, value < 10000000000000000);\n } else {\n let m = select(19, 20, value < 10000000000000000000);\n return select(18, m, value < 1000000000000000000);\n }\n }\n}\n\nfunction utoa32_lut(buffer: usize, num: u32, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 10000) {\n // in most VMs i32/u32 div and modulo by constant can be shared and simplificate\n let t = num / 10000;\n let r = num % 10000;\n num = t;\n\n let d1 = r / 100;\n let d2 = r % 100;\n\n let digits1 = load(lut + (d1 << alignof()));\n let digits2 = load(lut + (d2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n if (num >= 100) {\n let t = num / 100;\n let d1 = num % 100;\n num = t;\n offset -= 2;\n let digits = load(lut + (d1 << alignof()));\n store(buffer + (offset << 1), digits);\n }\n\n if (num >= 10) {\n offset -= 2;\n let digits = load(lut + (num << alignof()));\n store(buffer + (offset << 1), digits);\n } else {\n offset -= 1;\n let digit = CharCode._0 + num;\n store(buffer + (offset << 1), digit);\n }\n}\n\nfunction utoa64_lut(buffer: usize, num: u64, offset: usize): void {\n var lut = changetype(DIGITS).dataStart;\n while (num >= 100000000) {\n let t = num / 100000000;\n let r = (num - t * 100000000);\n num = t;\n\n let b = r / 10000;\n let c = r % 10000;\n\n let b1 = b / 100;\n let b2 = b % 100;\n let c1 = c / 100;\n let c2 = c % 100;\n\n let digits1 = load(lut + (c1 << alignof()));\n let digits2 = load(lut + (c2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n\n digits1 = load(lut + (b1 << alignof()));\n digits2 = load(lut + (b2 << alignof()));\n\n offset -= 4;\n store(buffer + (offset << 1), digits1 | (digits2 << 32));\n }\n\n utoa32_lut(buffer, num, offset);\n}\n\nfunction utoa_simple(buffer: usize, num: T, offset: usize): void {\n do {\n let t = num / 10;\n let r = (num % 10);\n num = changetype(t);\n offset -= 1;\n store(buffer + (offset << 1), CharCode._0 + r);\n } while (num);\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa32_core(buffer: usize, num: u32, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa32_lut(buffer, num, offset);\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function utoa64_core(buffer: usize, num: u64, offset: u32): void {\n if (ASC_SHRINK_LEVEL >= 1) {\n utoa_simple(buffer, num, offset);\n } else {\n utoa64_lut(buffer, num, offset);\n }\n}\n\nexport function utoa32(value: u32): String {\n if (!value) return "0";\n\n var decimals = decimalCount32(value);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n return changetype(out); // retains\n}\n\nexport function itoa32(value: i32): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var decimals = decimalCount32(value) + u32(sign);\n var out = __alloc(decimals << 1, idof());\n\n utoa32_core(out, value, decimals);\n if (sign) store(out, CharCode.MINUS);\n return changetype(out); // retains\n}\n\nexport function utoa64(value: u64): String {\n if (!value) return "0";\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n return changetype(out); // retains\n}\n\nexport function itoa64(value: i64): String {\n if (!value) return "0";\n\n var sign = value < 0;\n if (sign) value = -value;\n\n var out: usize;\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n let decimals = decimalCount32(val32) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa32_core(out, val32, decimals);\n } else {\n let decimals = decimalCount64(value) + u32(sign);\n out = __alloc(decimals << 1, idof());\n utoa64_core(out, value, decimals);\n }\n if (sign) store(out, CharCode.MINUS);\n\n return changetype(out); // retains\n}\n\nexport function itoa(value: T): String {\n if (!isInteger()) ERROR("integer type expected");\n if (isSigned()) {\n if (sizeof() <= 4) {\n return itoa32(value);\n } else {\n return itoa64(value);\n }\n } else {\n if (sizeof() <= 4) {\n return utoa32(value);\n } else {\n return utoa64(value);\n }\n }\n}\n\n// @ts-ignore: decorator\n@lazy\nvar _K: i32 = 0;\n\n// // @ts-ignore: decorator\n// @lazy\n// var _frc: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp: i32 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_minus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_plus: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _frc_pow: u64 = 0;\n\n// @ts-ignore: decorator\n@lazy\nvar _exp_pow: i32 = 0;\n\n// @ts-ignore: decorator\n@inline\nfunction umul64f(u: u64, v: u64): u64 {\n var u0 = u & 0xFFFFFFFF;\n var v0 = v & 0xFFFFFFFF;\n\n var u1 = u >> 32;\n var v1 = v >> 32;\n\n var l = u0 * v0;\n var t = u1 * v0 + (l >> 32);\n var w = u0 * v1 + (t & 0xFFFFFFFF);\n\n w += 0x7FFFFFFF; // rounding\n\n t >>= 32;\n w >>= 32;\n\n return u1 * v1 + t + w;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction umul64e(e1: i32, e2: i32): i32 {\n return e1 + e2 + 64; // where 64 is significand size\n}\n\n// @ts-ignore: decorator\n@inline\nfunction normalizedBoundaries(f: u64, e: i32): void {\n var frc = (f << 1) + 1;\n var exp = e - 1;\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var m = 1 + i32(f == 0x0010000000000000);\n\n _frc_plus = frc;\n _frc_minus = ((f << m) - 1) << e - m - exp;\n _exp = exp;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisuRound(buffer: usize, len: i32, delta: u64, rest: u64, ten_kappa: u64, wp_w: u64): void {\n var lastp = buffer + ((len - 1) << 1);\n var digit = load(lastp);\n while (\n rest < wp_w &&\n delta - rest >= ten_kappa && (\n rest + ten_kappa < wp_w ||\n wp_w - rest > rest + ten_kappa - wp_w\n )\n ) {\n --digit;\n rest += ten_kappa;\n }\n store(lastp, digit);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction getCachedPower(minExp: i32): void {\n const c = reinterpret(0x3FD34413509F79FE); // 1 / lg(10) = 0.30102999566398114\n var dk = (-61 - minExp) * c + 347;\t // dk must be positive, so can do ceiling in positive\n var k = dk;\n k += i32(k != dk); // conversion with ceil\n\n var index = (k >> 3) + 1;\n _K = 348 - (index << 3);\t// decimal exponent no need lookup table\n _frc_pow = unchecked(FRC_POWERS[index]);\n _exp_pow = unchecked(EXP_POWERS[index]);\n}\n\n// @ts-ignore: decorator\n@inline\nfunction grisu2(value: f64, buffer: usize, sign: i32): i32 {\n\n // frexp routine\n var uv = reinterpret(value);\n var exp = ((uv & 0x7FF0000000000000) >>> 52);\n var sid = uv & 0x000FFFFFFFFFFFFF;\n var frc = (u64(exp != 0) << 52) + sid;\n exp = select(exp, 1, exp != 0) - (0x3FF + 52);\n\n normalizedBoundaries(frc, exp);\n getCachedPower(_exp);\n\n // normalize\n var off = clz(frc);\n frc <<= off;\n exp -= off;\n\n var frc_pow = _frc_pow;\n var exp_pow = _exp_pow;\n\n var w_frc = umul64f(frc, frc_pow);\n var w_exp = umul64e(exp, exp_pow);\n\n var wp_frc = umul64f(_frc_plus, frc_pow) - 1;\n var wp_exp = umul64e(_exp, exp_pow);\n\n var wm_frc = umul64f(_frc_minus, frc_pow) + 1;\n var delta = wp_frc - wm_frc;\n\n return genDigits(buffer, w_frc, w_exp, wp_frc, wp_exp, delta, sign);\n}\n\nfunction genDigits(buffer: usize, w_frc: u64, w_exp: i32, mp_frc: u64, mp_exp: i32, delta: u64, sign: i32): i32 {\n var one_exp = -mp_exp;\n var one_frc = (1) << one_exp;\n var mask = one_frc - 1;\n\n var wp_w_frc = mp_frc - w_frc;\n var wp_w_exp = mp_exp;\n\n var p1 = (mp_frc >> one_exp);\n var p2 = mp_frc & mask;\n\n var kappa = decimalCount32(p1);\n var len = sign;\n\n var lut = changetype(POWERS10).dataStart;\n\n while (kappa > 0) {\n let d: u32;\n switch (kappa) {\n case 10: { d = p1 / 1000000000; p1 %= 1000000000; break; }\n case 9: { d = p1 / 100000000; p1 %= 100000000; break; }\n case 8: { d = p1 / 10000000; p1 %= 10000000; break; }\n case 7: { d = p1 / 1000000; p1 %= 1000000; break; }\n case 6: { d = p1 / 100000; p1 %= 100000; break; }\n case 5: { d = p1 / 10000; p1 %= 10000; break; }\n case 4: { d = p1 / 1000; p1 %= 1000; break; }\n case 3: { d = p1 / 100; p1 %= 100; break; }\n case 2: { d = p1 / 10; p1 %= 10; break; }\n case 1: { d = p1; p1 = 0; break; }\n default: { d = 0; break; }\n }\n\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n --kappa;\n let tmp = ((p1) << one_exp) + p2;\n if (tmp <= delta) {\n _K += kappa;\n grisuRound(buffer, len, delta, tmp, load(lut + (kappa << alignof())) << one_exp, wp_w_frc);\n return len;\n }\n }\n\n while (1) {\n p2 *= 10;\n delta *= 10;\n\n let d = p2 >> one_exp;\n if (d | len) store(buffer + (len++ << 1), CharCode._0 + d);\n\n p2 &= mask;\n --kappa;\n if (p2 < delta) {\n _K += kappa;\n wp_w_frc *= load(lut + (-kappa << alignof()));\n grisuRound(buffer, len, delta, p2, one_frc, wp_w_frc);\n return len;\n }\n }\n\n return len;\n}\n\n// @ts-ignore: decorator\n@inline\nfunction genExponent(buffer: usize, k: i32): i32 {\n var sign = k < 0;\n if (sign) k = -k;\n var decimals = decimalCount32(k) + 1;\n utoa32_core(buffer, k, decimals);\n store(buffer, select(CharCode.MINUS, CharCode.PLUS, sign));\n return decimals;\n}\n\nfunction prettify(buffer: usize, length: i32, k: i32): i32 {\n if (!k) {\n store(buffer + (length << 1), CharCode.DOT | (CharCode._0 << 16));\n return length + 2;\n }\n\n var kk = length + k;\n if (length <= kk && kk <= 21) {\n // 1234e7 -> 12340000000\n for (let i = length; i < kk; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n store(buffer + (kk << 1), CharCode.DOT | (CharCode._0 << 16));\n return kk + 2;\n } else if (kk > 0 && kk <= 21) {\n // 1234e-2 -> 12.34\n let ptr = buffer + (kk << 1);\n memory.copy(\n ptr + 2,\n ptr,\n -k << 1\n );\n store(buffer + (kk << 1), CharCode.DOT);\n return length + 1;\n } else if (-6 < kk && kk <= 0) {\n // 1234e-6 -> 0.001234\n let offset = 2 - kk;\n memory.copy(\n buffer + (offset << 1),\n buffer,\n length << 1\n );\n store(buffer, CharCode._0 | (CharCode.DOT << 16));\n for (let i = 2; i < offset; ++i) {\n store(buffer + (i << 1), CharCode._0);\n }\n return length + offset;\n } else if (length == 1) {\n // 1e30\n store(buffer, CharCode.e, 2);\n length = genExponent(buffer + 4, kk - 1);\n return length + 2;\n } else {\n let len = length << 1;\n memory.copy(\n buffer + 4,\n buffer + 2,\n len - 2\n );\n store(buffer, CharCode.DOT, 2);\n store(buffer + len, CharCode.e, 2);\n length += genExponent(buffer + len + 4, kk - 1);\n return length + 2;\n }\n}\n\nexport function dtoa_core(buffer: usize, value: f64): i32 {\n var sign = i32(value < 0);\n if (sign) {\n value = -value;\n store(buffer, CharCode.MINUS);\n }\n // assert(value > 0 && value <= 1.7976931348623157e308);\n var len = grisu2(value, buffer, sign);\n len = prettify(buffer + (sign << 1), len - sign, _K);\n return len + sign;\n}\n\nexport function dtoa(value: f64): String {\n if (value == 0) return "0.0";\n if (!isFinite(value)) {\n if (isNaN(value)) return "NaN";\n return select("-Infinity", "Infinity", value < 0);\n }\n var buffer = __alloc(MAX_DOUBLE_LENGTH << 1, idof());\n var length = dtoa_core(buffer, value);\n if (length == MAX_DOUBLE_LENGTH) return changetype(buffer);\n var result = changetype(buffer).substring(0, length);\n __free(buffer);\n return result;\n}\n\nexport function itoa_stream(buffer: usize, offset: usize, value: T): u32 {\n buffer += (offset << 1);\n if (!value) {\n store(buffer, CharCode._0);\n return 1;\n }\n var decimals: u32 = 0;\n if (isSigned()) {\n let sign = i32(value < 0);\n if (sign) value = changetype(-value);\n if (sizeof() <= 4) {\n decimals = decimalCount32(value) + sign;\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32) + sign;\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value) + sign;\n utoa64_core(buffer, value, decimals);\n }\n }\n if (sign) store(buffer, CharCode.MINUS);\n } else {\n if (sizeof() <= 4) {\n decimals = decimalCount32(value);\n utoa32_core(buffer, value, decimals);\n } else {\n if (value <= u32.MAX_VALUE) {\n let val32 = value;\n decimals = decimalCount32(val32);\n utoa32_core(buffer, val32, decimals);\n } else {\n decimals = decimalCount64(value);\n utoa64_core(buffer, value, decimals);\n }\n }\n }\n return decimals;\n}\n\nexport function dtoa_stream(buffer: usize, offset: usize, value: f64): u32 {\n buffer += (offset << 1);\n if (value == 0.0) {\n store(buffer, CharCode._0);\n store(buffer, CharCode.DOT, 2);\n store(buffer, CharCode._0, 4);\n return 3;\n }\n if (!isFinite(value)) {\n if (isNaN(value)) {\n store(buffer, CharCode.N);\n store(buffer, CharCode.a, 2);\n store(buffer, CharCode.N, 4);\n return 3;\n } else {\n let sign = i32(value < 0);\n let len = 8 + sign;\n memory.copy(buffer, changetype(select("-Infinity", "Infinity", sign)), len << 1);\n return len;\n }\n }\n return dtoa_core(buffer, value);\n}\n',"util/sort":'import { compareImpl } from "./string";\n\n// @ts-ignore: decorator\n@inline\nexport function COMPARATOR(): (a: T, b: T) => i32 {\n if (isInteger()) {\n if (isSigned() && sizeof() <= 4) {\n return (a: T, b: T): i32 => (i32(a) - i32(b));\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n } else if (isFloat()) {\n if (sizeof() == 4) {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f32(a));\n var ib = reinterpret(f32(b));\n ia ^= (ia >> 31) >>> 1;\n ib ^= (ib >> 31) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n } else {\n return (a: T, b: T): i32 => {\n var ia = reinterpret(f64(a));\n var ib = reinterpret(f64(b));\n ia ^= (ia >> 63) >>> 1;\n ib ^= (ib >> 63) >>> 1;\n return i32(ia > ib) - i32(ia < ib);\n };\n }\n } else if (isString()) {\n return (a: T, b: T): i32 => {\n if (a === b || a === null || b === null) return 0;\n var alen = changetype(a).length;\n var blen = changetype(b).length;\n if (!alen && !blen) return 0;\n if (!alen) return -1;\n if (!blen) return 1;\n return compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen));\n };\n } else {\n return (a: T, b: T): i32 => (i32(a > b) - i32(a < b));\n }\n}\n\n// @ts-ignore: decorator\n@inline\nexport function SORT(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n if (isReference()) {\n // TODO replace this to faster stable sort (TimSort) when it implemented\n insertionSort(dataStart, length, comparator);\n } else {\n if (length < 256) {\n insertionSort(dataStart, length, comparator);\n } else {\n weakHeapSort(dataStart, length, comparator);\n }\n }\n}\n\nfunction insertionSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n for (let i = 0; i < length; i++) {\n let a: T = load(dataStart + (i << alignof())); // a = arr[i]\n let j = i - 1;\n while (j >= 0) {\n let b: T = load(dataStart + (j << alignof())); // b = arr[j]\n if (comparator(a, b) < 0) {\n store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b\n } else break;\n }\n store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a\n }\n}\n\nfunction weakHeapSort(\n dataStart: usize,\n length: i32,\n comparator: (a: T, b: T) => i32\n): void {\n const shift32 = alignof();\n\n var bitsetSize = (length + 31) >> 5 << shift32;\n var bitset = __alloc(bitsetSize, 0); // indexed in 32-bit chunks below\n memory.fill(bitset, 0, bitsetSize);\n\n // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf\n\n for (let i = length - 1; i > 0; i--) {\n let j = i;\n while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1;\n\n let p = j >> 1;\n let a: T = load(dataStart + (p << alignof())); // a = arr[p]\n let b: T = load(dataStart + (i << alignof())); // b = arr[i]\n if (comparator(a, b) < 0) {\n store(\n bitset + (i >> 5 << shift32),\n load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31))\n );\n store(dataStart + (i << alignof()), a); // arr[i] = a\n store(dataStart + (p << alignof()), b); // arr[p] = b\n }\n }\n\n for (let i = length - 1; i >= 2; i--) {\n let a: T = load(dataStart); // a = arr[0]\n store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i]\n store(dataStart + (i << alignof()), a); // arr[i] = a\n\n let x = 1, y: i32;\n while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y;\n\n while (x > 0) {\n a = load(dataStart); // a = arr[0]\n let b: T = load(dataStart + (x << alignof())); // b = arr[x]\n\n if (comparator(a, b) < 0) {\n store(\n bitset + (x >> 5 << shift32),\n load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31))\n );\n store(dataStart + (x << alignof()), a); // arr[x] = a\n store(dataStart, b); // arr[0] = b\n }\n x >>= 1;\n }\n }\n\n __free(bitset);\n\n var t: T = load(dataStart, sizeof()); // t = arr[1]\n store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0]\n store(dataStart, t); // arr[0] = t\n}\n',"util/string":"export function compareImpl(str1: string, index1: usize, str2: string, index2: usize, len: usize): i32 {\n var result = 0;\n var ptr1 = changetype(str1) + (index1 << 1);\n var ptr2 = changetype(str2) + (index2 << 1);\n while (len && !(result = load(ptr1) - load(ptr2))) {\n --len, ptr1 += 2, ptr2 += 2;\n }\n return result;\n}\n\n// @ts-ignore: decorator\n@inline\nexport const enum CharCode {\n PLUS = 0x2B,\n MINUS = 0x2D,\n DOT = 0x2E,\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n A = 0x41,\n B = 0x42,\n E = 0x45,\n N = 0x4E,\n O = 0x4F,\n X = 0x58,\n Z = 0x5A,\n a = 0x61,\n b = 0x62,\n e = 0x65,\n n = 0x6E,\n o = 0x6F,\n x = 0x78,\n z = 0x7A\n}\n\nexport function isSpace(c: i32): bool {\n if (c <= 0xFF) {\n switch (c) {\n case 0x09: // \n case 0x0A: // \n case 0x0B: // \n case 0x0C: // \n case 0x0D: // \n case 0x20: // \n case 0xA0: return true; // \n }\n return false;\n }\n if (c >= 0x2000 && c <= 0x200A) return true;\n switch (c) {\n case 0x1680: // (1)\n case 0x2028: // (2)\n case 0x2029: // \n case 0x202F: // \n case 0x205F: // \n case 0x3000: // \n case 0xFEFF: return true; // \n }\n return false;\n}\n\n/** Parses a string to an integer (usually), using the specified radix. */\nexport function strtol(str: string, radix: i32 = 0): T {\n var len: i32 = str.length;\n if (!len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n var ptr = changetype(str) /* + HEAD -> offset */;\n var code = load(ptr);\n\n // determine sign\n // @ts-ignore: cast\n var sign: T = 1;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n // @ts-ignore: type\n sign = -1;\n } else if (code == CharCode.PLUS) {\n if (!--len) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n code = load(ptr += 2);\n }\n\n // determine radix\n if (!radix) {\n if (code == CharCode._0 && len > 2) {\n switch (load(ptr + 2)) {\n case CharCode.B:\n case CharCode.b: {\n ptr += 4; len -= 2;\n radix = 2;\n break;\n }\n case CharCode.O:\n case CharCode.o: {\n ptr += 4; len -= 2;\n radix = 8;\n break;\n }\n case CharCode.X:\n case CharCode.x: {\n ptr += 4; len -= 2;\n radix = 16;\n break;\n }\n default: radix = 10;\n }\n } else radix = 10;\n } else if (radix < 2 || radix > 36) {\n // @ts-ignore: cast\n if (isFloat()) return NaN;\n // @ts-ignore: cast\n return 0;\n }\n\n // calculate value\n // @ts-ignore: type\n var num: T = 0;\n while (len--) {\n code = load(ptr);\n if (code >= CharCode._0 && code <= CharCode._9) {\n code -= CharCode._0;\n } else if (code >= CharCode.A && code <= CharCode.Z) {\n code -= CharCode.A - 10;\n } else if (code >= CharCode.a && code <= CharCode.z) {\n code -= CharCode.a - 10;\n } else break;\n if (code >= radix) break;\n // @ts-ignore: type\n num = num * radix + code;\n ptr += 2;\n }\n // @ts-ignore: type\n return sign * num;\n}\n\n// FIXME: naive implementation\nexport function strtod(str: string): f64 {\n var len: i32 = str.length;\n if (!len) return NaN;\n\n var ptr = changetype(str);\n var code = load(ptr);\n\n // determine sign\n var sign = 1.0;\n // trim white spaces\n while (isSpace(code)) {\n code = load(ptr += 2);\n --len;\n }\n if (code == CharCode.MINUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n sign = -1.0;\n } else if (code == CharCode.PLUS) {\n if (!--len) return NaN;\n code = load(ptr += 2);\n }\n\n // calculate value\n var num = 0.0;\n while (len--) {\n code = load(ptr);\n if (code == CharCode.DOT) {\n ptr += 2;\n let fac = 0.1; // precision :(\n while (len--) {\n code = load(ptr);\n if (code == CharCode.E || code == CharCode.e) {\n assert(false); // TODO\n }\n code -= CharCode._0;\n if (code > 9) break;\n num += code * fac;\n fac *= 0.1;\n ptr += 2;\n }\n break;\n }\n code -= CharCode._0;\n if (code >= 10) break;\n num = num * 10 + code;\n ptr += 2;\n }\n return sign * num;\n}\n",vector:"/** Vector abstraction. */\n@sealed @unmanaged\nexport abstract class V128 {\n}\n"}):(()=>{const e=path.join(".","..","std","assembly"),n=__webpack_require__(!function(){var e=new Error("Cannot find module 'glob'");throw e.code="MODULE_NOT_FOUND",e}()).sync("**/!(*.d).ts",{cwd:e}),t={nearEntry:fs.readFileSync(nearLibEntry,"utf8")};return n.forEach(n=>t[n.replace(/\.ts$/,"")]=fs.readFileSync(path.join(e,n),"utf8")),t})(),exports.definitionFiles=exports.isBundle?Object({assembly:'/**\n * Environment definitions for compiling AssemblyScript to WebAssembly using asc.\n * @module std/assembly\n *//***/\n\n/// \n\n// Types\n\n/** An 8-bit signed integer. */\ndeclare type i8 = number;\n/** A 16-bit signed integer. */\ndeclare type i16 = number;\n/** A 32-bit signed integer. */\ndeclare type i32 = number;\n/** A 64-bit signed integer. */\ndeclare type i64 = number;\n/** A 32-bit signed integer when targeting 32-bit WebAssembly or a 64-bit signed integer when targeting 64-bit WebAssembly. */\ndeclare type isize = number;\n/** An 8-bit unsigned integer. */\ndeclare type u8 = number;\n/** A 16-bit unsigned integer. */\ndeclare type u16 = number;\n/** A 32-bit unsigned integer. */\ndeclare type u32 = number;\n/** A 64-bit unsigned integer. */\ndeclare type u64 = number;\n/** A 32-bit unsigned integer when targeting 32-bit WebAssembly or a 64-bit unsigned integer when targeting 64-bit WebAssembly. */\ndeclare type usize = number;\n/** A 1-bit unsigned integer. */\ndeclare type bool = boolean | number;\n/** A 32-bit float. */\ndeclare type f32 = number;\n/** A 64-bit float. */\ndeclare type f64 = number;\n/** A 128-bit vector. */\ndeclare type v128 = object;\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n/** Whether the bulk memory feature is enabled. */\ndeclare const ASC_FEATURE_BULK_MEMORY: bool;\n/** Whether the SIMD feature is enabled. */\ndeclare const ASC_FEATURE_SIMD: bool;\n/** Whether the threads feature is enabled. */\ndeclare const ASC_FEATURE_THREADS: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit or 64-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit or 64-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit or 64-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit or 64-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Reinterprets the bits of the specified value as type `T`. Valid reinterpretations are u32/i32 to/from f32 and u64/i64 to/from f64. */\ndeclare function reinterpret(value: number): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Equivalent to dereferncing a pointer in other languages. */\ndeclare function load(ptr: usize, immOffset?: usize, immAlign?: usize): T;\n/** Stores a value of the specified type to memory. Equivalent to dereferencing a pointer in other languages when assigning a value. */\ndeclare function store(ptr: usize, value: any, immOffset?: usize, immAlign?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. Both a statement and an expression of any type. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Heap base offset. */\ndeclare const __heap_base: usize;\n/** Determines the byte size of the specified underlying core type. Compiles to a constant. */\ndeclare function sizeof(): usize;\n/** Determines the alignment (log2) of the specified underlying core type. Compiles to a constant. */\ndeclare function alignof(): usize;\n/** Determines the end offset of the given class type. Compiles to a constant. */\ndeclare function offsetof(): usize;\n/** Determines the offset of the specified field within the given class type. Compiles to a constant. */\ndeclare function offsetof(fieldName: keyof T | string): usize;\n/** Determines the offset of the specified field within the given class type. Returns the class type\'s end offset if field name has been omitted. Compiles to a constant. */\ndeclare function offsetof(fieldName?: string): usize;\n/** Determines the name of a given type. */\ndeclare function nameof(value?: T): string;\n/** Determines the unique runtime id of a class type. Compiles to a constant. */\ndeclare function idof(): u32;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Emits a `call_indirect` instruction, calling the specified function in the function table by index with the specified arguments. Does result in a runtime error if the arguments do not match the called function. */\ndeclare function call_indirect(target: Function | u32, ...args: any[]): T;\n/** Emits a `call` instruction, calling the specified function in the function table directly with the specified arguments. Function index must be a compile-time constant. */\ndeclare function call_direct(target: Function | u32, ...args: any[]): T;\n/** Instantiates a new instance of `T` using the specified constructor arguments. */\ndeclare function instantiate(...args: any[]): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified type *or* expression is of an integer type and not a reference. Compiles to a constant. */\ndeclare function isInteger(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a float type. Compiles to a constant. */\ndeclare function isFloat(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a boolean type. */\ndeclare function isBoolean(value?: any): value is number;\n/** Tests if the specified type *or* expression can represent negative numbers. Compiles to a constant. */\ndeclare function isSigned(value?: any): value is number;\n/** Tests if the specified type *or* expression is of a reference type. Compiles to a constant. */\ndeclare function isReference(value?: any): value is object | string;\n/** Tests if the specified type *or* expression can be used as a string. Compiles to a constant. */\ndeclare function isString(value?: any): value is string | String;\n/** Tests if the specified type *or* expression can be used as an array. Compiles to a constant. */\ndeclare function isArray(value?: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. Compiles to a constant. */\ndeclare function isArrayLike(value?: any): value is ArrayLike;\n/** Tests if the specified type *or* expression is of a function type. Compiles to a constant. */\ndeclare function isFunction(value?: any): value is (...args: any) => any;\n/** Tests if the specified type *or* expression is of a nullable reference type. Compiles to a constant. */\ndeclare function isNullable(value?: any): bool;\n/** Tests if the specified expression resolves to a defined element. Compiles to a constant. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. Compiles to a constant. */\ndeclare function isConstant(expression: any): bool;\n/** Tests if the specified type *or* expression is of a managed type. Compiles to a constant. */\ndeclare function isManaged(value?: any): bool;\n/** Tests if the specified type is void. Compiles to a constant. */\ndeclare function isVoid(): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the (non-nullable) value. */\ndeclare function assert(isTrueish: T, message?: string): T & object; // any better way to model `: T != null`?\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n/** Returns the number of parameters in the given function signature type. */\ndeclare function lengthof any>(func?: T): i32;\n\n/** Atomic operations. */\ndeclare namespace atomic {\n /** Atomically loads an integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): T;\n /** Atomically stores an integer value to memory. */\n export function store(offset: usize, value: T, immOffset?: usize): void;\n /** Atomically adds an integer value in memory. */\n export function add(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically subtracts an integer value in memory. */\n export function sub(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise AND operation on an integer value in memory. */\n export function and(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise OR operation on an integer value in memory. */\n export function or(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically performs a bitwise XOR operation on an integer value in memory. */\n export function xor(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically exchanges an integer value in memory. */\n export function xchg(ptr: usize, value: T, immOffset?: usize): T;\n /** Atomically compares and exchanges an integer value in memory if the condition is met. */\n export function cmpxchg(ptr: usize, expected: T, replacement: T, immOffset?: usize): T;\n /** Performs a wait operation on an address in memory suspending this agent if the integer condition is met. */\n export function wait(ptr: usize, expected: T, timeout: i64): AtomicWaitResult;\n /** Performs a notify operation on an address in memory waking up suspended agents. */\n export function notify(ptr: usize, count: i32): i32;\n}\n\n/** Describes the result of an atomic wait operation. */\ndeclare enum AtomicWaitResult {\n /** Woken by another agent. */\n OK,\n /** Loaded value did not match the expected value. */\n NOT_EQUAL,\n /** Not woken before the timeout expired. */\n TIMED_OUT\n}\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i8;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Loads an 8-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit signed integer value from memory and returns it as a 32-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Loads a 32-bit integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i32;\n /** Stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 32-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 32-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i32;\n /** Atomically loads a 32-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i32;\n /** Atomically stores a 32-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i32, immOffset?: usize): void;\n /** Atomically stores a 32-bit integer value to memory. */\n export function store(offset: usize, value: i32, immOffset?: usize): void;\n /** Performs a wait operation on a 32-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i32, timeout: i64): AtomicWaitResult;\n /** Atomic 32-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n /** Atomic 32-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 32-bit integer value in memory. */\n export function add(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically subtracts a 32-bit integer value in memory. */\n export function sub(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise AND operation a 32-bit integer value in memory. */\n export function and(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise OR operation a 32-bit integer value in memory. */\n export function or(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically performs a bitwise XOR operation a 32-bit integer value in memory. */\n export function xor(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically exchanges a 32-bit integer value in memory. */\n export function xchg(offset: usize, value: i32, immOffset?: usize): i32;\n /** Atomically compares and exchanges a 32-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i32, replacement: i32, immOffset?: usize): i32;\n }\n }\n}\n/** Converts any other numeric value to a 64-bit signed integer. */\ndeclare function i64(value: any): i64;\ndeclare namespace i64 {\n /** Smallest representable value. */\n export const MIN_VALUE: i64;\n /** Largest representable value. */\n export const MAX_VALUE: i64;\n /** Loads an 8-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load8_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load16_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit signed integer value from memory and returns it as a 64-bit integer. */\n export function load32_s(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Loads a 64-bit unsigned integer value from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): i64;\n /** Stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize, immAlign?: usize): void;\n /** Atomic 64-bit integer operations. */\n export namespace atomic {\n /** Atomically loads an 8-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load8_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 16-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load16_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 32-bit unsigned integer value from memory and returns it as a 64-bit integer. */\n export function load32_u(offset: usize, immOffset?: usize): i64;\n /** Atomically loads a 64-bit integer value from memory and returns it. */\n export function load(offset: usize, immOffset?: usize): i64;\n /** Atomically stores a 64-bit integer value to memory as an 8-bit integer. */\n export function store8(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 16-bit integer. */\n export function store16(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory as a 32-bit integer. */\n export function store32(offset: usize, value: i64, immOffset?: usize): void;\n /** Atomically stores a 64-bit integer value to memory. */\n export function store(offset: usize, value: i64, immOffset?: usize): void;\n /** Performs a wait operation on a 64-bit integer value in memory suspending this agent if the condition is met. */\n export function wait(ptr: usize, expected: i64, timeout: i64): AtomicWaitResult;\n /** Atomic 64-bit integer read-modify-write operations on 8-bit values. */\n export namespace rmw8 {\n /** Atomically adds an 8-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts an 8-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on an 8-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on an 8-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on an 8-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges an 8-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges an 8-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 16-bit values. */\n export namespace rmw16 {\n /** Atomically adds a 16-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 16-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 16-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 16-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 16-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 16-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 16-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations on 32-bit values. */\n export namespace rmw32 {\n /** Atomically adds a 32-bit unsigned integer value in memory. */\n export function add_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 32-bit unsigned integer value in memory. */\n export function sub_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 32-bit unsigned integer value in memory. */\n export function and_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 32-bit unsigned integer value in memory. */\n export function or_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 32-bit unsigned integer value in memory. */\n export function xor_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 32-bit unsigned integer value in memory. */\n export function xchg_u(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 32-bit unsigned integer value in memory if the condition is met. */\n export function cmpxchg_u(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n /** Atomic 64-bit integer read-modify-write operations. */\n export namespace rmw {\n /** Atomically adds a 64-bit integer value in memory. */\n export function add(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically subtracts a 64-bit integer value in memory. */\n export function sub(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise AND operation on a 64-bit integer value in memory. */\n export function and(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise OR operation on a 64-bit integer value in memory. */\n export function or(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically performs a bitwise XOR operation on a 64-bit integer value in memory. */\n export function xor(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically exchanges a 64-bit integer value in memory. */\n export function xchg(offset: usize, value: i64, immOffset?: usize): i64;\n /** Atomically compares and exchanges a 64-bit integer value in memory if the condition is met. */\n export function cmpxchg(offset: usize, expected: i64, replacement: i64, immOffset?: usize): i64;\n }\n }\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare var isize: typeof i32 | typeof i64;\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): i8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): i8;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): i32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n}\n/** Converts any other numeric value to a 64-bit unsigned integer. */\ndeclare function u64(value: any): i64;\ndeclare namespace u64 {\n /** Smallest representable value. */\n export const MIN_VALUE: u64;\n /** Largest representable value. */\n export const MAX_VALUE: u64;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare var usize: typeof u32 | typeof u64;\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Loads a 32-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f32;\n /** Stores a 32-bit float to memory. */\n export function store(offset: usize, value: f32, immOffset?: usize, immAlign?: usize): void;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Loads a 64-bit float from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): f64;\n /** Stores a 64-bit float to memory. */\n export function store(offset: usize, value: f64, immOffset?: usize, immAlign?: usize): void;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function v128(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace v128 {\n /** Creates a 128-bit vector with identical lanes. */\n export function splat(x: T): v128;\n /** Extracts one lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): T;\n /** Replaces one lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: T): v128;\n /** Selects lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, ...lanes: u8[]): v128;\n /** Loads a 128-bit vector from memory. */\n export function load(offset: usize, immOffset?: usize, immAlign?: usize): v128;\n /** Stores a 128-bit vector to memory. */\n export function store(offset: usize, value: v128, immOffset?: usize, immAlign?: usize): void;\n /** Adds each lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128; // except i64\n /** Divides each lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each lane of two 128-bit vectors using saturation. */\n export function add_saturate(a: v128, b: v128): v128;\n /** Subtracts each lane of two 128-bit vectors using saturation. */\n export function sub_saturate(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise right shift on each lane of a 128-bit vector by a scalar. */\n export function shr(a: v128, b: i32): v128;\n /** Performs the bitwise AND operation on each lane of two 128-bit vectors. */\n export function and(a: v128, b: v128): v128;\n /** Performs the bitwise OR operation on each lane of two 128-bit vectors. */\n export function or(a: v128, b: v128): v128;\n /** Performs the bitwise XOR operation on each lane of two 128-bit vectors. */\n export function xor(a: v128, b: v128): v128;\n /** Performs the bitwise NOT operation on each lane of a 128-bit vector. */\n export function not(a: v128): v128;\n /** Selects bits of either 128-bit vector according to the specified mask. */\n export function bitselect(v1: v128, v2: v128, mask: v128): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes the minimum of each lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each lane of a 128-bit vector from integer to floating point. */\n export function convert(a: v128): v128;\n /** Truncates each lane of a 128-bit vector from floating point to integer with saturation. */\n export function trunc(a: v128): v128;\n}\n/** Initializes a 128-bit vector from sixteen 8-bit integer values. Arguments must be compile-time constants. */\ndeclare function i8x16(a: i8, b: i8, c: i8, d: i8, e: i8, f: i8, g: i8, h: i8, i: i8, j: i8, k: i8, l: i8, m: i8, n: i8, o: i8, p: i8): v128;\ndeclare namespace i8x16 {\n /** Creates a vector with sixteen identical 8-bit integer lanes. */\n export function splat(x: i8): v128;\n /** Extracts one 8-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i8;\n /** Extracts one 8-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u8;\n /** Replaces one 8-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i8): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 8-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 8-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 8-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 8-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 8-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 8-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 8-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 8-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 8-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from eight 16-bit integer values. Arguments must be compile-time constants. */\ndeclare function i16x8(a: i16, b: i16, c: i16, d: i16, e: i16, f: i16, g: i16, h: i16): v128;\ndeclare namespace i16x8 {\n /** Creates a vector with eight identical 16-bit integer lanes. */\n export function splat(x: i16): v128;\n /** Extracts one 16-bit integer lane from a 128-bit vector as a signed scalar. */\n export function extract_lane_s(x: v128, idx: u8): i16;\n /** Extracts one 16-bit integer lane from a 128-bit vector as an unsigned scalar. */\n export function extract_lane_u(x: v128, idx: u8): u16;\n /** Replaces one 16-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i16): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 16-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 16-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function add_saturate_s(a: v128, b: v128): v128;\n /** Adds each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function add_saturate_u(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using signed saturation. */\n export function sub_saturate_s(a: v128, b: v128): v128;\n /** Subtracts each 16-bit integer lane of two 128-bit vectors using unsigned saturation. */\n export function sub_saturate_u(a: v128, b: v128): v128;\n /** Performs a bitwise left shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 16-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 16-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 16-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 16-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 16-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 16-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit integer values. Arguments must be compile-time constants. */\ndeclare function i32x4(a: i32, b: i32, c: i32, d: i32): v128;\ndeclare namespace i32x4 {\n /** Creates a 128-bit vector with four identical 32-bit integer lanes. */\n export function splat(x: i32): v128;\n /** Extracts one 32-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i32;\n /** Replaces one 32-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i32): v128;\n /** Adds each 32-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 32-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 32-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 32-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 32-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit integer lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than those of the second. */\n export function lt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than those of the second. */\n export function gt_u(a: v128, b: v128): v128;\n /** Computes which 32-bit signed integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_s(a: v128, b: v128): v128;\n /** Computes which 32-bit unsigned integer lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge_u(a: v128, b: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f32x4_sat(a: v128): v128;\n /** Truncates each 32-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f32x4_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit integer values. Arguments must be compile-time constants. */\ndeclare function i64x2(a: i64, b: i64): v128;\ndeclare namespace i64x2 {\n /** Creates a 128-bit vector with two identical 64-bit integer lanes. */\n export function splat(x: i64): v128;\n /** Extracts one 64-bit integer lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): i64;\n /** Replaces one 64-bit integer lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: i64): v128;\n /** Adds each 64-bit integer lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit integer lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit integer lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Negates each 64-bit integer lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Performs a bitwise left shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shl(a: v128, b: i32): v128;\n /** Performs a bitwise arithmetic right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_s(a: v128, b: i32): v128;\n /** Performs a bitwise logical right shift on each 64-bit integer lane of a 128-bit vector by a scalar. */\n export function shr_u(a: v128, b: i32): v128;\n /** Reduces a 128-bit vector to a scalar indicating whether any 64-bit integer lane is considered `true`. */\n export function any_true(a: v128): bool;\n /** Reduces a 128-bit vector to a scalar indicating whether all 64-bit integer lanes are considered `true`. */\n export function all_true(a: v128): bool;\n /** Truncates each 64-bit float lane of a 128-bit vector to a signed integer with saturation. */\n export function trunc_s_f64x2_sat(a: v128): v128;\n /** Truncates each 64-bit float lane of a 128-bit vector to an unsigned integer with saturation. */\n export function trunc_u_f64x2_sat(a: v128): v128;\n}\n/** Initializes a 128-bit vector from four 32-bit float values. Arguments must be compile-time constants. */\ndeclare function f32x4(a: f32, b: f32, c: f32, d: f32): v128;\ndeclare namespace f32x4 {\n /** Creates a 128-bit vector with four identical 32-bit float lanes. */\n export function splat(x: f32): v128;\n /** Extracts one 32-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f32;\n /** Replaces one 32-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f32): v128;\n /** Adds each 32-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 32-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 32-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 32-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 32-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 32-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 32-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 32-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 32-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 32-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 32-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i32x4(a: v128): v128;\n /** Converts each 32-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i32x4(a: v128): v128;\n}\n/** Initializes a 128-bit vector from two 64-bit float values. Arguments must be compile-time constants. */\ndeclare function f64x2(a: f64, b: f64): v128;\ndeclare namespace f64x2 {\n /** Creates a 128-bit vector with two identical 64-bit float lanes. */\n export function splat(x: f64): v128;\n /** Extracts one 64-bit float lane from a 128-bit vector as a scalar. */\n export function extract_lane(x: v128, idx: u8): f64;\n /** Replaces one 64-bit float lane in a 128-bit vector. */\n export function replace_lane(x: v128, idx: u8, value: f64): v128;\n /** Adds each 64-bit float lane of two 128-bit vectors. */\n export function add(a: v128, b: v128): v128;\n /** Subtracts each 64-bit float lane of two 128-bit vectors. */\n export function sub(a: v128, b: v128): v128;\n /** Multiplies each 64-bit float lane of two 128-bit vectors. */\n export function mul(a: v128, b: v128): v128;\n /** Divides each 64-bit float lane of two 128-bit vectors. */\n export function div(a: v128, b: v128): v128;\n /** Negates each 64-bit float lane of a 128-bit vector. */\n export function neg(a: v128): v128;\n /** Computes the minimum of each 64-bit float lane of two 128-bit vectors. */\n export function min(a: v128, b: v128): v128;\n /** Computes the maximum of each 64-bit float lane of two 128-bit vectors. */\n export function max(a: v128, b: v128): v128;\n /** Computes the absolute value of each 64-bit float lane of a 128-bit vector. */\n export function abs(a: v128): v128;\n /** Computes the square root of each 64-bit float lane of a 128-bit vector. */\n export function sqrt(a: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are equal. */\n export function eq(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of two 128-bit vectors are not equal. */\n export function ne(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than those of the second. */\n export function lt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are less than or equal those of the second. */\n export function le(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than those of the second. */\n export function gt(a: v128, b: v128): v128;\n /** Computes which 64-bit float lanes of the first 128-bit vector are greater than or equal those of the second. */\n export function ge(a: v128, b: v128): v128;\n /** Converts each 64-bit signed integer lane of a 128-bit vector to floating point. */\n export function convert_s_i64x2(a: v128): v128;\n /** Converts each 64-bit unsigned integer lane of a 128-bit vector to floating point. */\n export function convert_u_i64x2(a: v128): v128;\n}\ndeclare namespace v8x16 {\n /** Selects 8-bit lanes from either 128-bit vector according to the specified lane indexes. */\n export function shuffle(a: v128, b: v128, l0: u8, l1: u8, l2: u8, l3: u8, l4: u8, l5: u8, l6: u8, l7: u8, l8: u8, l9: u8, l10: u8, l11: u8, l12: u8, l13: u8, l14: u8, l15: u8): v128;\n}\n/** Macro type evaluating to the underlying native WebAssembly type. */\ndeclare type native = T;\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type ReturnType any> = T extends (...args: any) => infer R ? R : any;\n/** A special type evaluated to the return type of T if T is a callable function. */\ndeclare type returnof any> = ReturnType;\n\n/** Pseudo-class representing the backing class of integer types. */\ndeclare class _Integer {\n /** Smallest representable value. */\n static readonly MIN_VALUE: number;\n /** Largest representable value. */\n static readonly MAX_VALUE: number;\n /** Converts a string to an integer of this type. */\n static parseInt(value: string, radix?: number): number;\n /** Converts this integer to a string. */\n toString(): string;\n}\n\n/** Pseudo-class representing the backing class of floating-point types. */\ndeclare class _Float {\n /** Difference between 1 and the smallest representable value greater than 1. */\n static readonly EPSILON: f32 | f64;\n /** Smallest representable value. */\n static readonly MIN_VALUE: f32 | f64;\n /** Largest representable value. */\n static readonly MAX_VALUE: f32 | f64;\n /** Smallest safely representable integer value. */\n static readonly MIN_SAFE_INTEGER: f32 | f64;\n /** Largest safely representable integer value. */\n static readonly MAX_SAFE_INTEGER: f32 | f64;\n /** Value representing positive infinity. */\n static readonly POSITIVE_INFINITY: f32 | f64;\n /** Value representing negative infinity. */\n static readonly NEGATIVE_INFINITY: f32 | f64;\n /** Value representing \'not a number\'. */\n static readonly NaN: f32 | f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n static isNaN(value: f32 | f64): bool;\n /** Returns true if passed value is finite. */\n static isFinite(value: f32 | f64): bool;\n /** Returns true if the value passed is a safe integer. */\n static isSafeInteger(value: f32 | f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n static isInteger(value: f32 | f64): bool;\n /** Converts a string to an integer. */\n static parseInt(value: string, radix?: i32): f32 | f64;\n /** Converts a string to a floating-point number. */\n static parseFloat(value: string): f32 | f64;\n /** Converts this floating-point number to a string. */\n toString(this: f64): string;\n}\n\n/** Backing class of signed 8-bit integers. */\ndeclare const I8: typeof _Integer;\n/** Backing class of signed 16-bit integers. */\ndeclare const I16: typeof _Integer;\n/** Backing class of signed 32-bit integers. */\ndeclare const I32: typeof _Integer;\n/** Backing class of signed 64-bit integers. */\ndeclare const I64: typeof _Integer;\n/** Backing class of signed size integers. */\ndeclare const Isize: typeof _Integer;\n/** Backing class of unsigned 8-bit integers. */\ndeclare const U8: typeof _Integer;\n/** Backing class of unsigned 16-bit integers. */\ndeclare const U16: typeof _Integer;\n/** Backing class of unsigned 32-bit integers. */\ndeclare const U32: typeof _Integer;\n/** Backing class of unsigned 64-bit integers. */\ndeclare const U64: typeof _Integer;\n/** Backing class of unsigned size integers. */\ndeclare const Usize: typeof _Integer;\n/** Backing class of 32-bit floating-point values. */\ndeclare const F32: typeof _Float;\n/** Backing class of 64-bit floating-point values. */\ndeclare const F64: typeof _Float;\n\n// User-defined diagnostic macros\n\n/** Emits a user-defined diagnostic error when encountered. */\ndeclare function ERROR(message?: any): void;\n/** Emits a user-defined diagnostic warning when encountered. */\ndeclare function WARNING(message?: any): void;\n/** Emits a user-defined diagnostic info when encountered. */\ndeclare function INFO(message?: any): void;\n\n// Polyfills\n\n/** Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Whether the memory managed interface is implemented. */\n export const implemented: bool;\n /** Returns the current memory size in units of pages. One page is 64kb. */\n export function size(): i32;\n /** Grows linear memory by a given unsigned delta of pages. One page is 64kb. Returns the previous memory size in units of pages or `-1` on failure. */\n export function grow(value: i32): i32;\n /** Sets n bytes beginning at the specified destination in memory to the specified byte value. */\n export function fill(dst: usize, value: u8, count: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n export function copy(dst: usize, src: usize, n: usize): void;\n /** Repeats `src` of length `srcLength` `count` times at `dst`. */\n export function repeat(dst: usize, src: usize, srcLength: usize, count: usize): void;\n /** Copies elements from a passive element segment to a table. */\n export function init(segmentIndex: u32, srcOffset: usize, dstOffset: usize, n: usize): void;\n /** Prevents further use of a passive element segment. */\n export function drop(segmentIndex: u32): void;\n /** Compares two chunks of memory. Returns `0` if equal, otherwise the difference of the first differing bytes. */\n export function compare(vl: usize, vr: usize, n: usize): i32;\n}\n\n/** Garbage collector operations. */\ndeclare namespace gc {\n /** Whether the garbage collector interface is implemented. */\n export const implemented: bool;\n /** Performs a full garbage collection cycle. */\n export function collect(): void;\n /** Retains a reference, making sure that it doesn\'t become collected. */\n export function retain(ref: usize): void;\n /** Releases a reference, allowing it to become collected. */\n export function release(ref: usize): void;\n}\n\n/** Table operations. */\ndeclare namespace table {\n /** Copies elements from a passive element segment to a table. */\n export function init(elementIndex: u32, srcOffset: u32, dstOffset: u32, n: u32): void;\n /** Prevents further use of a passive element segment. */\n export function drop(elementIndex: u32): void;\n /** Copies elements from one region of a table to another region. */\n export function copy(dest: u32, src: u32, n: u32): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer\'s bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform\'s endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getInt64()` method gets a signed 64-bit integer (long long) at the specified byte offset from the start of the `DataView`. */\n getInt64(byteOffset: i32, littleEndian?: boolean): i64;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `getUint64()` method gets an unsigned 64-bit integer (unsigned long long) at the specified byte offset from the start of the `DataView`. */\n getUint64(byteOffset: i32, littleEndian?: boolean): u64;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setInt64()` method stores a signed 64-bit integer (long long) value at the specified byte offset from the start of the `DataView`. */\n setInt64(byteOffset: i32, value: i64, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** The `setUint64()` method stores an unsigned 64-bit integer (unsigned long long) value at the specified byte offset from the start of the `DataView`. */\n setUint64(byteOffset: i32, value: u64, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ninterface ArrayLike {\n length: i32;\n // [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\n/* @internal */\ndeclare abstract class TypedArray implements ArrayBufferView {\n [key: number]: T;\n /** Number of bytes per element. */\n static readonly BYTES_PER_ELEMENT: usize;\n /** Wrap an ArrayBuffer */\n static wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): TypedArray;\n /** Constructs a new typed array. */\n constructor(length: i32);\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n /** The length (in elements). */\n readonly length: i32;\n /** The includes() method determines whether a typed array includes a certain element, returning true or false as appropriate. */\n includes(searchElement: T, fromIndex?: i32): bool;\n /** The indexOf() method returns the first index at which a given element can be found in the typed array, or -1 if it is not present. */\n indexOf(searchElement: T, fromIndex?: i32): i32;\n /** The lastIndexOf() method returns the last index at which a given element can be found in the typed array, or -1 if it is not present. The typed array is searched backwards, starting at fromIndex. */\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n /** Returns a new TypedArray of this type on the same ArrayBuffer from begin inclusive to end exclusive. */\n subarray(begin?: i32, end?: i32): this;\n /** The reduce() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value. This method has the same algorithm as Array.prototype.reduce(). */\n reduce(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The reduceRight() method applies a function against an accumulator and each value of the typed array (from left-to-right) has to reduce it to a single value, starting from the end of the array. This method has the same algorithm as Array.prototype.reduceRight(). */\n reduceRight(callbackfn: (accumulator: W, value: T, index: i32, self: this) => W, initialValue: W): W;\n /** The some() method tests whether some element in the typed array passes the test implemented by the provided function. This method has the same algorithm as Array.prototype.some().*/\n some(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The map() method creates a new typed array with the results of calling a provided function on every element in this typed array. This method has the same algorithm as Array.prototype.map().*/\n map(callbackfn: (value: T, index: i32, self: this) => T): this;\n /** The sort() method sorts the elements of a typed array numerically in place and returns the typed array. This method has the same algorithm as Array.prototype.sort(), except that sorts the values numerically instead of as strings. TypedArray is one of the typed array types here. */\n sort(callback?: (a: T, b: T) => i32): this;\n /** The fill() method fills all the elements of a typed array from a start index to an end index with a static value. This method has the same algorithm as Array.prototype.fill(). */\n fill(value: T, start?: i32, end?: i32): this;\n /** The findIndex() method returns an index in the typed array, if an element in the typed array satisfies the provided testing function. Otherwise -1 is returned. See also the find() [not implemented] method, which returns the value of a found element in the typed array instead of its index. */\n findIndex(callbackfn: (value: T, index: i32, self: this) => bool): i32;\n /** The every() method tests whether all elements in the typed array pass the test implemented by the provided function. This method has the same algorithm as Array.prototype.every(). */\n every(callbackfn: (value: T, index: i32, self: this) => bool): bool;\n /** The forEach() method executes a provided function once per array element. This method has the same algorithm as Array.prototype.forEach().*/\n forEach(callbackfn: (value: T, index: i32, self: this) => void): void;\n /** The reverse() method reverses a typed array in place. The first typed array element becomes the last and the last becomes the first. This method has the same algorithm as Array.prototype.reverse(). */\n reverse(): this;\n}\n\n/** An array of twos-complement 8-bit signed integers. */\ndeclare class Int8Array extends TypedArray {}\n/** An array of 8-bit unsigned integers. */\ndeclare class Uint8Array extends TypedArray {}\n/** A clamped array of 8-bit unsigned integers. */\ndeclare class Uint8ClampedArray extends TypedArray {}\n/** An array of twos-complement 16-bit signed integers. */\ndeclare class Int16Array extends TypedArray {}\n/** An array of 16-bit unsigned integers. */\ndeclare class Uint16Array extends TypedArray {}\n/** An array of twos-complement 32-bit signed integers. */\ndeclare class Int32Array extends TypedArray {}\n/** An array of 32-bit unsigned integers. */\ndeclare class Uint32Array extends TypedArray {}\n/** An array of twos-complement 64-bit signed integers. */\ndeclare class Int64Array extends TypedArray {}\n/** An array of 64-bit unsigned integers. */\ndeclare class Uint64Array extends TypedArray {}\n/** An array of 32-bit floating point numbers. */\ndeclare class Float32Array extends TypedArray {}\n/** An array of 64-bit floating point numbers. */\ndeclare class Float64Array extends TypedArray {}\n\n/** Class representing a sequence of values of type `T`. */\ndeclare class Array {\n\n /** Tests if a value is an array. */\n static isArray(value: any): value is Array;\n /** Creates a new array with at least the specified capacity and length zero. */\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n /** Current length of the array. */\n length: i32;\n /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\n/** Class representing a fixed sequence of values of type `T`. */\ndeclare class FixedArray {\n [key: number]: T;\n readonly length: i32;\n constructor(capacity?: i32);\n}\n\n/** Class representing a sequence of characters. */\ndeclare class String {\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n readonly length: i32;\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n endsWith(other: string): bool;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(start: i32, end?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n repeat(count?: i32): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\ndeclare namespace String {\n /** Encoding helpers for UTF-8. */\n export namespace UTF8 {\n /** Calculates the byte length of the specified string when encoded as UTF-8, optionally null terminated. */\n export function byteLength(str: string, nullTerminated?: bool): i32;\n /** Encodes the specified string to UTF-8 bytes, optionally null terminated. */\n export function encode(str: string, nullTerminated?: bool): ArrayBuffer;\n /** Decodes the specified buffer from UTF-8 bytes to a string, optionally null terminated. */\n export function decode(buf: ArrayBuffer, nullTerminated?: bool): string;\n /** Decodes raw UTF-8 bytes to a string, optionally null terminated. */\n export function decodeUnsafe(buf: usize, len: usize, nullTerminated?: bool): string;\n }\n /** Encoding helpers for UTF-16. */\n export namespace UTF16 {\n /** Calculates the byte length of the specified string when encoded as UTF-16. */\n export function byteLength(str: string): i32;\n /** Encodes the specified string to UTF-16 bytes. */\n export function encode(str: string): ArrayBuffer;\n /** Decodes the specified buffer from UTF-16 bytes to a string. */\n export function decode(buf: ArrayBuffer): string;\n /** Decodes raw UTF-16 bytes to a string. */\n export function decodeUnsafe(buf: usize, len: usize): string;\n }\n}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ninterface Boolean {\n toString(): string;\n}\ninterface Function {}\ninterface IArguments {}\ninterface Number {\n toString(radix?: number): string;\n}\ninterface Object {}\ninterface RegExp {}\n\ndeclare class Map {\n readonly size: i32;\n has(key: K): bool;\n set(key: K, value: V): void;\n get(key: K): V;\n delete(key: K): bool;\n clear(): void;\n keys(): K[]; // preliminary\n values(): V[]; // preliminary\n toString(): string;\n}\n\ndeclare class Set {\n readonly size: i32;\n has(value: K): bool;\n add(value: K): void;\n delete(value: K): bool;\n clear(): void;\n values(): K[]; // preliminary\n toString(): string;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\n\ndeclare const Symbol: SymbolConstructor;\n\ninterface IMath {\n /** The base of natural logarithms, e, approximately 2.718. */\n readonly E: T;\n /** The natural logarithm of 2, approximately 0.693. */\n readonly LN2: T;\n /** The natural logarithm of 10, approximately 2.302. */\n readonly LN10: T;\n /** The base 2 logarithm of e, approximately 1.442. */\n readonly LOG2E: T;\n /** The base 10 logarithm of e, approximately 0.434. */\n readonly LOG10E: T;\n /** The ratio of the circumference of a circle to its diameter, approximately 3.14159. */\n readonly PI: T;\n /** The square root of 1/2, approximately 0.707. */\n readonly SQRT1_2: T;\n /** The square root of 2, approximately 1.414. */\n readonly SQRT2: T;\n /** Returns the absolute value of `x`. */\n abs(x: T): T;\n /** Returns the arccosine (in radians) of `x`. */\n acos(x: T): T;\n /** Returns the hyperbolic arc-cosine of `x`. */\n acosh(x: T): T;\n /** Returns the arcsine (in radians) of `x`. */\n asin(x: T): T;\n /** Returns the hyperbolic arcsine of `x`. */\n asinh(x: T): T;\n /** Returns the arctangent (in radians) of `x`. */\n atan(x: T): T;\n /** Returns the arctangent of the quotient of its arguments. */\n atan2(y: T, x: T): T;\n /** Returns the hyperbolic arctangent of `x`. */\n atanh(x: T): T;\n /** Returns the cube root of `x`. */\n cbrt(x: T): T;\n /** Returns the smallest integer greater than or equal to `x`. */\n ceil(x: T): T;\n /** Returns the number of leading zero bits in the 32-bit binary representation of `x`. */\n clz32(x: T): T;\n /** Returns the cosine (in radians) of `x`. */\n cos(x: T): T;\n /** Returns the hyperbolic cosine of `x`. */\n cosh(x: T): T;\n /** Returns e to the power of `x`. */\n exp(x: T): T;\n /** Returns e to the power of `x`, minus 1. */\n expm1(x: T): T;\n /** Returns the largest integer less than or equal to `x`. */\n floor(x: T): T;\n /** Returns the nearest 32-bit single precision float representation of `x`. */\n fround(x: T): T;\n /** Returns the square root of the sum of squares of its arguments. */\n hypot(value1: T, value2: T): T; // TODO: rest\n /** Returns the result of the C-like 32-bit multiplication of `a` and `b`. */\n imul(a: T, b: T): T;\n /** Returns the natural logarithm (base e) of `x`. */\n log(x: T): T;\n /** Returns the base 10 logarithm of `x`. */\n log10(x: T): T;\n /** Returns the natural logarithm (base e) of 1 + `x`. */\n log1p(x: T): T;\n /** Returns the base 2 logarithm of `x`. */\n log2(x: T): T;\n /** Returns the largest-valued number of its arguments. */\n max(value1: T, value2: T): T; // TODO: rest\n /** Returns the lowest-valued number of its arguments. */\n min(value1: T, value2: T): T; // TODO: rest\n /** Returns `base` to the power of `exponent`. */\n pow(base: T, exponent: T): T;\n /** Returns a pseudo-random number in the range from 0.0 inclusive up to but not including 1.0. */\n random(): T;\n /** Returns the value of `x` rounded to the nearest integer. */\n round(x: T): T;\n /** Returns the sign of `x`, indicating whether the number is positive, negative or zero. */\n sign(x: T): T;\n /** Returns whether the sign bit of `x` is set. */\n signbit(x: T): bool;\n /** Returns the sine of `x`. */\n sin(x: T): T;\n /** Returns the hyperbolic sine of `x`. */\n sinh(x: T): T;\n /** Returns the square root of `x`. */\n sqrt(x: T): T;\n /** Returns the tangent of `x`. */\n tan(x: T): T;\n /** Returns the hyperbolic tangent of `x`. */\n tanh(x: T): T;\n /** Returns the integer part of `x` by removing any fractional digits. */\n trunc(x: T): T;\n}\n\ninterface INativeMath extends IMath {\n /** Contains sin value produced after Math/Mathf.sincos */\n sincos_sin: T;\n /** Contains cos value produced after Math/Mathf.sincos */\n sincos_cos: T;\n /** Seeds the random number generator. */\n seedRandom(value: i64): void;\n /** Returns the floating-point remainder of `x / y` (rounded towards zero). */\n mod(x: T, y: T): T;\n /** Returns the floating-point remainder of `x / y` (rounded to nearest). */\n rem(x: T, y: T): T;\n /** Returns sin and cos simultaneously for same angle. Results stored to `sincos_s32/64` and `sincos_c32/64` globals */\n sincos(x: T): void;\n}\n\n/** Double precision math imported from JavaScript. */\ndeclare const JSMath: IMath;\n/** Double precision math implemented natively. */\ndeclare const NativeMath: INativeMath;\n/** Single precision math implemented natively. */\ndeclare const NativeMathf: INativeMath;\n/** Alias of {@link NativeMath} or {@link JSMath} respectively. Defaults to `NativeMath`. */\ndeclare const Math: IMath;\n/** Alias of {@link NativeMathf} or {@link JSMath} respectively. Defaults to `NativeMathf`. */\ndeclare const Mathf: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): i64;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): i64;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: i64);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): i64;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: i64): i64;\n}\n\n/** Environmental tracing function for debugging purposes. */\ndeclare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: f64, a4?: f64): void;\n\n// Decorators\n\ninterface TypedPropertyDescriptor {\n configurable?: boolean;\n enumerable?: boolean;\n writable?: boolean;\n value?: T;\n get?(): T;\n set?(value: T): void;\n}\n\n/** Annotates a method as a binary operator overload for the specified `token`. */\ndeclare function operator(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n) => TypedPropertyDescriptor | void;\n\ndeclare namespace operator {\n /** Annotates a method as a binary operator overload for the specified `token`. */\n export function binary(token:\n "[]" | "[]=" | "{}" | "{}=" | "==" | "!=" | ">" | "<" | "<=" | ">=" |\n ">>" | ">>>" | "<<" | "&" | "|" | "^" | "+" | "-" | "*" | "**" | "/" | "%"\n ): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary prefix operator overload for the specified `token`. */\n export function prefix(token: "!" | "~" | "+" | "-" | "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n /** Annotates a method as an unary postfix operator overload for the specified `token`. */\n export function postfix(token: "++" | "--"): (\n target: any,\n propertyKey: string,\n descriptor: TypedPropertyDescriptor\n ) => TypedPropertyDescriptor | void;\n}\n\n/** Annotates an element as a program global. */\ndeclare function global(...args: any[]): any;\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n\n/** Annotates a class as being sealed / non-derivable. */\ndeclare function sealed(constructor: Function): void;\n\n/** Annotates a method, function or constant global as always inlined. */\ndeclare function inline(...args: any[]): any;\n\n/** Annotates a method, function or constant global as unsafe. */\ndeclare function unsafe(...args: any[]): any;\n\n/** Annotates an explicit external name of a function or global. */\ndeclare function external(...args: any[]): any;\n\n/** Annotates a global for lazy compilation. */\ndeclare function lazy(...args: any[]): any;\n\n/** Annotates a function as the explicit start function. */\ndeclare function start(...args: any[]): any;\n',portable:"/**\n * Environment definitions for compiling AssemblyScript to JavaScript using tsc.\n *\n * Note that semantic differences require additional explicit conversions for full compatibility.\n * For example, when casting an i32 to an u8, doing `(someI32 & 0xff)` will yield the same\n * result when compiling to WebAssembly or JS while `someI32` alone does nothing in JS.\n *\n * Note that i64's are not portable (JS numbers are IEEE754 doubles with a maximum safe integer\n * value of 2^53-1) and instead require a compatibility layer to work in JS as well, as for example\n * {@link glue/js/i64} respectively {@link glue/wasm/i64}.\n *\n * @module std/portable\n *//***/\n\n/// \n\n// Types\n\ndeclare type bool = boolean;\ndeclare type i8 = number;\ndeclare type i16 = number;\ndeclare type i32 = number;\ndeclare type isize = number;\ndeclare type u8 = number;\ndeclare type u16 = number;\ndeclare type u32 = number;\ndeclare type usize = number;\ndeclare type f32 = number;\ndeclare type f64 = number;\n\n/** Special type evaluating the indexed access index type. */\ndeclare type indexof = keyof T;\n/** Special type evaluating the indexed access value type. */\ndeclare type valueof = T[0];\n\n// Compiler hints\n\n/** Compiler target. 0 = JS, 1 = WASM32, 2 = WASM64. */\ndeclare const ASC_TARGET: i32;\n/** Provided noAssert option. */\ndeclare const ASC_NO_ASSERT: bool;\n/** Provided memoryBase option. */\ndeclare const ASC_MEMORY_BASE: i32;\n/** Provided optimizeLevel option. */\ndeclare const ASC_OPTIMIZE_LEVEL: i32;\n/** Provided shrinkLevel option. */\ndeclare const ASC_SHRINK_LEVEL: i32;\n/** Whether the mutable global feature is enabled. */\ndeclare const ASC_FEATURE_MUTABLE_GLOBAL: bool;\n/** Whether the sign extension feature is enabled. */\ndeclare const ASC_FEATURE_SIGN_EXTENSION: bool;\n\n// Builtins\n\n/** Performs the sign-agnostic count leading zero bits operation on a 32-bit integer. All zero bits are considered leading if the value is zero. */\ndeclare function clz(value: T): T;\n/** Performs the sign-agnostic count tailing zero bits operation on a 32-bit integer. All zero bits are considered trailing if the value is zero. */\ndeclare function ctz(value: T): T;\n/** Performs the sign-agnostic count number of one bits operation on a 32-bit integer. */\ndeclare function popcnt(value: T): T;\n/** Performs the sign-agnostic rotate left operation on a 32-bit integer. */\ndeclare function rotl(value: T, shift: T): T;\n/** Performs the sign-agnostic rotate right operation on a 32-bit integer. */\ndeclare function rotr(value: T, shift: T): T;\n/** Computes the absolute value of an integer or float. */\ndeclare function abs(value: T): T;\n/** Determines the maximum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function max(left: T, right: T): T;\n/** Determines the minimum of two integers or floats. If either operand is `NaN`, returns `NaN`. */\ndeclare function min(left: T, right: T): T;\n/** Composes a 32-bit or 64-bit float from the magnitude of `x` and the sign of `y`. */\ndeclare function copysign(x: T, y: T): T;\n/** Performs the ceiling operation on a 32-bit or 64-bit float. */\ndeclare function ceil(value: T): T;\n/** Performs the floor operation on a 32-bit or 64-bit float. */\ndeclare function floor(value: T): T;\n/** Rounds to the nearest integer tied to even of a 32-bit or 64-bit float. */\ndeclare function nearest(value: T): T;\n/** Selects one of two pre-evaluated values depending on the condition. */\ndeclare function select(ifTrue: T, ifFalse: T, condition: bool): T;\n/** Calculates the square root of a 32-bit or 64-bit float. */\ndeclare function sqrt(value: T): T;\n/** Rounds to the nearest integer towards zero of a 32-bit or 64-bit float. */\ndeclare function trunc(value: T): T;\n/** Loads a value of the specified type from memory. Type must be `u8`. */\ndeclare function load(ptr: usize, constantOffset?: usize): T;\n/** Stores a value of the specified type to memory. Type must be `u8`. */\ndeclare function store(ptr: usize, value: T, constantOffset?: usize): void;\n/** Emits an unreachable operation that results in a runtime error when executed. */\ndeclare function unreachable(): any; // sic\n\n/** NaN (not a number) as a 32-bit or 64-bit float depending on context. */\ndeclare const NaN: f32 | f64;\n/** Positive infinity as a 32-bit or 64-bit float depending on context. */\ndeclare const Infinity: f32 | f64;\n/** Changes the type of any value of `usize` kind to another one of `usize` kind. Useful for casting class instances to their pointer values and vice-versa. Beware that this is unsafe.*/\ndeclare function changetype(value: any): T;\n/** Explicitly requests no bounds checks on the provided expression. Useful for array accesses. */\ndeclare function unchecked(value: T): T;\n/** Tests if a 32-bit or 64-bit float is `NaN`. */\ndeclare function isNaN(value: T): bool;\n/** Tests if a 32-bit or 64-bit float is finite, that is not `NaN` or +/-`Infinity`. */\ndeclare function isFinite(value: T): bool;\n/** Tests if the specified value is a valid integer. Can't distinguish an integer from an integral float. */\ndeclare function isInteger(value: any): value is number;\n/** Tests if the specified value is a valid float. Can't distinguish a float from an integer. */\ndeclare function isFloat(value: any): value is number;\n/** Tests if the specified value is of a nullable reference type. */\ndeclare function isNullable(value: any): bool;\n/** Tests if the specified value is of a reference type. */\ndeclare function isReference(value: any): value is object | string;\n/** Tests if the specified value is of a function type */\ndeclare function isFunction(value: any): value is Function;\n/** Tests if the specified value can be used as a string. */\ndeclare function isString(value: any): value is string | String;\n/** Tests if the specified value can be used as an array. */\ndeclare function isArray(value: any): value is Array;\n/** Tests if the specified type *or* expression can be used as an array like object. */\ndeclare function isArrayLike(value: any): value is ArrayLike;\n/** Tests if the specified expression resolves to a defined element. */\ndeclare function isDefined(expression: any): bool;\n/** Tests if the specified expression evaluates to a constant value. */\ndeclare function isConstant(expression: any): bool;\n/** Traps if the specified value is not true-ish, otherwise returns the value. */\ndeclare function assert(isTrueish: T | null, message?: string): T;\n/** Parses an integer string to a 64-bit float. */\ndeclare function parseInt(str: string, radix?: i32): f64;\n/** Parses a floating point string to a 64-bit float. */\ndeclare function parseFloat(str: string): f64;\n/** Returns the 64-bit floating-point remainder of `x/y`. */\ndeclare function fmod(x: f64, y: f64): f64;\n/** Returns the 32-bit floating-point remainder of `x/y`. */\ndeclare function fmodf(x: f32, y: f32): f32;\n\n/** Converts any other numeric value to an 8-bit signed integer. */\ndeclare function i8(value: any): i8;\ndeclare namespace i8 {\n /** Smallest representable value. */\n export const MIN_VALUE: i8;\n /** Largest representable value. */\n export const MAX_VALUE: i8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i8;\n}\n/** Converts any other numeric value to a 16-bit signed integer. */\ndeclare function i16(value: any): i16;\ndeclare namespace i16 {\n /** Smallest representable value. */\n export const MIN_VALUE: i16;\n /** Largest representable value. */\n export const MAX_VALUE: i16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i16;\n}\n/** Converts any other numeric value to a 32-bit signed integer. */\ndeclare function i32(value: any): i32;\ndeclare namespace i32 {\n /** Smallest representable value. */\n export const MIN_VALUE: i32;\n /** Largest representable value. */\n export const MAX_VALUE: i32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): i32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): i32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) signed integer. */\ndeclare function isize(value: any): isize;\ndeclare namespace isize {\n /** Smallest representable value. */\n export const MIN_VALUE: isize;\n /** Largest representable value. */\n export const MAX_VALUE: isize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): isize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): isize;\n}\n/** Converts any other numeric value to an 8-bit unsigned integer. */\ndeclare function u8(value: any): u8;\ndeclare namespace u8 {\n /** Smallest representable value. */\n export const MIN_VALUE: u8;\n /** Largest representable value. */\n export const MAX_VALUE: u8;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u8;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u8;\n}\n/** Converts any other numeric value to a 16-bit unsigned integer. */\ndeclare function u16(value: any): u16;\ndeclare namespace u16 {\n /** Smallest representable value. */\n export const MIN_VALUE: u16;\n /** Largest representable value. */\n export const MAX_VALUE: u16;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u16;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u16;\n}\n/** Converts any other numeric value to a 32-bit unsigned integer. */\ndeclare function u32(value: any): u32;\ndeclare namespace u32 {\n /** Smallest representable value. */\n export const MIN_VALUE: u32;\n /** Largest representable value. */\n export const MAX_VALUE: u32;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): u32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): u32;\n}\n/** Converts any other numeric value to a 32-bit (in WASM32) respectivel 64-bit (in WASM64) unsigned integer. */\ndeclare function usize(value: any): isize;\ndeclare namespace usize {\n /** Smallest representable value. */\n export const MIN_VALUE: usize;\n /** Largest representable value. */\n export const MAX_VALUE: usize;\n /** Converts a string to a floating-point number and cast to target integer after. */\n export function parseFloat(string: string): usize;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): usize;\n}\n/** Converts any other numeric value to a 1-bit unsigned integer. */\ndeclare function bool(value: any): bool;\ndeclare namespace bool {\n /** Smallest representable value. */\n export const MIN_VALUE: bool;\n /** Largest representable value. */\n export const MAX_VALUE: bool;\n}\n/** Converts any other numeric value to a 32-bit float. */\ndeclare function f32(value: any): f32;\ndeclare namespace f32 {\n /** Smallest representable value. */\n export const MIN_VALUE: f32;\n /** Largest representable value. */\n export const MAX_VALUE: f32;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f32;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f32;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f32;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f32;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f32): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f32): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f32;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f32;\n}\n/** Converts any other numeric value to a 64-bit float. */\ndeclare function f64(value: any): f64;\ndeclare namespace f64 {\n /** Smallest representable value. */\n export const MIN_VALUE: f64;\n /** Largest representable value. */\n export const MAX_VALUE: f64;\n /** Smallest normalized positive value. */\n export const MIN_POSITIVE_VALUE: f64;\n /** Smallest safely representable integer value. */\n export const MIN_SAFE_INTEGER: f64;\n /** Largest safely representable integer value. */\n export const MAX_SAFE_INTEGER: f64;\n /** Difference between 1 and the smallest representable value greater than 1. */\n export const EPSILON: f64;\n /** Returns a boolean value that indicates whether a value is the reserved value NaN (not a number). */\n export function isNaN(value: f32): bool;\n /** Returns true if passed value is finite. */\n export function isFinite(value: f32): bool;\n /** Returns true if the value passed is a safe integer. */\n export function isSafeInteger(value: f64): bool;\n /** Returns true if the value passed is an integer, false otherwise. */\n export function isInteger(value: f64): bool;\n /** Converts a string to a floating-point number. */\n export function parseFloat(string: string): f64;\n /** Converts A string to an integer. */\n export function parseInt(string: string, radix?: i32): f64;\n}\n\n// Polyfills\n\n/** [Polyfill] Performs the sign-agnostic reverse bytes **/\ndeclare function bswap(value: T): T;\n/** [Polyfill] Performs the sign-agnostic reverse bytes only for last 16-bit **/\ndeclare function bswap16(value: T): T;\n\n// Standard library\n\n/** Memory operations. */\ndeclare namespace memory {\n /** Allocates a chunk of memory of the specified size and returns a pointer to it. */\n function allocate(size: usize): usize;\n /** Disposes a chunk of memory by its pointer. */\n function free(ptr: usize): void;\n /** Copies n bytes from the specified source to the specified destination in memory. These regions may overlap. */\n function copy(dst: usize, src: usize, n: usize): void;\n /** Fills size bytes from from the specified destination by same value in memory. */\n function fill(dst: usize, value: u8, size: usize): void;\n /** Resets the allocator to its initial state, if supported. */\n function reset(): void;\n}\n\n/** Class representing a generic, fixed-length raw binary data buffer. */\ndeclare class ArrayBuffer {\n /** The size, in bytes, of the array. */\n readonly byteLength: i32;\n /** Returns true if value is one of the ArrayBuffer views, such as typed array or a DataView **/\n static isView(value: T): bool;\n /** Constructs a new array buffer of the given length in bytes. */\n constructor(length: i32);\n /** Returns a copy of this array buffer's bytes from begin, inclusive, up to end, exclusive. */\n slice(begin?: i32, end?: i32): ArrayBuffer;\n /** Returns a string representation of ArrayBuffer. */\n toString(): string;\n}\n\n/** The `DataView` view provides a low-level interface for reading and writing multiple number types in a binary `ArrayBuffer`, without having to care about the platform's endianness. */\ndeclare class DataView {\n /** The `buffer` accessor property represents the `ArrayBuffer` or `SharedArrayBuffer` referenced by the `DataView` at construction time. */\n readonly buffer: ArrayBuffer;\n /** The `byteLength` accessor property represents the length (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteLength: i32;\n /** The `byteOffset` accessor property represents the offset (in bytes) of this view from the start of its `ArrayBuffer` or `SharedArrayBuffer`. */\n readonly byteOffset: i32;\n /** Constructs a new `DataView` with the given properties */\n constructor(buffer: ArrayBuffer, byteOffset?: i32, byteLength?: i32);\n /** The `getFloat32()` method gets a signed 32-bit float (float) at the specified byte offset from the start of the `DataView`. */\n getFloat32(byteOffset: i32, littleEndian?: boolean): f32;\n /** The `getFloat64()` method gets a signed 64-bit float (double) at the specified byte offset from the start of the `DataView`. */\n getFloat64(byteOffset: i32, littleEndian?: boolean): f64;\n /** The `getInt8()` method gets a signed 8-bit integer (byte) at the specified byte offset from the start of the `DataView`. */\n getInt8(byteOffset: i32): i8;\n /** The `getInt16()` method gets a signed 16-bit integer (short) at the specified byte offset from the start of the `DataView`. */\n getInt16(byteOffset: i32, littleEndian?: boolean): i16;\n /** The `getInt32()` method gets a signed 32-bit integer (long) at the specified byte offset from the start of the `DataView`. */\n getInt32(byteOffset: i32, littleEndian?: boolean): i32;\n /** The `getUint8()` method gets an unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `DataView`. */\n getUint8(byteOffset: i32): u8;\n /** The `getUint16()` method gets an unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `DataView`. */\n getUint16(byteOffset: i32, littleEndian?: boolean): u16;\n /** The `getUint32()` method gets an unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `DataView`. */\n getUint32(byteOffset: i32, littleEndian?: boolean): u32;\n /** The `setFloat32()` method stores a signed 32-bit float (float) value at the specified byte offset from the start of the `DataView`. */\n setFloat32(byteOffset: i32, value: f32, littleEndian?: boolean): void;\n /** The `setFloat64()` method stores a signed 64-bit float (double) value at the specified byte offset from the start of the `DataView`. */\n setFloat64(byteOffset: i32, value: f64, littleEndian?: boolean): void;\n /** The `setInt8()` method stores a signed 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setInt8(byteOffset: i32, value: i8): void;\n /** The `setInt16()` method stores a signed 16-bit integer (short) value at the specified byte offset from the start of the `DataView`. */\n setInt16(byteOffset: i32, value: i16, littleEndian?: boolean): void;\n /** The `setInt32()` method stores a signed 32-bit integer (long) value at the specified byte offset from the start of the `DataView`. */\n setInt32(byteOffset: i32, value: i32, littleEndian?: boolean): void;\n /** The `setUint8()` method stores an unsigned 8-bit integer (byte) value at the specified byte offset from the start of the `DataView`. */\n setUint8(byteOffset: i32, value: u8): void;\n /** The `setUint16()` method stores an unsigned 16-bit integer (unsigned short) value at the specified byte offset from the start of the `DataView`. */\n setUint16(byteOffset: i32, value: u16, littleEndian?: boolean): void;\n /** The `setUint32()` method stores an unsigned 32-bit integer (unsigned long) value at the specified byte offset from the start of the `DataView`. */\n setUint32(byteOffset: i32, value: u32, littleEndian?: boolean): void;\n /** Returns a string representation of DataView. */\n toString(): string;\n}\n\ndeclare class Array {\n\n static isArray(value: any): value is Array;\n static create(capacity?: i32): Array;\n\n [key: number]: T;\n length: i32;\n constructor(capacity?: i32);\n\n fill(value: T, start?: i32, end?: i32): this;\n every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n findIndex(predicate: (element: T, index: i32, array?: Array) => bool): i32;\n includes(searchElement: T, fromIndex?: i32): bool;\n indexOf(searchElement: T, fromIndex?: i32): i32;\n lastIndexOf(searchElement: T, fromIndex?: i32): i32;\n push(element: T): i32;\n concat(items: T[]): T[];\n copyWithin(target: i32, start: i32, end?: i32): this;\n pop(): T;\n forEach(callbackfn: (value: T, index: i32, array: Array) => void): void;\n map(callbackfn: (value: T, index: i32, array: Array) => U): Array;\n filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array;\n reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U;\n shift(): T;\n some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool;\n unshift(element: T): i32;\n slice(from?: i32, to?: i32): Array;\n splice(start: i32, deleteCount?: i32): Array;\n sort(comparator?: (a: T, b: T) => i32): this;\n join(separator?: string): string;\n reverse(): T[];\n toString(): string;\n}\n\ndeclare class Uint8Array extends Array {}\ndeclare class Uint8ClampedArray extends Array {}\ndeclare class Uint16Array extends Array {}\ndeclare class Uint32Array extends Array {}\ndeclare class Int8Array extends Array {}\ndeclare class Int16Array extends Array {}\ndeclare class Int32Array extends Array {}\ndeclare class Float32Array extends Array {}\ndeclare class Float64Array extends Array {}\n\ninterface ArrayLike {\n length: i32;\n [key: number]: T;\n}\n\n/** Interface for a typed view on an array buffer. */\ninterface ArrayBufferView {\n [key: number]: T;\n /** The {@link ArrayBuffer} referenced by this view. */\n readonly buffer: ArrayBuffer;\n /** The offset in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteOffset: i32;\n /** The length in bytes from the start of the referenced {@link ArrayBuffer}. */\n readonly byteLength: i32;\n}\n\ndeclare class String {\n\n static fromCharCode(ls: i32, hs?: i32): string;\n static fromCharCodes(arr: u16[]): string;\n static fromCodePoint(code: i32): string;\n static fromCodePoints(arr: i32[]): string;\n\n readonly length: i32;\n\n private constructor();\n\n charAt(index: i32): string;\n charCodeAt(index: i32): i32;\n codePointAt(index: i32): i32;\n concat(other: string): string;\n indexOf(other: string, fromIndex?: i32): i32;\n lastIndexOf(other: string, fromIndex?: i32): i32;\n includes(other: string): bool;\n startsWith(other: string): bool;\n endsWith(other: string): bool;\n substr(start: i32, length?: i32): string;\n substring(from: i32, to?: i32): string;\n trim(): string;\n trimLeft(): string;\n trimRight(): string;\n trimStart(): string;\n trimEnd(): string;\n padStart(targetLength: i32, padString?: string): string;\n padEnd(targetLength: i32, padString?: string): string;\n replace(search: string, replacement: string): string;\n replaceAll(search: string, replacement: string): string;\n repeat(count?: i32): string;\n slice(beginIndex: i32, endIndex?: i32): string;\n split(separator?: string, limit?: i32): string[];\n toString(): string;\n}\n\ninterface Boolean {}\n\ndeclare class Number {\n private constructor();\n toString(radix?: i32): string;\n}\n\ninterface Object {}\n\ninterface Function {}\n\ninterface RegExp {}\n\ninterface IArguments {}\n\n/** Class for representing a runtime error. Base class of all errors. */\ndeclare class Error {\n\n /** Error name. */\n name: string;\n\n /** Message provided on construction. */\n message: string;\n\n /** Stack trace. */\n stack?: string;\n\n /** Constructs a new error, optionally with a message. */\n constructor(message?: string);\n\n /** Method returns a string representing the specified Error class. */\n toString(): string;\n}\n\n/** Class for indicating an error when a value is not in the set or range of allowed values. */\ndeclare class RangeError extends Error { }\n\n/** Class for indicating an error when a value is not of the expected type. */\ndeclare class TypeError extends Error { }\n\n/** Class for indicating an error when trying to interpret syntactically invalid code. */\ndeclare class SyntaxError extends Error { }\n\ndeclare class Set {\n constructor(entries?: T[]);\n readonly size: i32;\n has(value: T): bool;\n add(value: T): void;\n delete(value: T): bool;\n clear(): void;\n toString(): string;\n [Symbol.iterator](): Iterator;\n}\n\ndeclare class Map {\n constructor(entries?: [K, V][]);\n readonly size: i32;\n set(key: K, value: V): void;\n has(key: K): bool;\n get(key: K): V | null;\n clear(): void;\n entries(): Iterable<[K, V]>;\n keys(): Iterable;\n values(): Iterable;\n delete(key: K): bool;\n toString(): string;\n [Symbol.iterator](): Iterator<[K,V]>;\n}\n\ninterface SymbolConstructor {\n readonly hasInstance: symbol;\n readonly isConcatSpreadable: symbol;\n readonly isRegExp: symbol;\n readonly iterator: symbol;\n readonly match: symbol;\n readonly replace: symbol;\n readonly search: symbol;\n readonly species: symbol;\n readonly split: symbol;\n readonly toPrimitive: symbol;\n readonly toStringTag: symbol;\n readonly unscopables: symbol;\n (description?: string | null): symbol;\n for(key: string): symbol;\n keyFor(sym: symbol): string | null;\n}\ndeclare const Symbol: SymbolConstructor;\n\ninterface Iterable {\n [Symbol.iterator](): Iterator;\n}\n\ninterface Iterator {}\n\ninterface IMath {\n readonly E: f64;\n readonly LN2: f64;\n readonly LN10: f64;\n readonly LOG2E: f64;\n readonly LOG10E: f64;\n readonly PI: f64;\n readonly SQRT1_2: f64;\n readonly SQRT2: f64;\n\n sincos_sin: f64;\n sincos_cos: f64;\n\n abs(x: f64): f64;\n acos(x: f64): f64;\n acosh(x: f64): f64;\n asin(x: f64): f64;\n asinh(x: f64): f64;\n atan(x: f64): f64;\n atan2(y: f64, x: f64): f64;\n atanh(x: f64): f64;\n cbrt(x: f64): f64;\n ceil(x: f64): f64;\n clz32(x: f64): i32;\n cos(x: f64): f64;\n cosh(x: f64): f64;\n exp(x: f64): f64;\n expm1(x: f64): f64;\n floor(x: f64): f64;\n fround(x: f64): f32;\n hypot(value1: f64, value2: f64): f64; // TODO: see std/math\n imul(a: f64, b: f64): i32;\n log(x: f64): f64;\n log10(x: f64): f64;\n log1p(x: f64): f64;\n log2(x: f64): f64;\n max(value1: f64, value2: f64): f64; // TODO: see std/math\n min(value1: f64, value2: f64): f64; // TODO: see std/math\n pow(base: f64, exponent: f64): f64;\n random(): f64;\n round(x: f64): f64;\n sign(x: f64): f64;\n signbit(x: f64): bool;\n sin(x: f64): f64;\n sincos(x: f64): f64;\n sinh(x: f64): f64;\n sqrt(x: f64): f64;\n tan(x: f64): f64;\n tanh(x: f64): f64;\n trunc(x: f64): f64;\n}\n\ndeclare const Math: IMath;\ndeclare const Mathf: IMath;\ndeclare const JSMath: IMath;\n\ndeclare class Date {\n /** Returns the UTC timestamp in milliseconds of the specified date. */\n static UTC(\n year: i32,\n month: i32,\n day: i32,\n hour: i32,\n minute: i32,\n second: i32,\n millisecond: i32\n ): number;\n /** Returns the current UTC timestamp in milliseconds. */\n static now(): number;\n /** Constructs a new date object from an UTC timestamp in milliseconds. */\n constructor(value: number);\n /** Returns the UTC timestamp of this date in milliseconds. */\n getTime(): number;\n /** Sets the UTC timestamp of this date in milliseconds. */\n setTime(value: number): number;\n}\n\ndeclare namespace console {\n /** @deprecated */\n function log(message: string): void;\n}\n\n/** Annotates a class as being unmanaged with limited capabilities. */\ndeclare function unmanaged(constructor: Function): void;\n"}):(()=>{const e=path.join(".","..","std");return{assembly:fs.readFileSync(path.join(e,"assembly","index.d.ts"),"utf8"),portable:fs.readFileSync(path.join(e,"portable","index.d.ts"),"utf8")}})(),exports.compileString=(e,n)=>{"string"==typeof e&&(e={"input.ts":e});const t=Object.create({stdout:createMemoryStream(),stderr:createMemoryStream()});var r=["--binaryFile","binary","--textFile","text"];return Object.keys(n||{}).forEach(e=>{var t=n[e];Array.isArray(t)?t.forEach(n=>r.push("--"+e,String(n))):r.push("--"+e,String(t))}),exports.main(r.concat(Object.keys(e)),{stdout:t.stdout,stderr:t.stderr,readFile:n=>e.hasOwnProperty(n)?e[n]:null,writeFile:(e,n)=>t[e]=n,listFiles:()=>[]}),t},exports.main=function(e,n,t){"function"==typeof n?(t=n,n={}):n||(n={});const r=n.stdout||process.stdout,i=n.stderr||process.stderr,a=n.readFile||O,o=n.writeFile||N,s=n.listFiles||R,u=n.stats||createStats();if(!r)throw Error("'options.stdout' must be specified");if(!i)throw Error("'options.stderr' must be specified");const l=optionsUtil.parse(e,exports.options),c=l.options;if(e=l.arguments,c.noColors?colorsUtil.stdout.supported=colorsUtil.stderr.supported=!1:(colorsUtil.stdout=colorsUtil.from(r),colorsUtil.stderr=colorsUtil.from(i)),l.unknown.length&&l.unknown.forEach(e=>{i.write(colorsUtil.stderr.yellow("WARN: ")+"Unknown option '"+e+"'"+EOL)}),l.trailing.length&&i.write(colorsUtil.stderr.yellow("WARN: ")+"Unsupported trailing arguments: "+l.trailing.join(" ")+EOL),t||(t=function(e){var n=0;return e&&(i.write(colorsUtil.stderr.red("ERROR: ")+e.stack.replace(/^ERROR: /i,"")+EOL),n=1),n}),c.version)return r.write("Version "+exports.version+(isDev?"-dev":"")+EOL),t(null);if(c.help||!e.length){var f=c.help?r:i,d=c.help?colorsUtil.stdout:colorsUtil.stderr;return f.write([d.white("SYNTAX")," "+d.cyan("asc")+" [entryFile ...] [options]","",d.white("EXAMPLES")," "+d.cyan("asc")+" hello.ts"," "+d.cyan("asc")+" hello.ts -b hello.wasm -t hello.wat"," "+d.cyan("asc")+" hello1.ts hello2.ts -b -O > hello.wasm","",d.white("OPTIONS")].concat(optionsUtil.help(exports.options,24,EOL)).join(EOL)+EOL),t(null)}if(!fs.readFileSync){if(a===O)throw Error("'options.readFile' must be specified");if(o===N)throw Error("'options.writeFile' must be specified");if(s===R)throw Error("'options.listFiles' must be specified")}const p=c.baseDir?path.resolve(c.baseDir):".",h=c.notNear?[]:[nearBindings];c.transform&&c.transform.forEach(e=>h.push(__webpack_require__(13)(path.isAbsolute(e=e.trim())?e:path.join(process.cwd(),e))));var g=null,x=new Map,v=new Map;Object.keys(exports.libraryFiles).forEach(e=>{e.indexOf("/")>=0||(u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(exports.libraryFiles[e],exports.libraryPrefix+e+".ts",!1,g)}))});const m=[];if(c.lib){let e=c.lib;"string"==typeof e&&(e=e.split(",")),Array.prototype.push.apply(m,e.map(e=>e.trim()));for(let e=0,n=m.length;e{g=assemblyscript.parseFile(o,exports.libraryPrefix+i,!1,g)})}}}function _(e,n){return e.split(SEP).map((e,t,r)=>{let i=r.slice(0,t+1).join(SEP)||SEP,a=path.relative(p,i);return path.join(a,n)}).filter(e=>s(e,p)).reverse()}function y(e){let n=c.path.map(n=>_(e,n));return _(e,"node_modules").concat(...n)}function b(){for(var e,n,r;null!=(e=g.nextFile());){if(dependee=v.get(assemblyscript.getDependee(g,e))||p,n=null,r=null,e.startsWith(exports.libraryPrefix)){const t=e.substring(exports.libraryPrefix.length),i=e.substring(exports.libraryPrefix.length)+"/index";if(exports.libraryFiles.hasOwnProperty(t))n=exports.libraryFiles[t],e=exports.libraryPrefix+t+".ts";else if(exports.libraryFiles.hasOwnProperty(i))n=exports.libraryFiles[i],e=exports.libraryPrefix+i+".ts";else for(let o=0,s=m.length;o{if(x.has(o))return x.get(o);let e=path.join(s,o,"package.json"),n=a(e,p);if(n){let r;try{r=JSON.parse(n)}catch(n){return t(Error("Parsing "+e+" failed"))}let i=r.ascMain;if(i&&"string"==typeof i){let e=i.replace(/(.*)\/index\.ts/,"$1");return x.set(o,e),e}}return"assembly"})(),l=e=>{e.startsWith(exports.libraryPrefix)&&(e=e.substring(exports.libraryPrefix.length));let n=e.substring(0,e.indexOf("/")),t=e.substring(e.indexOf("/")+1);return path.join(s,n,u,t)};c.traceResolution&&i.write(" in '"+l(e)+"'");const f=e,d=e+"/index";if(null!==(n=a(l(f)+".ts",p))?e=f+".ts":null!==(n=a(l(d)+".ts",p))&&(e=d+".ts"),null!==n){c.traceResolution&&i.write(EOL+" -> '"+l(e)+"'"+EOL),r=path.join(s,o);break}c.traceResolution&&i.write(EOL)}}if(null==n)return t(Error("Import file '"+e+".ts' not found."));v.set(e.replace(/\.ts$/,""),r),u.parseCount++,u.parseTime+=measure(()=>{assemblyscript.parseFile(n,e,!1,g)})}if(checkDiagnostics(g,i))return t(Error("Parse error"))}c.path=c.path||[];{let e=String(c.runtime),n="rt/index-"+e,r=exports.libraryFiles[n];if(null==r){if(null==(r=a((n=e)+".ts",p)))return t(Error("Runtime '"+e+"' not found."))}else n="~lib/"+n;u.parseCount++,u.parseTime+=measure(()=>{g=assemblyscript.parseFile(r,n,!0,g)})}for(let n=0,r=e.length;n{g=assemblyscript.parseFile(o,i,!0,g)})}{let e=b();if(e)return e}!function(e,...n){h.forEach(t=>{"function"==typeof t[e]&&t[e](...n)})}("afterParse",g,o,p);{let e=b();if(e)return e}const E=assemblyscript.finishParsing(g);if(c.listFiles)return i.write(E.sources.map(e=>e.normalizedPath).sort().join(EOL)+EOL),t(null);var T=0,A=0;c.optimize&&(T=exports.defaultOptimizeLevel,A=exports.defaultShrinkLevel),"number"==typeof c.optimizeLevel&&(T=c.optimizeLevel),"number"==typeof c.shrinkLevel&&(A=c.shrinkLevel),T=Math.min(Math.max(T,0),3),A=Math.min(Math.max(A,0),2);const S=assemblyscript.createOptions();if(assemblyscript.setTarget(S,0),assemblyscript.setNoAssert(S,c.noAssert),assemblyscript.setImportMemory(S,c.importMemory),assemblyscript.setSharedMemory(S,c.sharedMemory),assemblyscript.setImportTable(S,c.importTable),assemblyscript.setExplicitStart(S,c.explicitStart),assemblyscript.setMemoryBase(S,c.memoryBase>>>0),assemblyscript.setSourceMap(S,null!=c.sourceMap),assemblyscript.setOptimizeLevelHints(S,T,A),assemblyscript.setNoUnsafe(S,c.noUnsafe),assemblyscript.setGlobalAlias(S,"Math","NativeMath"),assemblyscript.setGlobalAlias(S,"Mathf","NativeMathf"),assemblyscript.setGlobalAlias(S,"abort","~lib/builtins/abort"),assemblyscript.setGlobalAlias(S,"trace","~lib/builtins/trace"),c.use){let e=c.use;for(let n=0,r=e.length;n{F=assemblyscript.compileProgram(E,S)})}catch(e){return t(e)}if(checkDiagnostics(g,i))return F&&F.dispose(),t(Error("Compile error"));if(c.validate&&(u.validateCount++,u.validateTime+=measure(()=>{if(!F.validate())return F.dispose(),t(Error("Validate error"))})),"clamp"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-clamp"])});else if("js"===c.trapMode)u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(["trap-mode-js"])});else if("allow"!==c.trapMode)return F.dispose(),t(Error("Unsupported trap mode"));(T>=3||A>=2)&&(T=4),F.setOptimizeLevel(T),F.setShrinkLevel(A),F.setDebugInfo(c.debug);var z=[];if(c.runPasses&&("string"==typeof c.runPasses&&(c.runPasses=c.runPasses.split(",")),c.runPasses.length&&c.runPasses.forEach(e=>{z.indexOf(e)<0&&z.push(e)})),(T>0||A>0)&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.optimize()})),z.length&&(u.optimizeCount++,u.optimizeTime+=measure(()=>{F.runPasses(z.map(e=>e.trim()))})),!c.noEmit){let e=!1,n=!1;if(null!=c.outFile&&(/\.was?t$/.test(c.outFile)&&null==c.textFile?c.textFile=c.outFile:/\.js$/.test(c.outFile)&&null==c.asmjsFile?c.asmjsFile=c.outFile:null==c.binaryFile&&(c.binaryFile=c.outFile)),null!=c.binaryFile){let r,s=null!=c.sourceMap?c.sourceMap.length?c.sourceMap:path.basename(c.binaryFile)+".map":null;if(u.emitCount++,u.emitTime+=measure(()=>{r=F.toBinary(s)}),c.binaryFile.length?o(c.binaryFile,r.output,p):(C(r.output),e=!0),n=!0,null!=r.sourceMap)if(c.binaryFile.length){let e=JSON.parse(r.sourceMap);e.sourceRoot=exports.sourceMapRoot,e.sources.forEach((n,r)=>{let i=null;if(n.startsWith(exports.libraryPrefix)){let e=n.substring(exports.libraryPrefix.length).replace(/\.ts$/,"");if(exports.libraryFiles.hasOwnProperty(e))i=exports.libraryFiles[e];else for(let e=0,t=m.length;e{t=F.toAsmjs()}),o(c.asmjsFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=F.toAsmjs()}),C(t),e=!0),n=!0}if(null!=c.idlFile){let t;c.idlFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),o(c.idlFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildIDL(E)}),C(t),e=!0),n=!0}if(null!=c.tsdFile){let t;c.tsdFile.length?(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),o(c.tsdFile,t,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{t=assemblyscript.buildTSD(E)}),C(t),e=!0),n=!0}if(null!=c.textFile||!n){let n;c.textFile&&c.textFile.length?(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),o(c.textFile,n,p)):e||(u.emitCount++,u.emitTime+=measure(()=>{n=F.toText()}),C(n))}}return F.dispose(),c.measure&&printStats(u,i),c.printrtti&&printRTTI(E,i),t(null);function O(e,n){let t=path.resolve(n,e);try{let e;return u.readCount++,u.readTime+=measure(()=>{e=fs.readFileSync(t,{encoding:"utf8"})}),e}catch(e){return null}}function N(e,n,t){try{return u.writeCount++,u.writeTime+=measure(()=>{mkdirp(path.join(t,path.dirname(e))),"string"==typeof n?fs.writeFileSync(path.join(t,e),n,{encoding:"utf8"}):fs.writeFileSync(path.join(t,e),n)}),!0}catch(e){return!1}}function R(e,n){var t;try{return u.readTime+=measure(()=>{t=fs.readdirSync(path.join(n,e)).filter(e=>/^(?!.*\.d\.ts$).*\.ts$/.test(e))}),t}catch(e){return null}}function C(e){C.used||(u.writeCount++,C.used=!0),u.writeTime+=measure(()=>{"string"==typeof e?r.write(e,{encoding:"utf8"}):r.write(e)})}},exports.checkDiagnostics=checkDiagnostics,exports.createStats=createStats,process.hrtime||(process.hrtime=__webpack_require__(14)),exports.measure=measure,exports.formatTime=formatTime,exports.printStats=printStats,exports.printRTTI=printRTTI;var allocBuffer=void 0!==global&&global.Buffer?global.Buffer.allocUnsafe||function(e){return new global.Buffer(e)}:function(e){return new Uint8Array(e)};function createMemoryStream(e){var n=[];return n.write=function(n){if(e&&e(n),"string"==typeof n){let e=allocBuffer(utf8.length(n));utf8.write(n,e,0),n=e}this.push(n)},n.reset=function(){n.length=0},n.toBuffer=function(){for(var e=0,n=0,t=this.length;n191&&r<224?a[o++]=(31&r)<<6|63&e[n++]:r>239&&r<365?(r=((7&r)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536,a[o++]=55296+(r>>10),a[o++]=56320+(1023&r)):a[o++]=(15&r)<<12|(63&e[n++])<<6|63&e[n++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,a)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,a.slice(0,o))),i.join("")):String.fromCharCode.apply(String,a.slice(0,o))},r.write=function(e,n,t){for(var r,i,a=t,o=0;o>6|192,n[t++]=63&r|128):55296==(64512&r)&&56320==(64512&(i=e.charCodeAt(o+1)))?(r=65536+((1023&r)<<10)+(1023&i),++o,n[t++]=r>>18|240,n[t++]=r>>12&63|128,n[t++]=r>>6&63|128,n[t++]=63&r|128):(n[t++]=r>>12|224,n[t++]=r>>6&63|128,n[t++]=63&r|128);return t-a}},function(e,n,t){(function(e){var t=void 0!==e&&e||{},r=t.env&&"CI"in t.env;function i(e,t){var i=t||{};return i.supported=e&&!!e.isTTY||r,i.gray=e=>i.supported?n.GRAY+e+n.RESET:e,i.red=e=>i.supported?n.RED+e+n.RESET:e,i.green=e=>i.supported?n.GREEN+e+n.RESET:e,i.yellow=e=>i.supported?n.YELLOW+e+n.RESET:e,i.blue=e=>i.supported?n.BLUE+e+n.RESET:e,i.magenta=e=>i.supported?n.MAGENTA+e+n.RESET:e,i.cyan=e=>i.supported?n.CYAN+e+n.RESET:e,i.white=e=>i.supported?n.WHITE+e+n.RESET:e,i}n.stdout=i(t.stdout,n),n.stderr=i(t.stderr),n.from=i,n.GRAY="",n.RED="",n.GREEN="",n.YELLOW="",n.BLUE="",n.MAGENTA="",n.CYAN="",n.WHITE="",n.RESET=""}).call(this,t(0))},function(e,n){n.parse=function(e,n){var t={},r=[],arguments=[],i=[],a={};Object.keys(n).forEach(e=>{if(!e.startsWith(" ")){var r=n[e];null!=r.alias&&("string"==typeof r.alias?a[r.alias]=e:Array.isArray(r.alias)&&r.alias.forEach(n=>a[n]=e)),null!=r.default&&(t[e]=r.default)}});for(var o=0,s=(e=e.slice()).length;ot[e]=s.value[e])}else r.push(i)}for(;o{var o=e[n];if(null!=o.description){for(var s="";s.length{for(let n=0;n=0?u.substring(l+1):u,i.statements=new Array,i.range=new o.Range(i,0,t.length),i.text=t,i}return i(n,e),Object.defineProperty(n.prototype,"isLibrary",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),n}(l);n.Source=$;var ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.decorators=null,n.flags=a.CommonFlags.NONE,n}return i(n,e),n.prototype.is=function(e){return(this.flags&e)==e},n.prototype.isAny=function(e){return 0!=(this.flags&e)},n.prototype.set=function(e){this.flags|=e},n}(J);n.DeclarationStatement=ee;var ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INDEXSIGNATUREDECLARATION,n}return i(n,e),n}(ee);n.IndexSignatureDeclaration=ne;var te=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return i(n,e),n}(ee);n.VariableLikeDeclarationStatement=te;var re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BLOCK,n}return i(n,e),n}(J);n.BlockStatement=re;var ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.BREAK,n}return i(n,e),n}(J);n.BreakStatement=ie;var ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CLASSDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n}(ee);n.ClassDeclaration=ae;var oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.CONTINUE,n}return i(n,e),n}(J);n.ContinueStatement=oe;var se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.DO,n}return i(n,e),n}(J);n.DoStatement=se;var ue=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EMPTY,n}return i(n,e),n}(J);n.EmptyStatement=ue;var le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMDECLARATION,n}return i(n,e),n}(ee);n.EnumDeclaration=le;var ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.ENUMVALUEDECLARATION,n}return i(n,e),n}(te);n.EnumValueDeclaration=ce;var fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTIMPORT,n}return i(n,e),n}(l);n.ExportImportStatement=fe;var de=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTMEMBER,n}return i(n,e),n}(l);n.ExportMember=de;var pe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORT,n}return i(n,e),n}(J);n.ExportStatement=pe;var he=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPORTDEFAULT,n}return i(n,e),n}(J);n.ExportDefaultStatement=he;var ge=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.EXPRESSION,n}return i(n,e),n}(J);n.ExpressionStatement=ge;var xe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FIELDDECLARATION,n.parameterIndex=-1,n}return i(n,e),n}(te);n.FieldDeclaration=xe;var ve=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FOR,n}return i(n,e),n}(J);n.ForStatement=ve,function(e){e[e.NONE=0]="NONE",e[e.ARROW_PARENTHESIZED=1]="ARROW_PARENTHESIZED",e[e.ARROW_SINGLE=2]="ARROW_SINGLE"}(n.ArrowKind||(n.ArrowKind={}));var me=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.FUNCTIONDECLARATION,n}return i(n,e),Object.defineProperty(n.prototype,"isGeneric",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),n.prototype.clone=function(){return l.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},n}(ee);n.FunctionDeclaration=me;var _e=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IF,n}return i(n,e),n}(J);n.IfStatement=_e;var ye=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORTDECLARATION,n}return i(n,e),n}(ee);n.ImportDeclaration=ye;var be=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.IMPORT,n}return i(n,e),n}(J);n.ImportStatement=be;var Ee=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.INTERFACEDECLARATION,n}return i(n,e),n}(ae);n.InterfaceDeclaration=Ee;var Te=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.METHODDECLARATION,n}return i(n,e),n}(me);n.MethodDeclaration=Te;var Ae=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.NAMESPACEDECLARATION,n}return i(n,e),n}(ee);n.NamespaceDeclaration=Ae;var Se=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.RETURN,n}return i(n,e),n}(J);n.ReturnStatement=Se;var Fe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCHCASE,n}return i(n,e),n}(l);n.SwitchCase=Fe;var Ie=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.SWITCH,n}return i(n,e),n}(J);n.SwitchStatement=Ie;var ze=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.THROW,n}return i(n,e),n}(J);n.ThrowStatement=ze;var Oe=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TRY,n}return i(n,e),n}(J);n.TryStatement=Oe;var Ne=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.TYPEDECLARATION,n}return i(n,e),n}(ee);n.TypeDeclaration=Ne;var Re=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLEDECLARATION,n}return i(n,e),n}(te);n.VariableDeclaration=Re;var Ce=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VARIABLE,n}return i(n,e),n}(J);n.VariableStatement=Ce;var Le=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.VOID,n}return i(n,e),n}(J);n.VoidStatement=Le;var we=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.kind=s.WHILE,n}return i(n,e),n}(J);function ke(e){return e.endsWith(".ts")&&(e=e.substring(0,e.length-3)),e}n.WhileStatement=we,n.findDecorator=function(e,n){if(n)for(var t=0,r=n.length;t";case a.LESSTHAN_EQUALS:return"<=";case a.GREATERTHAN_EQUALS:return">=";case a.EQUALS_EQUALS:return"==";case a.EXCLAMATION_EQUALS:return"!=";case a.EQUALS_EQUALS_EQUALS:return"===";case a.EXCLAMATION_EQUALS_EQUALS:return"!==";case a.PLUS:return"+";case a.MINUS:return"-";case a.ASTERISK_ASTERISK:return"**";case a.ASTERISK:return"*";case a.SLASH:return"/";case a.PERCENT:return"%";case a.PLUS_PLUS:return"++";case a.MINUS_MINUS:return"--";case a.LESSTHAN_LESSTHAN:return"<<";case a.GREATERTHAN_GREATERTHAN:return">>";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN:return">>>";case a.AMPERSAND:return"&";case a.BAR:return"|";case a.CARET:return"^";case a.EXCLAMATION:return"!";case a.TILDE:return"~";case a.AMPERSAND_AMPERSAND:return"&&";case a.BAR_BAR:return"||";case a.EQUALS:return"=";case a.PLUS_EQUALS:return"+=";case a.MINUS_EQUALS:return"-=";case a.ASTERISK_EQUALS:return"*=";case a.ASTERISK_ASTERISK_EQUALS:return"**=";case a.SLASH_EQUALS:return"/=";case a.PERCENT_EQUALS:return"%=";case a.LESSTHAN_LESSTHAN_EQUALS:return"<<=";case a.GREATERTHAN_GREATERTHAN_EQUALS:return">>=";case a.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return">>>=";case a.AMPERSAND_EQUALS:return"&=";case a.BAR_EQUALS:return"|=";case a.CARET_EQUALS:return"^=";default:return assert(!1),""}};var d=function(){function e(e,n,t){this.debugInfoRef=0,this.source=e,this.start=n,this.end=t}return e.join=function(n,t){if(n.source!=t.source)throw new Error("source mismatch");return new e(n.source,n.startt.end?n.end:t.end)},Object.defineProperty(e.prototype,"atStart",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"atEnd",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"line",{get:function(){for(var e=this.source.text,n=1,t=this.start;t>=0;--t)10==e.charCodeAt(t)&&n++;return n},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"column",{get:function(){for(var e=this.source.text,n=0,t=this.start-1;t>=0&&10!=e.charCodeAt(t);--t)++n;return n},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();n.Range=d;var p=function(e){function n(n,t){void 0===t&&(t=null);var r=e.call(this,t)||this;r.end=0,r.pos=0,r.token=-1,r.tokenPos=0,r.nextToken=-1,r.nextTokenPos=0,r.nextTokenOnNewLine=!1,r.onComment=null,r.source=n,r.pos=0,r.end=n.text.length,r.diagnostics=t||new Array;var i=r.end,a=n.text;if(r.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=r){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,r));break}var a=e.charCodeAt(this.pos);if(a==n){i+=e.substring(t,this.pos++);break}if(92!=a){if(l.isLineBreak(a)&&96!=n){i+=e.substring(t,this.pos),this.error(s.DiagnosticCode.Unterminated_string_literal,this.range(t-1,this.pos));break}++this.pos}else i+=e.substring(t,this.pos),i+=this.readEscapeSequence(),t=this.pos}return i},n.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e)),"";var n=this.source.text,t=n.charCodeAt(this.pos++);switch(t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return this.pos=t){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,t));break}if(92!=e.charCodeAt(this.pos)){var i=e.charCodeAt(this.pos);if(!r&&47==i)break;if(l.isLineBreak(i)){this.error(s.DiagnosticCode.Unterminated_regular_expression_literal,this.range(n,this.pos));break}++this.pos,r=!1}else++this.pos,r=!0}return e.substring(n,this.pos)},n.prototype.readRegexpFlags=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=0;this.pos57)&&95!=r)break;t++}return!0},n.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)t=i64_add(i64_shl(t,r),i64_new(u-48));else if(u>=65&&u<=70)t=i64_add(i64_shl(t,r),i64_new(10+u-65));else if(u>=97&&u<=102)t=i64_add(i64_shl(t,r),i64_new(10+u-97));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readDecimalInteger=function(){for(var e=this.source.text,n=this.pos,t=this.end,r=i64_new(0),i=i64_new(10),a=n;this.pos=48&&u<=57)r=i64_add(i64_mul(r,i),i64_new(u-48));else{if(95!=u)break;a==o&&this.error(a==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),a=o+1}this.pos=o+1}return this.pos==n?this.error(s.DiagnosticCode.Digit_expected,this.range(n)):a==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(a-1)),r},n.prototype.readOctalInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(3),i=n,a=this.end;this.pos=48&&u<=55)t=i64_add(i64_shl(t,r),i64_new(u-48));else{if(95!=u)break;i==o&&this.error(i==n?s.DiagnosticCode.Numeric_separators_are_not_allowed_here:s.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(o)),i=o+1}++this.pos}return this.pos==n?this.error(s.DiagnosticCode.Octal_digit_expected,this.range(n)):i==this.pos&&this.error(s.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(i-1)),t},n.prototype.readBinaryInteger=function(){for(var e=this.source.text,n=this.pos,t=i64_new(0),r=i64_new(1),i=n,a=this.end;this.pos=48&&i<=57)n=(n<<4)+i-48;else if(i>=65&&i<=70)n=(n<<4)+i+-55;else{if(!(i>=97&&i<=102))return this.error(s.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),"";n=(n<<4)+i+-87}if(0==--e)break}return e?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),""):String.fromCharCode(n)},n.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,n=this.readHexInteger(),t=i64_low(n),r=!1;assert(!i64_high(n)),t>1114111&&(this.error(s.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),r=!0);var i=this.end,a=this.source.text;return this.pos>=i?(this.error(s.DiagnosticCode.Unexpected_end_of_text,this.range(e,i)),r=!0):125==a.charCodeAt(this.pos)?++this.pos:(this.error(s.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),r=!0),r?"":t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>>10),56320+(t-65536&1023))},n.prototype.finish=function(){},n}(s.DiagnosticEmitter);n.Tokenizer=p;var h=function(){};n.State=h;var g=null},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.Operation_not_supported=100]="Operation_not_supported",e[e.Operation_is_unsafe=101]="Operation_is_unsafe",e[e.User_defined_0=102]="User_defined_0",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]="Conversion_from_type_0_to_1_requires_an_explicit_cast",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]="Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit",e[e.Type_0_cannot_be_changed_to_type_1=202]="Type_0_cannot_be_changed_to_type_1",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]="Type_0_cannot_be_reinterpreted_as_type_1",e[e.Basic_type_0_cannot_be_nullable=204]="Basic_type_0_cannot_be_nullable",e[e.Cannot_export_a_mutable_global=205]="Cannot_export_a_mutable_global",e[e.Mutable_value_cannot_be_inlined=206]="Mutable_value_cannot_be_inlined",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]="Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa",e[e.Unmanaged_classes_cannot_implement_interfaces=208]="Unmanaged_classes_cannot_implement_interfaces",e[e.Invalid_regular_expression_flags=209]="Invalid_regular_expression_flags",e[e.Implementation_0_must_match_the_signature_1=210]="Implementation_0_must_match_the_signature_1",e[e.Class_0_is_sealed_and_cannot_be_extended=211]="Class_0_is_sealed_and_cannot_be_extended",e[e.Decorator_0_is_not_valid_here=212]="Decorator_0_is_not_valid_here",e[e.Duplicate_decorator=213]="Duplicate_decorator",e[e.An_allocator_must_be_present_to_use_0=214]="An_allocator_must_be_present_to_use_0",e[e.Optional_parameter_must_have_an_initializer=215]="Optional_parameter_must_have_an_initializer",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]="Constructor_of_class_0_must_not_require_any_arguments",e[e.Function_0_cannot_be_inlined_into_itself=217]="Function_0_cannot_be_inlined_into_itself",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]="Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set",e[e.Optional_properties_are_not_supported=219]="Optional_properties_are_not_supported",e[e.Expression_must_be_a_compile_time_constant=220]="Expression_must_be_a_compile_time_constant",e[e.Module_cannot_have_multiple_start_functions=221]="Module_cannot_have_multiple_start_functions",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]="_0_must_be_a_value_between_1_and_2_inclusive",e[e._0_must_be_a_power_of_two=223]="_0_must_be_a_power_of_two",e[e.Expression_is_unsafe=224]="Expression_is_unsafe",e[e.Expression_is_never_null=225]="Expression_is_never_null",e[e.Unterminated_string_literal=1002]="Unterminated_string_literal",e[e.Identifier_expected=1003]="Identifier_expected",e[e._0_expected=1005]="_0_expected",e[e.A_file_cannot_have_a_reference_to_itself=1006]="A_file_cannot_have_a_reference_to_itself",e[e.Trailing_comma_not_allowed=1009]="Trailing_comma_not_allowed",e[e.Unexpected_token=1012]="Unexpected_token",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]="A_rest_parameter_must_be_last_in_a_parameter_list",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]="Parameter_cannot_have_question_mark_and_initializer",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]="A_required_parameter_cannot_follow_an_optional_parameter",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]="Statements_are_not_allowed_in_ambient_contexts",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]="Initializers_are_not_allowed_in_ambient_contexts",e[e._0_modifier_cannot_be_used_here=1042]="_0_modifier_cannot_be_used_here",e[e.A_rest_parameter_cannot_be_optional=1047]="A_rest_parameter_cannot_be_optional",e[e.A_rest_parameter_cannot_have_an_initializer=1048]="A_rest_parameter_cannot_have_an_initializer",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]="A_set_accessor_must_have_exactly_one_parameter",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]="A_set_accessor_parameter_cannot_have_an_initializer",e[e.A_get_accessor_cannot_have_parameters=1054]="A_get_accessor_cannot_have_parameters",e[e.Enum_member_must_have_initializer=1061]="Enum_member_must_have_initializer",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]="Type_parameters_cannot_appear_on_a_constructor_declaration",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]="Type_annotation_cannot_appear_on_a_constructor_declaration",e[e.An_accessor_cannot_have_type_parameters=1094]="An_accessor_cannot_have_type_parameters",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]="A_set_accessor_cannot_have_a_return_type_annotation",e[e.Type_parameter_list_cannot_be_empty=1098]="Type_parameter_list_cannot_be_empty",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]="A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]="A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]="A_return_statement_can_only_be_used_within_a_function_body",e[e.Expression_expected=1109]="Expression_expected",e[e.Type_expected=1110]="Type_expected",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]="A_default_clause_cannot_appear_more_than_once_in_a_switch_statement",e[e.Duplicate_label_0=1114]="Duplicate_label_0",e[e.An_export_assignment_cannot_have_modifiers=1120]="An_export_assignment_cannot_have_modifiers",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]="Octal_literals_are_not_allowed_in_strict_mode",e[e.Digit_expected=1124]="Digit_expected",e[e.Hexadecimal_digit_expected=1125]="Hexadecimal_digit_expected",e[e.Unexpected_end_of_text=1126]="Unexpected_end_of_text",e[e.Invalid_character=1127]="Invalid_character",e[e._case_or_default_expected=1130]="_case_or_default_expected",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]="_super_must_be_followed_by_an_argument_list_or_member_access",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]="A_declare_modifier_cannot_be_used_in_an_already_ambient_context",e[e.Type_argument_expected=1140]="Type_argument_expected",e[e.String_literal_expected=1141]="String_literal_expected",e[e.Line_break_not_permitted_here=1142]="Line_break_not_permitted_here",e[e.Declaration_expected=1146]="Declaration_expected",e[e._const_declarations_must_be_initialized=1155]="_const_declarations_must_be_initialized",e[e.Unterminated_regular_expression_literal=1161]="Unterminated_regular_expression_literal",e[e.Interface_declaration_cannot_have_implements_clause=1176]="Interface_declaration_cannot_have_implements_clause",e[e.Binary_digit_expected=1177]="Binary_digit_expected",e[e.Octal_digit_expected=1178]="Octal_digit_expected",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]="An_implementation_cannot_be_declared_in_ambient_contexts",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]="An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive",e[e.Unterminated_Unicode_escape_sequence=1199]="Unterminated_Unicode_escape_sequence",e[e.Decorators_are_not_valid_here=1206]="Decorators_are_not_valid_here",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]="_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]="Method_0_cannot_have_an_implementation_because_it_is_marked_abstract",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]="A_definite_assignment_assertion_is_not_permitted_in_this_context",e[e.A_class_may_only_extend_another_class=1311]="A_class_may_only_extend_another_class",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]="A_parameter_property_cannot_be_declared_using_a_rest_parameter",e[e.Duplicate_identifier_0=2300]="Duplicate_identifier_0",e[e.Cannot_find_name_0=2304]="Cannot_find_name_0",e[e.Module_0_has_no_exported_member_1=2305]="Module_0_has_no_exported_member_1",e[e.Generic_type_0_requires_1_type_argument_s=2314]="Generic_type_0_requires_1_type_argument_s",e[e.Type_0_is_not_generic=2315]="Type_0_is_not_generic",e[e.Type_0_is_not_assignable_to_type_1=2322]="Type_0_is_not_assignable_to_type_1",e[e.Index_signature_is_missing_in_type_0=2329]="Index_signature_is_missing_in_type_0",e[e._this_cannot_be_referenced_in_current_location=2332]="_this_cannot_be_referenced_in_current_location",e[e._super_can_only_be_referenced_in_a_derived_class=2335]="_super_can_only_be_referenced_in_a_derived_class",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]="Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors",e[e.Property_0_does_not_exist_on_type_1=2339]="Property_0_does_not_exist_on_type_1",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]="Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]="Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]="A_function_whose_declared_type_is_not_void_must_return_a_value",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]="The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]="The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]="Operator_0_cannot_be_applied_to_types_1_and_2",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]="A_super_call_must_be_the_first_statement_in_the_constructor",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]="Constructors_for_derived_classes_must_contain_a_super_call",e[e._get_and_set_accessor_must_have_the_same_type=2380]="_get_and_set_accessor_must_have_the_same_type",e[e.Constructor_implementation_is_missing=2390]="Constructor_implementation_is_missing",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]="Function_implementation_is_missing_or_not_immediately_following_the_declaration",e[e.Multiple_constructor_implementations_are_not_allowed=2392]="Multiple_constructor_implementations_are_not_allowed",e[e.Duplicate_function_implementation=2393]="Duplicate_function_implementation",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]="Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]="A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged",e[e.Type_0_has_no_property_1=2460]="Type_0_has_no_property_1",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]="The_0_operator_cannot_be_applied_to_type_1",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]="In_const_enum_declarations_member_initializer_must_be_constant_expression",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]="Export_declaration_conflicts_with_exported_declaration_of_0",e[e.Object_is_possibly_null=2531]="Object_is_possibly_null",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]="Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]="The_target_of_an_assignment_must_be_a_variable_or_a_property_access",e[e.Index_signature_in_type_0_only_permits_reading=2542]="Index_signature_in_type_0_only_permits_reading",e[e.Expected_0_arguments_but_got_1=2554]="Expected_0_arguments_but_got_1",e[e.Expected_at_least_0_arguments_but_got_1=2555]="Expected_at_least_0_arguments_but_got_1",e[e.Expected_0_type_arguments_but_got_1=2558]="Expected_0_type_arguments_but_got_1",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]="A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]="Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]="Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration",e[e.Namespace_0_has_no_exported_member_1=2694]="Namespace_0_has_no_exported_member_1",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]="Required_type_parameters_may_not_follow_optional_type_parameters",e[e.Duplicate_property_0=2718]="Duplicate_property_0",e[e.Type_0_has_no_call_signatures=2757]="Type_0_has_no_call_signatures",e[e.File_0_not_found=6054]="File_0_not_found",e[e.Numeric_separators_are_not_allowed_here=6188]="Numeric_separators_are_not_allowed_here",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]="Multiple_consecutive_numeric_separators_are_not_permitted",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]="_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]="_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class"}(n.DiagnosticCode||(n.DiagnosticCode={})),n.diagnosticCodeToString=function(e){switch(e){case 100:return"Operation not supported.";case 101:return"Operation is unsafe.";case 102:return"User-defined: {0}";case 200:return"Conversion from type '{0}' to '{1}' requires an explicit cast.";case 201:return"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.";case 202:return"Type '{0}' cannot be changed to type '{1}'.";case 203:return"Type '{0}' cannot be reinterpreted as type '{1}'.";case 204:return"Basic type '{0}' cannot be nullable.";case 205:return"Cannot export a mutable global.";case 206:return"Mutable value cannot be inlined.";case 207:return"Unmanaged classes cannot extend managed classes and vice-versa.";case 208:return"Unmanaged classes cannot implement interfaces.";case 209:return"Invalid regular expression flags.";case 210:return"Implementation '{0}' must match the signature '{1}'.";case 211:return"Class '{0}' is sealed and cannot be extended.";case 212:return"Decorator '{0}' is not valid here.";case 213:return"Duplicate decorator.";case 214:return"An allocator must be present to use '{0}'.";case 215:return"Optional parameter must have an initializer.";case 216:return"Constructor of class '{0}' must not require any arguments.";case 217:return"Function '{0}' cannot be inlined into itself.";case 218:return"Cannot access method '{0}' without calling it as it requires 'this' to be set.";case 219:return"Optional properties are not supported.";case 220:return"Expression must be a compile-time constant.";case 221:return"Module cannot have multiple start functions.";case 222:return"'{0}' must be a value between '{1}' and '{2}' inclusive.";case 223:return"'{0}' must be a power of two.";case 224:return"Expression is unsafe.";case 225:return"Expression is never 'null'.";case 1002:return"Unterminated string literal.";case 1003:return"Identifier expected.";case 1005:return"'{0}' expected.";case 1006:return"A file cannot have a reference to itself.";case 1009:return"Trailing comma not allowed.";case 1012:return"Unexpected token.";case 1014:return"A rest parameter must be last in a parameter list.";case 1015:return"Parameter cannot have question mark and initializer.";case 1016:return"A required parameter cannot follow an optional parameter.";case 1036:return"Statements are not allowed in ambient contexts.";case 1039:return"Initializers are not allowed in ambient contexts.";case 1042:return"'{0}' modifier cannot be used here.";case 1047:return"A rest parameter cannot be optional.";case 1048:return"A rest parameter cannot have an initializer.";case 1049:return"A 'set' accessor must have exactly one parameter.";case 1052:return"A 'set' accessor parameter cannot have an initializer.";case 1054:return"A 'get' accessor cannot have parameters.";case 1061:return"Enum member must have initializer.";case 1092:return"Type parameters cannot appear on a constructor declaration.";case 1093:return"Type annotation cannot appear on a constructor declaration.";case 1094:return"An accessor cannot have type parameters.";case 1095:return"A 'set' accessor cannot have a return type annotation.";case 1098:return"Type parameter list cannot be empty.";case 1104:return"A 'continue' statement can only be used within an enclosing iteration statement.";case 1105:return"A 'break' statement can only be used within an enclosing iteration or switch statement.";case 1108:return"A 'return' statement can only be used within a function body.";case 1109:return"Expression expected.";case 1110:return"Type expected.";case 1113:return"A 'default' clause cannot appear more than once in a 'switch' statement.";case 1114:return"Duplicate label '{0}'.";case 1120:return"An export assignment cannot have modifiers.";case 1121:return"Octal literals are not allowed in strict mode.";case 1124:return"Digit expected.";case 1125:return"Hexadecimal digit expected.";case 1126:return"Unexpected end of text.";case 1127:return"Invalid character.";case 1130:return"'case' or 'default' expected.";case 1034:return"'super' must be followed by an argument list or member access.";case 1038:return"A 'declare' modifier cannot be used in an already ambient context.";case 1140:return"Type argument expected.";case 1141:return"String literal expected.";case 1142:return"Line break not permitted here.";case 1146:return"Declaration expected.";case 1155:return"'const' declarations must be initialized.";case 1161:return"Unterminated regular expression literal.";case 1176:return"Interface declaration cannot have 'implements' clause.";case 1177:return"Binary digit expected.";case 1178:return"Octal digit expected.";case 1183:return"An implementation cannot be declared in ambient contexts.";case 1198:return"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.";case 1199:return"Unterminated Unicode escape sequence.";case 1206:return"Decorators are not valid here.";case 1242:return"'abstract' modifier can only appear on a class, method, or property declaration.";case 1245:return"Method '{0}' cannot have an implementation because it is marked abstract.";case 1255:return"A definite assignment assertion '!' is not permitted in this context.";case 1311:return"A class may only extend another class.";case 1317:return"A parameter property cannot be declared using a rest parameter.";case 2300:return"Duplicate identifier '{0}'.";case 2304:return"Cannot find name '{0}'.";case 2305:return"Module '{0}' has no exported member '{1}'.";case 2314:return"Generic type '{0}' requires {1} type argument(s).";case 2315:return"Type '{0}' is not generic.";case 2322:return"Type '{0}' is not assignable to type '{1}'.";case 2329:return"Index signature is missing in type '{0}'.";case 2332:return"'this' cannot be referenced in current location.";case 2335:return"'super' can only be referenced in a derived class.";case 2337:return"Super calls are not permitted outside constructors or in nested functions inside constructors.";case 2339:return"Property '{0}' does not exist on type '{1}'.";case 2349:return"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.";case 2351:return"Cannot use 'new' with an expression whose type lacks a construct signature.";case 2355:return"A function whose declared type is not 'void' must return a value.";case 2357:return"The operand of an increment or decrement operator must be a variable or a property access.";case 2364:return"The left-hand side of an assignment expression must be a variable or a property access.";case 2365:return"Operator '{0}' cannot be applied to types '{1}' and '{2}'.";case 2376:return"A 'super' call must be the first statement in the constructor.";case 2377:return"Constructors for derived classes must contain a 'super' call.";case 2380:return"'get' and 'set' accessor must have the same type.";case 2390:return"Constructor implementation is missing.";case 2391:return"Function implementation is missing or not immediately following the declaration.";case 2392:return"Multiple constructor implementations are not allowed.";case 2393:return"Duplicate function implementation.";case 2395:return"Individual declarations in merged declaration '{0}' must be all exported or all local.";case 2434:return"A namespace declaration cannot be located prior to a class or function with which it is merged.";case 2460:return"Type '{0}' has no property '{1}'.";case 2469:return"The '{0}' operator cannot be applied to type '{1}'.";case 2474:return"In 'const' enum declarations member initializer must be constant expression.";case 2484:return"Export declaration conflicts with exported declaration of '{0}'.";case 2531:return"Object is possibly 'null'.";case 2540:return"Cannot assign to '{0}' because it is a constant or a read-only property.";case 2541:return"The target of an assignment must be a variable or a property access.";case 2542:return"Index signature in type '{0}' only permits reading.";case 2554:return"Expected {0} arguments, but got {1}.";case 2555:return"Expected at least {0} arguments, but got {1}.";case 2558:return"Expected {0} type arguments, but got {1}.";case 2651:return"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.";case 2673:return"Constructor of class '{0}' is private and only accessible within the class declaration.";case 2674:return"Constructor of class '{0}' is protected and only accessible within the class declaration.";case 2694:return"Namespace '{0}' has no exported member '{1}'.";case 2706:return"Required type parameters may not follow optional type parameters.";case 2718:return"Duplicate property '{0}'.";case 2757:return"Type '{0}' has no call signatures.";case 6054:return"File '{0}' not found.";case 6188:return"Numeric separators are not allowed here.";case 6189:return"Multiple consecutive numeric separators are not permitted.";case 17009:return"'super' must be called before accessing 'this' in the constructor of a derived class.";case 17011:return"'super' must be called before accessing a property of 'super' in the constructor of a derived class.";default:return""}}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)});Object.defineProperty(n,"__esModule",{value:!0});var a=t(0),o=t(1),s=t(17),u=t(22),l=t(24);function c(e){return e.text.includes("@nearfile")||d(e)}function f(e){return s.ASTBuilder.build(e)}function d(e){return(e.kind==a.NodeKind.SOURCE?e:e.range.source).sourceKind==a.SourceKind.USER_ENTRY}function p(e){return e.kind==a.NodeKind.CLASSDECLARATION}function h(e){return e.kind==a.NodeKind.FIELDDECLARATION}var g=function(e){function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.typeMapping={i32:"Integer",u32:"Integer",i64:"String",u64:"String",string:"String",bool:"Boolean",Uint8Array:"String"},n.nonNullableTypes=["i32","u32","i64","u64","bool","boolean"],n.sb=[],n.exportedClasses=new Map,n.wrappedFuncs=new Set,n}return i(n,e),n.build=function(e,t){return(new n).build(t)},n.nearFiles=function(e){return e.program.sources.filter(c)},n.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(f(e.name))||this.exportedClasses.set(f(e.name),e)},n.prototype.visitFunctionDeclaration=function(n){!d(n)||this.wrappedFuncs.has(f(n.name))||!n.is(o.CommonFlags.EXPORT)||0==n.signature.parameters.length&&"void"===f(n.signature.returnType)?e.prototype.visitFunctionDeclaration.call(this,n):(this.generateWrapperFunction(n),n.flags=n.flags^o.CommonFlags.EXPORT,this.wrappedFuncs.add(f(n.name)))},n.prototype.generateWrapperFunction=function(e){var n=e.signature,t=n.parameters,r=n.returnType,i=f(r).split("|").filter(function(e){return"null"!==e.trim()}).join("|"),a=f(r).includes("null"),o=e.name.symbol;this.sb.push("\n//@ts-ignore\nfunction __wrapper_"+o+"(): void {"),t.length>0&&this.sb.push(" // Reading input bytes.\n input(0);\n let json_len = register_len(0);\n if (json_len == U32.MAX_VALUE) {\n panic();\n }\n let json = new Uint8Array(json_len as u32);\n read_register(0, json.buffer);\n const obj: Obj = JSON.parse(json);"),"void"!==f(r)?this.sb.push(" let result: "+f(r)+" = "+o+"("):this.sb.push(" "+o+"("),t.length>0&&(this.sb[this.sb.length-1]+=t.map(function(e){return x(e)}).join(", ")),this.sb[this.sb.length-1]+=");","void"!==f(r)&&this.sb.push("\n let encoder = new JSONEncoder();\n if ((isString<"+i+">() || isNullable<"+i+">()) && result == null) {\n encoder.setNull(null);\n } else {\n encode<"+i+">(encoder, result"+(a?"!":"")+", null);\n }\n let val: Uint8Array = encoder.serialize();\n value_return(val.byteLength, val.buffer);"),this.sb.push("}\n\nexport { __wrapper_"+o+" as "+o+" }\n")},n.prototype.typeName=function(e){if(!p(e))return s.ASTBuilder.build(e);var n=f((e=e).name);return e.isGeneric&&(n+="<"+e.typeParameters.map(f).join(", ")+">"),n},n.prototype.getFields=function(e){var n=p(e)?e:this.exportedClasses.get(f(e));return null==n?[]:n.members.filter(function(e){return e.kind==a.NodeKind.FIELDDECLARATION}).map(function(e){return{name:f(e.name),type:e.type,isGeneric:v(n,e)}})},n.prototype.build=function(e){var n=this;this.sb=[l.preamble],this.visit(e);var t=e.statements.map(function(e){var t=s.ASTBuilder.build(e);if(p(e)){var r=e;if(t=t.slice(0,t.lastIndexOf("}")),r.members.filter(h).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error("All Fields must have explict type declaration.");var i=n.typeName(r);t+="\n static decode(json: Uint8Array): "+i+" {\n let value = instantiate<"+i+">(); // Allocate without constructor\n return value.decode(json);\n }\n\n decode(buf: V): "+i+' {\n let json: Obj;\n if (buf instanceof Uint8Array) {\n json = JSON.parse(buf);\n }else {\n assert(buf instanceof Obj, "argument must be Uint8Array or Json Object");\n json = buf;\n }\n return this._decode(json);\n }\n\n private _decode(obj: Obj): '+i+" {\n "+r.members.filter(h).map(function(e){var n=f(e.name);return x(e,"this."+n+' = obj.has("'+n+'") ? ')+": this."+n+";"}).join("\n ")+'\n return this;\n }\n\n encode(_encoder: JSONEncoder | null = null, name: string | null = ""): JSONEncoder {\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\n encoder.pushObject(name);\n '+r.members.filter(h).map(function(e){var n=f(e.type),t=f(e.name);return"encode<"+n+">(encoder, this."+t+', "'+t+'");'}).join("\n ")+"\n encoder.popObject();\n return encoder\n }\n\n serialize(): Uint8Array {\n return this.encode().serialize();\n }\n\n toJSON(): string {\n return this.encode().toString();\n }\n}"}return t});return this.sb.concat(t).join("\n")},n}(u.BaseVisitor);function x(e,n){return void 0===n&&(n=""),n+"decode<"+f(e.type)+', Obj>(obj, "'+f(e.name)+'")'}function v(e,n){return null!=e.typeParameters&&e.typeParameters.some(function(e){return f(e.name)==f(n.type)})}n.afterParse=function(e,n,t){g.nearFiles(e).forEach(function(r){var i=r.text.substr(0,r.text.indexOf("\n")).includes("out");e.donelog.delete(r.internalPath),e.seenlog.delete(r.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==r});var a=g.build(e,r);i&&n("out/"+r.normalizedPath,a,t),e.parseFile(a,(d(r)?"":"./")+r.normalizedPath,d(r))})}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NONE=0]="NONE",e[e.SIGN_EXTENSION=1]="SIGN_EXTENSION",e[e.MUTABLE_GLOBAL=2]="MUTABLE_GLOBAL",e[e.BULK_MEMORY=4]="BULK_MEMORY",e[e.SIMD=8]="SIMD",e[e.THREADS=16]="THREADS"}(n.Feature||(n.Feature={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.WASM32=0]="WASM32",e[e.WASM64=1]="WASM64",e[e.JS=2]="JS"}(n.Target||(n.Target={}))},function(e,n,t){"use strict";var r=this&&this.__decorate||function(e,n,t,r){var i,a=arguments.length,o=a<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,n,t,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(n,t,o):i(n,t))||o);return a>3&&o&&Object.defineProperty(n,t,o),o};Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(){}return r([()=>{}],e)}();n.Typeinfo=i,function(e){e[e.NONE=0]="NONE",e[e.ARRAYBUFFERVIEW=1]="ARRAYBUFFERVIEW",e[e.ARRAY=2]="ARRAY",e[e.SET=4]="SET",e[e.MAP=8]="MAP",e[e.ACYCLIC=16]="ACYCLIC",e[e.VALUE_ALIGN_0=32]="VALUE_ALIGN_0",e[e.VALUE_ALIGN_1=64]="VALUE_ALIGN_1",e[e.VALUE_ALIGN_2=128]="VALUE_ALIGN_2",e[e.VALUE_ALIGN_3=256]="VALUE_ALIGN_3",e[e.VALUE_ALIGN_4=512]="VALUE_ALIGN_4",e[e.VALUE_SIGNED=1024]="VALUE_SIGNED",e[e.VALUE_FLOAT=2048]="VALUE_FLOAT",e[e.VALUE_NULLABLE=4096]="VALUE_NULLABLE",e[e.VALUE_MANAGED=8192]="VALUE_MANAGED",e[e.KEY_ALIGN_0=16384]="KEY_ALIGN_0",e[e.KEY_ALIGN_1=32768]="KEY_ALIGN_1",e[e.KEY_ALIGN_2=65536]="KEY_ALIGN_2",e[e.KEY_ALIGN_3=131072]="KEY_ALIGN_3",e[e.KEY_ALIGN_4=262144]="KEY_ALIGN_4",e[e.KEY_SIGNED=524288]="KEY_SIGNED",e[e.KEY_FLOAT=1048576]="KEY_FLOAT",e[e.KEY_NULLABLE=2097152]="KEY_NULLABLE",e[e.KEY_MANAGED=4194304]="KEY_MANAGED"}(n.TypeinfoFlags||(n.TypeinfoFlags={}))},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,i=t(5),a=t(2),o=t(5);function s(e){switch(e){case r.INFO:return"INFO";case r.WARNING:return"WARNING";case r.ERROR:return"ERROR";default:return assert(!1),""}}function u(e){switch(e){case r.INFO:return n.COLOR_BLUE;case r.WARNING:return n.COLOR_YELLOW;case r.ERROR:return n.COLOR_RED;default:return assert(!1),""}}n.DiagnosticCode=o.DiagnosticCode,n.diagnosticCodeToString=o.diagnosticCodeToString,function(e){e[e.INFO=0]="INFO",e[e.WARNING=1]="WARNING",e[e.ERROR=2]="ERROR"}(r=n.DiagnosticCategory||(n.DiagnosticCategory={})),n.diagnosticCategoryToString=s,n.COLOR_BLUE="",n.COLOR_YELLOW="",n.COLOR_RED="",n.COLOR_RESET="",n.diagnosticCategoryToColor=u;var l=function(){function e(e,n,t){this.range=null,this.relatedRange=null,this.code=e,this.category=n,this.message=t}return e.create=function(n,t,r,a,o){void 0===r&&(r=null),void 0===a&&(a=null),void 0===o&&(o=null);var s=i.diagnosticCodeToString(n);return null!=r&&(s=s.replace("{0}",r)),null!=a&&(s=s.replace("{1}",a)),null!=o&&(s=s.replace("{2}",o)),new e(n,t,s)},e.createInfo=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.INFO,t,i)},e.createWarning=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.WARNING,t,i)},e.createError=function(n,t,i){return void 0===t&&(t=null),void 0===i&&(i=null),e.create(n,r.ERROR,t,i)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?s(this.category)+" "+this.code.toString(10)+': "'+this.message+'" in '+this.range.source.normalizedPath+":"+this.range.line.toString(10)+":"+this.range.column.toString(10):s(this.category)+" "+this.code.toString(10)+": "+this.message},e}();function c(e,t){void 0===t&&(t=!1);for(var r=e.source.text,i=r.length,o=e.start,s=e.end;o>0&&!a.isLineBreak(r.charCodeAt(o-1));)o--;for(;s=0&&n<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(n))),i64_zero)},n.bitsetSet=function(e,n,t){return assert(n>=0&&n<64),t?i64_or(e,i64_shl(i64_one,i64_new(n))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(n))))}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),function(e){e[e.NULL=0]="NULL",e[e.LINEFEED=10]="LINEFEED",e[e.CARRIAGERETURN=13]="CARRIAGERETURN",e[e.LINESEPARATOR=8232]="LINESEPARATOR",e[e.PARAGRAPHSEPARATOR=8233]="PARAGRAPHSEPARATOR",e[e.NEXTLINE=133]="NEXTLINE",e[e.SPACE=32]="SPACE",e[e.NONBREAKINGSPACE=160]="NONBREAKINGSPACE",e[e.ENQUAD=8192]="ENQUAD",e[e.EMQUAD=8193]="EMQUAD",e[e.ENSPACE=8194]="ENSPACE",e[e.EMSPACE=8195]="EMSPACE",e[e.THREEPEREMSPACE=8196]="THREEPEREMSPACE",e[e.FOURPEREMSPACE=8197]="FOURPEREMSPACE",e[e.SIXPEREMSPACE=8198]="SIXPEREMSPACE",e[e.FIGURESPACE=8199]="FIGURESPACE",e[e.PUNCTUATIONSPACE=8200]="PUNCTUATIONSPACE",e[e.THINSPACE=8201]="THINSPACE",e[e.HAIRSPACE=8202]="HAIRSPACE",e[e.ZEROWIDTHSPACE=8203]="ZEROWIDTHSPACE",e[e.NARROWNOBREAKSPACE=8239]="NARROWNOBREAKSPACE",e[e.IDEOGRAPHICSPACE=12288]="IDEOGRAPHICSPACE",e[e.MATHEMATICALSPACE=8287]="MATHEMATICALSPACE",e[e.OGHAM=5760]="OGHAM",e[e._=95]="_",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.AMPERSAND=38]="AMPERSAND",e[e.ASTERISK=42]="ASTERISK",e[e.AT=64]="AT",e[e.BACKSLASH=92]="BACKSLASH",e[e.BACKTICK=96]="BACKTICK",e[e.BAR=124]="BAR",e[e.CARET=94]="CARET",e[e.CLOSEBRACE=125]="CLOSEBRACE",e[e.CLOSEBRACKET=93]="CLOSEBRACKET",e[e.CLOSEPAREN=41]="CLOSEPAREN",e[e.COLON=58]="COLON",e[e.COMMA=44]="COMMA",e[e.DOLLAR=36]="DOLLAR",e[e.DOT=46]="DOT",e[e.DOUBLEQUOTE=34]="DOUBLEQUOTE",e[e.EQUALS=61]="EQUALS",e[e.EXCLAMATION=33]="EXCLAMATION",e[e.GREATERTHAN=62]="GREATERTHAN",e[e.HASH=35]="HASH",e[e.LESSTHAN=60]="LESSTHAN",e[e.MINUS=45]="MINUS",e[e.OPENBRACE=123]="OPENBRACE",e[e.OPENBRACKET=91]="OPENBRACKET",e[e.OPENPAREN=40]="OPENPAREN",e[e.PERCENT=37]="PERCENT",e[e.PLUS=43]="PLUS",e[e.QUESTION=63]="QUESTION",e[e.SEMICOLON=59]="SEMICOLON",e[e.SINGLEQUOTE=39]="SINGLEQUOTE",e[e.SLASH=47]="SLASH",e[e.TILDE=126]="TILDE",e[e.BACKSPACE=8]="BACKSPACE",e[e.FORMFEED=12]="FORMFEED",e[e.BYTEORDERMARK=65279]="BYTEORDERMARK",e[e.TAB=9]="TAB",e[e.VERTICALTAB=11]="VERTICALTAB"}(n.CharCode||(n.CharCode={})),n.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},n.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},n.isDecimalDigit=function(e){return e>=48&&e<=57},n.isOctalDigit=function(e){return e>=48&&e<=55},n.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,r);var n},n.isKeywordCharacter=function(e){return e>=97&&e<=122},n.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&!((n=e)<0||n>65535)&&a(n,i);var n};var r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],i=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function a(e,n){if(e>1),(r=n[t-=1&t])<=e&&e<=n[t+1])return!0;e=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0}),n.makeArray=function(e){if(void 0===e&&(e=null),e){for(var n=new Array(e.length),t=0,r=e.length;t0||r=0;)if(e.charCodeAt(a)==i){t-a==3&&46==e.charCodeAt(a+1)&&46==e.charCodeAt(a+2)||(e=n?e.substring(0,a):e.substring(0,a)+e.substring(t+3),r-=t+3-a,t=a-1);break}if(a<0&&t>0&&(2!=t||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){r=(e=e.substring(t+4)).length;continue}}}t++}return r>0?e:"."}function o(e){var n=e.length;if(n<=1){if(0==n)return".";if(e.charCodeAt(0)==i)return e}for(;--n>0;)if(e.charCodeAt(n)==i)return e.substring(0,n);return"."}n.normalizePath=a,n.resolvePath=function(e,n){return e.startsWith("std/")?e:a(o(n)+r.PATH_DELIMITER+e)},n.dirname=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.indent=function(e,n){for(;n>=4;)e.push(" "),n-=4;n>=2&&(e.push(" "),n-=2),n&&e.push(" ")}},function(e,n,t){"use strict";function r(e,n){return e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24}function i(e,n,t){n[t]=e,n[t+1]=e>>>8,n[t+2]=e>>>16,n[t+3]=e>>>24}function a(e,n){var t=r(e,n),i=r(e,n+4);return i64_new(t,i)}Object.defineProperty(n,"__esModule",{value:!0}),n.readI8=function(e,n){return e[n]},n.writeI8=function(e,n,t){n[t]=e},n.readI16=function(e,n){return e[n]|e[n+1]<<8},n.writeI16=function(e,n,t){n[t]=e,n[t+1]=e>>>8},n.readI32=r,n.writeI32=i,n.readI64=a,n.writeI64=function(e,n,t){i(i64_low(e),n,t),i(i64_high(e),n,t+4)},n.readF32=function(e,n){return i32_as_f32(r(e,n))},n.writeF32=function(e,n,t){i(f32_as_i32(e),n,t)},n.readF64=function(e,n){return i64_as_f64(a(e,n))},n.writeF64=function(e,n,t){var r=f64_as_i64(e);i(i64_low(r),n,t),i(i64_high(r),n,t+4)}},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=t(0);t(18),t(19),t(20);var i=t(1),a=t(2),o=t(4),s=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(n){var t=new e;return t.visitNode(n),t.finish()},e.prototype.visitNode=function(e){switch(e.kind){case r.NodeKind.SOURCE:this.visitSource(e);break;case r.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case r.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case r.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case r.NodeKind.FALSE:case r.NodeKind.NULL:case r.NodeKind.SUPER:case r.NodeKind.THIS:case r.NodeKind.TRUE:case r.NodeKind.CONSTRUCTOR:case r.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case r.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case r.NodeKind.BINARY:this.visitBinaryExpression(e);break;case r.NodeKind.CALL:this.visitCallExpression(e);break;case r.NodeKind.CLASS:this.visitClassExpression(e);break;case r.NodeKind.COMMA:this.visitCommaExpression(e);break;case r.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case r.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case r.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case r.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case r.NodeKind.NEW:this.visitNewExpression(e);break;case r.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case r.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case r.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case r.NodeKind.BLOCK:this.visitBlockStatement(e);break;case r.NodeKind.BREAK:this.visitBreakStatement(e);break;case r.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case r.NodeKind.DO:this.visitDoStatement(e);break;case r.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case r.NodeKind.EXPORT:this.visitExportStatement(e);break;case r.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case r.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case r.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case r.NodeKind.FOR:this.visitForStatement(e);break;case r.NodeKind.IF:this.visitIfStatement(e);break;case r.NodeKind.IMPORT:this.visitImportStatement(e);break;case r.NodeKind.RETURN:this.visitReturnStatement(e);break;case r.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case r.NodeKind.THROW:this.visitThrowStatement(e);break;case r.NodeKind.TRY:this.visitTryStatement(e);break;case r.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case r.NodeKind.WHILE:this.visitWhileStatement(e);break;case r.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case r.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case r.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case r.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case r.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case r.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case r.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case r.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case r.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case r.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case r.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case r.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case r.NodeKind.DECORATOR:this.serializeDecorator(e);break;case r.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case r.NodeKind.PARAMETER:this.serializeParameter(e);break;case r.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var n=e.statements,t=0,r=n.length;t")}e.isNullable&&r.push(" | null")}},e.prototype.visitFunctionTypeNode=function(e){var n=e.isNullable,t=this.sb;t.push(n?"((":"(");var r=e.explicitThisType;r&&(t.push("this: "),this.visitTypeNode(r));var i=e.parameters,a=i.length;if(a){r&&t.push(", "),this.serializeParameter(i[0]);for(var o=1;o "),this.visitTypeNode(s)):t.push(") => void"),n&&t.push(") | null")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var n=e.extendsType;n&&(this.sb.push(" extends "),this.visitTypeNode(n));var t=e.defaultType;t&&(this.sb.push("="),this.visitTypeNode(t))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var n=this.sb;n.push("[");var t=e.elementExpressions,r=t.length;if(r){t[0]&&this.visitNode(t[0]);for(var i=1;i"),this.visitNode(e.expression);break;case r.AssertionKind.AS:this.visitNode(e.expression),n.push(" as "),this.visitTypeNode(assert(e.toType));break;case r.AssertionKind.NONNULL:this.visitNode(e.expression),n.push("!");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var n=this.sb;this.visitNode(e.left),n.push(" "),n.push(o.operatorTokenToString(e.operator)),n.push(" "),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var n=this.sb;this.visitNode(e.expression);var t=e.typeArguments;if(t){var r=t.length;if(r){n.push("<"),this.visitTypeNode(t[0]);for(var i=1;i(")}}else n.push("(");var a=e.arguments,o=a.length;if(o)for(this.visitNode(a[0]),i=1;ir&&t.push(e.substring(r,r=a+1)),t.push("\\0"),r=++a;break;case 8:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\b");break;case 9:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\t");break;case 10:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\n");break;case 11:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\v");break;case 12:a>r&&t.push(e.substring(r,a)),r=++a,t.push("\\f");break;case 13:a>r&&t.push(e.substring(r,a)),t.push("\\r"),r=++a;break;case 34:n?++a:(a>r&&t.push(e.substring(r,a)),t.push('\\"'),r=++a);break;case 39:n?(a>r&&t.push(e.substring(r,a)),t.push("\\'"),r=++a):++a;break;case 92:a>r&&t.push(e.substring(r,a)),t.push("\\\\"),r=++a;break;default:++a}a>r&&t.push(e.substring(r,a)),t.push(i)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var n=this.sb;n.push("/"),n.push(e.pattern),n.push("/"),n.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push("new "),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var n=this.sb;n.push("("),this.visitNode(e.expression),n.push(")")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push("."),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var n=this.sb;this.visitNode(e.condition),n.push(" ? "),this.visitNode(e.ifThen),n.push(" : "),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case r.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case r.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(o.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(o.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var n=this.sb;if(n.length&&e.kind!=r.NodeKind.VARIABLE&&e.kind!=r.NodeKind.EXPRESSION){var t=n[n.length-1],i=t.length-1;i>=0&&(125==t.charCodeAt(i)||59==t.charCodeAt(i))?n.push("\n"):n.push(";\n")}else n.push(";\n")},e.prototype.visitBlockStatement=function(e){var n=this.sb,t=e.statements,r=t.length;if(r){n.push("{\n");for(var i=++this.indentLevel,o=0;o")}var c=e.extendsType;c&&(u.push(" extends "),this.visitTypeNode(c));var f=e.implementsTypes;if(f){var d=f.length;if(d)for(u.push(" implements "),this.visitTypeNode(f[0]),o=1;o")}}if(2==e.arrowKind){var u=t.parameters;assert(1==u.length),assert(!t.explicitThisType),this.serializeParameter(u[0])}else{n.push("(");var l=(u=t.parameters).length,c=t.explicitThisType;if(c&&(n.push("this: "),this.visitTypeNode(c)),l)for(c&&n.push(", "),this.serializeParameter(u[0]),s=1;s "),this.visitNode(f)):(assert(!r.isTypeOmitted(d)),n.push(" => "),this.visitTypeNode(d)):(r.isTypeOmitted(d)||e.isAny(i.CommonFlags.CONSTRUCTOR|i.CommonFlags.SET)?n.push(")"):(n.push("): "),this.visitTypeNode(d)),f&&(n.push(" "),this.visitNode(f)))},e.prototype.visitIfStatement=function(e){var n=this.sb;n.push("if ("),this.visitNode(e.condition),n.push(") ");var t=e.ifTrue;this.visitNode(t),t.kind!=r.NodeKind.BLOCK&&n.push(";\n");var i=e.ifFalse;i&&(t.kind==r.NodeKind.BLOCK?n.push(" else "):n.push("else "),this.visitNode(i))},e.prototype.visitImportDeclaration=function(e){var n=e.foreignName,t=e.name;this.visitIdentifierExpression(n),n.text!=t.text&&(this.sb.push(" as "),this.visitIdentifierExpression(t))},e.prototype.visitImportStatement=function(e){var n=this.sb;n.push("import ");var t=e.declarations,r=e.namespaceName;if(t){var i=t.length;if(i){n.push("{\n");var o=++this.indentLevel;a.indent(n,o),this.visitImportDeclaration(t[0]);for(var s=1;s")}var u=e.extendsType;u&&(o.push(" extends "),this.visitTypeNode(u)),o.push(" {\n");var l=++this.indentLevel,c=e.members;for(r=0,i=c.length;r")}}i.push(" = "),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var n=e.type,t=this.sb;e.flags&i.CommonFlags.DEFINITE_ASSIGNMENT&&t.push("!"),n&&(t.push(": "),this.visitTypeNode(n));var r=e.initializer;r&&(t.push(" = "),this.visitNode(r))},e.prototype.visitVariableStatement=function(e){var n=e.decorators;if(n)for(var t=0,r=n.length;t>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(n.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(n.i32=n.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(n.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(n.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(n.u32=n.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(n.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(n.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(n.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),n.clz=Math.clz32,n.ctz=function(e){var n=Math.clz32(e&-e);return e?31-n:n},n.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},n.rotl=function(e,n){return e<<(n&=31)|e>>>32-n},n.rotr=function(e,n){return e>>>(n&=31)|e<<32-n},n.abs=Math.abs,n.max=Math.max,n.min=Math.min,n.ceil=Math.ceil,n.floor=Math.floor,n.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},n.select=function(e,n,t){return t?e:n},n.sqrt=Math.sqrt,n.trunc=Math.trunc,n.copysign=function(e,n){return Math.abs(e)*Math.sign(n)},n.bswap=function(e){var n=e>>8&16711935,t=(16711935&e)<<8;return(n=(e=n|t)>>16&65535)|(65535&e)<<16},n.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},i.prototype=Object.create(Error.prototype),i.prototype.name="UnreachableError",i.prototype.message="unreachable",n.unreachable=function(){throw new i},a.prototype=Object.create(Error.prototype),a.prototype.name="AssertionError",n.assert=function(e,n){if(e)return e;throw new a(n)},n.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,"replaceAll",{value:function(e,n){var t=this.split(e).join(n);return e.length||(t=n+t+n),t}}),n.isInteger=Number.isInteger,n.isFloat=function(e){return"number"==typeof e},n.isNullable=function(e){return!0},n.isReference=function(e){return"object"==typeof e||"string"==typeof e},n.isFunction=function(e){return"function"==typeof e},n.isString=function(e){return"string"==typeof e||e instanceof String},n.isArray=Array.isArray,n.isArrayLike=function(e){return e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var n=new Array(e);return n.length=0,n},n.isDefined=function(e){return void 0!==e},n.isConstant=function(e){return!1},n.unchecked=function(e){return e},n.fmod=function(e,n){return e%n},n.fmodf=function(e,n){return Math.fround(e%n)},n.JSMath=Math;try{Object.defineProperties(n.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return t[0]=e,Boolean(r[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}n.memory=(()=>{var e=new Uint8Array(0),t=0;return{allocate:n.__memory_allocate||function(n){if(!(n>>>=0))return 0;if(t+n>e.length){var r=e;(e=new Uint8Array(Math.max(65536,e.length+n,2*e.length))).set(r)}var i=t;return 7&(t+=n)&&(t=1+(7|t)),i},fill:n.__memory_fill||function(n,t,r){e.fill(t,n,n+r)},free:n.__memory_free||function(e){},copy:n.__memory_copy||function(n,t,r){e.copyWithin(n,t,t+r)},reset:n.__memory_reset||function(){e=new Uint8Array(0),t=0}}})(),n.store=n.__store||function(e,n,t){HEAP[(0|e)+(0|t)]=n},n.load=n.__load||function(e,n){return HEAP[(0|e)+(0|n)]},n.unmanaged=function(){}}).call(this,t(3))},function(e,n,t){(function(e){const n=new Float64Array(1),t=new Float32Array(n.buffer),r=new Int32Array(n.buffer);e.f32_as_i32=function(e){return t[0]=e,r[0]},e.i32_as_f32=function(e){return r[0]=e,t[0]},e.f64_as_i64=function(e){return n[0]=e,i64_new(r[0],r[1])},e.i64_as_f64=function(e){return r[0]=i64_low(e),r[1]=i64_high(e),n[0]}}).call(this,t(3))},function(e,n,t){(function(e){const n=e.Long||t(21);e.i64_zero=n.ZERO,e.i64_one=n.ONE,e.i64_new=function(e,t){return n.fromBits(e,t)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,n){return e.add(n)},e.i64_sub=function(e,n){return e.sub(n)},e.i64_mul=function(e,n){return e.mul(n)},e.i64_div=function(e,n){return e.div(n)},e.i64_div_u=function(e,n){return e.toUnsigned().div(n.toUnsigned()).toSigned()},e.i64_rem=function(e,n){return e.mod(n)},e.i64_rem_u=function(e,n){return e.toUnsigned().mod(n.toUnsigned()).toSigned()},e.i64_and=function(e,n){return e.and(n)},e.i64_or=function(e,n){return e.or(n)},e.i64_xor=function(e,n){return e.xor(n)},e.i64_shl=function(e,n){return e.shl(n)},e.i64_shr=function(e,n){return e.shr(n)},e.i64_shr_u=function(e,n){return e.shru(n)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,n){return e.eq(n)},e.i64_ne=function(e,n){return e.ne(n)},e.i64_align=function(e,t){assert(t&&0==(t&t-1));var r=n.fromInt(t-1);return e.add(r).and(r.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const r=n.fromNumber(f32.MIN_SAFE_INTEGER),i=n.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(r)&&e.lte(i)};const a=n.fromNumber(f64.MIN_SAFE_INTEGER),o=n.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(a)&&e.lte(o)},e.i64_to_f32=function(n){return e.Math.fround(n.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,n){return(n?e.toUnsigned():e).toString(10)}}).call(this,t(3))},function(e,n){e.exports=r;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function r(e,n,t){this.low=0|e,this.high=0|n,this.unsigned=!!t}function i(e){return!0===(e&&e.__isLong__)}r.prototype.__isLong__,Object.defineProperty(r.prototype,"__isLong__",{value:!0}),r.isLong=i;var a={},o={};function s(e,n){var t,r,i;return n?(i=0<=(e>>>=0)&&e<256)&&(r=o[e])?r:(t=l(e,(0|e)<0?-1:0,!0),i&&(o[e]=t),t):(i=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(t=l(e,e<0?-1:0,!1),i&&(a[e]=t),t)}function u(e,n){if(isNaN(e))return n?m:v;if(n){if(e<0)return m;if(e>=h)return T}else{if(e<=-g)return A;if(e+1>=g)return E}return e<0?u(-e,n).neg():l(e%p|0,e/p|0,n)}function l(e,n,t){return new r(e,n,t)}r.fromInt=s,r.fromNumber=u,r.fromBits=l;var c=Math.pow;function f(e,n,t){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return v;if("number"==typeof n?(t=n,n=!1):n=!!n,(t=t||10)<2||360)throw Error("interior hyphen");if(0===r)return f(e.substring(1),n,t).neg();for(var i=u(c(t,8)),a=v,o=0;o>>0:this.low},S.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},S.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((a=s).isZero())return l+o;for(;l.length<6;)l="0"+l;o=""+l+o}},S.getHighBits=function(){return this.high},S.getHighBitsUnsigned=function(){return this.high>>>0},S.getLowBits=function(){return this.low},S.getLowBitsUnsigned=function(){return this.low>>>0},S.getNumBitsAbs=function(){if(this.isNegative())return this.eq(A)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,n=31;n>0&&0==(e&1<=0},S.isOdd=function(){return 1==(1&this.low)},S.isEven=function(){return 0==(1&this.low)},S.equals=function(e){return i(e)||(e=d(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},S.eq=S.equals,S.notEquals=function(e){return!this.eq(e)},S.neq=S.notEquals,S.ne=S.notEquals,S.lessThan=function(e){return this.comp(e)<0},S.lt=S.lessThan,S.lessThanOrEqual=function(e){return this.comp(e)<=0},S.lte=S.lessThanOrEqual,S.le=S.lessThanOrEqual,S.greaterThan=function(e){return this.comp(e)>0},S.gt=S.greaterThan,S.greaterThanOrEqual=function(e){return this.comp(e)>=0},S.gte=S.greaterThanOrEqual,S.ge=S.greaterThanOrEqual,S.compare=function(e){if(i(e)||(e=d(e)),this.eq(e))return 0;var n=this.isNegative(),t=e.isNegative();return n&&!t?-1:!n&&t?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},S.comp=S.compare,S.negate=function(){return!this.unsigned&&this.eq(A)?A:this.not().add(_)},S.neg=S.negate,S.add=function(e){i(e)||(e=d(e));var n=this.high>>>16,t=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,u=e.low>>>16,c=0,f=0,p=0,h=0;return p+=(h+=a+(65535&e.low))>>>16,f+=(p+=r+u)>>>16,c+=(f+=t+s)>>>16,c+=n+o,l((p&=65535)<<16|(h&=65535),(c&=65535)<<16|(f&=65535),this.unsigned)},S.subtract=function(e){return i(e)||(e=d(e)),this.add(e.neg())},S.sub=S.subtract,S.multiply=function(e){if(this.isZero())return v;if(i(e)||(e=d(e)),t)return l(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return v;if(this.eq(A))return e.isOdd()?A:v;if(e.eq(A))return this.isOdd()?A:v;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(x)&&e.lt(x))return u(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,r=65535&this.high,a=this.low>>>16,o=65535&this.low,s=e.high>>>16,c=65535&e.high,f=e.low>>>16,p=65535&e.low,h=0,g=0,m=0,_=0;return m+=(_+=o*p)>>>16,g+=(m+=a*p)>>>16,m&=65535,g+=(m+=o*f)>>>16,h+=(g+=r*p)>>>16,g&=65535,h+=(g+=a*f)>>>16,g&=65535,h+=(g+=o*c)>>>16,h+=n*p+r*f+a*c+o*s,l((m&=65535)<<16|(_&=65535),(h&=65535)<<16|(g&=65535),this.unsigned)},S.mul=S.multiply,S.divide=function(e){if(i(e)||(e=d(e)),e.isZero())throw Error("division by zero");var n,r,a;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?l((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?m:v;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return m;if(e.gt(this.shru(1)))return y;a=m}else{if(this.eq(A))return e.eq(_)||e.eq(b)?A:e.eq(A)?_:(n=this.shr(1).div(e).shl(1)).eq(v)?e.isNegative()?_:b:(r=this.sub(e.mul(n)),a=n.add(r.div(e)));if(e.eq(A))return this.unsigned?m:v;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();a=v}for(r=this;r.gte(e);){n=Math.max(1,Math.floor(r.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),s=o<=48?1:c(2,o-48),f=u(n),p=f.mul(e);p.isNegative()||p.gt(r);)p=(f=u(n-=s,this.unsigned)).mul(e);f.isZero()&&(f=_),a=a.add(f),r=r.sub(p)}return a},S.div=S.divide,S.modulo=function(e){return i(e)||(e=d(e)),t?l((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},S.mod=S.modulo,S.rem=S.modulo,S.not=function(){return l(~this.low,~this.high,this.unsigned)},S.and=function(e){return i(e)||(e=d(e)),l(this.low&e.low,this.high&e.high,this.unsigned)},S.or=function(e){return i(e)||(e=d(e)),l(this.low|e.low,this.high|e.high,this.unsigned)},S.xor=function(e){return i(e)||(e=d(e)),l(this.low^e.low,this.high^e.high,this.unsigned)},S.shiftLeft=function(e){return i(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?l(this.low<>>32-e,this.unsigned):l(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):l(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},S.shr=S.shiftRight,S.shiftRightUnsigned=function(e){if(i(e)&&(e=e.toInt()),0==(e&=63))return this;var n=this.high;return e<32?l(this.low>>>e|n<<32-e,n>>>e,this.unsigned):l(32===e?n:n>>>e-32,0,this.unsigned)},S.shru=S.shiftRightUnsigned,S.shr_u=S.shiftRightUnsigned,S.toSigned=function(){return this.unsigned?l(this.low,this.high,!1):this},S.toUnsigned=function(){return this.unsigned?this:l(this.low,this.high,!0)},S.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},S.toBytesLE=function(){var e=this.high,n=this.low;return[255&n,n>>>8&255,n>>>16&255,n>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},S.toBytesBE=function(){var e=this.high,n=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,n>>>24,n>>>16&255,n>>>8&255,255&n]},r.fromBytes=function(e,n,t){return t?r.fromBytesLE(e,n):r.fromBytesBE(e,n)},r.fromBytesLE=function(e,n){return new r(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,n)},r.fromBytesBE=function(e,n){return new r(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],n)}},function(e,n,t){"use strict";var r,i=this&&this.__extends||(r=function(e,n){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t])})(e,n)},function(e,n){function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}),a=this&&this.__values||function(e){var n="function"==typeof Symbol&&e[Symbol.iterator],t=0;return n?n.call(e):{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}};Object.defineProperty(n,"__esModule",{value:!0});var o=t(0),s=function(e){function n(n){var t=e.call(this,n)||this;return t.depth=0,t}return i(n,e),n.prototype._visit=function(e){switch(e.kind){case o.NodeKind.SOURCE:this.visitSource(e);break;case o.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case o.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case o.NodeKind.TYPENAME:this.visitTypeName(e);case o.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case o.NodeKind.FALSE:case o.NodeKind.NULL:case o.NodeKind.SUPER:case o.NodeKind.THIS:case o.NodeKind.TRUE:case o.NodeKind.CONSTRUCTOR:case o.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case o.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case o.NodeKind.BINARY:this.visitBinaryExpression(e);break;case o.NodeKind.CALL:this.visitCallExpression(e);break;case o.NodeKind.CLASS:this.visitClassExpression(e);break;case o.NodeKind.COMMA:this.visitCommaExpression(e);break;case o.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case o.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case o.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case o.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case o.NodeKind.NEW:this.visitNewExpression(e);break;case o.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case o.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case o.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case o.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case o.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case o.NodeKind.BLOCK:this.visitBlockStatement(e);break;case o.NodeKind.BREAK:this.visitBreakStatement(e);break;case o.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case o.NodeKind.DO:this.visitDoStatement(e);break;case o.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case o.NodeKind.EXPORT:this.visitExportStatement(e);break;case o.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case o.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case o.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case o.NodeKind.FOR:this.visitForStatement(e);break;case o.NodeKind.IF:this.visitIfStatement(e);break;case o.NodeKind.IMPORT:this.visitImportStatement(e);break;case o.NodeKind.RETURN:this.visitReturnStatement(e);break;case o.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case o.NodeKind.THROW:this.visitThrowStatement(e);break;case o.NodeKind.TRY:this.visitTryStatement(e);break;case o.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case o.NodeKind.WHILE:this.visitWhileStatement(e);break;case o.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case o.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case o.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case o.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case o.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case o.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case o.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case o.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case o.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case o.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case o.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case o.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case o.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case o.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case o.NodeKind.PARAMETER:this.visitParameter(e);break;case o.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},n.prototype.visitSource=function(e){var n,t;try{for(var r=a(e.statements),i=r.next();!i.done;i=r.next()){var o=i.value;this.depth++,this.visit(o),this.depth--}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}},n.prototype.visitTypeNode=function(e){},n.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},n.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},n.prototype.visitFunctionTypeNode=function(e){var n,t;try{for(var r=a(e.parameters),i=r.next();!i.done;i=r.next()){var o=i.value;this.visit(o)}}catch(e){n={error:e}}finally{try{i&&!i.done&&(t=r.return)&&t.call(r)}finally{if(n)throw n.error}}this.visit(e.returnType)},n.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},n.prototype.visitIdentifierExpression=function(e){},n.prototype.visitArrayLiteralExpression=function(e){var n=this;e.elementExpressions.map(function(e){e&&n.visit(e)})},n.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var n=0;n=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}}},i=this&&this.__read||function(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,i,a=t.call(e),o=[];try{for(;(void 0===n||n-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(t=a.return)&&t.call(a)}finally{if(i)throw i.error}}return o};Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();n.DefaultWriter=a;var o=function(){function e(e){void 0===e&&(e=new a),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var n,t,a,o,s,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var l=r(e.entries()),c=l.next();!c.done;c=l.next()){var f=i(c.value,2),d=(f[0],f[1]);this.visit(d)}}catch(e){n={error:e}}finally{try{c&&!c.done&&(t=l.return)&&t.call(l)}finally{if(n)throw n.error}}else if(null!=(s=e)&&"function"==typeof s[Symbol.iterator])try{for(var p=r(e),h=p.next();!h.done;h=p.next())d=h.value,this.visit(d)}catch(e){a={error:e}}finally{try{h&&!h.done&&(o=p.return)&&o.call(p)}finally{if(a)throw a.error}}else this._visit(e)},e}();n.AbstractVisitor=o},function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.preamble='import { base64 } from "near-runtime-ts";\nimport { JSONEncoder } from "assemblyscript-json";\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from "assemblyscript-json";\n'}])},function(e,n){if(void 0===__WEBPACK_EXTERNAL_MODULE__11__){var t=new Error("Cannot find module 'assemblyscript'");throw t.code="MODULE_NOT_FOUND",t}e.exports=__WEBPACK_EXTERNAL_MODULE__11__},function(e){e.exports=JSON.parse('{"version":{"description":"Prints just the compiler\'s version and exits.","type":"b","alias":"v"},"help":{"description":"Prints this message and exits.","type":"b","alias":"h"},"optimize":{"description":["Optimizes the module. Also has the usual shorthands:",""," -O Uses defaults. Equivalent to -O3s"," -O0 Equivalent to --optimizeLevel 0"," -O1 Equivalent to --optimizeLevel 1"," -O2 Equivalent to --optimizeLevel 2"," -O3 Equivalent to --optimizeLevel 3"," -Oz Equivalent to -O but with --shrinkLevel 2"," -O3s Equivalent to -O3 with --shrinkLevel 1 etc.",""],"type":"b","alias":"O"},"optimizeLevel":{"description":"How much to focus on optimizing code. [0-3]","type":"i"},"shrinkLevel":{"description":"How much to focus on shrinking code size. [0-2, s=1, z=2]","type":"i"},"validate":{"description":"Validates the module using Binaryen. Exits if invalid.","type":"b","alias":"c","default":false},"baseDir":{"description":"Specifies the base directory of input and output files.","type":"s","default":"."},"outFile":{"description":"Specifies the output file. File extension indicates format.","type":"s","alias":"o"},"binaryFile":{"description":"Specifies the binary output file (.wasm).","type":"s","alias":"b"},"textFile":{"description":"Specifies the text output file (.wat).","type":"s","alias":"t"},"asmjsFile":{"description":"Specifies the asm.js output file (.js).","type":"s","alias":"a"},"idlFile":{"description":"Specifies the WebIDL output file (.webidl).","type":"s","alias":"i"},"tsdFile":{"description":"Specifies the TypeScript definition output file (.d.ts).","type":"s","alias":"d"},"sourceMap":{"description":["Enables source map generation. Optionally takes the URL","used to reference the source map from the binary file."],"type":"s"},"runtime":{"description":["Specifies the runtime variant to include in the program.",""," full Default runtime based on TLSF and reference counting."," half Same as \'full\', but not exported to the host."," stub Minimal stub implementation without free/GC support."," none Same as \'stub\', but not exported to the host.",""],"type":"s","default":"full"},"noUnsafe":{"description":["Disallows the use of unsafe features in user code.","Does not affect library files and external modules."],"type":"b","default":false},"debug":{"description":"Enables debug information in emitted binaries.","type":"b","default":false},"noAssert":{"description":"Replaces assertions with just their value without trapping.","type":"b","default":false},"noEmit":{"description":"Performs compilation as usual but does not emit code.","type":"b","default":false},"importMemory":{"description":"Imports the memory instance provided by the embedder.","type":"b","default":false},"sharedMemory":{"description":"Declare memory as shared by settings the max shared memory.","type":"i","default":0},"memoryBase":{"description":"Sets the start offset of compiler-generated static memory.","type":"i","default":0},"importTable":{"description":"Imports the function table instance provided by the embedder.","type":"b","default":false},"explicitStart":{"description":"Exports an explicit start function to be called manually.","type":"b","default":false},"lib":{"description":["Adds one or multiple paths to custom library components and","uses exports of all top-level files at this path as globals."],"type":"s"},"path":{"description":["Comma separated paths to look for dependencies.","Looks for folders with package.json that includes a \'ascMain\' field","or defaults to having an \'/assembly\' folder."],"type":"S"},"use":{"description":["Aliases a global object under another name, e.g., to switch","the default \'Math\' implementation used: --use Math=JSMath"],"type":"S","alias":"u"},"trapMode":{"description":["Sets the trap mode to use.",""," allow Allow trapping operations. This is the default."," clamp Replace trapping operations with clamping semantics."," js Replace trapping operations with JS semantics.",""],"type":"s","default":"allow"},"runPasses":{"description":["Specifies additional Binaryen passes to run after other","optimizations, if any. See: Binaryen/src/passes/pass.cpp"],"type":"s"},"enable":{"description":["Enables additional (experimental) WebAssembly features.",""," sign-extension Enables sign-extension operations"," mutable-global Enables mutable global imports and exports"," bulk-memory Enables bulk memory operations"," simd Enables SIMD types and operations."," threads Enables threading and atomic operations.",""],"type":"s"},"transform":{"description":"Specifies the path to a custom transform to \'require\'.","type":"S"},"traceResolution":{"description":"Enable tracing of package resolution.","type":"b","default":false},"listFiles":{"description":"List files to be compiled and exit.","type":"b","default":false},"measure":{"description":"Prints measuring information on I/O and compile times.","type":"b","default":false},"printrtti":{"description":"Prints the module\'s runtime type information to stderr.","type":"b","default":false},"noColors":{"description":"Disables terminal colors.","type":"b","default":false}," ...":{"description":"Specifies node.js options (CLI only). See: node --help"},"-Os":{"value":{"optimize":true,"shrinkLevel":1}},"-Oz":{"value":{"optimize":true,"shrinkLevel":2}},"-O0":{"value":{"optimizeLevel":0,"shrinkLevel":0}},"-O1":{"value":{"optimizeLevel":1,"shrinkLevel":0}},"-O2":{"value":{"optimizeLevel":2,"shrinkLevel":0}},"-O3":{"value":{"optimizeLevel":3,"shrinkLevel":0}},"-O0s":{"value":{"optimizeLevel":0,"shrinkLevel":1}},"-O1s":{"value":{"optimizeLevel":1,"shrinkLevel":1}},"-O2s":{"value":{"optimizeLevel":2,"shrinkLevel":1}},"-O3s":{"value":{"optimizeLevel":3,"shrinkLevel":1}},"-O0z":{"value":{"optimizeLevel":0,"shrinkLevel":2}},"-O1z":{"value":{"optimizeLevel":1,"shrinkLevel":2}},"-O2z":{"value":{"optimizeLevel":2,"shrinkLevel":2}},"-O3z":{"value":{"optimizeLevel":3,"shrinkLevel":2}},"notNear":{"description":"Prevent the instrumentation of the binding code for near","type":"b","default":false}}')},function(e,n){function t(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=13},function(e,n,t){(function(n,t){e.exports=n.hrtime||function(e){var n=.001*i.call(r),t=Math.floor(n),a=Math.floor(n%1*1e9);e&&(t-=e[0],(a-=e[1])<0&&(t--,a+=1e9));return[t,a]};var r=t.performance||{},i=r.now||r.mozNow||r.msNow||r.oNow||r.webkitNow||function(){return(new Date).getTime()}}).call(this,t(0),t(2))}])}); //# sourceMappingURL=asc.js.map \ No newline at end of file diff --git a/dist/asc.js.map b/dist/asc.js.map index bb3da0a3b5..47c567de59 100644 --- a/dist/asc.js.map +++ b/dist/asc.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","Q","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new Q;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var Q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=Q;var j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=j;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(j);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(j);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n value.decode(JSON.parse(json));\\n return value;\\n }\\n\\n decode(obj: Obj): \"+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+'>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://asc/webpack/universalModuleDefinition","webpack://asc/webpack/bootstrap","webpack://asc/../node_modules/node-libs-browser/mock/process.js","webpack://asc/../node_modules/node-libs-browser/node_modules/path-browserify/index.js","webpack://asc/../node_modules/webpack/buildin/global.js","webpack://asc/./asc.js","webpack://asc/../node_modules/@protobufjs/utf8/index.js","webpack://asc/./util/colors.js","webpack://asc/./util/options.js","webpack://asc/./util/mkdirp.js","webpack://asc/../bindings/dist/transformerBundle.js","webpack://asc/external \"assemblyscript\"","webpack://asc/. sync","webpack://asc/../node_modules/browser-process-hrtime/index.js"],"names":["root","factory","exports","module","require","e","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__11__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","path","cwd","nextTick","fn","args","Array","slice","arguments","shift","setTimeout","apply","platform","arch","execPath","title","pid","browser","env","argv","binding","Error","chdir","dir","resolve","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","process","normalizeArray","parts","allowAboveRoot","up","length","last","splice","unshift","filter","xs","f","res","push","resolvedPath","resolvedAbsolute","TypeError","charAt","split","join","normalize","isAbsolute","trailingSlash","substr","paths","index","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","code","charCodeAt","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","g","Function","window","global","fs","utf8","colorsUtil","optionsUtil","mkdirp","EOL","SEP","nearBindings","nearLibEntry","removeAllListeners","assemblyscript","isDev","checkDiagnostics","emitter","stderr","diagnostic","hasErrors","nextDiagnostic","write","formatDiagnostic","isTTY","isError","createStats","readTime","readCount","writeTime","writeCount","parseTime","parseCount","compileTime","compileCount","emitTime","emitCount","validateTime","validateCount","optimizeTime","optimizeCount","measure","hrtime","times","formatTime","time","toFixed","printStats","stats","output","format","count","stdout","printRTTI","program","buildRTTI","register","project","e_ts","eval","stack","isBundle","version","options","sourceMapRoot","libraryPrefix","LIBRARY_PREFIX","defaultOptimizeLevel","defaultShrinkLevel","libraryFiles","nearEntry","array","arraybuffer","bindings/Date","bindings/Math","bindings/wasi_unstable","bindings/wasi","builtins","compat","dataview","date","diagnostics","error","fixedarray","heap","iterator","map","math","memory","number","polyfills","regexp","rt","rt/common","rt/index-full","rt/index-half","rt/index-none","rt/index-stub","rt/pure","rt/rtrace","rt/stub","rt/tlsf","set","shared/feature","shared/target","shared/typeinfo","string","symbol","table","typedarray","util/error","util/hash","util/memory","util/number","util/sort","util/string","vector","libDir","libFiles","sync","bundled","readFileSync","forEach","file","replace","definitionFiles","assembly","portable","stdDir","compileString","sources","input.ts","createMemoryStream","keys","val","isArray","String","main","readFile","writeFile","contents","listFiles","callback","readFileNode","writeFileNode","listFilesNode","opts","parse","noColors","supported","unknown","arg","yellow","trailing","err","red","help","out","color","white","cyan","baseDir","transforms","notNear","transform","parser","packages","Map","importPathMap","libPath","indexOf","parseFile","customLibDirs","lib","k","endsWith","j","libText","nodePaths","basePath","_path","_","dirFrom","reverse","getPaths","parseBacklog","sourcePath","sourceText","sysPath","nextFile","dependee","getDependee","startsWith","plainName","substring","indexName","traceResolution","_package","ascMain","has","package_json","JSON","mainFile","newPackage","realPath","_p","first","second","runtimeName","runtime","runtimePath","runtimeText","filename","applyTransform","finishParsing","normalizedPath","sort","optimizeLevel","shrinkLevel","optimize","max","compilerOptions","createOptions","setTarget","setNoAssert","noAssert","setImportMemory","importMemory","setSharedMemory","sharedMemory","setImportTable","importTable","setExplicitStart","explicitStart","setMemoryBase","memoryBase","setSourceMap","sourceMap","setOptimizeLevelHints","setNoUnsafe","noUnsafe","setGlobalAlias","use","aliases","part","alias","enable","flag","toUpperCase","enableFeature","compileProgram","dispose","validate","trapMode","runPasses","setOptimizeLevel","setShrinkLevel","setDebugInfo","debug","pass","noEmit","hasStdout","hasOutput","outFile","test","textFile","asmjsFile","binaryFile","wasm","sourceMapURL","toBinary","writeStdout","sourceRoot","text","stdName","sourceContents","stringify","asm","toAsmjs","idlFile","idl","buildIDL","tsdFile","tsd","buildTSD","wat","toText","printrtti","encoding","writeFileSync","files","readdirSync","used","allocBuffer","Buffer","allocUnsafe","Uint8Array","stream","chunk","buffer","reset","toBuffer","offset","toString","read","tscOptions","alwaysStrict","noImplicitAny","noImplicitReturns","noImplicitThis","noEmitOnError","strictNullChecks","experimentalDecorators","target","noLib","types","allowJs","fromCharCode","c1","c2","proc","isCI","base","colors","gray","GRAY","RESET","RED","green","GREEN","YELLOW","blue","BLUE","magenta","MAGENTA","CYAN","WHITE","config","option","default","match","exec","type","parseInt","parseFloat","indent","padding","eol","sb","description","line","_0777","made","undefined","mkdirSync","err0","stat","statSync","err1","isDirectory","__extends","setPrototypeOf","__proto__","constructor","a","Token","Range","u","SOURCE","NAMEDTYPE","FUNCTIONTYPE","TYPENAME","TYPEPARAMETER","PARAMETER","IDENTIFIER","ASSERTION","BINARY","CALL","CLASS","COMMA","ELEMENTACCESS","FALSE","FUNCTION","INSTANCEOF","LITERAL","NEW","NULL","PARENTHESIZED","PROPERTYACCESS","TERNARY","SUPER","THIS","TRUE","CONSTRUCTOR","UNARYPOSTFIX","UNARYPREFIX","BLOCK","BREAK","CONTINUE","DO","EMPTY","EXPORT","EXPORTDEFAULT","EXPORTIMPORT","EXPRESSION","FOR","IF","IMPORT","RETURN","SWITCH","THROW","TRY","VARIABLE","VOID","WHILE","CLASSDECLARATION","ENUMDECLARATION","ENUMVALUEDECLARATION","FIELDDECLARATION","FUNCTIONDECLARATION","IMPORTDECLARATION","INDEXSIGNATUREDECLARATION","INTERFACEDECLARATION","METHODDECLARATION","NAMESPACEDECLARATION","TYPEDECLARATION","VARIABLEDECLARATION","DECORATOR","EXPORTMEMBER","SWITCHCASE","COMMENT","NodeKind","nodeIsConstantValue","nodeIsCallable","nodeIsGenericCallable","createTypeName","range","identifier","next","createSimpleTypeName","createIdentifierExpression","createNamedType","h","typeArguments","isNullable","createFunctionType","parameters","returnType","explicitThisType","createOmittedType","createTypeParameter","extendsType","defaultType","createParameter","initializer","parameterKind","createDecorator","v","decoratorKind","A","createComment","commentKind","y","isQuoted","createEmptyIdentifierExpression","createArrayLiteralExpression","R","elementExpressions","createAssertionExpression","assertionKind","expression","toType","createBinaryExpression","I","operator","left","right","createCallExpression","b","createClassExpression","L","declaration","createCommaExpression","C","expressions","createConstructorExpression","O","createElementAccessExpression","x","elementExpression","createFalseExpression","createFloatLiteralExpression","P","createFunctionExpression","D","createInstanceOfExpression","U","isType","createIntegerLiteralExpression","w","createNewExpression","M","createNullExpression","createObjectLiteralExpression","F","names","values","createParenthesizedExpression","K","createPropertyAccessExpression","B","createRegexpLiteralExpression","H","pattern","patternFlags","createTernaryExpression","G","condition","ifThen","ifElse","createStringLiteralExpression","Y","createSuperExpression","V","createThisExpression","z","createTrueExpression","X","createUnaryPostfixExpression","W","operand","createUnaryPrefixExpression","q","createBlockStatement","ne","statements","createBreakStatement","re","label","createClassDeclaration","se","flags","typeParameters","implementsTypes","members","decorators","createContinueStatement","ae","createDoStatement","oe","statement","createEmptyStatement","ue","createEnumDeclaration","ce","createEnumValueDeclaration","_e","createExportStatement","le","normalizePath","resolvePath","source","internalPath","we","isDeclare","createExportDefaultStatement","de","createExportImportStatement","pe","externalName","createExportMember","he","localName","exportedName","createExpressionStatement","Ee","createIfStatement","me","ifTrue","ifFalse","createImportStatement","Ne","declarations","namespaceName","createImportStatementWithWildcard","createImportDeclaration","Te","foreignName","createInterfaceDeclaration","ye","createFieldDeclaration","fe","createForStatement","Ae","incrementor","createFunctionDeclaration","ve","signature","body","arrowKind","createIndexSignatureDeclaration","te","keyType","valueType","createMethodDeclaration","Se","createNamespaceDeclaration","Re","createReturnStatement","ge","createSwitchStatement","be","cases","createSwitchCase","Ie","createThrowStatement","Le","createTryStatement","Ce","catchVariable","catchStatements","finallyStatements","createTypeDeclaration","Oe","createVariableStatement","Pe","createVariableDeclaration","xe","createVoidStatement","De","createWhileStatement","Ue","Node","TypeNode","kind","TypeName","NamedTypeNode","FunctionTypeNode","TypeParameterNode","DEFAULT","OPTIONAL","REST","ParameterKind","E","implicitFieldDeclaration","CommonFlags","NONE","is","isAny","assert","BUILTIN","EXTERNAL","GLOBAL","INLINE","LAZY","OPERATOR","SEALED","UNMANAGED","UNSAFE","OPERATOR_BINARY","OPERATOR_PREFIX","OPERATOR_POSTFIX","CUSTOM","ParameterNode","DecoratorKind","decoratorNameToKind","DecoratorNode","LINE","TRIPLE","CommentKind","CommentNode","T","Expression","N","IdentifierExpression","FLOAT","INTEGER","STRING","REGEXP","ARRAY","OBJECT","LiteralKind","S","LiteralExpression","literalKind","ArrayLiteralExpression","PREFIX","AS","NONNULL","AssertionKind","AssertionExpression","BinaryExpression","configurable","CallExpression","ClassExpression","CommaExpression","CommonSymbols","ConstructorExpression","ElementAccessExpression","FloatLiteralExpression","FunctionExpression","InstanceOfExpression","IntegerLiteralExpression","NewExpression","null_","NullExpression","ObjectLiteralExpression","ParenthesizedExpression","PropertyAccessExpression","RegexpLiteralExpression","TernaryExpression","StringLiteralExpression","super_","SuperExpression","this_","ThisExpression","true_","TrueExpression","false_","FalseExpression","Q","UnaryExpression","UnaryPostfixExpression","UnaryPrefixExpression","Z","J","Statement","USER","USER_ENTRY","LIBRARY","LIBRARY_ENTRY","SourceKind","$","parent","tokenizer","debugInfoIndex","exportPaths","sourceKind","lastIndexOf","PATH_DELIMITER","simplePath","Source","ee","DeclarationStatement","IndexSignatureDeclaration","ie","VariableLikeDeclarationStatement","BlockStatement","BreakStatement","ClassDeclaration","ContinueStatement","DoStatement","EmptyStatement","EnumDeclaration","EnumValueDeclaration","ExportImportStatement","ExportMember","ExportStatement","ExportDefaultStatement","ExpressionStatement","parameterIndex","FieldDeclaration","ForStatement","ARROW_PARENTHESIZED","ARROW_SINGLE","ArrowKind","clone","FunctionDeclaration","IfStatement","ImportDeclaration","ImportStatement","InterfaceDeclaration","MethodDeclaration","NamespaceDeclaration","ReturnStatement","SwitchCase","SwitchStatement","ThrowStatement","TryStatement","TypeDeclaration","VariableDeclaration","VariableStatement","VoidStatement","WhileStatement","findDecorator","mangleInternalPath","isTypeOmitted","DECLARE","CONST","LET","STATIC","READONLY","ABSTRACT","PUBLIC","PRIVATE","PROTECTED","GET","SET","DEFINITE_ASSIGNMENT","AMBIENT","GENERIC","GENERIC_CONTEXT","INSTANCE","MODULE_EXPORT","MODULE_IMPORT","RESOLVED","COMPILED","INLINED","SCOPED","TRAMPOLINE","VIRTUAL","MAIN","QUOTED","PARENT_SUBST","GETTER_PREFIX","SETTER_PREFIX","INSTANCE_DELIMITER","STATIC_DELIMITER","INNER_DELIMITER","LIBRARY_SUBST","INDEX_SUFFIX","i8","i16","i32","i64","isize","u8","u16","u32","u64","usize","bool","f32","f64","v128","i8x16","u8x16","i16x8","u16x8","i32x4","u32x4","i64x2","u64x2","f32x4","f64x2","void_","boolean","native","indexof","valueof","returnof","ASC_TARGET","ASC_NO_TREESHAKING","ASC_NO_ASSERT","ASC_MEMORY_BASE","ASC_OPTIMIZE_LEVEL","ASC_SHRINK_LEVEL","ASC_FEATURE_MUTABLE_GLOBAL","ASC_FEATURE_SIGN_EXTENSION","ASC_FEATURE_BULK_MEMORY","ASC_FEATURE_SIMD","ASC_FEATURE_THREADS","I8","I16","I32","I64","Isize","U8","U16","U32","U64","Usize","Bool","F32","F64","V128","FixedArray","Set","ArrayBufferView","ArrayBuffer","Mathf","Int8Array","Int16Array","Int32Array","Int64Array","Uint8ClampedArray","Uint16Array","Uint32Array","Uint64Array","Float32Array","Float64Array","abort","pow","mod","alloc","realloc","free","retain","release","collect","typeinfo","instanceof_","visit","allocArray","Feature","Target","Typeinfo","TypeinfoFlags","isPowerOf2","ASYNC","AWAIT","CASE","CATCH","DEBUGGER","DELETE","ELSE","ENUM","EXTENDS","FINALLY","FROM","IMPLEMENTS","IN","INTERFACE","IS","KEYOF","MODULE","NAMESPACE","OF","PACKAGE","TYPE","TYPEOF","VAR","WITH","YIELD","INVALID","OPENBRACE","CLOSEBRACE","OPENPAREN","CLOSEPAREN","OPENBRACKET","CLOSEBRACKET","DOT","DOT_DOT_DOT","SEMICOLON","LESSTHAN","GREATERTHAN","LESSTHAN_EQUALS","GREATERTHAN_EQUALS","EQUALS_EQUALS","EXCLAMATION_EQUALS","EQUALS_EQUALS_EQUALS","EXCLAMATION_EQUALS_EQUALS","EQUALS_GREATERTHAN","PLUS","MINUS","ASTERISK_ASTERISK","ASTERISK","SLASH","PERCENT","PLUS_PLUS","MINUS_MINUS","LESSTHAN_LESSTHAN","GREATERTHAN_GREATERTHAN","GREATERTHAN_GREATERTHAN_GREATERTHAN","AMPERSAND","BAR","CARET","EXCLAMATION","TILDE","AMPERSAND_AMPERSAND","BAR_BAR","QUESTION","COLON","EQUALS","PLUS_EQUALS","MINUS_EQUALS","ASTERISK_EQUALS","ASTERISK_ASTERISK_EQUALS","SLASH_EQUALS","PERCENT_EQUALS","LESSTHAN_LESSTHAN_EQUALS","GREATERTHAN_GREATERTHAN_EQUALS","GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS","AMPERSAND_EQUALS","BAR_EQUALS","CARET_EQUALS","AT","STRINGLITERAL","INTEGERLITERAL","FLOATLITERAL","ENDOFFILE","PREFER","ALWAYS","IdentifierHandling","tokenFromKeyword","tokenIsAlsoIdentifier","isIllegalVariableIdentifier","operatorTokenToString","debugInfoRef","pos","token","tokenPos","nextToken","nextTokenPos","nextTokenOnNewLine","onComment","unsafeNext","MAX_VALUE","isDecimalDigit","DiagnosticCode","_0_expected","testInteger","isIdentifierStart","isKeywordCharacter","isIdentifierPart","isWhiteSpace","Invalid_character","peek","isLineBreak","skipIdentifier","skip","mark","discard","readIdentifier","readString","Unterminated_string_literal","readEscapeSequence","Unexpected_end_of_text","readExtendedUnicodeEscape","readUnicodeEscape","readRegexpPattern","Unterminated_regular_expression_literal","readRegexpFlags","Invalid_regular_expression_flags","readInteger","readHexInteger","readBinaryInteger","readOctalInteger","isOctalDigit","Octal_literals_are_not_allowed_in_strict_mode","readDecimalInteger","i64_new","i64_add","i64_shl","Numeric_separators_are_not_allowed_here","Multiple_consecutive_numeric_separators_are_not_permitted","Hexadecimal_digit_expected","i64_mul","Digit_expected","Octal_digit_expected","Binary_digit_expected","readFloat","readDecimalFloat","readHexFloat","i64_low","i64_high","An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive","Unterminated_Unicode_escape_sequence","finish","DiagnosticEmitter","Tokenizer","State","Operation_not_supported","Operation_is_unsafe","User_defined_0","Conversion_from_type_0_to_1_requires_an_explicit_cast","Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit","Type_0_cannot_be_changed_to_type_1","Type_0_cannot_be_reinterpreted_as_type_1","Basic_type_0_cannot_be_nullable","Cannot_export_a_mutable_global","Mutable_value_cannot_be_inlined","Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa","Unmanaged_classes_cannot_implement_interfaces","Implementation_0_must_match_the_signature_1","Class_0_is_sealed_and_cannot_be_extended","Decorator_0_is_not_valid_here","Duplicate_decorator","An_allocator_must_be_present_to_use_0","Optional_parameter_must_have_an_initializer","Constructor_of_class_0_must_not_require_any_arguments","Function_0_cannot_be_inlined_into_itself","Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set","Optional_properties_are_not_supported","Expression_must_be_a_compile_time_constant","Module_cannot_have_multiple_start_functions","_0_must_be_a_value_between_1_and_2_inclusive","_0_must_be_a_power_of_two","Expression_is_unsafe","Expression_is_never_null","Identifier_expected","A_file_cannot_have_a_reference_to_itself","Trailing_comma_not_allowed","Unexpected_token","A_rest_parameter_must_be_last_in_a_parameter_list","Parameter_cannot_have_question_mark_and_initializer","A_required_parameter_cannot_follow_an_optional_parameter","Statements_are_not_allowed_in_ambient_contexts","Initializers_are_not_allowed_in_ambient_contexts","_0_modifier_cannot_be_used_here","A_rest_parameter_cannot_be_optional","A_rest_parameter_cannot_have_an_initializer","A_set_accessor_must_have_exactly_one_parameter","A_set_accessor_parameter_cannot_have_an_initializer","A_get_accessor_cannot_have_parameters","Enum_member_must_have_initializer","Type_parameters_cannot_appear_on_a_constructor_declaration","Type_annotation_cannot_appear_on_a_constructor_declaration","An_accessor_cannot_have_type_parameters","A_set_accessor_cannot_have_a_return_type_annotation","Type_parameter_list_cannot_be_empty","A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement","A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement","A_return_statement_can_only_be_used_within_a_function_body","Expression_expected","Type_expected","A_default_clause_cannot_appear_more_than_once_in_a_switch_statement","Duplicate_label_0","An_export_assignment_cannot_have_modifiers","_case_or_default_expected","_super_must_be_followed_by_an_argument_list_or_member_access","A_declare_modifier_cannot_be_used_in_an_already_ambient_context","Type_argument_expected","String_literal_expected","Line_break_not_permitted_here","Declaration_expected","_const_declarations_must_be_initialized","Interface_declaration_cannot_have_implements_clause","An_implementation_cannot_be_declared_in_ambient_contexts","Decorators_are_not_valid_here","_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration","Method_0_cannot_have_an_implementation_because_it_is_marked_abstract","A_definite_assignment_assertion_is_not_permitted_in_this_context","A_class_may_only_extend_another_class","A_parameter_property_cannot_be_declared_using_a_rest_parameter","Duplicate_identifier_0","Cannot_find_name_0","Module_0_has_no_exported_member_1","Generic_type_0_requires_1_type_argument_s","Type_0_is_not_generic","Type_0_is_not_assignable_to_type_1","Index_signature_is_missing_in_type_0","_this_cannot_be_referenced_in_current_location","_super_can_only_be_referenced_in_a_derived_class","Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors","Property_0_does_not_exist_on_type_1","Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures","Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature","A_function_whose_declared_type_is_not_void_must_return_a_value","The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access","The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access","Operator_0_cannot_be_applied_to_types_1_and_2","A_super_call_must_be_the_first_statement_in_the_constructor","Constructors_for_derived_classes_must_contain_a_super_call","_get_and_set_accessor_must_have_the_same_type","Constructor_implementation_is_missing","Function_implementation_is_missing_or_not_immediately_following_the_declaration","Multiple_constructor_implementations_are_not_allowed","Duplicate_function_implementation","Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local","A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged","Type_0_has_no_property_1","The_0_operator_cannot_be_applied_to_type_1","In_const_enum_declarations_member_initializer_must_be_constant_expression","Export_declaration_conflicts_with_exported_declaration_of_0","Object_is_possibly_null","Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property","The_target_of_an_assignment_must_be_a_variable_or_a_property_access","Index_signature_in_type_0_only_permits_reading","Expected_0_arguments_but_got_1","Expected_at_least_0_arguments_but_got_1","Expected_0_type_arguments_but_got_1","A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums","Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration","Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration","Namespace_0_has_no_exported_member_1","Required_type_parameters_may_not_follow_optional_type_parameters","Duplicate_property_0","Type_0_has_no_call_signatures","File_0_not_found","_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class","_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class","diagnosticCodeToString","includes","ASTBuilder","build","typeMapping","nonNullableTypes","exportedClasses","wrappedFuncs","nearFiles","visitClassDeclaration","visitFunctionDeclaration","generateWrapperFunction","add","typeName","isGeneric","getFields","preamble","some","BaseVisitor","afterParse","donelog","delete","seenlog","SIGN_EXTENSION","MUTABLE_GLOBAL","BULK_MEMORY","SIMD","THREADS","WASM32","WASM64","JS","__decorate","getOwnPropertyDescriptor","Reflect","decorate","ARRAYBUFFERVIEW","MAP","ACYCLIC","VALUE_ALIGN_0","VALUE_ALIGN_1","VALUE_ALIGN_2","VALUE_ALIGN_3","VALUE_ALIGN_4","VALUE_SIGNED","VALUE_FLOAT","VALUE_NULLABLE","VALUE_MANAGED","KEY_ALIGN_0","KEY_ALIGN_1","KEY_ALIGN_2","KEY_ALIGN_3","KEY_ALIGN_4","KEY_SIGNED","KEY_FLOAT","KEY_NULLABLE","KEY_MANAGED","INFO","WARNING","ERROR","COLOR_BLUE","COLOR_YELLOW","COLOR_RED","DiagnosticCategory","diagnosticCategoryToString","COLOR_RESET","diagnosticCategoryToColor","relatedRange","category","message","createInfo","createWarning","createError","withRange","withRelatedRange","column","DiagnosticMessage","formatDiagnosticMessage","formatDiagnosticContext","emitDiagnostic","info","infoRelated","warning","warningRelated","errorRelated","bitsetIs","i64_ne","i64_and","i64_one","i64_zero","bitsetSet","i64_or","i64_not","LINEFEED","CARRIAGERETURN","LINESEPARATOR","PARAGRAPHSEPARATOR","NEXTLINE","SPACE","NONBREAKINGSPACE","ENQUAD","EMQUAD","ENSPACE","EMSPACE","THREEPEREMSPACE","FOURPEREMSPACE","SIXPEREMSPACE","FIGURESPACE","PUNCTUATIONSPACE","THINSPACE","HAIRSPACE","ZEROWIDTHSPACE","NARROWNOBREAKSPACE","IDEOGRAPHICSPACE","MATHEMATICALSPACE","OGHAM","_0","_1","_2","_3","_4","_5","_6","_7","_8","_9","BACKSLASH","BACKTICK","DOLLAR","DOUBLEQUOTE","HASH","SINGLEQUOTE","BACKSPACE","FORMFEED","BYTEORDERMARK","TAB","VERTICALTAB","CharCode","__values","done","__read","return","makeArray","unchecked","makeSet","makeMap","readI8","writeI8","readI16","writeI16","readI32","writeI32","readI64","writeI64","readF32","i32_as_f32","writeF32","f32_as_i32","readF64","i64_as_f64","writeF64","f64_as_i64","indentLevel","visitNode","visitSource","visitNamedTypeNode","visitFunctionTypeNode","visitTypeParameter","visitIdentifierExpression","visitAssertionExpression","visitBinaryExpression","visitCallExpression","visitClassExpression","visitCommaExpression","visitElementAccessExpression","visitFunctionExpression","visitInstanceOfExpression","visitLiteralExpression","visitNewExpression","visitParenthesizedExpression","visitPropertyAccessExpression","visitTernaryExpression","visitUnaryPostfixExpression","visitUnaryPrefixExpression","visitBlockStatement","visitBreakStatement","visitContinueStatement","visitDoStatement","visitEmptyStatement","visitExportStatement","visitExportDefaultStatement","visitExportImportStatement","visitExpressionStatement","visitForStatement","visitIfStatement","visitImportStatement","visitReturnStatement","visitSwitchStatement","visitThrowStatement","visitTryStatement","visitVariableStatement","visitWhileStatement","visitEnumDeclaration","visitEnumValueDeclaration","visitFieldDeclaration","visitImportDeclaration","visitIndexSignatureDeclaration","visitInterfaceDeclaration","visitMethodDeclaration","visitNamespaceDeclaration","visitTypeDeclaration","visitVariableDeclaration","serializeDecorator","visitExportMember","serializeParameter","visitSwitchCase","visitNodeAndTerminate","visitTypeNode","visitTypeName","visitStringLiteral","visitArrayLiteralExpression","visitObjectLiteralExpression","visitFunctionCommon","visitFloatLiteralExpression","visitIntegerLiteralExpression","visitStringLiteralExpression","visitRegexpLiteralExpression","i64_to_string","visitUnaryExpression","serializeExternalModifiers","serializeAccessModifiers","captureStackTrace","defineProperties","MIN_VALUE","writable","fround","EPSILON","MIN_NORMAL_VALUE","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clz","clz32","ctz","popcnt","rotl","rotr","abs","ceil","floor","nearest","trunc","round","select","sqrt","copysign","sign","bswap","bswap16","unreachable","changetype","fromCharCodes","fromCodePoints","fromCodePoint","replaceAll","isInteger","Number","isFloat","isReference","isFunction","isString","isArrayLike","isDefined","isConstant","fmod","fmodf","JSMath","sincos_sin","sincos_cos","signbit","Boolean","sincos","sin","cos","allocate","__memory_allocate","fill","__memory_fill","__memory_free","copy","__memory_copy","copyWithin","__memory_reset","store","__store","HEAP","load","__load","unmanaged","Long","ZERO","ONE","fromBits","low","high","i64_sub","sub","mul","i64_div","div","i64_div_u","toUnsigned","toSigned","i64_rem","i64_rem_u","and","or","i64_xor","xor","shl","i64_shr","shr","i64_shr_u","shru","not","i64_eq","eq","i64_align","fromInt","i64_is_i8","i64_is_i16","i64_is_i32","i64_is_u8","i64_is_u16","i64_is_u32","i64_is_bool","fromNumber","i64_is_f32","gte","lte","i64_is_f64","i64_to_f32","toNumber","i64_to_f64","WebAssembly","Instance","Module","unsigned","__isLong__","isLong","isNaN","neg","RangeError","fromString","fromValue","UZERO","UONE","NEG_ONE","MAX_UNSIGNED_VALUE","toInt","isZero","isNegative","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","eqz","isPositive","isOdd","isEven","equals","notEquals","neq","lessThan","comp","lt","lessThanOrEqual","greaterThan","gt","greaterThanOrEqual","compare","negate","subtract","multiply","get_high","divide","div_u","div_s","log","LN2","modulo","rem_u","rem_s","rem","shiftLeft","shiftRight","shiftRightUnsigned","shr_u","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","depth","_visit","visitDecoratorNode","visitParameter","visitSuperExpression","visitFalseExpression","visitTrueExpression","visitThisExpression","visitNullExperssion","visitConstructorExpression","visitVoidStatement","visitComment","AbstractVisitor","writeString","writeNode","DefaultWriter","writer","entries","webpackEmptyContext","req","id","previousTimestamp","clocktime","performanceNow","performance","seconds","nanoseconds","now","mozNow","msNow","oNow","webkitNow","Date","getTime"],"mappings":"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","file":"asc.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"assemblyscript\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"asc\"] = factory((function webpackLoadOptionalExternalModule() { try { return require(\"assemblyscript\"); } catch(e) {} }()));\n\telse\n\t\troot[\"asc\"] = factory(root[\"assemblyscript\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE__11__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Compiler frontend for node.js\n *\n * Uses the low-level API exported from src/index.ts so it works with the compiler compiled to\n * JavaScript as well as the compiler compiled to WebAssembly (eventually). Runs the sources\n * directly through ts-node if distribution files are not present (indicated by a `-dev` version).\n *\n * Can also be packaged as a bundle suitable for in-browser use with the standard library injected\n * in the build step. See dist/asc.js for the bundle and webpack.config.js for building details.\n *\n * @module cli/asc\n */\n\n// Use \".\" instead of \"/\" as cwd in browsers\nif (process.browser) process.cwd = function() { return \".\"; };\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst utf8 = require(\"@protobufjs/utf8\");\nconst colorsUtil = require(\"./util/colors\");\nconst optionsUtil = require(\"./util/options\");\nconst mkdirp = require(\"./util/mkdirp\");\nconst EOL = process.platform === \"win32\" ? \"\\r\\n\" : \"\\n\";\nconst SEP = process.platform === \"win32\" ? \"\\\\\" : \"/\";\nconst nearBindings = require(\"../bindings/dist/transformerBundle.js\");\nconst nearLibEntry = path.join(__dirname, \"..\", \"bindings\", \"assembly\", \"nearEntry.ts\");\n// global.Binaryen = require(\"../lib/binaryen\");\n\n// Emscripten adds an `uncaughtException` listener to Binaryen that results in an additional\n// useless code fragment on top of an actual error. suppress this:\nif (process.removeAllListeners) process.removeAllListeners(\"uncaughtException\");\n\n// Use distribution files if present, otherwise run the sources directly\nvar assemblyscript, isDev = false;\n(() => {\n try { // `asc` on the command line\n assemblyscript = require(\"../dist/assemblyscript.js\");\n } catch (e) {\n try { // `asc` on the command line without dist files\n require(\"ts-node\").register({ project: path.join(__dirname, \"..\", \"src\", \"tsconfig.json\") });\n require(\"../src/glue/js\");\n assemblyscript = require(\"../src\");\n isDev = true;\n } catch (e_ts) {\n try { // `require(\"dist/asc.js\")` in explicit browser tests\n assemblyscript = eval(\"require('./assemblyscript')\");\n } catch (e) {\n // combine both errors that lead us here\n e.stack = e_ts.stack + \"\\n---\\n\" + e.stack;\n throw e;\n }\n }\n }\n})();\n\n/** Whether this is a webpack bundle or not. */\nexports.isBundle = typeof BUNDLE_VERSION === \"string\";\n\n/** Whether asc runs the sources directly or not. */\nexports.isDev = isDev;\n\n/** AssemblyScript version. */\nexports.version = exports.isBundle ? BUNDLE_VERSION : require(\"../package.json\").version;\n\n/** Available CLI options. */\nexports.options = require(\"./asc.json\");\n\n/** Common root used in source maps. */\nexports.sourceMapRoot = \"assemblyscript:///\";\n\n/** Prefix used for library files. */\nexports.libraryPrefix = assemblyscript.LIBRARY_PREFIX;\n\n/** Default Binaryen optimization level. */\nexports.defaultOptimizeLevel = 3;\n\n/** Default Binaryen shrink level. */\nexports.defaultShrinkLevel = 1;\n\n/** Bundled library files. */\nexports.libraryFiles = exports.isBundle ? BUNDLE_LIBRARY : (() => { // set up if not a bundle\n const libDir = path.join(__dirname, \"..\", \"std\", \"assembly\");\n const libFiles = require(\"glob\").sync(\"**/!(*.d).ts\", { cwd: libDir })\n const bundled = {\n \"nearEntry\": fs.readFileSync(nearLibEntry, \"utf8\")\n };\n libFiles.forEach(file => bundled[file.replace(/\\.ts$/, \"\")] = fs.readFileSync(path.join(libDir, file), \"utf8\" ));\n return bundled;\n})();\n\n/** Bundled definition files. */\nexports.definitionFiles = exports.isBundle ? BUNDLE_DEFINITIONS : (() => { // set up if not a bundle\n const stdDir = path.join(__dirname, \"..\", \"std\");\n return {\n \"assembly\": fs.readFileSync(path.join(stdDir, \"assembly\", \"index.d.ts\"), \"utf8\"),\n \"portable\": fs.readFileSync(path.join(stdDir, \"portable\", \"index.d.ts\"), \"utf8\")\n };\n})();\n\n/** Convenience function that parses and compiles source strings directly. */\nexports.compileString = (sources, options) => {\n if (typeof sources === \"string\") sources = { \"input.ts\": sources };\n const output = Object.create({\n stdout: createMemoryStream(),\n stderr: createMemoryStream()\n });\n var argv = [\n \"--binaryFile\", \"binary\",\n \"--textFile\", \"text\",\n ];\n Object.keys(options || {}).forEach(key => {\n var val = options[key];\n if (Array.isArray(val)) val.forEach(val => argv.push(\"--\" + key, String(val)));\n else argv.push(\"--\" + key, String(val));\n });\n exports.main(argv.concat(Object.keys(sources)), {\n stdout: output.stdout,\n stderr: output.stderr,\n readFile: name => sources.hasOwnProperty(name) ? sources[name] : null,\n writeFile: (name, contents) => output[name] = contents,\n listFiles: () => []\n });\n return output;\n}\n\n/** Runs the command line utility using the specified arguments array. */\nexports.main = function main(argv, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n } else if (!options) {\n options = {};\n }\n\n const stdout = options.stdout || process.stdout;\n const stderr = options.stderr || process.stderr;\n const readFile = options.readFile || readFileNode;\n const writeFile = options.writeFile || writeFileNode;\n const listFiles = options.listFiles || listFilesNode;\n const stats = options.stats || createStats();\n\n // Output must be specified if not present in the environment\n if (!stdout) throw Error(\"'options.stdout' must be specified\");\n if (!stderr) throw Error(\"'options.stderr' must be specified\");\n\n const opts = optionsUtil.parse(argv, exports.options);\n const args = opts.options;\n argv = opts.arguments;\n if (args.noColors) {\n colorsUtil.stdout.supported =\n colorsUtil.stderr.supported = false;\n } else {\n colorsUtil.stdout = colorsUtil.from(stdout);\n colorsUtil.stderr = colorsUtil.from(stderr);\n }\n\n // Check for unknown arguments\n if (opts.unknown.length) {\n opts.unknown.forEach(arg => {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unknown option '\" + arg + \"'\" + EOL);\n });\n }\n\n // Check for trailing arguments\n if (opts.trailing.length) {\n stderr.write(colorsUtil.stderr.yellow(\"WARN: \") + \"Unsupported trailing arguments: \" + opts.trailing.join(\" \") + EOL);\n }\n\n // Use default callback if none is provided\n if (!callback) callback = function defaultCallback(err) {\n var code = 0;\n if (err) {\n stderr.write(colorsUtil.stderr.red(\"ERROR: \") + err.stack.replace(/^ERROR: /i, \"\") + EOL);\n code = 1;\n }\n return code;\n };\n\n // Just print the version if requested\n if (args.version) {\n stdout.write(\"Version \" + exports.version + (isDev ? \"-dev\" : \"\") + EOL);\n return callback(null);\n }\n // Print the help message if requested or no source files are provided\n if (args.help || !argv.length) {\n var out = args.help ? stdout : stderr;\n var color = args.help ? colorsUtil.stdout : colorsUtil.stderr;\n out.write([\n color.white(\"SYNTAX\"),\n \" \" + color.cyan(\"asc\") + \" [entryFile ...] [options]\",\n \"\",\n color.white(\"EXAMPLES\"),\n \" \" + color.cyan(\"asc\") + \" hello.ts\",\n \" \" + color.cyan(\"asc\") + \" hello.ts -b hello.wasm -t hello.wat\",\n \" \" + color.cyan(\"asc\") + \" hello1.ts hello2.ts -b -O > hello.wasm\",\n \"\",\n color.white(\"OPTIONS\"),\n ].concat(\n optionsUtil.help(exports.options, 24, EOL)\n ).join(EOL) + EOL);\n return callback(null);\n }\n\n // I/O must be specified if not present in the environment\n if (!fs.readFileSync) {\n if (readFile === readFileNode) throw Error(\"'options.readFile' must be specified\");\n if (writeFile === writeFileNode) throw Error(\"'options.writeFile' must be specified\");\n if (listFiles === listFilesNode) throw Error(\"'options.listFiles' must be specified\");\n }\n\n // Set up base directory\n const baseDir = args.baseDir ? path.resolve(args.baseDir) : \".\";\n\n // Set up transforms\n const transforms = args.notNear ? [] : [nearBindings];\n //Add near's bindings by default\n if (args.transform) {\n args.transform.forEach(transform =>\n transforms.push(\n require(\n path.isAbsolute(transform = transform.trim())\n ? transform\n : path.join(process.cwd(), transform)\n )\n )\n );\n }\n function applyTransform(name, ...args) {\n transforms.forEach(transform => {\n if (typeof transform[name] === \"function\") transform[name](...args);\n });\n }\n\n // Begin parsing\n var parser = null;\n\n // Maps package names to parent directory\n var packages = new Map();\n var importPathMap = new Map();\n\n // Include library files\n Object.keys(exports.libraryFiles).forEach(libPath => {\n if (libPath.indexOf(\"/\") >= 0) return; // in sub-directory: imported on demand\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n exports.libraryFiles[libPath],\n exports.libraryPrefix + libPath + \".ts\",\n false,\n parser\n );\n });\n });\n const customLibDirs = [];\n if (args.lib) {\n let lib = args.lib;\n if (typeof lib === \"string\") lib = lib.split(\",\");\n Array.prototype.push.apply(customLibDirs, lib.map(lib => lib.trim()));\n for (let i = 0, k = customLibDirs.length; i < k; ++i) { // custom\n let libDir = customLibDirs[i];\n let libFiles;\n if (libDir.endsWith(\".ts\")) {\n libFiles = [ path.basename(libDir) ];\n libDir = path.dirname(libDir);\n } else {\n libFiles = listFiles(libDir, baseDir) || [];\n }\n for (let j = 0, l = libFiles.length; j < l; ++j) {\n let libPath = libFiles[j];\n let libText = readFile(libPath, libDir);\n if (libText === null) return callback(Error(\"Library file '\" + libPath + \"' not found.\"));\n stats.parseCount++;\n exports.libraryFiles[libPath.replace(/\\.ts$/, \"\")] = libText;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(\n libText,\n exports.libraryPrefix + libPath,\n false,\n parser\n );\n });\n }\n }\n }\n args.path = args.path || [];\n // Find all valid node_module paths starting at baseDir\n function nodePaths(basePath, _path) {\n return basePath.split(SEP)\n .map((_, i, arr) => {\n let dir = arr.slice(0, i + 1).join(SEP) || SEP;\n let dirFrom = path.relative(baseDir, dir);\n return path.join(dirFrom, _path);\n })\n .filter(dir => listFiles(dir, baseDir))\n .reverse();\n }\n function getPaths(basePath) {\n let paths = args.path.map(p => nodePaths(basePath, p));\n return nodePaths(basePath, \"node_modules\").concat(...paths)\n }\n\n // Parses the backlog of imported files after including entry files\n function parseBacklog() {\n var sourcePath, sourceText, sysPath;\n // dependee is the path of the file that depends on sourcePath\n while ((sourcePath = parser.nextFile()) != null) {\n dependee = importPathMap.get(assemblyscript.getDependee(parser, sourcePath)) || baseDir;\n sourceText = null;\n sysPath = null;\n \n // Load library file if explicitly requested\n if (sourcePath.startsWith(exports.libraryPrefix)) {\n const plainName = sourcePath.substring(exports.libraryPrefix.length);\n const indexName = sourcePath.substring(exports.libraryPrefix.length) + \"/index\";\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n sourceText = readFile(plainName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(customLibDirs[i], plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", customLibDirs[i]);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(customLibDirs[i], indexName + \".ts\");\n break;\n }\n }\n }\n }\n\n // Otherwise try nextFile.ts, nextFile/index.ts, ~lib/nextFile.ts, ~lib/nextFile/index.ts\n } else {\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(plainName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n sysPath = path.join(baseDir, sourcePath);\n } else {\n sourceText = readFile(indexName + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n } else if (!plainName.startsWith(\".\")) {\n if (exports.libraryFiles.hasOwnProperty(plainName)) {\n sourceText = exports.libraryFiles[plainName];\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n } else if (exports.libraryFiles.hasOwnProperty(indexName)) {\n sourceText = exports.libraryFiles[indexName];\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n const dir = customLibDirs[i];\n sourceText = readFile(plainName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + plainName + \".ts\";\n sysPath = path.join(dir, plainName + \".ts\");\n break;\n } else {\n sourceText = readFile(indexName + \".ts\", dir);\n if (sourceText !== null) {\n sourcePath = exports.libraryPrefix + indexName + \".ts\";\n sysPath = path.join(dir, indexName + \".ts\");\n break;\n }\n }\n }\n }\n }\n }\n }\n /*\n In this case the library wasn't found so we check paths\n */\n if (sourceText == null) {\n if (args.traceResolution) {\n stderr.write(\"Looking for '\" + sourcePath + \"' imported by '\" + dependee + \"'\" + EOL);\n }\n paths = getPaths(path.join(baseDir, dependee));\n let _package = sourcePath.replace(/\\~lib\\/([^\\/]*).*/, \"$1\");\n for (let _path of paths) {\n let ascMain = (() => {\n if (packages.has(_package)) {\n return packages.get(_package);\n }\n let p = path.join(_path, _package, \"package.json\");\n let res = readFile(p, baseDir);\n if (res) {\n let package_json;\n try {\n package_json = JSON.parse(res);\n } catch (e) {\n return callback(Error(\"Parsing \" + p + \" failed\"));\n }\n let mainFile = package_json.ascMain;\n if (mainFile && (typeof mainFile === 'string')) {\n let newPackage = mainFile.replace(/(.*)\\/index\\.ts/, '$1');\n packages.set(_package, newPackage);\n return newPackage;\n }\n }\n return \"assembly\";\n })()\n let realPath = (_p) => {\n if (_p.startsWith(exports.libraryPrefix)){\n _p = _p.substring(exports.libraryPrefix.length);\n }\n let first = _p.substring(0, _p.indexOf(\"/\"));\n let second = _p.substring(_p.indexOf(\"/\") + 1);\n return path.join(_path, first, ascMain, second);\n }\n if (args.traceResolution) {\n stderr.write(\" in '\" + realPath(sourcePath) + \"'\");\n }\n const plainName = sourcePath;\n const indexName = sourcePath + \"/index\";\n sourceText = readFile(realPath(plainName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = plainName + \".ts\";\n } else {\n sourceText = readFile(realPath(indexName) + \".ts\", baseDir);\n if (sourceText !== null) {\n sourcePath = indexName + \".ts\";\n }\n }\n if (sourceText !== null) {\n if (args.traceResolution) {\n stderr.write(EOL + \" -> '\" + realPath(sourcePath) + \"'\" + EOL);\n }\n let newPath = path.join(_path, _package);\n sysPath = newPath;\n break;\n }\n if (args.traceResolution) {\n stderr.write(EOL);\n }\n }\n }\n if (sourceText == null) {\n return callback(Error(\"Import file '\" + sourcePath + \".ts' not found.\"));\n }\n importPathMap.set(sourcePath.replace(/\\.ts$/, \"\"), sysPath);\n stats.parseCount++;\n stats.parseTime += measure(() => {\n assemblyscript.parseFile(sourceText, sourcePath, false, parser);\n });\n }\n if (checkDiagnostics(parser, stderr)) {\n return callback(Error(\"Parse error\"));\n }\n }\n\n // Include runtime template before entry files so its setup runs first\n {\n let runtimeName = String(args.runtime);\n let runtimePath = \"rt/index-\" + runtimeName;\n let runtimeText = exports.libraryFiles[runtimePath];\n if (runtimeText == null) {\n runtimePath = runtimeName;\n runtimeText = readFile(runtimePath + \".ts\", baseDir);\n if (runtimeText == null) {\n return callback(Error(\"Runtime '\" + runtimeName + \"' not found.\"));\n }\n } else {\n runtimePath = \"~lib/\" + runtimePath;\n }\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(runtimeText, runtimePath, true, parser);\n });\n }\n\n // Include entry files\n for (let i = 0, k = argv.length; i < k; ++i) {\n const filename = argv[i];\n\n let sourcePath = String(filename).replace(/\\\\/g, \"/\").replace(/(\\.ts|\\/)$/, \"\");\n // Setting the path to relative path\n sourcePath = path.isAbsolute(sourcePath) ? path.relative(baseDir, sourcePath) : sourcePath;\n\n // Try entryPath.ts, then entryPath/index.ts\n let sourceText = readFile(sourcePath + \".ts\", baseDir);\n if (sourceText === null) {\n sourceText = readFile(sourcePath + \"/index.ts\", baseDir);\n if (sourceText === null) {\n return callback(Error(\"Entry file '\" + sourcePath + \".ts' not found.\"));\n } else {\n sourcePath += \"/index.ts\";\n }\n } else {\n sourcePath += \".ts\";\n }\n\n stats.parseCount++;\n stats.parseTime += measure(() => {\n parser = assemblyscript.parseFile(sourceText, sourcePath, true, parser);\n });\n }\n\n // Parse entry files\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Call afterParse transform hook\n applyTransform(\"afterParse\", parser, writeFile, baseDir);\n\n // Parse additional files, if any\n {\n let code = parseBacklog();\n if (code) return code;\n }\n\n // Finish parsing\n const program = assemblyscript.finishParsing(parser);\n\n // Print files and exit if listFiles\n if (args.listFiles) {\n stderr.write(program.sources.map(s => s.normalizedPath).sort().join(EOL) + EOL);\n return callback(null);\n }\n\n // Set up optimization levels\n var optimizeLevel = 0;\n var shrinkLevel = 0;\n if (args.optimize) {\n optimizeLevel = exports.defaultOptimizeLevel;\n shrinkLevel = exports.defaultShrinkLevel;\n }\n if (typeof args.optimizeLevel === \"number\") {\n optimizeLevel = args.optimizeLevel;\n }\n if (typeof args.shrinkLevel === \"number\") {\n shrinkLevel = args.shrinkLevel;\n }\n optimizeLevel = Math.min(Math.max(optimizeLevel, 0), 3);\n shrinkLevel = Math.min(Math.max(shrinkLevel, 0), 2);\n\n // Begin compilation\n const compilerOptions = assemblyscript.createOptions();\n assemblyscript.setTarget(compilerOptions, 0);\n assemblyscript.setNoAssert(compilerOptions, args.noAssert);\n assemblyscript.setImportMemory(compilerOptions, args.importMemory);\n assemblyscript.setSharedMemory(compilerOptions, args.sharedMemory);\n assemblyscript.setImportTable(compilerOptions, args.importTable);\n assemblyscript.setExplicitStart(compilerOptions, args.explicitStart);\n assemblyscript.setMemoryBase(compilerOptions, args.memoryBase >>> 0);\n assemblyscript.setSourceMap(compilerOptions, args.sourceMap != null);\n assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel);\n assemblyscript.setNoUnsafe(compilerOptions, args.noUnsafe);\n\n // Initialize default aliases\n assemblyscript.setGlobalAlias(compilerOptions, \"Math\", \"NativeMath\");\n assemblyscript.setGlobalAlias(compilerOptions, \"Mathf\", \"NativeMathf\");\n assemblyscript.setGlobalAlias(compilerOptions, \"abort\", \"~lib/builtins/abort\");\n assemblyscript.setGlobalAlias(compilerOptions, \"trace\", \"~lib/builtins/trace\");\n\n // Add or override aliases if specified\n if (args.use) {\n let aliases = args.use;\n for (let i = 0, k = aliases.length; i < k; ++i) {\n let part = aliases[i];\n let p = part.indexOf(\"=\");\n if (p < 0) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n let alias = part.substring(0, p).trim();\n let name = part.substring(p + 1).trim();\n if (!alias.length) return callback(Error(\"Global alias '\" + part + \"' is invalid.\"));\n assemblyscript.setGlobalAlias(compilerOptions, alias, name);\n }\n }\n\n // Enable additional features if specified\n var features = args.enable;\n if (features != null) {\n if (typeof features === \"string\") features = features.split(\",\");\n for (let i = 0, k = features.length; i < k; ++i) {\n let name = features[i].trim();\n let flag = assemblyscript[\"FEATURE_\" + name.replace(/\\-/g, \"_\").toUpperCase()];\n if (!flag) return callback(Error(\"Feature '\" + name + \"' is unknown.\"));\n assemblyscript.enableFeature(compilerOptions, flag);\n }\n }\n\n var module;\n stats.compileCount++;\n try {\n stats.compileTime += measure(() => {\n module = assemblyscript.compileProgram(program, compilerOptions);\n });\n } catch (e) {\n return callback(e);\n }\n if (checkDiagnostics(parser, stderr)) {\n if (module) module.dispose();\n return callback(Error(\"Compile error\"));\n }\n\n // Validate the module if requested\n if (args.validate) {\n stats.validateCount++;\n stats.validateTime += measure(() => {\n if (!module.validate()) {\n module.dispose();\n return callback(Error(\"Validate error\"));\n }\n });\n }\n\n // Set Binaryen-specific options\n if (args.trapMode === \"clamp\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-clamp\" ]);\n });\n } else if (args.trapMode === \"js\") {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses([ \"trap-mode-js\" ]);\n });\n } else if (args.trapMode !== \"allow\") {\n module.dispose();\n return callback(Error(\"Unsupported trap mode\"));\n }\n\n // Implicitly run costly non-LLVM optimizations on -O3 or -Oz\n // see: https://github.com/WebAssembly/binaryen/pull/1596\n if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4;\n\n module.setOptimizeLevel(optimizeLevel);\n module.setShrinkLevel(shrinkLevel);\n module.setDebugInfo(args.debug);\n\n var runPasses = [];\n if (args.runPasses) {\n if (typeof args.runPasses === \"string\") {\n args.runPasses = args.runPasses.split(\",\");\n }\n if (args.runPasses.length) {\n args.runPasses.forEach(pass => {\n if (runPasses.indexOf(pass) < 0)\n runPasses.push(pass);\n });\n }\n }\n\n // Optimize the module if requested\n if (optimizeLevel > 0 || shrinkLevel > 0) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.optimize();\n });\n }\n\n // Run additional passes if requested\n if (runPasses.length) {\n stats.optimizeCount++;\n stats.optimizeTime += measure(() => {\n module.runPasses(runPasses.map(pass => pass.trim()));\n });\n }\n\n // Prepare output\n if (!args.noEmit) {\n let hasStdout = false;\n let hasOutput = false;\n\n if (args.outFile != null) {\n if (/\\.was?t$/.test(args.outFile) && args.textFile == null) {\n args.textFile = args.outFile;\n } else if (/\\.js$/.test(args.outFile) && args.asmjsFile == null) {\n args.asmjsFile = args.outFile;\n } else if (args.binaryFile == null) {\n args.binaryFile = args.outFile;\n }\n }\n\n // Write binary\n if (args.binaryFile != null) {\n let sourceMapURL = args.sourceMap != null\n ? args.sourceMap.length\n ? args.sourceMap\n : path.basename(args.binaryFile) + \".map\"\n : null;\n\n let wasm;\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wasm = module.toBinary(sourceMapURL)\n });\n\n if (args.binaryFile.length) {\n writeFile(args.binaryFile, wasm.output, baseDir);\n } else {\n writeStdout(wasm.output);\n hasStdout = true;\n }\n hasOutput = true;\n\n // Post-process source map\n if (wasm.sourceMap != null) {\n if (args.binaryFile.length) {\n let sourceMap = JSON.parse(wasm.sourceMap);\n sourceMap.sourceRoot = exports.sourceMapRoot;\n sourceMap.sources.forEach((name, index) => {\n let text = null;\n if (name.startsWith(exports.libraryPrefix)) {\n let stdName = name.substring(exports.libraryPrefix.length).replace(/\\.ts$/, \"\");\n if (exports.libraryFiles.hasOwnProperty(stdName)) {\n text = exports.libraryFiles[stdName];\n } else {\n for (let i = 0, k = customLibDirs.length; i < k; ++i) {\n text = readFile(name.substring(exports.libraryPrefix.length), customLibDirs[i]);\n if (text !== null) break;\n }\n }\n } else {\n text = readFile(name, baseDir);\n }\n if (text === null) {\n return callback(Error(\"Source file '\" + name + \"' not found.\"));\n }\n if (!sourceMap.sourceContents) sourceMap.sourceContents = [];\n sourceMap.sourceContents[index] = text;\n });\n writeFile(path.join(\n path.dirname(args.binaryFile),\n path.basename(sourceMapURL)\n ).replace(/^\\.\\//, \"\"), JSON.stringify(sourceMap), baseDir);\n } else {\n stderr.write(\"Skipped source map (stdout already occupied)\" + EOL);\n }\n }\n }\n\n // Write asm.js\n if (args.asmjsFile != null) {\n let asm;\n if (args.asmjsFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeFile(args.asmjsFile, asm, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n asm = module.toAsmjs();\n });\n writeStdout(asm);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write WebIDL\n if (args.idlFile != null) {\n let idl;\n if (args.idlFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeFile(args.idlFile, idl, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n idl = assemblyscript.buildIDL(program);\n });\n writeStdout(idl);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write TypeScript definition\n if (args.tsdFile != null) {\n let tsd;\n if (args.tsdFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeFile(args.tsdFile, tsd, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n tsd = assemblyscript.buildTSD(program);\n });\n writeStdout(tsd);\n hasStdout = true;\n }\n hasOutput = true;\n }\n\n // Write text (must be last)\n if (args.textFile != null || !hasOutput) {\n let wat;\n if (args.textFile && args.textFile.length) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText();\n });\n writeFile(args.textFile, wat, baseDir);\n } else if (!hasStdout) {\n stats.emitCount++;\n stats.emitTime += measure(() => {\n wat = module.toText()\n });\n writeStdout(wat);\n }\n }\n }\n\n module.dispose();\n if (args.measure) {\n printStats(stats, stderr);\n }\n if (args.printrtti) {\n printRTTI(program, stderr);\n }\n return callback(null);\n\n function readFileNode(filename, baseDir) {\n let name = path.resolve(baseDir, filename);\n try {\n let text;\n stats.readCount++;\n stats.readTime += measure(() => {\n text = fs.readFileSync(name, { encoding: \"utf8\" });\n });\n return text;\n } catch (e) {\n return null;\n }\n }\n\n function writeFileNode(filename, contents, baseDir) {\n try {\n stats.writeCount++;\n stats.writeTime += measure(() => {\n mkdirp(path.join(baseDir, path.dirname(filename)));\n if (typeof contents === \"string\") {\n fs.writeFileSync(path.join(baseDir, filename), contents, { encoding: \"utf8\" } );\n } else {\n fs.writeFileSync(path.join(baseDir, filename), contents);\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function listFilesNode(dirname, baseDir) {\n var files;\n try {\n stats.readTime += measure(() => {\n files = fs.readdirSync(path.join(baseDir, dirname)).filter(file => /^(?!.*\\.d\\.ts$).*\\.ts$/.test(file));\n });\n return files;\n } catch (e) {\n return null;\n }\n }\n\n function writeStdout(contents) {\n if (!writeStdout.used) {\n stats.writeCount++;\n writeStdout.used = true;\n }\n stats.writeTime += measure(() => {\n if (typeof contents === \"string\") {\n stdout.write(contents, { encoding: \"utf8\" });\n } else {\n stdout.write(contents);\n }\n });\n }\n}\n\n/** Checks diagnostics emitted so far for errors. */\nfunction checkDiagnostics(emitter, stderr) {\n var diagnostic;\n var hasErrors = false;\n while ((diagnostic = assemblyscript.nextDiagnostic(emitter)) != null) {\n if (stderr) {\n stderr.write(\n assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) +\n EOL + EOL\n );\n }\n if (assemblyscript.isError(diagnostic)) hasErrors = true;\n }\n return hasErrors;\n}\n\nexports.checkDiagnostics = checkDiagnostics;\n\n/** Creates an empty set of stats. */\nfunction createStats() {\n return {\n readTime: 0,\n readCount: 0,\n writeTime: 0,\n writeCount: 0,\n parseTime: 0,\n parseCount: 0,\n compileTime: 0,\n compileCount: 0,\n emitTime: 0,\n emitCount: 0,\n validateTime: 0,\n validateCount: 0,\n optimizeTime: 0,\n optimizeCount: 0\n };\n}\n\nexports.createStats = createStats;\n\nif (!process.hrtime) process.hrtime = require(\"browser-process-hrtime\");\n\n/** Measures the execution time of the specified function. */\nfunction measure(fn) {\n const start = process.hrtime();\n fn();\n const times = process.hrtime(start);\n return times[0] * 1e9 + times[1];\n}\n\nexports.measure = measure;\n\n/** Formats a high resolution time to a human readable string. */\nfunction formatTime(time) {\n return time ? (time / 1e6).toFixed(3) + \" ms\" : \"N/A\";\n}\n\nexports.formatTime = formatTime;\n\n/** Formats and prints out the contents of a set of stats. */\nfunction printStats(stats, output) {\n function format(time, count) {\n return formatTime(time);\n }\n (output || process.stdout).write([\n \"I/O Read : \" + format(stats.readTime, stats.readCount),\n \"I/O Write : \" + format(stats.writeTime, stats.writeCount),\n \"Parse : \" + format(stats.parseTime, stats.parseCount),\n \"Compile : \" + format(stats.compileTime, stats.compileCount),\n \"Emit : \" + format(stats.emitTime, stats.emitCount),\n \"Validate : \" + format(stats.validateTime, stats.validateCount),\n \"Optimize : \" + format(stats.optimizeTime, stats.optimizeCount)\n ].join(EOL) + EOL);\n}\n\nexports.printStats = printStats;\n\n/** Prints runtime type information. */\nfunction printRTTI(program, output) {\n if (!output) output = process.stderr;\n output.write(\"# Runtime type information (RTTI)\\n\");\n output.write(assemblyscript.buildRTTI(program));\n}\n\nexports.printRTTI = printRTTI;\n\nvar allocBuffer = typeof global !== \"undefined\" && global.Buffer\n ? global.Buffer.allocUnsafe || function(len) { return new global.Buffer(len); }\n : function(len) { return new Uint8Array(len) };\n\n/** Creates a memory stream that can be used in place of stdout/stderr. */\nfunction createMemoryStream(fn) {\n var stream = [];\n stream.write = function(chunk) {\n if (fn) fn(chunk);\n if (typeof chunk === \"string\") {\n let buffer = allocBuffer(utf8.length(chunk));\n utf8.write(chunk, buffer, 0);\n chunk = buffer;\n }\n this.push(chunk);\n };\n stream.reset = function() {\n stream.length = 0;\n };\n stream.toBuffer = function() {\n var offset = 0, i = 0, k = this.length;\n while (i < k) offset += this[i++].length;\n var buffer = allocBuffer(offset);\n offset = i = 0;\n while (i < k) {\n buffer.set(this[i], offset);\n offset += this[i].length;\n ++i;\n }\n return buffer;\n };\n stream.toString = function() {\n var buffer = this.toBuffer();\n return utf8.read(buffer, 0, buffer.length);\n };\n return stream;\n}\n\nexports.createMemoryStream = createMemoryStream;\n\n/** Compatible TypeScript compiler options for syntax highlighting etc. */\nexports.tscOptions = {\n alwaysStrict: true,\n noImplicitAny: true,\n noImplicitReturns: true,\n noImplicitThis: true,\n noEmitOnError: true,\n strictNullChecks: true,\n experimentalDecorators: true,\n target: \"esnext\",\n module: \"commonjs\",\n noLib: true,\n types: [],\n allowJs: false\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","var proc = typeof process !== \"undefined\" && process || {};\nvar isCI = proc.env && \"CI\" in proc.env; // doesn't work when bundled because 'process' is a mock\n\nfunction from(stream, base) {\n var colors = base || {};\n colors.supported = (stream && !!stream.isTTY) || isCI;\n colors.gray = text => colors.supported ? exports.GRAY + text + exports.RESET : text;\n colors.red = text => colors.supported ? exports.RED + text + exports.RESET : text;\n colors.green = text => colors.supported ? exports.GREEN + text + exports.RESET : text;\n colors.yellow = text => colors.supported ? exports.YELLOW + text + exports.RESET : text;\n colors.blue = text => colors.supported ? exports.BLUE + text + exports.RESET : text;\n colors.magenta = text => colors.supported ? exports.MAGENTA + text + exports.RESET : text;\n colors.cyan = text => colors.supported ? exports.CYAN + text + exports.RESET : text;\n colors.white = text => colors.supported ? exports.WHITE + text + exports.RESET : text;\n return colors;\n}\n\nexports.stdout = from(proc.stdout, exports);\nexports.stderr = from(proc.stderr);\nexports.from = from;\n\nexports.GRAY = \"\\u001b[90m\";\nexports.RED = \"\\u001b[91m\";\nexports.GREEN = \"\\u001b[92m\";\nexports.YELLOW = \"\\u001b[93m\";\nexports.BLUE = \"\\u001b[94m\";\nexports.MAGENTA = \"\\u001b[95m\";\nexports.CYAN = \"\\u001b[96m\";\nexports.WHITE = \"\\u001b[97m\";\nexports.RESET = \"\\u001b[0m\";\n","// type | meaning\n// -----|---------------\n// b | boolean\n// i | integer\n// f | float\n// s | string\n// I | integer array\n// F | float array\n// S | string array\n\n/** Parses the specified command line arguments according to the given configuration. */\nfunction parse(argv, config) {\n var options = {};\n var unknown = [];\n var arguments = [];\n var trailing = [];\n\n // make an alias map and initialize defaults\n var aliases = {};\n Object.keys(config).forEach(key => {\n if (key.startsWith(\" \")) return;\n var option = config[key];\n if (option.alias != null) {\n if (typeof option.alias === \"string\") aliases[option.alias] = key;\n else if (Array.isArray(option.alias)) option.alias.forEach(alias => aliases[alias] = key);\n }\n if (option.default != null) options[key] = option.default;\n });\n\n // iterate over argv\n for (var i = 0, k = (argv = argv.slice()).length; i < k; ++i) {\n let arg = argv[i];\n if (arg == \"--\") { ++i; break; }\n let match = /^(?:(\\-\\w)(?:=(.*))?|(\\-\\-\\w{2,})(?:=(.*))?)$/.exec(arg), option, key;\n if (match) {\n if (config[arg]) option = config[key = arg]; // exact\n else if (match[1] != null) { // alias\n option = config[key = aliases[match[1].substring(1)]];\n if (option && match[2] != null) argv[i--] = match[2];\n } else if (match[3] != null) { // full\n option = config[key = match[3].substring(2)];\n if (option && match[4] != null) argv[i--] = match[4];\n }\n } else {\n if (arg.charCodeAt(0) == 45) option = config[key = arg]; // exact\n else { arguments.push(arg); continue; } // argument\n }\n if (option) {\n if (option.type == null || option.type === \"b\") options[key] = true; // flag\n else {\n if (i + 1 < argv.length && argv[i + 1].charCodeAt(0) != 45) { // present\n switch (option.type) {\n case \"i\": options[key] = parseInt(argv[++i], 10); break;\n case \"I\": options[key] = (options[key] || []).concat(parseInt(argv[++i], 10)); break;\n case \"f\": options[key] = parseFloat(argv[++i]); break;\n case \"F\": options[key] = (options[key] || []).concat(parseFloat(argv[++i])); break;\n case \"s\": options[key] = String(argv[++i]); break;\n case \"S\": options[key] = (options[key] || []).concat(argv[++i].split(\",\")); break;\n default: unknown.push(arg); --i;\n }\n } else { // omitted\n switch (option.type) {\n case \"i\":\n case \"f\": options[key] = option.default || 0; break;\n case \"s\": options[key] = option.default || \"\"; break;\n case \"I\":\n case \"F\":\n case \"S\": options[key] = options.default || []; break;\n default: unknown.push(arg);\n }\n }\n }\n if (option.value) Object.keys(option.value).forEach(k => options[k] = option.value[k]);\n } else unknown.push(arg);\n }\n while (i < k) trailing.push(argv[i++]); // trailing\n\n return { options, unknown, arguments, trailing };\n}\n\nexports.parse = parse;\n\n/** Generates the help text for the specified configuration. */\nfunction help(config, options) {\n if (!options) options = {};\n var indent = options.indent || 2;\n var padding = options.padding || 24;\n var eol = options.eol || \"\\n\";\n var sb = [];\n Object.keys(config).forEach(key => {\n var option = config[key];\n if (option.description == null) return;\n var text = \"\";\n while (text.length < indent) text += \" \";\n text += \"--\" + key;\n if (option.alias) text += \", -\" + option.alias;\n while (text.length < padding) text += \" \";\n if (Array.isArray(option.description)) {\n sb.push(text + option.description[0] + option.description.slice(1).map(line => {\n for (let i = 0; i < padding; ++i) line = \" \" + line;\n return eol + line;\n }).join(\"\"));\n } else sb.push(text + option.description);\n });\n return sb.join(eol);\n}\n\nexports.help = help;\n","/*\nCopyright 2010 James Halliday (mail@substack.net)\n\nThis project is free software released under the MIT/X11 license:\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nvar path = require(\"path\");\nvar fs = require(\"fs\");\nvar _0777 = parseInt(\"0777\", 8);\n\nmodule.exports = function mkdirp(p, opts, made) {\n if (!opts || typeof opts !== \"object\") {\n opts = { mode: opts };\n }\n var mode = opts.mode;\n if (mode === undefined) {\n mode = _0777 & (~process.umask());\n }\n if (!made) made = null;\n p = path.resolve(p);\n try {\n fs.mkdirSync(p, mode);\n made = made || p;\n } catch (err0) {\n switch (err0.code) {\n case \"ENOENT\":\n made = mkdirp(path.dirname(p), opts, made);\n mkdirp(p, opts, made);\n break;\n default:\n var stat;\n try {\n stat = fs.statSync(p);\n } catch (err1) {\n throw err0;\n }\n if (!stat.isDirectory()) throw err0;\n break;\n }\n }\n return made;\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.transformer=t():e.transformer=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=6)}([function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(1),a=i(4);t.Token=a.Token,t.Range=a.Range;var o,u=i(2);!function(e){e[e.SOURCE=0]=\"SOURCE\",e[e.NAMEDTYPE=1]=\"NAMEDTYPE\",e[e.FUNCTIONTYPE=2]=\"FUNCTIONTYPE\",e[e.TYPENAME=3]=\"TYPENAME\",e[e.TYPEPARAMETER=4]=\"TYPEPARAMETER\",e[e.PARAMETER=5]=\"PARAMETER\",e[e.IDENTIFIER=6]=\"IDENTIFIER\",e[e.ASSERTION=7]=\"ASSERTION\",e[e.BINARY=8]=\"BINARY\",e[e.CALL=9]=\"CALL\",e[e.CLASS=10]=\"CLASS\",e[e.COMMA=11]=\"COMMA\",e[e.ELEMENTACCESS=12]=\"ELEMENTACCESS\",e[e.FALSE=13]=\"FALSE\",e[e.FUNCTION=14]=\"FUNCTION\",e[e.INSTANCEOF=15]=\"INSTANCEOF\",e[e.LITERAL=16]=\"LITERAL\",e[e.NEW=17]=\"NEW\",e[e.NULL=18]=\"NULL\",e[e.PARENTHESIZED=19]=\"PARENTHESIZED\",e[e.PROPERTYACCESS=20]=\"PROPERTYACCESS\",e[e.TERNARY=21]=\"TERNARY\",e[e.SUPER=22]=\"SUPER\",e[e.THIS=23]=\"THIS\",e[e.TRUE=24]=\"TRUE\",e[e.CONSTRUCTOR=25]=\"CONSTRUCTOR\",e[e.UNARYPOSTFIX=26]=\"UNARYPOSTFIX\",e[e.UNARYPREFIX=27]=\"UNARYPREFIX\",e[e.BLOCK=28]=\"BLOCK\",e[e.BREAK=29]=\"BREAK\",e[e.CONTINUE=30]=\"CONTINUE\",e[e.DO=31]=\"DO\",e[e.EMPTY=32]=\"EMPTY\",e[e.EXPORT=33]=\"EXPORT\",e[e.EXPORTDEFAULT=34]=\"EXPORTDEFAULT\",e[e.EXPORTIMPORT=35]=\"EXPORTIMPORT\",e[e.EXPRESSION=36]=\"EXPRESSION\",e[e.FOR=37]=\"FOR\",e[e.IF=38]=\"IF\",e[e.IMPORT=39]=\"IMPORT\",e[e.RETURN=40]=\"RETURN\",e[e.SWITCH=41]=\"SWITCH\",e[e.THROW=42]=\"THROW\",e[e.TRY=43]=\"TRY\",e[e.VARIABLE=44]=\"VARIABLE\",e[e.VOID=45]=\"VOID\",e[e.WHILE=46]=\"WHILE\",e[e.CLASSDECLARATION=47]=\"CLASSDECLARATION\",e[e.ENUMDECLARATION=48]=\"ENUMDECLARATION\",e[e.ENUMVALUEDECLARATION=49]=\"ENUMVALUEDECLARATION\",e[e.FIELDDECLARATION=50]=\"FIELDDECLARATION\",e[e.FUNCTIONDECLARATION=51]=\"FUNCTIONDECLARATION\",e[e.IMPORTDECLARATION=52]=\"IMPORTDECLARATION\",e[e.INDEXSIGNATUREDECLARATION=53]=\"INDEXSIGNATUREDECLARATION\",e[e.INTERFACEDECLARATION=54]=\"INTERFACEDECLARATION\",e[e.METHODDECLARATION=55]=\"METHODDECLARATION\",e[e.NAMESPACEDECLARATION=56]=\"NAMESPACEDECLARATION\",e[e.TYPEDECLARATION=57]=\"TYPEDECLARATION\",e[e.VARIABLEDECLARATION=58]=\"VARIABLEDECLARATION\",e[e.DECORATOR=59]=\"DECORATOR\",e[e.EXPORTMEMBER=60]=\"EXPORTMEMBER\",e[e.SWITCHCASE=61]=\"SWITCHCASE\",e[e.COMMENT=62]=\"COMMENT\"}(o=t.NodeKind||(t.NodeKind={})),t.nodeIsConstantValue=function(e){switch(e){case o.LITERAL:case o.NULL:case o.TRUE:case o.FALSE:return!0}return!1},t.nodeIsCallable=function(e){switch(e){case o.IDENTIFIER:case o.ASSERTION:case o.CALL:case o.ELEMENTACCESS:case o.PARENTHESIZED:case o.PROPERTYACCESS:case o.SUPER:return!0}return!1},t.nodeIsGenericCallable=function(e){switch(e){case o.IDENTIFIER:case o.PROPERTYACCESS:return!0}return!1};var c=function(){function e(){}return e.createTypeName=function(e,t){var i=new p;return i.range=t,i.identifier=e,i.next=null,i},e.createSimpleTypeName=function(t,i){return e.createTypeName(e.createIdentifierExpression(t,i),i)},e.createNamedType=function(e,t,i,n){var r=new h;return r.range=n,r.name=e,r.typeArguments=t,r.isNullable=i,r},e.createFunctionType=function(e,t,i,n,r){var s=new l;return s.range=r,s.parameters=e,s.returnType=t,s.explicitThisType=i,s.isNullable=n,s},e.createOmittedType=function(t){return e.createNamedType(e.createSimpleTypeName(\"\",t),null,!1,t)},e.createTypeParameter=function(e,t,i,n){var r=new d;return r.range=n,r.name=e,r.extendsType=t,r.defaultType=i,r},e.createParameter=function(e,t,i,n,r){var s=new f;return s.range=r,s.name=e,s.type=t,s.initializer=i,s.parameterKind=n,s},e.createDecorator=function(e,t,i){var n=new v;return n.range=i,n.name=e,n.arguments=t,n.decoratorKind=A(e),n},e.createComment=function(e,t,i){var n=new m;return n.range=i,n.commentKind=t,n.text=e,n},e.createIdentifierExpression=function(e,t,i){void 0===i&&(i=!1);var n=new y;return n.range=t,n.text=e,n.symbol=e,n.isQuoted=i,n},e.createEmptyIdentifierExpression=function(e){var t=new y;return t.range=e,t.text=\"\",t},e.createArrayLiteralExpression=function(e,t){var i=new R;return i.range=t,i.elementExpressions=e,i},e.createAssertionExpression=function(e,t,i,n){var r=new g;return r.range=n,r.assertionKind=e,r.expression=t,r.toType=i,r},e.createBinaryExpression=function(e,t,i,n){var r=new I;return r.range=n,r.operator=e,r.left=t,r.right=i,r},e.createCallExpression=function(e,t,i,n){var r=new b;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createClassExpression=function(e){var t=new L;return t.range=e.range,t.declaration=e,t},e.createCommaExpression=function(e,t){var i=new C;return i.range=t,i.expressions=e,i},e.createConstructorExpression=function(e){var t=new O;return t.range=e,t},e.createElementAccessExpression=function(e,t,i){var n=new x;return n.range=i,n.expression=e,n.elementExpression=t,n},e.createFalseExpression=function(e){var t=new j;return t.range=e,t},e.createFloatLiteralExpression=function(e,t){var i=new P;return i.range=t,i.value=e,i},e.createFunctionExpression=function(e){var t=new D;return t.range=e.range,t.declaration=e,t},e.createInstanceOfExpression=function(e,t,i){var n=new U;return n.range=i,n.expression=e,n.isType=t,n},e.createIntegerLiteralExpression=function(e,t){var i=new w;return i.range=t,i.value=e,i},e.createNewExpression=function(e,t,i,n){var r=new M;return r.range=n,r.expression=e,r.typeArguments=t,r.arguments=i,r},e.createNullExpression=function(e){var t=new k;return t.range=e,t},e.createObjectLiteralExpression=function(e,t,i){var n=new F;return n.range=i,n.names=e,n.values=t,n},e.createParenthesizedExpression=function(e,t){var i=new K;return i.range=t,i.expression=e,i},e.createPropertyAccessExpression=function(e,t,i){var n=new B;return n.range=i,n.expression=e,n.property=t,n},e.createRegexpLiteralExpression=function(e,t,i){var n=new H;return n.range=i,n.pattern=e,n.patternFlags=t,n},e.createTernaryExpression=function(e,t,i,n){var r=new G;return r.range=n,r.condition=e,r.ifThen=t,r.ifElse=i,r},e.createStringLiteralExpression=function(e,t){var i=new Y;return i.range=t,i.value=e,i},e.createSuperExpression=function(e){var t=new V;return t.range=e,t},e.createThisExpression=function(e){var t=new z;return t.range=e,t},e.createTrueExpression=function(e){var t=new X;return t.range=e,t},e.createUnaryPostfixExpression=function(e,t,i){var n=new W;return n.range=i,n.operator=e,n.operand=t,n},e.createUnaryPrefixExpression=function(e,t,i){var n=new q;return n.range=i,n.operator=e,n.operand=t,n},e.createBlockStatement=function(e,t){var i=new ne;return i.range=t,i.statements=e,i},e.createBreakStatement=function(e,t){var i=new re;return i.range=t,i.label=e,i},e.createClassDeclaration=function(e,t,i,n,r,s,a,o){var u=new se;return u.range=o,u.flags=a,u.name=e,u.typeParameters=t,u.extendsType=i,u.implementsTypes=n,u.members=r,u.decorators=s,u},e.createContinueStatement=function(e,t){var i=new ae;return i.range=t,i.label=e,i},e.createDoStatement=function(e,t,i){var n=new oe;return n.range=i,n.statement=e,n.condition=t,n},e.createEmptyStatement=function(e){var t=new ue;return t.range=e,t},e.createEnumDeclaration=function(e,t,i,n,r){var s=new ce;return s.range=r,s.flags=n,s.name=e,s.values=t,s.decorators=i,s},e.createEnumValueDeclaration=function(e,t,i,n){var r=new _e;return r.range=n,r.flags=i,r.name=e,r.value=t,r},e.createExportStatement=function(e,t,i,n){var r=new le;if(r.range=n,r.members=e,r.path=t,t){var a=u.normalizePath(t.value);t.value.startsWith(\".\")?r.normalizedPath=u.resolvePath(a,n.source.normalizedPath):(a.startsWith(s.LIBRARY_PREFIX)||(a=s.LIBRARY_PREFIX+a),r.normalizedPath=a),r.internalPath=we(r.normalizedPath)}else r.normalizedPath=null,r.internalPath=null;return r.isDeclare=i,r},e.createExportDefaultStatement=function(e,t){var i=new de;return i.declaration=e,i.range=t,i},e.createExportImportStatement=function(e,t,i){var n=new pe;return n.range=i,n.name=e,n.externalName=t,n},e.createExportMember=function(e,t,i){var n=new he;return n.range=i,n.localName=e,t||(t=e),n.exportedName=t,n},e.createExpressionStatement=function(e){var t=new Ee;return t.range=e.range,t.expression=e,t},e.createIfStatement=function(e,t,i,n){var r=new me;return r.range=n,r.condition=e,r.ifTrue=t,r.ifFalse=i,r},e.createImportStatement=function(e,t,i){var n=new Ne;n.range=i,n.declarations=e,n.namespaceName=null,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportStatementWithWildcard=function(e,t,i){var n=new Ne;n.range=i,n.declarations=null,n.namespaceName=e,n.path=t;var r=u.normalizePath(t.value);return t.value.startsWith(\".\")?n.normalizedPath=u.resolvePath(r,i.source.normalizedPath):(r.startsWith(s.LIBRARY_PREFIX)||(r=s.LIBRARY_PREFIX+r),n.normalizedPath=r),n.internalPath=we(n.normalizedPath),n},e.createImportDeclaration=function(e,t,i){var n=new Te;return n.range=i,n.foreignName=e,t||(t=e),n.name=t,n},e.createInterfaceDeclaration=function(e,t,i,n,r,s,a){var o=new ye;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.extendsType=i,o.members=n,o.decorators=r,o},e.createFieldDeclaration=function(e,t,i,n,r,s){var a=new fe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createForStatement=function(e,t,i,n,r){var s=new Ae;return s.range=r,s.initializer=e,s.condition=t,s.incrementor=i,s.statement=n,s},e.createFunctionDeclaration=function(e,t,i,n,r,s,a,o){var u=new ve;return u.range=o,u.flags=s,u.name=e,u.typeParameters=t,u.signature=i,u.body=n,u.decorators=r,u.arrowKind=a,u},e.createIndexSignatureDeclaration=function(e,t,i){var n=new te;return n.range=i,n.keyType=e,n.valueType=t,n},e.createMethodDeclaration=function(e,t,i,n,r,s,a){var o=new Se;return o.range=a,o.flags=s,o.name=e,o.typeParameters=t,o.signature=i,o.body=n,o.decorators=r,o},e.createNamespaceDeclaration=function(e,t,i,n,r){var s=new Re;return s.range=r,s.flags=n,s.name=e,s.members=t,s.decorators=i,s},e.createReturnStatement=function(e,t){var i=new ge;return i.range=t,i.value=e,i},e.createSwitchStatement=function(e,t,i){var n=new be;return n.range=i,n.condition=e,n.cases=t,n},e.createSwitchCase=function(e,t,i){var n=new Ie;return n.range=i,n.label=e,n.statements=t,n},e.createThrowStatement=function(e,t){var i=new Le;return i.range=t,i.value=e,i},e.createTryStatement=function(e,t,i,n,r){var s=new Ce;return s.range=r,s.statements=e,s.catchVariable=t,s.catchStatements=i,s.finallyStatements=n,s},e.createTypeDeclaration=function(e,t,i,n,r,s){var a=new Oe;return a.range=s,a.flags=r,a.name=e,a.typeParameters=t,a.type=i,a.decorators=n,a},e.createVariableStatement=function(e,t,i){var n=new Pe;return n.range=i,n.declarations=e,n.decorators=t,n},e.createVariableDeclaration=function(e,t,i,n,r,s){var a=new xe;return a.range=s,a.flags=r,a.name=e,a.type=t,a.initializer=i,a.decorators=n,a},e.createVoidStatement=function(e,t){var i=new De;return i.range=t,i.expression=e,i},e.createWhileStatement=function(e,t,i){var n=new Ue;return n.range=i,n.condition=e,n.statement=t,n},e}();t.Node=c;var _=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.TypeNode=_;var p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPENAME,t}return r(t,e),t}(c);t.TypeName=p;var h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMEDTYPE,t}return r(t,e),t}(_);t.NamedTypeNode=h;var l=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONTYPE,t}return r(t,e),t}(_);t.FunctionTypeNode=l;var d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEPARAMETER,t}return r(t,e),t}(c);t.TypeParameterNode=d,function(e){e[e.DEFAULT=0]=\"DEFAULT\",e[e.OPTIONAL=1]=\"OPTIONAL\",e[e.REST=2]=\"REST\"}(t.ParameterKind||(t.ParameterKind={}));var E,f=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARAMETER,t.implicitFieldDeclaration=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(c);function A(e){if(e.kind==o.IDENTIFIER){var t=e.text;switch(assert(t.length),t.charCodeAt(0)){case 98:if(\"builtin\"==t)return E.BUILTIN;break;case 101:if(\"external\"==t)return E.EXTERNAL;break;case 103:if(\"global\"==t)return E.GLOBAL;break;case 105:if(\"inline\"==t)return E.INLINE;break;case 108:if(\"lazy\"==t)return E.LAZY;break;case 111:if(\"operator\"==t)return E.OPERATOR;break;case 115:if(\"sealed\"==t)return E.SEALED;break;case 117:if(\"unmanaged\"==t)return E.UNMANAGED;if(\"unsafe\"==t)return E.UNSAFE}}else if(e.kind==o.PROPERTYACCESS&&e.expression.kind==o.IDENTIFIER){t=e.expression.text;assert(t.length);var i=e.property.text;if(assert(i.length),\"operator\"==t)switch(i.charCodeAt(0)){case 98:if(\"binary\"==i)return E.OPERATOR_BINARY;break;case 112:switch(i){case\"prefix\":return E.OPERATOR_PREFIX;case\"postfix\":return E.OPERATOR_POSTFIX}}}return E.CUSTOM}t.ParameterNode=f,function(e){e[e.CUSTOM=0]=\"CUSTOM\",e[e.GLOBAL=1]=\"GLOBAL\",e[e.OPERATOR=2]=\"OPERATOR\",e[e.OPERATOR_BINARY=3]=\"OPERATOR_BINARY\",e[e.OPERATOR_PREFIX=4]=\"OPERATOR_PREFIX\",e[e.OPERATOR_POSTFIX=5]=\"OPERATOR_POSTFIX\",e[e.UNMANAGED=6]=\"UNMANAGED\",e[e.SEALED=7]=\"SEALED\",e[e.INLINE=8]=\"INLINE\",e[e.EXTERNAL=9]=\"EXTERNAL\",e[e.BUILTIN=10]=\"BUILTIN\",e[e.LAZY=11]=\"LAZY\",e[e.UNSAFE=12]=\"UNSAFE\"}(E=t.DecoratorKind||(t.DecoratorKind={})),t.decoratorNameToKind=A;var v=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DECORATOR,t}return r(t,e),t}(c);t.DecoratorNode=v,function(e){e[e.LINE=0]=\"LINE\",e[e.TRIPLE=1]=\"TRIPLE\",e[e.BLOCK=2]=\"BLOCK\"}(t.CommentKind||(t.CommentKind={}));var m=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMENT,t}return r(t,e),t}(c);t.CommentNode=m;var T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Expression=T;var N,y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IDENTIFIER,t}return r(t,e),t}(T);t.IdentifierExpression=y,function(e){e[e.FLOAT=0]=\"FLOAT\",e[e.INTEGER=1]=\"INTEGER\",e[e.STRING=2]=\"STRING\",e[e.REGEXP=3]=\"REGEXP\",e[e.ARRAY=4]=\"ARRAY\",e[e.OBJECT=5]=\"OBJECT\"}(N=t.LiteralKind||(t.LiteralKind={}));var S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.LITERAL,t}return r(t,e),t}(T);t.LiteralExpression=S;var R=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.ARRAY,t}return r(t,e),t}(S);t.ArrayLiteralExpression=R,function(e){e[e.PREFIX=0]=\"PREFIX\",e[e.AS=1]=\"AS\",e[e.NONNULL=2]=\"NONNULL\"}(t.AssertionKind||(t.AssertionKind={}));var g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ASSERTION,t}return r(t,e),t}(T);t.AssertionExpression=g;var I=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BINARY,t}return r(t,e),t}(T);t.BinaryExpression=I;var b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CALL,t}return r(t,e),Object.defineProperty(t.prototype,\"typeArgumentsRange\",{get:function(){var e,t=this.typeArguments;return t&&(e=t.length)?a.Range.join(t[0].range,t[e-1].range):this.expression.range},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"argumentsRange\",{get:function(){var e=this.arguments,t=e.length;return t?a.Range.join(e[0].range,e[t-1].range):this.expression.range},enumerable:!0,configurable:!0}),t}(T);t.CallExpression=b;var L=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASS,t}return r(t,e),t}(T);t.ClassExpression=L;var C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.COMMA,t}return r(t,e),t}(T);t.CommaExpression=C;var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONSTRUCTOR,t.text=\"constructor\",t.symbol=s.CommonSymbols.constructor,t}return r(t,e),t}(y);t.ConstructorExpression=O;var x=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ELEMENTACCESS,t}return r(t,e),t}(T);t.ElementAccessExpression=x;var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.FLOAT,t}return r(t,e),t}(S);t.FloatLiteralExpression=P;var D=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTION,t}return r(t,e),t}(T);t.FunctionExpression=D;var U=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INSTANCEOF,t}return r(t,e),t}(T);t.InstanceOfExpression=U;var w=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.INTEGER,t}return r(t,e),t}(S);t.IntegerLiteralExpression=w;var M=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NEW,t}return r(t,e),t}(b);t.NewExpression=M;var k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NULL,t.text=\"null\",t.symbol=s.CommonSymbols.null_,t}return r(t,e),t}(y);t.NullExpression=k;var F=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.OBJECT,t}return r(t,e),t}(S);t.ObjectLiteralExpression=F;var K=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PARENTHESIZED,t}return r(t,e),t}(T);t.ParenthesizedExpression=K;var B=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.PROPERTYACCESS,t}return r(t,e),t}(T);t.PropertyAccessExpression=B;var H=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.REGEXP,t}return r(t,e),t}(S);t.RegexpLiteralExpression=H;var G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TERNARY,t}return r(t,e),t}(T);t.TernaryExpression=G;var Y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.literalKind=N.STRING,t}return r(t,e),t}(S);t.StringLiteralExpression=Y;var V=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SUPER,t.text=\"super\",t.symbol=s.CommonSymbols.super_,t}return r(t,e),t}(y);t.SuperExpression=V;var z=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THIS,t.text=\"this\",t.symbol=s.CommonSymbols.this_,t}return r(t,e),t}(y);t.ThisExpression=z;var X=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRUE,t.text=\"true\",t.symbol=s.CommonSymbols.true_,t}return r(t,e),t}(y);t.TrueExpression=X;var j=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FALSE,t.text=\"false\",t.symbol=s.CommonSymbols.false_,t}return r(t,e),t}(y);t.FalseExpression=j;var Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(T);t.UnaryExpression=Q;var W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPOSTFIX,t}return r(t,e),t}(Q);t.UnaryPostfixExpression=W;var q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.UNARYPREFIX,t}return r(t,e),t}(Q);t.UnaryPrefixExpression=q;var Z,J=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(c);t.Statement=J,function(e){e[e.USER=0]=\"USER\",e[e.USER_ENTRY=1]=\"USER_ENTRY\",e[e.LIBRARY=2]=\"LIBRARY\",e[e.LIBRARY_ENTRY=3]=\"LIBRARY_ENTRY\"}(Z=t.SourceKind||(t.SourceKind={}));var $=function(e){function t(t,i,n){var r=e.call(this)||this;r.kind=o.SOURCE,r.parent=null,r.tokenizer=null,r.debugInfoIndex=-1,r.exportPaths=null,r.sourceKind=n,r.normalizedPath=t;var u=we(r.normalizedPath);r.internalPath=u;var c=u.lastIndexOf(s.PATH_DELIMITER);return r.simplePath=c>=0?u.substring(c+1):u,r.statements=new Array,r.range=new a.Range(r,0,i.length),r.text=i,r}return r(t,e),Object.defineProperty(t.prototype,\"isLibrary\",{get:function(){var e=this.sourceKind;return e==Z.LIBRARY||e==Z.LIBRARY_ENTRY},enumerable:!0,configurable:!0}),t}(c);t.Source=$;var ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.decorators=null,t.flags=s.CommonFlags.NONE,t}return r(t,e),t.prototype.is=function(e){return(this.flags&e)==e},t.prototype.isAny=function(e){return 0!=(this.flags&e)},t.prototype.set=function(e){this.flags|=e},t}(J);t.DeclarationStatement=ee;var te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INDEXSIGNATUREDECLARATION,t}return r(t,e),t}(ee);t.IndexSignatureDeclaration=te;var ie=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(ee);t.VariableLikeDeclarationStatement=ie;var ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BLOCK,t}return r(t,e),t}(J);t.BlockStatement=ne;var re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.BREAK,t}return r(t,e),t}(J);t.BreakStatement=re;var se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CLASSDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t}(ee);t.ClassDeclaration=se;var ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.CONTINUE,t}return r(t,e),t}(J);t.ContinueStatement=ae;var oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.DO,t}return r(t,e),t}(J);t.DoStatement=oe;var ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EMPTY,t}return r(t,e),t}(J);t.EmptyStatement=ue;var ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMDECLARATION,t}return r(t,e),t}(ee);t.EnumDeclaration=ce;var _e=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.ENUMVALUEDECLARATION,t}return r(t,e),t}(ie);t.EnumValueDeclaration=_e;var pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTIMPORT,t}return r(t,e),t}(c);t.ExportImportStatement=pe;var he=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTMEMBER,t}return r(t,e),t}(c);t.ExportMember=he;var le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORT,t}return r(t,e),t}(J);t.ExportStatement=le;var de=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPORTDEFAULT,t}return r(t,e),t}(J);t.ExportDefaultStatement=de;var Ee=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.EXPRESSION,t}return r(t,e),t}(J);t.ExpressionStatement=Ee;var fe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FIELDDECLARATION,t.parameterIndex=-1,t}return r(t,e),t}(ie);t.FieldDeclaration=fe;var Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FOR,t}return r(t,e),t}(J);t.ForStatement=Ae,function(e){e[e.NONE=0]=\"NONE\",e[e.ARROW_PARENTHESIZED=1]=\"ARROW_PARENTHESIZED\",e[e.ARROW_SINGLE=2]=\"ARROW_SINGLE\"}(t.ArrowKind||(t.ArrowKind={}));var ve=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.FUNCTIONDECLARATION,t}return r(t,e),Object.defineProperty(t.prototype,\"isGeneric\",{get:function(){var e=this.typeParameters;return null!=e&&e.length>0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){return c.createFunctionDeclaration(this.name,this.typeParameters,this.signature,this.body,this.decorators,this.flags,this.arrowKind,this.range)},t}(ee);t.FunctionDeclaration=ve;var me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IF,t}return r(t,e),t}(J);t.IfStatement=me;var Te=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORTDECLARATION,t}return r(t,e),t}(ee);t.ImportDeclaration=Te;var Ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.IMPORT,t}return r(t,e),t}(J);t.ImportStatement=Ne;var ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.INTERFACEDECLARATION,t}return r(t,e),t}(se);t.InterfaceDeclaration=ye;var Se=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.METHODDECLARATION,t}return r(t,e),t}(ve);t.MethodDeclaration=Se;var Re=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.NAMESPACEDECLARATION,t}return r(t,e),t}(ee);t.NamespaceDeclaration=Re;var ge=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.RETURN,t}return r(t,e),t}(J);t.ReturnStatement=ge;var Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCHCASE,t}return r(t,e),t}(c);t.SwitchCase=Ie;var be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.SWITCH,t}return r(t,e),t}(J);t.SwitchStatement=be;var Le=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.THROW,t}return r(t,e),t}(J);t.ThrowStatement=Le;var Ce=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TRY,t}return r(t,e),t}(J);t.TryStatement=Ce;var Oe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.TYPEDECLARATION,t}return r(t,e),t}(ee);t.TypeDeclaration=Oe;var xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLEDECLARATION,t}return r(t,e),t}(ie);t.VariableDeclaration=xe;var Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VARIABLE,t}return r(t,e),t}(J);t.VariableStatement=Pe;var De=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.VOID,t}return r(t,e),t}(J);t.VoidStatement=De;var Ue=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.kind=o.WHILE,t}return r(t,e),t}(J);function we(e){return e.endsWith(\".ts\")&&(e=e.substring(0,e.length-3)),e}t.WhileStatement=Ue,t.findDecorator=function(e,t){if(t)for(var i=0,n=t.length;i\";case s.LESSTHAN_EQUALS:return\"<=\";case s.GREATERTHAN_EQUALS:return\">=\";case s.EQUALS_EQUALS:return\"==\";case s.EXCLAMATION_EQUALS:return\"!=\";case s.EQUALS_EQUALS_EQUALS:return\"===\";case s.EXCLAMATION_EQUALS_EQUALS:return\"!==\";case s.PLUS:return\"+\";case s.MINUS:return\"-\";case s.ASTERISK_ASTERISK:return\"**\";case s.ASTERISK:return\"*\";case s.SLASH:return\"/\";case s.PERCENT:return\"%\";case s.PLUS_PLUS:return\"++\";case s.MINUS_MINUS:return\"--\";case s.LESSTHAN_LESSTHAN:return\"<<\";case s.GREATERTHAN_GREATERTHAN:return\">>\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN:return\">>>\";case s.AMPERSAND:return\"&\";case s.BAR:return\"|\";case s.CARET:return\"^\";case s.EXCLAMATION:return\"!\";case s.TILDE:return\"~\";case s.AMPERSAND_AMPERSAND:return\"&&\";case s.BAR_BAR:return\"||\";case s.EQUALS:return\"=\";case s.PLUS_EQUALS:return\"+=\";case s.MINUS_EQUALS:return\"-=\";case s.ASTERISK_EQUALS:return\"*=\";case s.ASTERISK_ASTERISK_EQUALS:return\"**=\";case s.SLASH_EQUALS:return\"/=\";case s.PERCENT_EQUALS:return\"%=\";case s.LESSTHAN_LESSTHAN_EQUALS:return\"<<=\";case s.GREATERTHAN_GREATERTHAN_EQUALS:return\">>=\";case s.GREATERTHAN_GREATERTHAN_GREATERTHAN_EQUALS:return\">>>=\";case s.AMPERSAND_EQUALS:return\"&=\";case s.BAR_EQUALS:return\"|=\";case s.CARET_EQUALS:return\"^=\";default:return assert(!1),\"\"}};var h=function(){function e(e,t,i){this.debugInfoRef=0,this.source=e,this.start=t,this.end=i}return e.join=function(t,i){if(t.source!=i.source)throw new Error(\"source mismatch\");return new e(t.source,t.starti.end?t.end:i.end)},Object.defineProperty(e.prototype,\"atStart\",{get:function(){return new e(this.source,this.start,this.start)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"atEnd\",{get:function(){return new e(this.source,this.end,this.end)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"line\",{get:function(){for(var e=this.source.text,t=1,i=this.start;i>=0;--i)10==e.charCodeAt(i)&&t++;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,\"column\",{get:function(){for(var e=this.source.text,t=0,i=this.start-1;i>=0&&10!=e.charCodeAt(i);--i)++t;return t},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return this.source.text.substring(this.start,this.end)},e}();t.Range=h;var l=function(e){function t(t,i){void 0===i&&(i=null);var n=e.call(this,i)||this;n.end=0,n.pos=0,n.token=-1,n.tokenPos=0,n.nextToken=-1,n.nextTokenPos=0,n.nextTokenOnNewLine=!1,n.onComment=null,n.source=t,n.pos=0,n.end=t.text.length,n.diagnostics=i||new Array;var r=n.end,s=t.text;if(n.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos1&&this.pos1&&this.pos1&&this.pos2&&this.pos+11&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos1&&this.pos2&&this.pos3&&this.pos1&&this.pos1&&this.pos=n){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,n));break}var s=e.charCodeAt(this.pos);if(s==t){r+=e.substring(i,this.pos++);break}if(92!=s){if(c.isLineBreak(s)&&96!=t){r+=e.substring(i,this.pos),this.error(o.DiagnosticCode.Unterminated_string_literal,this.range(i-1,this.pos));break}++this.pos}else r+=e.substring(i,this.pos),r+=this.readEscapeSequence(),i=this.pos}return r},t.prototype.readEscapeSequence=function(){var e=this.end;if(++this.pos>=e)return this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e)),\"\";var t=this.source.text,i=t.charCodeAt(this.pos++);switch(i){case 48:return\"\\0\";case 98:return\"\\b\";case 116:return\"\\t\";case 110:return\"\\n\";case 118:return\"\\v\";case 102:return\"\\f\";case 114:return\"\\r\";case 39:return\"'\";case 34:return'\"';case 117:return this.pos=i){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,i));break}if(92!=e.charCodeAt(this.pos)){var r=e.charCodeAt(this.pos);if(!n&&47==r)break;if(c.isLineBreak(r)){this.error(o.DiagnosticCode.Unterminated_regular_expression_literal,this.range(t,this.pos));break}++this.pos,n=!1}else++this.pos,n=!0}return e.substring(t,this.pos)},t.prototype.readRegexpFlags=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=0;this.pos57)&&95!=n)break;i++}return!0},t.prototype.readInteger=function(){var e=this.source.text;if(this.pos+2=48&&u<=57)i=i64_add(i64_shl(i,n),i64_new(u-48));else if(u>=65&&u<=70)i=i64_add(i64_shl(i,n),i64_new(10+u-65));else if(u>=97&&u<=102)i=i64_add(i64_shl(i,n),i64_new(10+u-97));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readDecimalInteger=function(){for(var e=this.source.text,t=this.pos,i=this.end,n=i64_new(0),r=i64_new(10),s=t;this.pos=48&&u<=57)n=i64_add(i64_mul(n,r),i64_new(u-48));else{if(95!=u)break;s==a&&this.error(s==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),s=a+1}this.pos=a+1}return this.pos==t?this.error(o.DiagnosticCode.Digit_expected,this.range(t)):s==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(s-1)),n},t.prototype.readOctalInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(3),r=t,s=this.end;this.pos=48&&u<=55)i=i64_add(i64_shl(i,n),i64_new(u-48));else{if(95!=u)break;r==a&&this.error(r==t?o.DiagnosticCode.Numeric_separators_are_not_allowed_here:o.DiagnosticCode.Multiple_consecutive_numeric_separators_are_not_permitted,this.range(a)),r=a+1}++this.pos}return this.pos==t?this.error(o.DiagnosticCode.Octal_digit_expected,this.range(t)):r==this.pos&&this.error(o.DiagnosticCode.Numeric_separators_are_not_allowed_here,this.range(r-1)),i},t.prototype.readBinaryInteger=function(){for(var e=this.source.text,t=this.pos,i=i64_new(0),n=i64_new(1),r=t,s=this.end;this.pos=48&&r<=57)t=(t<<4)+r-48;else if(r>=65&&r<=70)t=(t<<4)+r+-55;else{if(!(r>=97&&r<=102))return this.error(o.DiagnosticCode.Hexadecimal_digit_expected,this.range(this.pos-1,this.pos)),\"\";t=(t<<4)+r+-87}if(0==--e)break}return e?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(this.pos)),\"\"):String.fromCharCode(t)},t.prototype.readExtendedUnicodeEscape=function(){var e=this.pos,t=this.readHexInteger(),i=i64_low(t),n=!1;assert(!i64_high(t)),i>1114111&&(this.error(o.DiagnosticCode.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive,this.range(e,this.pos)),n=!0);var r=this.end,s=this.source.text;return this.pos>=r?(this.error(o.DiagnosticCode.Unexpected_end_of_text,this.range(e,r)),n=!0):125==s.charCodeAt(this.pos)?++this.pos:(this.error(o.DiagnosticCode.Unterminated_Unicode_escape_sequence,this.range(e,this.pos)),n=!0),n?\"\":i<65536?String.fromCharCode(i):String.fromCharCode(55296+(i-65536>>>10),56320+(i-65536&1023))},t.prototype.finish=function(){},t}(o.DiagnosticEmitter);t.Tokenizer=l;var d=function(){};t.State=d;var E=null},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.Operation_not_supported=100]=\"Operation_not_supported\",e[e.Operation_is_unsafe=101]=\"Operation_is_unsafe\",e[e.User_defined_0=102]=\"User_defined_0\",e[e.Conversion_from_type_0_to_1_requires_an_explicit_cast=200]=\"Conversion_from_type_0_to_1_requires_an_explicit_cast\",e[e.Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit=201]=\"Conversion_from_type_0_to_1_will_require_an_explicit_cast_when_switching_between_32_64_bit\",e[e.Type_0_cannot_be_changed_to_type_1=202]=\"Type_0_cannot_be_changed_to_type_1\",e[e.Type_0_cannot_be_reinterpreted_as_type_1=203]=\"Type_0_cannot_be_reinterpreted_as_type_1\",e[e.Basic_type_0_cannot_be_nullable=204]=\"Basic_type_0_cannot_be_nullable\",e[e.Cannot_export_a_mutable_global=205]=\"Cannot_export_a_mutable_global\",e[e.Mutable_value_cannot_be_inlined=206]=\"Mutable_value_cannot_be_inlined\",e[e.Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa=207]=\"Unmanaged_classes_cannot_extend_managed_classes_and_vice_versa\",e[e.Unmanaged_classes_cannot_implement_interfaces=208]=\"Unmanaged_classes_cannot_implement_interfaces\",e[e.Invalid_regular_expression_flags=209]=\"Invalid_regular_expression_flags\",e[e.Implementation_0_must_match_the_signature_1=210]=\"Implementation_0_must_match_the_signature_1\",e[e.Class_0_is_sealed_and_cannot_be_extended=211]=\"Class_0_is_sealed_and_cannot_be_extended\",e[e.Decorator_0_is_not_valid_here=212]=\"Decorator_0_is_not_valid_here\",e[e.Duplicate_decorator=213]=\"Duplicate_decorator\",e[e.An_allocator_must_be_present_to_use_0=214]=\"An_allocator_must_be_present_to_use_0\",e[e.Optional_parameter_must_have_an_initializer=215]=\"Optional_parameter_must_have_an_initializer\",e[e.Constructor_of_class_0_must_not_require_any_arguments=216]=\"Constructor_of_class_0_must_not_require_any_arguments\",e[e.Function_0_cannot_be_inlined_into_itself=217]=\"Function_0_cannot_be_inlined_into_itself\",e[e.Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set=218]=\"Cannot_access_method_0_without_calling_it_as_it_requires_this_to_be_set\",e[e.Optional_properties_are_not_supported=219]=\"Optional_properties_are_not_supported\",e[e.Expression_must_be_a_compile_time_constant=220]=\"Expression_must_be_a_compile_time_constant\",e[e.Module_cannot_have_multiple_start_functions=221]=\"Module_cannot_have_multiple_start_functions\",e[e._0_must_be_a_value_between_1_and_2_inclusive=222]=\"_0_must_be_a_value_between_1_and_2_inclusive\",e[e._0_must_be_a_power_of_two=223]=\"_0_must_be_a_power_of_two\",e[e.Expression_is_unsafe=224]=\"Expression_is_unsafe\",e[e.Expression_is_never_null=225]=\"Expression_is_never_null\",e[e.Unterminated_string_literal=1002]=\"Unterminated_string_literal\",e[e.Identifier_expected=1003]=\"Identifier_expected\",e[e._0_expected=1005]=\"_0_expected\",e[e.A_file_cannot_have_a_reference_to_itself=1006]=\"A_file_cannot_have_a_reference_to_itself\",e[e.Trailing_comma_not_allowed=1009]=\"Trailing_comma_not_allowed\",e[e.Unexpected_token=1012]=\"Unexpected_token\",e[e.A_rest_parameter_must_be_last_in_a_parameter_list=1014]=\"A_rest_parameter_must_be_last_in_a_parameter_list\",e[e.Parameter_cannot_have_question_mark_and_initializer=1015]=\"Parameter_cannot_have_question_mark_and_initializer\",e[e.A_required_parameter_cannot_follow_an_optional_parameter=1016]=\"A_required_parameter_cannot_follow_an_optional_parameter\",e[e.Statements_are_not_allowed_in_ambient_contexts=1036]=\"Statements_are_not_allowed_in_ambient_contexts\",e[e.Initializers_are_not_allowed_in_ambient_contexts=1039]=\"Initializers_are_not_allowed_in_ambient_contexts\",e[e._0_modifier_cannot_be_used_here=1042]=\"_0_modifier_cannot_be_used_here\",e[e.A_rest_parameter_cannot_be_optional=1047]=\"A_rest_parameter_cannot_be_optional\",e[e.A_rest_parameter_cannot_have_an_initializer=1048]=\"A_rest_parameter_cannot_have_an_initializer\",e[e.A_set_accessor_must_have_exactly_one_parameter=1049]=\"A_set_accessor_must_have_exactly_one_parameter\",e[e.A_set_accessor_parameter_cannot_have_an_initializer=1052]=\"A_set_accessor_parameter_cannot_have_an_initializer\",e[e.A_get_accessor_cannot_have_parameters=1054]=\"A_get_accessor_cannot_have_parameters\",e[e.Enum_member_must_have_initializer=1061]=\"Enum_member_must_have_initializer\",e[e.Type_parameters_cannot_appear_on_a_constructor_declaration=1092]=\"Type_parameters_cannot_appear_on_a_constructor_declaration\",e[e.Type_annotation_cannot_appear_on_a_constructor_declaration=1093]=\"Type_annotation_cannot_appear_on_a_constructor_declaration\",e[e.An_accessor_cannot_have_type_parameters=1094]=\"An_accessor_cannot_have_type_parameters\",e[e.A_set_accessor_cannot_have_a_return_type_annotation=1095]=\"A_set_accessor_cannot_have_a_return_type_annotation\",e[e.Type_parameter_list_cannot_be_empty=1098]=\"Type_parameter_list_cannot_be_empty\",e[e.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement=1104]=\"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement\",e[e.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement=1105]=\"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement\",e[e.A_return_statement_can_only_be_used_within_a_function_body=1108]=\"A_return_statement_can_only_be_used_within_a_function_body\",e[e.Expression_expected=1109]=\"Expression_expected\",e[e.Type_expected=1110]=\"Type_expected\",e[e.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement=1113]=\"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement\",e[e.Duplicate_label_0=1114]=\"Duplicate_label_0\",e[e.An_export_assignment_cannot_have_modifiers=1120]=\"An_export_assignment_cannot_have_modifiers\",e[e.Octal_literals_are_not_allowed_in_strict_mode=1121]=\"Octal_literals_are_not_allowed_in_strict_mode\",e[e.Digit_expected=1124]=\"Digit_expected\",e[e.Hexadecimal_digit_expected=1125]=\"Hexadecimal_digit_expected\",e[e.Unexpected_end_of_text=1126]=\"Unexpected_end_of_text\",e[e.Invalid_character=1127]=\"Invalid_character\",e[e._case_or_default_expected=1130]=\"_case_or_default_expected\",e[e._super_must_be_followed_by_an_argument_list_or_member_access=1034]=\"_super_must_be_followed_by_an_argument_list_or_member_access\",e[e.A_declare_modifier_cannot_be_used_in_an_already_ambient_context=1038]=\"A_declare_modifier_cannot_be_used_in_an_already_ambient_context\",e[e.Type_argument_expected=1140]=\"Type_argument_expected\",e[e.String_literal_expected=1141]=\"String_literal_expected\",e[e.Line_break_not_permitted_here=1142]=\"Line_break_not_permitted_here\",e[e.Declaration_expected=1146]=\"Declaration_expected\",e[e._const_declarations_must_be_initialized=1155]=\"_const_declarations_must_be_initialized\",e[e.Unterminated_regular_expression_literal=1161]=\"Unterminated_regular_expression_literal\",e[e.Interface_declaration_cannot_have_implements_clause=1176]=\"Interface_declaration_cannot_have_implements_clause\",e[e.Binary_digit_expected=1177]=\"Binary_digit_expected\",e[e.Octal_digit_expected=1178]=\"Octal_digit_expected\",e[e.An_implementation_cannot_be_declared_in_ambient_contexts=1183]=\"An_implementation_cannot_be_declared_in_ambient_contexts\",e[e.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive=1198]=\"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive\",e[e.Unterminated_Unicode_escape_sequence=1199]=\"Unterminated_Unicode_escape_sequence\",e[e.Decorators_are_not_valid_here=1206]=\"Decorators_are_not_valid_here\",e[e._abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration=1242]=\"_abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration\",e[e.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract=1245]=\"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract\",e[e.A_definite_assignment_assertion_is_not_permitted_in_this_context=1255]=\"A_definite_assignment_assertion_is_not_permitted_in_this_context\",e[e.A_class_may_only_extend_another_class=1311]=\"A_class_may_only_extend_another_class\",e[e.A_parameter_property_cannot_be_declared_using_a_rest_parameter=1317]=\"A_parameter_property_cannot_be_declared_using_a_rest_parameter\",e[e.Duplicate_identifier_0=2300]=\"Duplicate_identifier_0\",e[e.Cannot_find_name_0=2304]=\"Cannot_find_name_0\",e[e.Module_0_has_no_exported_member_1=2305]=\"Module_0_has_no_exported_member_1\",e[e.Generic_type_0_requires_1_type_argument_s=2314]=\"Generic_type_0_requires_1_type_argument_s\",e[e.Type_0_is_not_generic=2315]=\"Type_0_is_not_generic\",e[e.Type_0_is_not_assignable_to_type_1=2322]=\"Type_0_is_not_assignable_to_type_1\",e[e.Index_signature_is_missing_in_type_0=2329]=\"Index_signature_is_missing_in_type_0\",e[e._this_cannot_be_referenced_in_current_location=2332]=\"_this_cannot_be_referenced_in_current_location\",e[e._super_can_only_be_referenced_in_a_derived_class=2335]=\"_super_can_only_be_referenced_in_a_derived_class\",e[e.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors=2337]=\"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors\",e[e.Property_0_does_not_exist_on_type_1=2339]=\"Property_0_does_not_exist_on_type_1\",e[e.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures=2349]=\"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures\",e[e.Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature=2351]=\"Cannot_use_new_with_an_expression_whose_type_lacks_a_construct_signature\",e[e.A_function_whose_declared_type_is_not_void_must_return_a_value=2355]=\"A_function_whose_declared_type_is_not_void_must_return_a_value\",e[e.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access=2357]=\"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access\",e[e.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access=2364]=\"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access\",e[e.Operator_0_cannot_be_applied_to_types_1_and_2=2365]=\"Operator_0_cannot_be_applied_to_types_1_and_2\",e[e.A_super_call_must_be_the_first_statement_in_the_constructor=2376]=\"A_super_call_must_be_the_first_statement_in_the_constructor\",e[e.Constructors_for_derived_classes_must_contain_a_super_call=2377]=\"Constructors_for_derived_classes_must_contain_a_super_call\",e[e._get_and_set_accessor_must_have_the_same_type=2380]=\"_get_and_set_accessor_must_have_the_same_type\",e[e.Constructor_implementation_is_missing=2390]=\"Constructor_implementation_is_missing\",e[e.Function_implementation_is_missing_or_not_immediately_following_the_declaration=2391]=\"Function_implementation_is_missing_or_not_immediately_following_the_declaration\",e[e.Multiple_constructor_implementations_are_not_allowed=2392]=\"Multiple_constructor_implementations_are_not_allowed\",e[e.Duplicate_function_implementation=2393]=\"Duplicate_function_implementation\",e[e.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local=2395]=\"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local\",e[e.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged=2434]=\"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged\",e[e.Type_0_has_no_property_1=2460]=\"Type_0_has_no_property_1\",e[e.The_0_operator_cannot_be_applied_to_type_1=2469]=\"The_0_operator_cannot_be_applied_to_type_1\",e[e.In_const_enum_declarations_member_initializer_must_be_constant_expression=2474]=\"In_const_enum_declarations_member_initializer_must_be_constant_expression\",e[e.Export_declaration_conflicts_with_exported_declaration_of_0=2484]=\"Export_declaration_conflicts_with_exported_declaration_of_0\",e[e.Object_is_possibly_null=2531]=\"Object_is_possibly_null\",e[e.Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property=2540]=\"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property\",e[e.The_target_of_an_assignment_must_be_a_variable_or_a_property_access=2541]=\"The_target_of_an_assignment_must_be_a_variable_or_a_property_access\",e[e.Index_signature_in_type_0_only_permits_reading=2542]=\"Index_signature_in_type_0_only_permits_reading\",e[e.Expected_0_arguments_but_got_1=2554]=\"Expected_0_arguments_but_got_1\",e[e.Expected_at_least_0_arguments_but_got_1=2555]=\"Expected_at_least_0_arguments_but_got_1\",e[e.Expected_0_type_arguments_but_got_1=2558]=\"Expected_0_type_arguments_but_got_1\",e[e.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums=2651]=\"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums\",e[e.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration=2673]=\"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration\",e[e.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration=2674]=\"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration\",e[e.Namespace_0_has_no_exported_member_1=2694]=\"Namespace_0_has_no_exported_member_1\",e[e.Required_type_parameters_may_not_follow_optional_type_parameters=2706]=\"Required_type_parameters_may_not_follow_optional_type_parameters\",e[e.Duplicate_property_0=2718]=\"Duplicate_property_0\",e[e.Type_0_has_no_call_signatures=2757]=\"Type_0_has_no_call_signatures\",e[e.File_0_not_found=6054]=\"File_0_not_found\",e[e.Numeric_separators_are_not_allowed_here=6188]=\"Numeric_separators_are_not_allowed_here\",e[e.Multiple_consecutive_numeric_separators_are_not_permitted=6189]=\"Multiple_consecutive_numeric_separators_are_not_permitted\",e[e._super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class=17009]=\"_super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class\",e[e._super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class=17011]=\"_super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class\"}(t.DiagnosticCode||(t.DiagnosticCode={})),t.diagnosticCodeToString=function(e){switch(e){case 100:return\"Operation not supported.\";case 101:return\"Operation is unsafe.\";case 102:return\"User-defined: {0}\";case 200:return\"Conversion from type '{0}' to '{1}' requires an explicit cast.\";case 201:return\"Conversion from type '{0}' to '{1}' will require an explicit cast when switching between 32/64-bit.\";case 202:return\"Type '{0}' cannot be changed to type '{1}'.\";case 203:return\"Type '{0}' cannot be reinterpreted as type '{1}'.\";case 204:return\"Basic type '{0}' cannot be nullable.\";case 205:return\"Cannot export a mutable global.\";case 206:return\"Mutable value cannot be inlined.\";case 207:return\"Unmanaged classes cannot extend managed classes and vice-versa.\";case 208:return\"Unmanaged classes cannot implement interfaces.\";case 209:return\"Invalid regular expression flags.\";case 210:return\"Implementation '{0}' must match the signature '{1}'.\";case 211:return\"Class '{0}' is sealed and cannot be extended.\";case 212:return\"Decorator '{0}' is not valid here.\";case 213:return\"Duplicate decorator.\";case 214:return\"An allocator must be present to use '{0}'.\";case 215:return\"Optional parameter must have an initializer.\";case 216:return\"Constructor of class '{0}' must not require any arguments.\";case 217:return\"Function '{0}' cannot be inlined into itself.\";case 218:return\"Cannot access method '{0}' without calling it as it requires 'this' to be set.\";case 219:return\"Optional properties are not supported.\";case 220:return\"Expression must be a compile-time constant.\";case 221:return\"Module cannot have multiple start functions.\";case 222:return\"'{0}' must be a value between '{1}' and '{2}' inclusive.\";case 223:return\"'{0}' must be a power of two.\";case 224:return\"Expression is unsafe.\";case 225:return\"Expression is never 'null'.\";case 1002:return\"Unterminated string literal.\";case 1003:return\"Identifier expected.\";case 1005:return\"'{0}' expected.\";case 1006:return\"A file cannot have a reference to itself.\";case 1009:return\"Trailing comma not allowed.\";case 1012:return\"Unexpected token.\";case 1014:return\"A rest parameter must be last in a parameter list.\";case 1015:return\"Parameter cannot have question mark and initializer.\";case 1016:return\"A required parameter cannot follow an optional parameter.\";case 1036:return\"Statements are not allowed in ambient contexts.\";case 1039:return\"Initializers are not allowed in ambient contexts.\";case 1042:return\"'{0}' modifier cannot be used here.\";case 1047:return\"A rest parameter cannot be optional.\";case 1048:return\"A rest parameter cannot have an initializer.\";case 1049:return\"A 'set' accessor must have exactly one parameter.\";case 1052:return\"A 'set' accessor parameter cannot have an initializer.\";case 1054:return\"A 'get' accessor cannot have parameters.\";case 1061:return\"Enum member must have initializer.\";case 1092:return\"Type parameters cannot appear on a constructor declaration.\";case 1093:return\"Type annotation cannot appear on a constructor declaration.\";case 1094:return\"An accessor cannot have type parameters.\";case 1095:return\"A 'set' accessor cannot have a return type annotation.\";case 1098:return\"Type parameter list cannot be empty.\";case 1104:return\"A 'continue' statement can only be used within an enclosing iteration statement.\";case 1105:return\"A 'break' statement can only be used within an enclosing iteration or switch statement.\";case 1108:return\"A 'return' statement can only be used within a function body.\";case 1109:return\"Expression expected.\";case 1110:return\"Type expected.\";case 1113:return\"A 'default' clause cannot appear more than once in a 'switch' statement.\";case 1114:return\"Duplicate label '{0}'.\";case 1120:return\"An export assignment cannot have modifiers.\";case 1121:return\"Octal literals are not allowed in strict mode.\";case 1124:return\"Digit expected.\";case 1125:return\"Hexadecimal digit expected.\";case 1126:return\"Unexpected end of text.\";case 1127:return\"Invalid character.\";case 1130:return\"'case' or 'default' expected.\";case 1034:return\"'super' must be followed by an argument list or member access.\";case 1038:return\"A 'declare' modifier cannot be used in an already ambient context.\";case 1140:return\"Type argument expected.\";case 1141:return\"String literal expected.\";case 1142:return\"Line break not permitted here.\";case 1146:return\"Declaration expected.\";case 1155:return\"'const' declarations must be initialized.\";case 1161:return\"Unterminated regular expression literal.\";case 1176:return\"Interface declaration cannot have 'implements' clause.\";case 1177:return\"Binary digit expected.\";case 1178:return\"Octal digit expected.\";case 1183:return\"An implementation cannot be declared in ambient contexts.\";case 1198:return\"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.\";case 1199:return\"Unterminated Unicode escape sequence.\";case 1206:return\"Decorators are not valid here.\";case 1242:return\"'abstract' modifier can only appear on a class, method, or property declaration.\";case 1245:return\"Method '{0}' cannot have an implementation because it is marked abstract.\";case 1255:return\"A definite assignment assertion '!' is not permitted in this context.\";case 1311:return\"A class may only extend another class.\";case 1317:return\"A parameter property cannot be declared using a rest parameter.\";case 2300:return\"Duplicate identifier '{0}'.\";case 2304:return\"Cannot find name '{0}'.\";case 2305:return\"Module '{0}' has no exported member '{1}'.\";case 2314:return\"Generic type '{0}' requires {1} type argument(s).\";case 2315:return\"Type '{0}' is not generic.\";case 2322:return\"Type '{0}' is not assignable to type '{1}'.\";case 2329:return\"Index signature is missing in type '{0}'.\";case 2332:return\"'this' cannot be referenced in current location.\";case 2335:return\"'super' can only be referenced in a derived class.\";case 2337:return\"Super calls are not permitted outside constructors or in nested functions inside constructors.\";case 2339:return\"Property '{0}' does not exist on type '{1}'.\";case 2349:return\"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures.\";case 2351:return\"Cannot use 'new' with an expression whose type lacks a construct signature.\";case 2355:return\"A function whose declared type is not 'void' must return a value.\";case 2357:return\"The operand of an increment or decrement operator must be a variable or a property access.\";case 2364:return\"The left-hand side of an assignment expression must be a variable or a property access.\";case 2365:return\"Operator '{0}' cannot be applied to types '{1}' and '{2}'.\";case 2376:return\"A 'super' call must be the first statement in the constructor.\";case 2377:return\"Constructors for derived classes must contain a 'super' call.\";case 2380:return\"'get' and 'set' accessor must have the same type.\";case 2390:return\"Constructor implementation is missing.\";case 2391:return\"Function implementation is missing or not immediately following the declaration.\";case 2392:return\"Multiple constructor implementations are not allowed.\";case 2393:return\"Duplicate function implementation.\";case 2395:return\"Individual declarations in merged declaration '{0}' must be all exported or all local.\";case 2434:return\"A namespace declaration cannot be located prior to a class or function with which it is merged.\";case 2460:return\"Type '{0}' has no property '{1}'.\";case 2469:return\"The '{0}' operator cannot be applied to type '{1}'.\";case 2474:return\"In 'const' enum declarations member initializer must be constant expression.\";case 2484:return\"Export declaration conflicts with exported declaration of '{0}'.\";case 2531:return\"Object is possibly 'null'.\";case 2540:return\"Cannot assign to '{0}' because it is a constant or a read-only property.\";case 2541:return\"The target of an assignment must be a variable or a property access.\";case 2542:return\"Index signature in type '{0}' only permits reading.\";case 2554:return\"Expected {0} arguments, but got {1}.\";case 2555:return\"Expected at least {0} arguments, but got {1}.\";case 2558:return\"Expected {0} type arguments, but got {1}.\";case 2651:return\"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.\";case 2673:return\"Constructor of class '{0}' is private and only accessible within the class declaration.\";case 2674:return\"Constructor of class '{0}' is protected and only accessible within the class declaration.\";case 2694:return\"Namespace '{0}' has no exported member '{1}'.\";case 2706:return\"Required type parameters may not follow optional type parameters.\";case 2718:return\"Duplicate property '{0}'.\";case 2757:return\"Type '{0}' has no call signatures.\";case 6054:return\"File '{0}' not found.\";case 6188:return\"Numeric separators are not allowed here.\";case 6189:return\"Multiple consecutive numeric separators are not permitted.\";case 17009:return\"'super' must be called before accessing 'this' in the constructor of a derived class.\";case 17011:return\"'super' must be called before accessing a property of 'super' in the constructor of a derived class.\";default:return\"\"}}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,\"__esModule\",{value:!0});var s=i(0),a=i(1),o=i(17),u=i(22),c=i(24);function _(e){return e.text.includes(\"@nearfile\")||h(e)}function p(e){return o.ASTBuilder.build(e)}function h(e){return(e.kind==s.NodeKind.SOURCE?e:e.range.source).sourceKind==s.SourceKind.USER_ENTRY}function l(e){return e.kind==s.NodeKind.CLASSDECLARATION}function d(e){return e.kind==s.NodeKind.FIELDDECLARATION}var E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.typeMapping={i32:\"Integer\",u32:\"Integer\",i64:\"String\",u64:\"String\",string:\"String\",bool:\"Boolean\",Uint8Array:\"String\"},t.nonNullableTypes=[\"i32\",\"u32\",\"i64\",\"u64\",\"bool\",\"boolean\"],t.sb=[],t.exportedClasses=new Map,t.wrappedFuncs=new Set,t}return r(t,e),t.build=function(e,i){return(new t).build(i)},t.nearFiles=function(e){return e.program.sources.filter(_)},t.prototype.visitClassDeclaration=function(e){this.exportedClasses.has(p(e.name))||this.exportedClasses.set(p(e.name),e)},t.prototype.visitFunctionDeclaration=function(t){!h(t)||this.wrappedFuncs.has(p(t.name))||!t.is(a.CommonFlags.EXPORT)||0==function(e){return e.signature.parameters.length}(t)&&function(e){return\"void\"===p(e.signature.returnType)}(t)?e.prototype.visitFunctionDeclaration.call(this,t):(this.generateWrapperFunction(t),t.flags=t.flags^a.CommonFlags.EXPORT,this.wrappedFuncs.add(p(t.name)))},t.prototype.generateWrapperFunction=function(e){var t=e.signature,i=t.parameters,n=t.returnType,r=p(n).split(\"|\").filter(function(e){return\"null\"!==e.trim()}).join(\"|\"),s=p(n).includes(\"null\"),a=e.name.symbol;this.sb.push(\"\\n//@ts-ignore\\nfunction __wrapper_\"+a+\"(): void {\"),i.length>0&&this.sb.push(\" // Reading input bytes.\\n input(0);\\n let json_len = register_len(0);\\n if (json_len == U32.MAX_VALUE) {\\n panic();\\n }\\n let json = new Uint8Array(json_len as u32);\\n read_register(0, json.buffer);\\n const obj: Obj = JSON.parse(json);\"),\"void\"!==p(n)?this.sb.push(\" let result: \"+p(n)+\" = \"+a+\"(\"):this.sb.push(\" \"+a+\"(\"),i.length>0&&(this.sb[this.sb.length-1]+=i.map(function(e){return f(e)}).join(\", \")),this.sb[this.sb.length-1]+=\");\",\"void\"!==p(n)&&this.sb.push(\"\\n let encoder = new JSONEncoder();\\n if ((isString<\"+r+\">() || isNullable<\"+r+\">()) && result == null) {\\n encoder.setNull(null);\\n } else {\\n encode<\"+r+\">(encoder, result\"+(s?\"!\":\"\")+\", null);\\n }\\n let val: Uint8Array = encoder.serialize();\\n value_return(val.byteLength, val.buffer);\"),this.sb.push(\"}\\n\\nexport { __wrapper_\"+a+\" as \"+a+\" }\\n\")},t.prototype.typeName=function(e){if(!l(e))return o.ASTBuilder.build(e);var t=p((e=e).name);return e.isGeneric&&(t+=\"<\"+e.typeParameters.map(p).join(\", \")+\">\"),t},t.prototype.getFields=function(e){var t=l(e)?e:this.exportedClasses.get(p(e));return null==t?[]:t.members.filter(function(e){return e.kind==s.NodeKind.FIELDDECLARATION}).map(function(e){return{name:p(e.name),type:e.type,isGeneric:A(t,e)}})},t.prototype.build=function(e){var t=this;this.sb=[c.preamble],this.visit(e);var i=e.statements.map(function(e){var i=o.ASTBuilder.build(e);if(l(e)){var n=e;if(i=i.slice(0,i.lastIndexOf(\"}\")),n.members.filter(d).map(function(e){return e}).some(function(e){return null==e.type}))throw new Error(\"All Fields must have explict type declaration.\");var r=t.typeName(n);i+=\"\\n static decode(json: Uint8Array): \"+r+\" {\\n let value = instantiate<\"+r+\">(); // Allocate without constructor\\n return value.decode(json);\\n }\\n\\n decode(buf: V): \"+r+' {\\n let json: Obj;\\n if (buf instanceof Uint8Array) {\\n json = JSON.parse(buf);\\n }else {\\n assert(buf instanceof Obj, \"argument must be Uint8Array or Json Object\");\\n json = buf;\\n }\\n return this._decode(json);\\n }\\n\\n private _decode(obj: Obj): '+r+\" {\\n \"+function(e){return e.members.filter(d).map(function(e){var t=p(e.name);return f(e,\"this.\"+t+' = obj.has(\"'+t+'\") ? ')+\": this.\"+t+\";\"})}(n).join(\"\\n \")+'\\n return this;\\n }\\n\\n encode(_encoder: JSONEncoder | null = null, name: string | null = \"\"): JSONEncoder {\\n let encoder = (_encoder != null ? _encoder : new JSONEncoder())!;\\n encoder.pushObject(name);\\n '+function(e){return e.members.filter(d).map(function(e){var t=p(e.type),i=p(e.name);return\"encode<\"+t+\">(encoder, this.\"+i+', \"'+i+'\");'})}(n).join(\"\\n \")+\"\\n encoder.popObject();\\n return encoder\\n }\\n\\n serialize(): Uint8Array {\\n return this.encode().serialize();\\n }\\n\\n toJSON(): string {\\n return this.encode().toString();\\n }\\n}\"}return i});return this.sb.concat(i).join(\"\\n\")},t}(u.BaseVisitor);function f(e,t){return void 0===t&&(t=\"\"),t+\"decode<\"+p(e.type)+', Obj>(obj, \"'+p(e.name)+'\")'}function A(e,t){return null!=e.typeParameters&&e.typeParameters.some(function(e){return p(e.name)==p(t.type)})}t.afterParse=function(e,t,i){E.nearFiles(e).forEach(function(n){var r=n.text.substr(0,n.text.indexOf(\"\\n\")).includes(\"out\");e.donelog.delete(n.internalPath),e.seenlog.delete(n.internalPath),e.program.sources=e.program.sources.filter(function(e){return e!==n});var s=E.build(e,n);r&&t(\"out/\"+n.normalizedPath,s,i),e.parseFile(s,(h(n)?\"\":\"./\")+n.normalizedPath,h(n))})}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NONE=0]=\"NONE\",e[e.SIGN_EXTENSION=1]=\"SIGN_EXTENSION\",e[e.MUTABLE_GLOBAL=2]=\"MUTABLE_GLOBAL\",e[e.BULK_MEMORY=4]=\"BULK_MEMORY\",e[e.SIMD=8]=\"SIMD\",e[e.THREADS=16]=\"THREADS\"}(t.Feature||(t.Feature={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.WASM32=0]=\"WASM32\",e[e.WASM64=1]=\"WASM64\",e[e.JS=2]=\"JS\"}(t.Target||(t.Target={}))},function(e,t,i){\"use strict\";var n=this&&this.__decorate||function(e,t,i,n){var r,s=arguments.length,a=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)a=Reflect.decorate(e,t,i,n);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(a=(s<3?r(a):s>3?r(t,i,a):r(t,i))||a);return s>3&&a&&Object.defineProperty(t,i,a),a};Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(){}return e=n([()=>{}],e)}();t.Typeinfo=r,function(e){e[e.NONE=0]=\"NONE\",e[e.ARRAYBUFFERVIEW=1]=\"ARRAYBUFFERVIEW\",e[e.ARRAY=2]=\"ARRAY\",e[e.SET=4]=\"SET\",e[e.MAP=8]=\"MAP\",e[e.ACYCLIC=16]=\"ACYCLIC\",e[e.VALUE_ALIGN_0=32]=\"VALUE_ALIGN_0\",e[e.VALUE_ALIGN_1=64]=\"VALUE_ALIGN_1\",e[e.VALUE_ALIGN_2=128]=\"VALUE_ALIGN_2\",e[e.VALUE_ALIGN_3=256]=\"VALUE_ALIGN_3\",e[e.VALUE_ALIGN_4=512]=\"VALUE_ALIGN_4\",e[e.VALUE_SIGNED=1024]=\"VALUE_SIGNED\",e[e.VALUE_FLOAT=2048]=\"VALUE_FLOAT\",e[e.VALUE_NULLABLE=4096]=\"VALUE_NULLABLE\",e[e.VALUE_MANAGED=8192]=\"VALUE_MANAGED\",e[e.KEY_ALIGN_0=16384]=\"KEY_ALIGN_0\",e[e.KEY_ALIGN_1=32768]=\"KEY_ALIGN_1\",e[e.KEY_ALIGN_2=65536]=\"KEY_ALIGN_2\",e[e.KEY_ALIGN_3=131072]=\"KEY_ALIGN_3\",e[e.KEY_ALIGN_4=262144]=\"KEY_ALIGN_4\",e[e.KEY_SIGNED=524288]=\"KEY_SIGNED\",e[e.KEY_FLOAT=1048576]=\"KEY_FLOAT\",e[e.KEY_NULLABLE=2097152]=\"KEY_NULLABLE\",e[e.KEY_MANAGED=4194304]=\"KEY_MANAGED\"}(t.TypeinfoFlags||(t.TypeinfoFlags={}))},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,r=i(5),s=i(2),a=i(5);function o(e){switch(e){case n.INFO:return\"INFO\";case n.WARNING:return\"WARNING\";case n.ERROR:return\"ERROR\";default:return assert(!1),\"\"}}function u(e){switch(e){case n.INFO:return t.COLOR_BLUE;case n.WARNING:return t.COLOR_YELLOW;case n.ERROR:return t.COLOR_RED;default:return assert(!1),\"\"}}t.DiagnosticCode=a.DiagnosticCode,t.diagnosticCodeToString=a.diagnosticCodeToString,function(e){e[e.INFO=0]=\"INFO\",e[e.WARNING=1]=\"WARNING\",e[e.ERROR=2]=\"ERROR\"}(n=t.DiagnosticCategory||(t.DiagnosticCategory={})),t.diagnosticCategoryToString=o,t.COLOR_BLUE=\"\u001b[96m\",t.COLOR_YELLOW=\"\u001b[93m\",t.COLOR_RED=\"\u001b[91m\",t.COLOR_RESET=\"\u001b[0m\",t.diagnosticCategoryToColor=u;var c=function(){function e(e,t,i){this.range=null,this.relatedRange=null,this.code=e,this.category=t,this.message=i}return e.create=function(t,i,n,s,a){void 0===n&&(n=null),void 0===s&&(s=null),void 0===a&&(a=null);var o=r.diagnosticCodeToString(t);return null!=n&&(o=o.replace(\"{0}\",n)),null!=s&&(o=o.replace(\"{1}\",s)),null!=a&&(o=o.replace(\"{2}\",a)),new e(t,i,o)},e.createInfo=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.INFO,i,r)},e.createWarning=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.WARNING,i,r)},e.createError=function(t,i,r){return void 0===i&&(i=null),void 0===r&&(r=null),e.create(t,n.ERROR,i,r)},e.prototype.withRange=function(e){return this.range=e,this},e.prototype.withRelatedRange=function(e){return this.relatedRange=e,this},e.prototype.toString=function(){return this.range?o(this.category)+\" \"+this.code.toString(10)+': \"'+this.message+'\" in '+this.range.source.normalizedPath+\":\"+this.range.line.toString(10)+\":\"+this.range.column.toString(10):o(this.category)+\" \"+this.code.toString(10)+\": \"+this.message},e}();function _(e,i){void 0===i&&(i=!1);for(var n=e.source.text,r=n.length,a=e.start,o=e.end;a>0&&!s.isLineBreak(n.charCodeAt(a-1));)a--;for(;o=0&&t<64),i64_ne(i64_and(e,i64_shl(i64_one,i64_new(t))),i64_zero)},t.bitsetSet=function(e,t,i){return assert(t>=0&&t<64),i?i64_or(e,i64_shl(i64_one,i64_new(t))):i64_and(e,i64_not(i64_shl(i64_one,i64_new(t))))}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),function(e){e[e.NULL=0]=\"NULL\",e[e.LINEFEED=10]=\"LINEFEED\",e[e.CARRIAGERETURN=13]=\"CARRIAGERETURN\",e[e.LINESEPARATOR=8232]=\"LINESEPARATOR\",e[e.PARAGRAPHSEPARATOR=8233]=\"PARAGRAPHSEPARATOR\",e[e.NEXTLINE=133]=\"NEXTLINE\",e[e.SPACE=32]=\"SPACE\",e[e.NONBREAKINGSPACE=160]=\"NONBREAKINGSPACE\",e[e.ENQUAD=8192]=\"ENQUAD\",e[e.EMQUAD=8193]=\"EMQUAD\",e[e.ENSPACE=8194]=\"ENSPACE\",e[e.EMSPACE=8195]=\"EMSPACE\",e[e.THREEPEREMSPACE=8196]=\"THREEPEREMSPACE\",e[e.FOURPEREMSPACE=8197]=\"FOURPEREMSPACE\",e[e.SIXPEREMSPACE=8198]=\"SIXPEREMSPACE\",e[e.FIGURESPACE=8199]=\"FIGURESPACE\",e[e.PUNCTUATIONSPACE=8200]=\"PUNCTUATIONSPACE\",e[e.THINSPACE=8201]=\"THINSPACE\",e[e.HAIRSPACE=8202]=\"HAIRSPACE\",e[e.ZEROWIDTHSPACE=8203]=\"ZEROWIDTHSPACE\",e[e.NARROWNOBREAKSPACE=8239]=\"NARROWNOBREAKSPACE\",e[e.IDEOGRAPHICSPACE=12288]=\"IDEOGRAPHICSPACE\",e[e.MATHEMATICALSPACE=8287]=\"MATHEMATICALSPACE\",e[e.OGHAM=5760]=\"OGHAM\",e[e._=95]=\"_\",e[e._0=48]=\"_0\",e[e._1=49]=\"_1\",e[e._2=50]=\"_2\",e[e._3=51]=\"_3\",e[e._4=52]=\"_4\",e[e._5=53]=\"_5\",e[e._6=54]=\"_6\",e[e._7=55]=\"_7\",e[e._8=56]=\"_8\",e[e._9=57]=\"_9\",e[e.a=97]=\"a\",e[e.b=98]=\"b\",e[e.c=99]=\"c\",e[e.d=100]=\"d\",e[e.e=101]=\"e\",e[e.f=102]=\"f\",e[e.g=103]=\"g\",e[e.h=104]=\"h\",e[e.i=105]=\"i\",e[e.j=106]=\"j\",e[e.k=107]=\"k\",e[e.l=108]=\"l\",e[e.m=109]=\"m\",e[e.n=110]=\"n\",e[e.o=111]=\"o\",e[e.p=112]=\"p\",e[e.q=113]=\"q\",e[e.r=114]=\"r\",e[e.s=115]=\"s\",e[e.t=116]=\"t\",e[e.u=117]=\"u\",e[e.v=118]=\"v\",e[e.w=119]=\"w\",e[e.x=120]=\"x\",e[e.y=121]=\"y\",e[e.z=122]=\"z\",e[e.A=65]=\"A\",e[e.B=66]=\"B\",e[e.C=67]=\"C\",e[e.D=68]=\"D\",e[e.E=69]=\"E\",e[e.F=70]=\"F\",e[e.G=71]=\"G\",e[e.H=72]=\"H\",e[e.I=73]=\"I\",e[e.J=74]=\"J\",e[e.K=75]=\"K\",e[e.L=76]=\"L\",e[e.M=77]=\"M\",e[e.N=78]=\"N\",e[e.O=79]=\"O\",e[e.P=80]=\"P\",e[e.Q=81]=\"Q\",e[e.R=82]=\"R\",e[e.S=83]=\"S\",e[e.T=84]=\"T\",e[e.U=85]=\"U\",e[e.V=86]=\"V\",e[e.W=87]=\"W\",e[e.X=88]=\"X\",e[e.Y=89]=\"Y\",e[e.Z=90]=\"Z\",e[e.AMPERSAND=38]=\"AMPERSAND\",e[e.ASTERISK=42]=\"ASTERISK\",e[e.AT=64]=\"AT\",e[e.BACKSLASH=92]=\"BACKSLASH\",e[e.BACKTICK=96]=\"BACKTICK\",e[e.BAR=124]=\"BAR\",e[e.CARET=94]=\"CARET\",e[e.CLOSEBRACE=125]=\"CLOSEBRACE\",e[e.CLOSEBRACKET=93]=\"CLOSEBRACKET\",e[e.CLOSEPAREN=41]=\"CLOSEPAREN\",e[e.COLON=58]=\"COLON\",e[e.COMMA=44]=\"COMMA\",e[e.DOLLAR=36]=\"DOLLAR\",e[e.DOT=46]=\"DOT\",e[e.DOUBLEQUOTE=34]=\"DOUBLEQUOTE\",e[e.EQUALS=61]=\"EQUALS\",e[e.EXCLAMATION=33]=\"EXCLAMATION\",e[e.GREATERTHAN=62]=\"GREATERTHAN\",e[e.HASH=35]=\"HASH\",e[e.LESSTHAN=60]=\"LESSTHAN\",e[e.MINUS=45]=\"MINUS\",e[e.OPENBRACE=123]=\"OPENBRACE\",e[e.OPENBRACKET=91]=\"OPENBRACKET\",e[e.OPENPAREN=40]=\"OPENPAREN\",e[e.PERCENT=37]=\"PERCENT\",e[e.PLUS=43]=\"PLUS\",e[e.QUESTION=63]=\"QUESTION\",e[e.SEMICOLON=59]=\"SEMICOLON\",e[e.SINGLEQUOTE=39]=\"SINGLEQUOTE\",e[e.SLASH=47]=\"SLASH\",e[e.TILDE=126]=\"TILDE\",e[e.BACKSPACE=8]=\"BACKSPACE\",e[e.FORMFEED=12]=\"FORMFEED\",e[e.BYTEORDERMARK=65279]=\"BYTEORDERMARK\",e[e.TAB=9]=\"TAB\",e[e.VERTICALTAB=11]=\"VERTICALTAB\"}(t.CharCode||(t.CharCode={})),t.isLineBreak=function(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}},t.isWhiteSpace=function(e){switch(e){case 32:case 9:case 11:case 12:case 160:case 133:case 5760:case 8239:case 8287:case 12288:case 65279:return!0;default:return e>=8192&&e<=8203}},t.isDecimalDigit=function(e){return e>=48&&e<=57},t.isOctalDigit=function(e){return e>=48&&e<=55},t.isIdentifierStart=function(e){return e>=97&&e<=122||e>=65&&e<=90||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,n));var t},t.isKeywordCharacter=function(e){return e>=97&&e<=122},t.isIdentifierPart=function(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||95==e||36==e||e>127&&(!((t=e)<0||t>65535)&&s(t,r));var t};var n=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],r=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];function s(e,t){if(e>1),(n=t[i-=1&i])<=e&&e<=t[i+1])return!0;e=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0}),t.makeArray=function(e){if(void 0===e&&(e=null),e){for(var t=new Array(e.length),i=0,n=e.length;i0||n=0;)if(e.charCodeAt(s)==r){i-s==3&&46==e.charCodeAt(s+1)&&46==e.charCodeAt(s+2)||(e=t?e.substring(0,s):e.substring(0,s)+e.substring(i+3),n-=i+3-s,i=s-1);break}if(s<0&&i>0&&(2!=i||46!=e.charCodeAt(0)||46!=e.charCodeAt(1))){n=(e=e.substring(i+4)).length;continue}}}i++}return n>0?e:\".\"}function a(e){var t=e.length;if(t<=1){if(0==t)return\".\";if(e.charCodeAt(0)==r)return e}for(;--t>0;)if(e.charCodeAt(t)==r)return e.substring(0,t);return\".\"}t.normalizePath=s,t.resolvePath=function(e,t){return e.startsWith(\"std/\")?e:s(a(t)+n.PATH_DELIMITER+e)},t.dirname=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=\" \",r=\" \",s=\" \";t.indent=function(e,t){for(;t>=4;)e.push(s),t-=4;t>=2&&(e.push(r),t-=2),t&&e.push(n)}},function(e,t,i){\"use strict\";function n(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function r(e,t,i){t[i]=e,t[i+1]=e>>>8,t[i+2]=e>>>16,t[i+3]=e>>>24}function s(e,t){var i=n(e,t),r=n(e,t+4);return i64_new(i,r)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.readI8=function(e,t){return e[t]},t.writeI8=function(e,t,i){t[i]=e},t.readI16=function(e,t){return e[t]|e[t+1]<<8},t.writeI16=function(e,t,i){t[i]=e,t[i+1]=e>>>8},t.readI32=n,t.writeI32=r,t.readI64=s,t.writeI64=function(e,t,i){r(i64_low(e),t,i),r(i64_high(e),t,i+4)},t.readF32=function(e,t){return i32_as_f32(n(e,t))},t.writeF32=function(e,t,i){r(f32_as_i32(e),t,i)},t.readF64=function(e,t){return i64_as_f64(s(e,t))},t.writeF64=function(e,t,i){var n=f64_as_i64(e);r(i64_low(n),t,i),r(i64_high(n),t,i+4)}},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=i(0);i(18),i(19),i(20);var r=i(1),s=i(2),a=i(4),o=function(){function e(){this.sb=[],this.indentLevel=0}return e.build=function(t){var i=new e;return i.visitNode(t),i.finish()},e.prototype.visitNode=function(e){switch(e.kind){case n.NodeKind.SOURCE:this.visitSource(e);break;case n.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case n.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case n.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case n.NodeKind.FALSE:case n.NodeKind.NULL:case n.NodeKind.SUPER:case n.NodeKind.THIS:case n.NodeKind.TRUE:case n.NodeKind.CONSTRUCTOR:case n.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case n.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case n.NodeKind.BINARY:this.visitBinaryExpression(e);break;case n.NodeKind.CALL:this.visitCallExpression(e);break;case n.NodeKind.CLASS:this.visitClassExpression(e);break;case n.NodeKind.COMMA:this.visitCommaExpression(e);break;case n.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case n.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case n.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case n.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case n.NodeKind.NEW:this.visitNewExpression(e);break;case n.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case n.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case n.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case n.NodeKind.BLOCK:this.visitBlockStatement(e);break;case n.NodeKind.BREAK:this.visitBreakStatement(e);break;case n.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case n.NodeKind.DO:this.visitDoStatement(e);break;case n.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case n.NodeKind.EXPORT:this.visitExportStatement(e);break;case n.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case n.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case n.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case n.NodeKind.FOR:this.visitForStatement(e);break;case n.NodeKind.IF:this.visitIfStatement(e);break;case n.NodeKind.IMPORT:this.visitImportStatement(e);break;case n.NodeKind.RETURN:this.visitReturnStatement(e);break;case n.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case n.NodeKind.THROW:this.visitThrowStatement(e);break;case n.NodeKind.TRY:this.visitTryStatement(e);break;case n.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case n.NodeKind.WHILE:this.visitWhileStatement(e);break;case n.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case n.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case n.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case n.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case n.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case n.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case n.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case n.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case n.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case n.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case n.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case n.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case n.NodeKind.DECORATOR:this.serializeDecorator(e);break;case n.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case n.NodeKind.PARAMETER:this.serializeParameter(e);break;case n.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},e.prototype.visitSource=function(e){for(var t=e.statements,i=0,n=t.length;i\")}e.isNullable&&n.push(\" | null\")}},e.prototype.visitFunctionTypeNode=function(e){var t=e.isNullable,i=this.sb;i.push(t?\"((\":\"(\");var n=e.explicitThisType;n&&(i.push(\"this: \"),this.visitTypeNode(n));var r=e.parameters,s=r.length;if(s){n&&i.push(\", \"),this.serializeParameter(r[0]);for(var a=1;a \"),this.visitTypeNode(o)):i.push(\") => void\"),t&&i.push(\") | null\")},e.prototype.visitTypeParameter=function(e){this.visitIdentifierExpression(e.name);var t=e.extendsType;t&&(this.sb.push(\" extends \"),this.visitTypeNode(t));var i=e.defaultType;i&&(this.sb.push(\"=\"),this.visitTypeNode(i))},e.prototype.visitIdentifierExpression=function(e){e.isQuoted?this.visitStringLiteral(e.text):this.sb.push(e.text)},e.prototype.visitArrayLiteralExpression=function(e){var t=this.sb;t.push(\"[\");var i=e.elementExpressions,n=i.length;if(n){i[0]&&this.visitNode(i[0]);for(var r=1;r\"),this.visitNode(e.expression);break;case n.AssertionKind.AS:this.visitNode(e.expression),t.push(\" as \"),this.visitTypeNode(assert(e.toType));break;case n.AssertionKind.NONNULL:this.visitNode(e.expression),t.push(\"!\");break;default:assert(!1)}},e.prototype.visitBinaryExpression=function(e){var t=this.sb;this.visitNode(e.left),t.push(\" \"),t.push(a.operatorTokenToString(e.operator)),t.push(\" \"),this.visitNode(e.right)},e.prototype.visitCallExpression=function(e){var t=this.sb;this.visitNode(e.expression);var i=e.typeArguments;if(i){var n=i.length;if(n){t.push(\"<\"),this.visitTypeNode(i[0]);for(var r=1;r(\")}}else t.push(\"(\");var s=e.arguments,a=s.length;if(a){this.visitNode(s[0]);for(r=1;rn&&i.push(e.substring(n,n=s+1)),i.push(\"\\\\0\"),n=++s;break;case 8:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\b\");break;case 9:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\t\");break;case 10:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\n\");break;case 11:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\v\");break;case 12:s>n&&i.push(e.substring(n,s)),n=++s,i.push(\"\\\\f\");break;case 13:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\r\"),n=++s;break;case 34:t?++s:(s>n&&i.push(e.substring(n,s)),i.push('\\\\\"'),n=++s);break;case 39:t?(s>n&&i.push(e.substring(n,s)),i.push(\"\\\\'\"),n=++s):++s;break;case 92:s>n&&i.push(e.substring(n,s)),i.push(\"\\\\\\\\\"),n=++s;break;default:++s}s>n&&i.push(e.substring(n,s)),i.push(r)},e.prototype.visitStringLiteralExpression=function(e){this.visitStringLiteral(e.value)},e.prototype.visitRegexpLiteralExpression=function(e){var t=this.sb;t.push(\"/\"),t.push(e.pattern),t.push(\"/\"),t.push(e.patternFlags)},e.prototype.visitNewExpression=function(e){this.sb.push(\"new \"),this.visitCallExpression(e)},e.prototype.visitParenthesizedExpression=function(e){var t=this.sb;t.push(\"(\"),this.visitNode(e.expression),t.push(\")\")},e.prototype.visitPropertyAccessExpression=function(e){this.visitNode(e.expression),this.sb.push(\".\"),this.visitIdentifierExpression(e.property)},e.prototype.visitTernaryExpression=function(e){var t=this.sb;this.visitNode(e.condition),t.push(\" ? \"),this.visitNode(e.ifThen),t.push(\" : \"),this.visitNode(e.ifElse)},e.prototype.visitUnaryExpression=function(e){switch(e.kind){case n.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case n.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;default:assert(!1)}},e.prototype.visitUnaryPostfixExpression=function(e){this.visitNode(e.operand),this.sb.push(a.operatorTokenToString(e.operator))},e.prototype.visitUnaryPrefixExpression=function(e){this.sb.push(a.operatorTokenToString(e.operator)),this.visitNode(e.operand)},e.prototype.visitNodeAndTerminate=function(e){this.visitNode(e);var t=this.sb;if(t.length&&e.kind!=n.NodeKind.VARIABLE&&e.kind!=n.NodeKind.EXPRESSION){var i=t[t.length-1],r=i.length-1;r>=0&&(125==i.charCodeAt(r)||59==i.charCodeAt(r))?t.push(\"\\n\"):t.push(\";\\n\")}else t.push(\";\\n\")},e.prototype.visitBlockStatement=function(e){var t=this.sb,i=e.statements,n=i.length;if(n){t.push(\"{\\n\");for(var r=++this.indentLevel,a=0;a\")}var _=e.extendsType;_&&(u.push(\" extends \"),this.visitTypeNode(_));var p=e.implementsTypes;if(p){var h=p.length;if(h){u.push(\" implements \"),this.visitTypeNode(p[0]);for(a=1;a\")}}if(2==e.arrowKind){var u=i.parameters;assert(1==u.length),assert(!i.explicitThisType),this.serializeParameter(u[0])}else{t.push(\"(\");var c=(u=i.parameters).length,_=i.explicitThisType;if(_&&(t.push(\"this: \"),this.visitTypeNode(_)),c){_&&t.push(\", \"),this.serializeParameter(u[0]);for(o=1;o \"),this.visitNode(p)):(assert(!n.isTypeOmitted(h)),t.push(\" => \"),this.visitTypeNode(h)):(n.isTypeOmitted(h)||e.isAny(r.CommonFlags.CONSTRUCTOR|r.CommonFlags.SET)?t.push(\")\"):(t.push(\"): \"),this.visitTypeNode(h)),p&&(t.push(\" \"),this.visitNode(p)))},e.prototype.visitIfStatement=function(e){var t=this.sb;t.push(\"if (\"),this.visitNode(e.condition),t.push(\") \");var i=e.ifTrue;this.visitNode(i),i.kind!=n.NodeKind.BLOCK&&t.push(\";\\n\");var r=e.ifFalse;r&&(i.kind==n.NodeKind.BLOCK?t.push(\" else \"):t.push(\"else \"),this.visitNode(r))},e.prototype.visitImportDeclaration=function(e){var t=e.foreignName,i=e.name;this.visitIdentifierExpression(t),t.text!=i.text&&(this.sb.push(\" as \"),this.visitIdentifierExpression(i))},e.prototype.visitImportStatement=function(e){var t=this.sb;t.push(\"import \");var i=e.declarations,n=e.namespaceName;if(i){var r=i.length;if(r){t.push(\"{\\n\");var a=++this.indentLevel;s.indent(t,a),this.visitImportDeclaration(i[0]);for(var o=1;o\")}var u=e.extendsType;u&&(a.push(\" extends \"),this.visitTypeNode(u)),a.push(\" {\\n\");var c=++this.indentLevel,_=e.members;for(n=0,r=_.length;n\")}}r.push(\" = \"),this.visitTypeNode(e.type)},e.prototype.visitVariableDeclaration=function(e){this.visitIdentifierExpression(e.name);var t=e.type,i=this.sb;e.flags&r.CommonFlags.DEFINITE_ASSIGNMENT&&i.push(\"!\"),t&&(i.push(\": \"),this.visitTypeNode(t));var n=e.initializer;n&&(i.push(\" = \"),this.visitNode(n))},e.prototype.visitVariableStatement=function(e){var t=e.decorators;if(t)for(var i=0,n=t.length;i>24},{MIN_VALUE:{value:-128,writable:!1},MAX_VALUE:{value:127,writable:!1}}),Object.defineProperties(t.i16=function(e){return e<<16>>16},{MIN_VALUE:{value:-32768,writable:!1},MAX_VALUE:{value:32767,writable:!1}}),Object.defineProperties(t.i32=t.isize=function(e){return 0|e},{MIN_VALUE:{value:-2147483648,writable:!1},MAX_VALUE:{value:2147483647,writable:!1}}),Object.defineProperties(t.u8=function(e){return 255&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:255,writable:!1}}),Object.defineProperties(t.u16=function(e){return 65535&e},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:65535,writable:!1}}),Object.defineProperties(t.u32=t.usize=function(e){return e>>>0},{MIN_VALUE:{value:0,writable:!1},MAX_VALUE:{value:4294967295,writable:!1}}),Object.defineProperties(t.bool=function(e){return!!e},{MIN_VALUE:{value:!1,writable:!1},MAX_VALUE:{value:!0,writable:!1}}),Object.defineProperties(t.f32=function(e){return Math.fround(e)},{EPSILON:{value:Math.fround(1.1920929e-7),writable:!1},MIN_VALUE:{value:Math.fround(14012985e-52),writable:!1},MAX_VALUE:{value:Math.fround(34028235e31),writable:!1},MIN_NORMAL_VALUE:{value:Math.fround(117549435e-46),writable:!1},MIN_SAFE_INTEGER:{value:-16777215,writable:!1},MAX_SAFE_INTEGER:{value:16777215,writable:!1}}),Object.defineProperties(t.f64=function(e){return+e},{EPSILON:{value:2220446049250313e-31,writable:!1},MIN_VALUE:{value:5e-324,writable:!1},MAX_VALUE:{value:17976931348623157e292,writable:!1},MIN_NORMAL_VALUE:{value:22250738585072014e-324,writable:!1},MIN_SAFE_INTEGER:{value:-9007199254740991,writable:!1},MAX_SAFE_INTEGER:{value:9007199254740991,writable:!1}}),t.clz=Math.clz32,t.ctz=function(e){var t=Math.clz32(e&-e);return e?31-t:t},t.popcnt=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.rotl=function(e,t){return e<<(t&=31)|e>>>32-t},t.rotr=function(e,t){return e>>>(t&=31)|e<<32-t},t.abs=Math.abs,t.max=Math.max,t.min=Math.min,t.ceil=Math.ceil,t.floor=Math.floor,t.nearest=function(e){return.5===Math.abs(e-Math.trunc(e))?2*Math.round(.5*e):Math.round(e)},t.select=function(e,t,i){return i?e:t},t.sqrt=Math.sqrt,t.trunc=Math.trunc,t.copysign=function(e,t){return Math.abs(e)*Math.sign(t)},t.bswap=function(e){var t=e>>8&16711935,i=(16711935&e)<<8;return(t=(e=t|i)>>16&65535)|(i=(65535&e)<<16)},t.bswap16=function(e){return e<<8&65280|e>>8&255|4294901760&e},r.prototype=Object.create(Error.prototype),r.prototype.name=\"UnreachableError\",r.prototype.message=\"unreachable\",t.unreachable=function(){throw new r},s.prototype=Object.create(Error.prototype),s.prototype.name=\"AssertionError\",t.assert=function(e,t){if(e)return e;throw new s(t)},t.changetype=function(e){return e},String.fromCharCodes=function(e){return String.fromCharCode.apply(String,e)},String.fromCodePoints=function(e){return String.fromCodePoint.apply(String,e)},String.prototype.replaceAll||Object.defineProperty(String.prototype,\"replaceAll\",{value:function(e,t){var i=this.split(e).join(t);return e.length||(i=t+i+t),i}}),t.isInteger=Number.isInteger,t.isFloat=function(e){return\"number\"==typeof e},t.isNullable=function(e){return!0},t.isReference=function(e){return\"object\"==typeof e||\"string\"==typeof e},t.isFunction=function(e){return\"function\"==typeof e},t.isString=function(e){return\"string\"==typeof e||e instanceof String},t.isArray=Array.isArray,t.isArrayLike=function(e){return e&&\"object\"==typeof e&&\"number\"==typeof e.length&&e.length>=0&&Math.trunc(e.length)===e.length},Array.create=function(e){var t=new Array(e);return t.length=0,t},t.isDefined=function(e){return void 0!==e},t.isConstant=function(e){return!1},t.unchecked=function(e){return e},t.fmod=function(e,t){return e%t},t.fmodf=function(e,t){return Math.fround(e%t)},t.JSMath=Math;try{Object.defineProperties(t.JSMath,{sincos_sin:{value:0,writable:!0},sincos_cos:{value:0,writable:!0},signbit:{value:function(e){return i[0]=e,Boolean(n[1]>>>31&e==e)}},sincos:{value:function(e){this.sincos_sin=Math.sin(e),this.sincos_cos=Math.cos(e)}}})}catch(e){}t.memory=(()=>{var e=new Uint8Array(0),i=0;return{allocate:t.__memory_allocate||function(t){if(!(t>>>=0))return 0;if(i+t>e.length){var n=e;(e=new Uint8Array(Math.max(65536,e.length+t,2*e.length))).set(n)}var r=i;return 7&(i+=t)&&(i=1+(7|i)),r},fill:t.__memory_fill||function(t,i,n){e.fill(i,t,t+n)},free:t.__memory_free||function(e){},copy:t.__memory_copy||function(t,i,n){e.copyWithin(t,i,i+n)},reset:t.__memory_reset||function(){e=new Uint8Array(0),i=0}}})(),t.store=t.__store||function(e,t,i){HEAP[(0|e)+(0|i)]=t},t.load=t.__load||function(e,t){return HEAP[(0|e)+(0|t)]},t.unmanaged=function(){}}).call(this,i(3))},function(e,t,i){(function(e){const t=new Float64Array(1),i=new Float32Array(t.buffer),n=new Int32Array(t.buffer);e.f32_as_i32=function(e){return i[0]=e,n[0]},e.i32_as_f32=function(e){return n[0]=e,i[0]},e.f64_as_i64=function(e){return t[0]=e,i64_new(n[0],n[1])},e.i64_as_f64=function(e){return n[0]=i64_low(e),n[1]=i64_high(e),t[0]}}).call(this,i(3))},function(e,t,i){(function(e){const t=e.Long||i(21);e.i64_zero=t.ZERO,e.i64_one=t.ONE,e.i64_new=function(e,i){return t.fromBits(e,i)},e.i64_low=function(e){return e.low},e.i64_high=function(e){return e.high},e.i64_add=function(e,t){return e.add(t)},e.i64_sub=function(e,t){return e.sub(t)},e.i64_mul=function(e,t){return e.mul(t)},e.i64_div=function(e,t){return e.div(t)},e.i64_div_u=function(e,t){return e.toUnsigned().div(t.toUnsigned()).toSigned()},e.i64_rem=function(e,t){return e.mod(t)},e.i64_rem_u=function(e,t){return e.toUnsigned().mod(t.toUnsigned()).toSigned()},e.i64_and=function(e,t){return e.and(t)},e.i64_or=function(e,t){return e.or(t)},e.i64_xor=function(e,t){return e.xor(t)},e.i64_shl=function(e,t){return e.shl(t)},e.i64_shr=function(e,t){return e.shr(t)},e.i64_shr_u=function(e,t){return e.shru(t)},e.i64_not=function(e){return e.not()},e.i64_eq=function(e,t){return e.eq(t)},e.i64_ne=function(e,t){return e.ne(t)},e.i64_align=function(e,i){assert(i&&0==(i&i-1));var n=t.fromInt(i-1);return e.add(n).and(n.not())},e.i64_is_i8=function(e){return 0===e.high&&e.low>=0&&e.low<=i8.MAX_VALUE||-1===e.high&&e.low>=i8.MIN_VALUE&&e.low<0},e.i64_is_i16=function(e){return 0===e.high&&e.low>=0&&e.low<=i16.MAX_VALUE||-1===e.high&&e.low>=i16.MIN_VALUE&&e.low<0},e.i64_is_i32=function(e){return 0===e.high&&e.low>=0||-1===e.high&&e.low<0},e.i64_is_u8=function(e){return 0===e.high&&e.low>=0&&e.low<=u8.MAX_VALUE},e.i64_is_u16=function(e){return 0===e.high&&e.low>=0&&e.low<=u16.MAX_VALUE},e.i64_is_u32=function(e){return 0===e.high},e.i64_is_bool=function(e){return 0===e.high&&(0===e.low||1===e.low)};const n=t.fromNumber(f32.MIN_SAFE_INTEGER),r=t.fromNumber(f32.MAX_SAFE_INTEGER);e.i64_is_f32=function(e){return e.gte(n)&&e.lte(r)};const s=t.fromNumber(f64.MIN_SAFE_INTEGER),a=t.fromNumber(f64.MAX_SAFE_INTEGER);e.i64_is_f64=function(e){return e.gte(s)&&e.lte(a)},e.i64_to_f32=function(t){return e.Math.fround(t.toNumber())},e.i64_to_f64=function(e){return e.toNumber()},e.i64_to_string=function(e,t){return(t?e.toUnsigned():e).toString(10)}}).call(this,i(3))},function(e,t){e.exports=n;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,i){this.low=0|e,this.high=0|t,this.unsigned=!!i}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,\"__isLong__\",{value:!0}),n.isLong=r;var s={},a={};function o(e,t){var i,n,r;return t?(r=0<=(e>>>=0)&&e<256)&&(n=a[e])?n:(i=c(e,(0|e)<0?-1:0,!0),r&&(a[e]=i),i):(r=-128<=(e|=0)&&e<128)&&(n=s[e])?n:(i=c(e,e<0?-1:0,!1),r&&(s[e]=i),i)}function u(e,t){if(isNaN(e))return t?v:A;if(t){if(e<0)return v;if(e>=d)return S}else{if(e<=-E)return R;if(e+1>=E)return y}return e<0?u(-e,t).neg():c(e%l|0,e/l|0,t)}function c(e,t,i){return new n(e,t,i)}n.fromInt=o,n.fromNumber=u,n.fromBits=c;var _=Math.pow;function p(e,t,i){if(0===e.length)throw Error(\"empty string\");if(\"NaN\"===e||\"Infinity\"===e||\"+Infinity\"===e||\"-Infinity\"===e)return A;if(\"number\"==typeof t?(i=t,t=!1):t=!!t,(i=i||10)<2||360)throw Error(\"interior hyphen\");if(0===n)return p(e.substring(1),t,i).neg();for(var r=u(_(i,8)),s=A,a=0;a>>0:this.low},g.toNumber=function(){return this.unsigned?(this.high>>>0)*l+(this.low>>>0):this.high*l+(this.low>>>0)},g.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=o).isZero())return c+a;for(;c.length<6;)c=\"0\"+c;a=\"\"+c+a}},g.getHighBits=function(){return this.high},g.getHighBitsUnsigned=function(){return this.high>>>0},g.getLowBits=function(){return this.low},g.getLowBitsUnsigned=function(){return this.low>>>0},g.getNumBitsAbs=function(){if(this.isNegative())return this.eq(R)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},g.isOdd=function(){return 1==(1&this.low)},g.isEven=function(){return 0==(1&this.low)},g.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)},g.eq=g.equals,g.notEquals=function(e){return!this.eq(e)},g.neq=g.notEquals,g.ne=g.notEquals,g.lessThan=function(e){return this.comp(e)<0},g.lt=g.lessThan,g.lessThanOrEqual=function(e){return this.comp(e)<=0},g.lte=g.lessThanOrEqual,g.le=g.lessThanOrEqual,g.greaterThan=function(e){return this.comp(e)>0},g.gt=g.greaterThan,g.greaterThanOrEqual=function(e){return this.comp(e)>=0},g.gte=g.greaterThanOrEqual,g.ge=g.greaterThanOrEqual,g.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),i=e.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},g.comp=g.compare,g.negate=function(){return!this.unsigned&&this.eq(R)?R:this.not().add(m)},g.neg=g.negate,g.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,i=65535&this.high,n=this.low>>>16,s=65535&this.low,a=e.high>>>16,o=65535&e.high,u=e.low>>>16,_=0,p=0,l=0,d=0;return l+=(d+=s+(65535&e.low))>>>16,p+=(l+=n+u)>>>16,_+=(p+=i+o)>>>16,_+=t+a,c((l&=65535)<<16|(d&=65535),(_&=65535)<<16|(p&=65535),this.unsigned)},g.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},g.sub=g.subtract,g.multiply=function(e){if(this.isZero())return A;if(r(e)||(e=h(e)),i)return c(i.mul(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned);if(e.isZero())return A;if(this.eq(R))return e.isOdd()?R:A;if(e.eq(R))return this.isOdd()?R:A;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(f)&&e.lt(f))return u(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,s=this.low>>>16,a=65535&this.low,o=e.high>>>16,_=65535&e.high,p=e.low>>>16,l=65535&e.low,d=0,E=0,v=0,m=0;return v+=(m+=a*l)>>>16,E+=(v+=s*l)>>>16,v&=65535,E+=(v+=a*p)>>>16,d+=(E+=n*l)>>>16,E&=65535,d+=(E+=s*p)>>>16,E&=65535,d+=(E+=a*_)>>>16,d+=t*l+n*p+s*_+a*o,c((v&=65535)<<16|(m&=65535),(d&=65535)<<16|(E&=65535),this.unsigned)},g.mul=g.multiply,g.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error(\"division by zero\");var t,n,s;if(i)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?c((this.unsigned?i.div_u:i.div_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?v:A;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return v;if(e.gt(this.shru(1)))return T;s=v}else{if(this.eq(R))return e.eq(m)||e.eq(N)?R:e.eq(R)?m:(t=this.shr(1).div(e).shl(1)).eq(A)?e.isNegative()?m:N:(n=this.sub(e.mul(t)),s=t.add(n.div(e)));if(e.eq(R))return this.unsigned?v:A;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=A}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:_(2,a-48),p=u(t),l=p.mul(e);l.isNegative()||l.gt(n);)l=(p=u(t-=o,this.unsigned)).mul(e);p.isZero()&&(p=m),s=s.add(p),n=n.sub(l)}return s},g.div=g.divide,g.modulo=function(e){return r(e)||(e=h(e)),i?c((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,e.low,e.high),i.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},g.mod=g.modulo,g.rem=g.modulo,g.not=function(){return c(~this.low,~this.high,this.unsigned)},g.and=function(e){return r(e)||(e=h(e)),c(this.low&e.low,this.high&e.high,this.unsigned)},g.or=function(e){return r(e)||(e=h(e)),c(this.low|e.low,this.high|e.high,this.unsigned)},g.xor=function(e){return r(e)||(e=h(e)),c(this.low^e.low,this.high^e.high,this.unsigned)},g.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?c(this.low<>>32-e,this.unsigned):c(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):c(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},g.shr=g.shiftRight,g.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0===(e&=63))return this;var t=this.high;return e<32?c(this.low>>>e|t<<32-e,t>>>e,this.unsigned):c(32===e?t:t>>>e-32,0,this.unsigned)},g.shru=g.shiftRightUnsigned,g.shr_u=g.shiftRightUnsigned,g.toSigned=function(){return this.unsigned?c(this.low,this.high,!1):this},g.toUnsigned=function(){return this.unsigned?this:c(this.low,this.high,!0)},g.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},g.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},g.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,i){return i?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},function(e,t,i){\"use strict\";var n,r=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])})(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=this&&this.__values||function(e){var t=\"function\"==typeof Symbol&&e[Symbol.iterator],i=0;return t?t.call(e):{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}};Object.defineProperty(t,\"__esModule\",{value:!0});var a=i(0),o=function(e){function t(t){var i=e.call(this,t)||this;return i.depth=0,i}return r(t,e),t.prototype._visit=function(e){switch(e.kind){case a.NodeKind.SOURCE:this.visitSource(e);break;case a.NodeKind.NAMEDTYPE:this.visitNamedTypeNode(e);break;case a.NodeKind.FUNCTIONTYPE:this.visitFunctionTypeNode(e);break;case a.NodeKind.TYPENAME:this.visitTypeName(e);case a.NodeKind.TYPEPARAMETER:this.visitTypeParameter(e);break;case a.NodeKind.FALSE:case a.NodeKind.NULL:case a.NodeKind.SUPER:case a.NodeKind.THIS:case a.NodeKind.TRUE:case a.NodeKind.CONSTRUCTOR:case a.NodeKind.IDENTIFIER:this.visitIdentifierExpression(e);break;case a.NodeKind.ASSERTION:this.visitAssertionExpression(e);break;case a.NodeKind.BINARY:this.visitBinaryExpression(e);break;case a.NodeKind.CALL:this.visitCallExpression(e);break;case a.NodeKind.CLASS:this.visitClassExpression(e);break;case a.NodeKind.COMMA:this.visitCommaExpression(e);break;case a.NodeKind.ELEMENTACCESS:this.visitElementAccessExpression(e);break;case a.NodeKind.FUNCTION:this.visitFunctionExpression(e);break;case a.NodeKind.INSTANCEOF:this.visitInstanceOfExpression(e);break;case a.NodeKind.LITERAL:this.visitLiteralExpression(e);break;case a.NodeKind.NEW:this.visitNewExpression(e);break;case a.NodeKind.PARENTHESIZED:this.visitParenthesizedExpression(e);break;case a.NodeKind.PROPERTYACCESS:this.visitPropertyAccessExpression(e);break;case a.NodeKind.TERNARY:this.visitTernaryExpression(e);break;case a.NodeKind.UNARYPOSTFIX:this.visitUnaryPostfixExpression(e);break;case a.NodeKind.UNARYPREFIX:this.visitUnaryPrefixExpression(e);break;case a.NodeKind.BLOCK:this.visitBlockStatement(e);break;case a.NodeKind.BREAK:this.visitBreakStatement(e);break;case a.NodeKind.CONTINUE:this.visitContinueStatement(e);break;case a.NodeKind.DO:this.visitDoStatement(e);break;case a.NodeKind.EMPTY:this.visitEmptyStatement(e);break;case a.NodeKind.EXPORT:this.visitExportStatement(e);break;case a.NodeKind.EXPORTDEFAULT:this.visitExportDefaultStatement(e);break;case a.NodeKind.EXPORTIMPORT:this.visitExportImportStatement(e);break;case a.NodeKind.EXPRESSION:this.visitExpressionStatement(e);break;case a.NodeKind.FOR:this.visitForStatement(e);break;case a.NodeKind.IF:this.visitIfStatement(e);break;case a.NodeKind.IMPORT:this.visitImportStatement(e);break;case a.NodeKind.RETURN:this.visitReturnStatement(e);break;case a.NodeKind.SWITCH:this.visitSwitchStatement(e);break;case a.NodeKind.THROW:this.visitThrowStatement(e);break;case a.NodeKind.TRY:this.visitTryStatement(e);break;case a.NodeKind.VARIABLE:this.visitVariableStatement(e);break;case a.NodeKind.WHILE:this.visitWhileStatement(e);break;case a.NodeKind.CLASSDECLARATION:this.visitClassDeclaration(e);break;case a.NodeKind.ENUMDECLARATION:this.visitEnumDeclaration(e);break;case a.NodeKind.ENUMVALUEDECLARATION:this.visitEnumValueDeclaration(e);break;case a.NodeKind.FIELDDECLARATION:this.visitFieldDeclaration(e);break;case a.NodeKind.FUNCTIONDECLARATION:this.visitFunctionDeclaration(e);break;case a.NodeKind.IMPORTDECLARATION:this.visitImportDeclaration(e);break;case a.NodeKind.INDEXSIGNATUREDECLARATION:this.visitIndexSignatureDeclaration(e);break;case a.NodeKind.INTERFACEDECLARATION:this.visitInterfaceDeclaration(e);break;case a.NodeKind.METHODDECLARATION:this.visitMethodDeclaration(e);break;case a.NodeKind.NAMESPACEDECLARATION:this.visitNamespaceDeclaration(e);break;case a.NodeKind.TYPEDECLARATION:this.visitTypeDeclaration(e);break;case a.NodeKind.VARIABLEDECLARATION:this.visitVariableDeclaration(e);break;case a.NodeKind.DECORATOR:this.visitDecoratorNode(e);break;case a.NodeKind.EXPORTMEMBER:this.visitExportMember(e);break;case a.NodeKind.PARAMETER:this.visitParameter(e);break;case a.NodeKind.SWITCHCASE:this.visitSwitchCase(e);break;default:assert(!1)}},t.prototype.visitSource=function(e){var t,i;try{for(var n=s(e.statements),r=n.next();!r.done;r=n.next()){var a=r.value;this.depth++,this.visit(a),this.depth--}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}},t.prototype.visitTypeNode=function(e){},t.prototype.visitTypeName=function(e){this.visit(e.identifier),e.next&&this.visit(e)},t.prototype.visitNamedTypeNode=function(e){this.visit(e.name),this.visit(e.typeArguments)},t.prototype.visitFunctionTypeNode=function(e){var t,i;try{for(var n=s(e.parameters),r=n.next();!r.done;r=n.next()){var a=r.value;this.visit(a)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(i=n.return)&&i.call(n)}finally{if(t)throw t.error}}this.visit(e.returnType)},t.prototype.visitTypeParameter=function(e){this.visit(e.name),e.extendsType&&this.visit(e.extendsType),e.defaultType&&this.visit(e.defaultType)},t.prototype.visitIdentifierExpression=function(e){},t.prototype.visitArrayLiteralExpression=function(e){var t=this;e.elementExpressions.map(function(e){e&&t.visit(e)})},t.prototype.visitObjectLiteralExpression=function(e){if(e.values&&e.names){assert(e.values.length==e.names.length);for(var t=0;t=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}}},r=this&&this.__read||function(e,t){var i=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,s=i.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)a.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=s.return)&&i.call(s)}finally{if(r)throw r.error}}return a};Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(){}return e.prototype.writeString=function(e){},e.prototype.writeNode=function(e){},e}();t.DefaultWriter=s;var a=function(){function e(e){void 0===e&&(e=new s),this.writer=e}return e.prototype.writeString=function(e){return this.writeString(e)},e.prototype.writeNode=function(e){this.writer.writeNode(e)},e.prototype.visit=function(e){var t,i,s,a,o,u=this;if(null!=e)if(e instanceof Array)e.map(function(e){u.visit(e)});else if(e instanceof Map)try{for(var c=n(e.entries()),_=c.next();!_.done;_=c.next()){var p=r(_.value,2),h=(p[0],p[1]);this.visit(h)}}catch(e){t={error:e}}finally{try{_&&!_.done&&(i=c.return)&&i.call(c)}finally{if(t)throw t.error}}else if(null!=(o=e)&&\"function\"==typeof o[Symbol.iterator])try{for(var l=n(e),d=l.next();!d.done;d=l.next()){h=d.value;this.visit(h)}}catch(e){s={error:e}}finally{try{d&&!d.done&&(a=l.return)&&a.call(l)}finally{if(s)throw s.error}}else this._visit(e)},e}();t.AbstractVisitor=a},function(e,t,i){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.preamble='import { base64 } from \"near-runtime-ts\";\\nimport { JSONEncoder } from \"assemblyscript-json\";\\nimport { JSONDecoder, ThrowingJSONHandler, DecoderState } from \"assemblyscript-json\";\\n'}])});","if(typeof __WEBPACK_EXTERNAL_MODULE__11__ === 'undefined') {var e = new Error(\"Cannot find module 'assemblyscript'\"); e.code = 'MODULE_NOT_FOUND'; throw e;}\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__11__;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 13;","module.exports = process.hrtime || hrtime\n\n// polyfil for window.performance.now\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/tests/near-bindgen/out/assembly/hello/main.ts b/tests/near-bindgen/out/assembly/hello/main.ts index 6c5959d12f..d727258e7b 100644 --- a/tests/near-bindgen/out/assembly/hello/main.ts +++ b/tests/near-bindgen/out/assembly/hello/main.ts @@ -14,7 +14,7 @@ function __wrapper_hello(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = hello(decode(obj, "name")); + let result: string = hello(decode(obj, "name")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -40,7 +40,7 @@ function __wrapper_setKeyValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - setKeyValue(decode(obj, "key"), decode(obj, "value")); + setKeyValue(decode(obj, "key"), decode(obj, "value")); } export { __wrapper_setKeyValue as setKeyValue } @@ -57,7 +57,7 @@ function __wrapper_getValueByKey(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = getValueByKey(decode(obj, "key")); + let result: string = getValueByKey(decode(obj, "key")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -83,7 +83,7 @@ function __wrapper_setValue(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = setValue(decode(obj, "value")); + let result: string = setValue(decode(obj, "value")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -160,7 +160,7 @@ function __wrapper_benchmark_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_storage(decode(obj, "n")); + let result: string = benchmark_storage(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -186,7 +186,7 @@ function __wrapper_limited_storage(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = limited_storage(decode(obj, "max_storage")); + let result: string = limited_storage(decode(obj, "max_storage")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -212,7 +212,7 @@ function __wrapper_benchmark_sum_n(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: string = benchmark_sum_n(decode(obj, "n")); + let result: string = benchmark_sum_n(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -255,7 +255,7 @@ function __wrapper_testSetRemove(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - testSetRemove(decode(obj, "value")); + testSetRemove(decode(obj, "value")); } export { __wrapper_testSetRemove as testSetRemove } @@ -272,7 +272,7 @@ function __wrapper_insertStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - insertStrings(decode(obj, "from"), decode(obj, "to")); + insertStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_insertStrings as insertStrings } @@ -289,7 +289,7 @@ function __wrapper_deleteStrings(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - deleteStrings(decode(obj, "from"), decode(obj, "to")); + deleteStrings(decode(obj, "from"), decode(obj, "to")); } export { __wrapper_deleteStrings as deleteStrings } @@ -306,7 +306,7 @@ function __wrapper_recurse(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = recurse(decode(obj, "n")); + let result: i32 = recurse(decode(obj, "n")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -332,7 +332,7 @@ function __wrapper_callPromise(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - callPromise(decode(obj, "args")); + callPromise(decode(obj, "args")); } export { __wrapper_callPromise as callPromise } @@ -349,7 +349,7 @@ function __wrapper_callbackWithName(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: MyCallbackResult = callbackWithName(decode(obj, "args")); + let result: MyCallbackResult = callbackWithName(decode(obj, "args")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { diff --git a/tests/near-bindgen/out/assembly/hello/model.ts b/tests/near-bindgen/out/assembly/hello/model.ts index 9f2e3fc8bf..e7dfc4c99f 100644 --- a/tests/near-bindgen/out/assembly/hello/model.ts +++ b/tests/near-bindgen/out/assembly/hello/model.ts @@ -15,20 +15,30 @@ export class PromiseArgs { static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): PromiseArgs { - this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; - this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; - this.args = obj.has("args") ? decode(obj, "args"): this.args; - this.gas = obj.has("gas") ? decode(obj, "gas"): this.gas; - this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; - this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; - this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; - this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; - this.callbackGas = obj.has("callbackGas") ? decode(obj, "callbackGas"): this.callbackGas; + return value.decode(json); + } + + decode(buf: V): PromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.gas = obj.has("gas") ? decode(obj, "gas"): this.gas; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; + this.callbackGas = obj.has("callbackGas") ? decode(obj, "callbackGas"): this.callbackGas; return this; } @@ -61,12 +71,22 @@ export class InputPromiseArgs { static decode(json: Uint8Array): InputPromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): InputPromiseArgs { - this.args = obj.has("args") ? decode(obj, "args"): this.args; + decode(buf: V): InputPromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): InputPromiseArgs { + this.args = obj.has("args") ? decode(obj, "args"): this.args; return this; } @@ -92,13 +112,23 @@ export class MyContractPromiseResult { static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyContractPromiseResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyContractPromiseResult { - this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; - this.r = obj.has("r") ? decode(obj, "r"): this.r; + private _decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -125,13 +155,23 @@ export class MyCallbackResult { static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyCallbackResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyCallbackResult { - this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; - this.n = obj.has("n") ? decode(obj, "n"): this.n; + private _decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode, Obj>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } diff --git a/tests/near-bindgen/out/assembly/model.ts b/tests/near-bindgen/out/assembly/model.ts index 52700eeae1..f5bae3c898 100644 --- a/tests/near-bindgen/out/assembly/model.ts +++ b/tests/near-bindgen/out/assembly/model.ts @@ -26,25 +26,35 @@ export class FooBar { static decode(json: Uint8Array): FooBar { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): FooBar { - this.foo = obj.has("foo") ? decode(obj, "foo"): this.foo; - this.bar = obj.has("bar") ? decode(obj, "bar"): this.bar; - this.u64Val = obj.has("u64Val") ? decode(obj, "u64Val"): this.u64Val; - this.u64_zero = obj.has("u64_zero") ? decode(obj, "u64_zero"): this.u64_zero; - this.i64Val = obj.has("i64Val") ? decode(obj, "i64Val"): this.i64Val; - this.flag = obj.has("flag") ? decode(obj, "flag"): this.flag; - this.baz = obj.has("baz") ? decode(obj, "baz"): this.baz; - this.uint8array = obj.has("uint8array") ? decode(obj, "uint8array"): this.uint8array; - this.arr = obj.has("arr") ? decode>>(obj, "arr"): this.arr; - this.u32Arr = obj.has("u32Arr") ? decode>(obj, "u32Arr"): this.u32Arr; - this.i32Arr = obj.has("i32Arr") ? decode>(obj, "i32Arr"): this.i32Arr; - this.u128Val = obj.has("u128Val") ? decode(obj, "u128Val"): this.u128Val; - this.uint8arrays = obj.has("uint8arrays") ? decode>(obj, "uint8arrays"): this.uint8arrays; - this.u64Arr = obj.has("u64Arr") ? decode>(obj, "u64Arr"): this.u64Arr; + return value.decode(json); + } + + decode(buf: V): FooBar { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): FooBar { + this.foo = obj.has("foo") ? decode(obj, "foo"): this.foo; + this.bar = obj.has("bar") ? decode(obj, "bar"): this.bar; + this.u64Val = obj.has("u64Val") ? decode(obj, "u64Val"): this.u64Val; + this.u64_zero = obj.has("u64_zero") ? decode(obj, "u64_zero"): this.u64_zero; + this.i64Val = obj.has("i64Val") ? decode(obj, "i64Val"): this.i64Val; + this.flag = obj.has("flag") ? decode(obj, "flag"): this.flag; + this.baz = obj.has("baz") ? decode(obj, "baz"): this.baz; + this.uint8array = obj.has("uint8array") ? decode(obj, "uint8array"): this.uint8array; + this.arr = obj.has("arr") ? decode>, Obj>(obj, "arr"): this.arr; + this.u32Arr = obj.has("u32Arr") ? decode, Obj>(obj, "u32Arr"): this.u32Arr; + this.i32Arr = obj.has("i32Arr") ? decode, Obj>(obj, "i32Arr"): this.i32Arr; + this.u128Val = obj.has("u128Val") ? decode(obj, "u128Val"): this.u128Val; + this.uint8arrays = obj.has("uint8arrays") ? decode, Obj>(obj, "uint8arrays"): this.uint8arrays; + this.u64Arr = obj.has("u64Arr") ? decode, Obj>(obj, "u64Arr"): this.u64Arr; return this; } @@ -84,14 +94,24 @@ export class Nullables { static decode(json: Uint8Array): Nullables { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): Nullables { - this.str = obj.has("str") ? decode(obj, "str"): this.str; - this.u128 = obj.has("u128") ? decode(obj, "u128"): this.u128; - this.uint8Array = obj.has("uint8Array") ? decode(obj, "uint8Array"): this.uint8Array; + decode(buf: V): Nullables { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): Nullables { + this.str = obj.has("str") ? decode(obj, "str"): this.str; + this.u128 = obj.has("u128") ? decode(obj, "u128"): this.u128; + this.uint8Array = obj.has("uint8Array") ? decode(obj, "uint8Array"): this.uint8Array; return this; } @@ -118,12 +138,22 @@ export class ContainerClass { static decode(json: Uint8Array): ContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): ContainerClass { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): ContainerClass { - this.foobar = obj.has("foobar") ? decode(obj, "foobar"): this.foobar; + private _decode(obj: Obj): ContainerClass { + this.foobar = obj.has("foobar") ? decode(obj, "foobar"): this.foobar; return this; } @@ -148,12 +178,22 @@ export class AnotherContainerClass { static decode(json: Uint8Array): AnotherContainerClass { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): AnotherContainerClass { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): AnotherContainerClass { - this.foobars = obj.has("foobars") ? decode>>(obj, "foobars"): this.foobars; + private _decode(obj: Obj): AnotherContainerClass { + this.foobars = obj.has("foobars") ? decode>, Obj>(obj, "foobars"): this.foobars; return this; } @@ -184,18 +224,28 @@ export class PromiseArgs { static decode(json: Uint8Array): PromiseArgs { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; - } - - decode(obj: Obj): PromiseArgs { - this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; - this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; - this.args = obj.has("args") ? decode(obj, "args"): this.args; - this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; - this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; - this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; - this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; + return value.decode(json); + } + + decode(buf: V): PromiseArgs { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): PromiseArgs { + this.receiver = obj.has("receiver") ? decode(obj, "receiver"): this.receiver; + this.methodName = obj.has("methodName") ? decode(obj, "methodName"): this.methodName; + this.args = obj.has("args") ? decode(obj, "args"): this.args; + this.balance = obj.has("balance") ? decode(obj, "balance"): this.balance; + this.callback = obj.has("callback") ? decode(obj, "callback"): this.callback; + this.callbackArgs = obj.has("callbackArgs") ? decode(obj, "callbackArgs"): this.callbackArgs; + this.callbackBalance = obj.has("callbackBalance") ? decode(obj, "callbackBalance"): this.callbackBalance; return this; } @@ -227,13 +277,23 @@ export class MyContractPromiseResult { static decode(json: Uint8Array): MyContractPromiseResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); } - decode(obj: Obj): MyContractPromiseResult { - this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; - this.r = obj.has("r") ? decode(obj, "r"): this.r; + decode(buf: V): MyContractPromiseResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); + } + + private _decode(obj: Obj): MyContractPromiseResult { + this.ok = obj.has("ok") ? decode(obj, "ok"): this.ok; + this.r = obj.has("r") ? decode(obj, "r"): this.r; return this; } @@ -260,13 +320,23 @@ export class MyCallbackResult { static decode(json: Uint8Array): MyCallbackResult { let value = instantiate(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): MyCallbackResult { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): MyCallbackResult { - this.rs = obj.has("rs") ? decode>(obj, "rs"): this.rs; - this.n = obj.has("n") ? decode(obj, "n"): this.n; + private _decode(obj: Obj): MyCallbackResult { + this.rs = obj.has("rs") ? decode, Obj>(obj, "rs"): this.rs; + this.n = obj.has("n") ? decode(obj, "n"): this.n; return this; } @@ -292,12 +362,22 @@ export class Generic { static decode(json: Uint8Array): Generic { let value = instantiate>(); // Allocate without constructor - value.decode(JSON.parse(json)); - return value; + return value.decode(json); + } + + decode(buf: V): Generic { + let json: Obj; + if (buf instanceof Uint8Array) { + json = JSON.parse(buf); + }else { + assert(buf instanceof Obj, "argument must be Uint8Array or Json Object"); + json = buf; + } + return this._decode(json); } - decode(obj: Obj): Generic { - this.value = obj.has("value") ? decode(obj, "value"): this.value; + private _decode(obj: Obj): Generic { + this.value = obj.has("value") ? decode(obj, "value"): this.value; return this; } diff --git a/tests/near-bindgen/out/assembly/test.ts b/tests/near-bindgen/out/assembly/test.ts index f1ff91b945..a5f946eb10 100644 --- a/tests/near-bindgen/out/assembly/test.ts +++ b/tests/near-bindgen/out/assembly/test.ts @@ -14,7 +14,7 @@ function __wrapper_convertFoobars(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: Array = convertFoobars(decode>(obj, "foobars")); + let result: Array = convertFoobars(decode, Obj>(obj, "foobars")); let encoder = new JSONEncoder(); if ((isString>() || isNullable>()) && result == null) { @@ -40,7 +40,7 @@ function __wrapper_getStringArrayLength(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: i32 = getStringArrayLength(decode>(obj, "arr")); + let result: i32 = getStringArrayLength(decode, Obj>(obj, "arr")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -66,7 +66,7 @@ function __wrapper_rewrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); + let result: AnotherContainerClass = rewrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -92,7 +92,7 @@ function __wrapper_unwrapFoobar(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: FooBar = unwrapFoobar(decode(obj, "container")); + let result: FooBar = unwrapFoobar(decode(obj, "container")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -135,7 +135,7 @@ function __wrapper_stringAliasTest(): void { let json = new Uint8Array(json_len as u32); read_register(0, json.buffer); const obj: Obj = JSON.parse(json); - let result: StringAlias = stringAliasTest(decode(obj, "str")); + let result: StringAlias = stringAliasTest(decode(obj, "str")); let encoder = new JSONEncoder(); if ((isString() || isNullable()) && result == null) { @@ -181,8 +181,7 @@ export function runTest(): void { const encoder = original.encode(); logging.log("Before: " + encoder.toString()); const encoded = encoder.serialize(); - let obj = JSON.parse(encoded); - let decoded: FooBar = decode(obj); + let decoded: FooBar = decode(encoded); logging.log("After: " + decoded.toJSON()); assert(original.foo == decoded.foo); assert(original.bar == decoded.bar); @@ -192,7 +191,7 @@ export function runTest(): void { assert(original.u64Arr[0] == decoded.u64Arr[0]); assert(original.u64_zero == decoded.u64_zero); const nullable = new Nullables(); - const nullable2 = decode(JSON.parse(nullable.serialize())); + const nullable2 = decode(nullable.serialize()); assert(nullable2.str == null); assert(nullable2.u128 == null); assert(nullable2.uint8Array == null); diff --git a/tests/near-bindgen/out/hello.wat b/tests/near-bindgen/out/hello.wat index 893bef7e60..369048bd49 100644 --- a/tests/near-bindgen/out/hello.wat +++ b/tests/near-bindgen/out/hello.wat @@ -203,6 +203,8 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/rt/__rtti_base i32 (i32.const 5120)) @@ -812,49 +814,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -866,7 +826,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -881,7 +841,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -912,7 +872,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -942,7 +902,58 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 48 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $start:~lib/nearEntry (; 48 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -970,15 +981,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 49 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 52 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -997,7 +1008,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 52 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -1018,7 +1029,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1044,7 +1055,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 55 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1078,7 +1089,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 55 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1095,7 +1106,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 56 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 57 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1107,7 +1118,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1131,7 +1142,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 59 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1171,7 +1182,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1203,7 +1214,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1234,7 +1245,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 62 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1277,11 +1288,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 62 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 63 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1318,11 +1329,11 @@ end i32.const 0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 64 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 65 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/memory/memcpy (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2350,7 +2361,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2575,7 +2586,7 @@ end end ) - (func $~lib/rt/stub/__realloc (; 67 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 68 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2714,7 +2725,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/ensureSize (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2777,7 +2788,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 69 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2813,7 +2824,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2823,7 +2834,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 72 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2854,7 +2865,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2864,7 +2875,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 73 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 74 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2915,7 +2926,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 74 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 75 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2980,7 +2991,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 75 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 76 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3053,7 +3064,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 77 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3113,7 +3124,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3141,7 +3152,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3177,7 +3188,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 79 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 80 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3339,7 +3350,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 80 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3470,7 +3481,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 81 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 82 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3499,7 +3510,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 82 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 83 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3511,7 +3522,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3613,7 +3624,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3638,7 +3649,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 85 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3650,7 +3661,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3879,7 +3890,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3898,7 +3909,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3907,7 +3918,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3927,11 +3938,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 91 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4166,7 +4177,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 92 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 93 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4180,7 +4191,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 93 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4218,7 +4229,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4302,7 +4313,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4363,7 +4374,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 96 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4388,7 +4399,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4406,7 +4417,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4482,7 +4493,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 99 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4505,7 +4516,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4648,7 +4659,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 102 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4780,7 +4791,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 102 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 103 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4814,7 +4825,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4848,7 +4859,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 104 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 105 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4861,7 +4872,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4976,7 +4987,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5006,11 +5017,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 107 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 108 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 109 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5035,7 +5046,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 109 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 110 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5048,7 +5059,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5161,7 +5172,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 111 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5184,7 +5195,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 112 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5197,7 +5208,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5219,7 +5230,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5247,7 +5258,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 115 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 116 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5300,7 +5311,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5317,12 +5328,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 118 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5339,7 +5350,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5382,7 +5393,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 120 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 121 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5399,12 +5410,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 121 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 122 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 122 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 123 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5421,7 +5432,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5501,7 +5512,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5515,11 +5526,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 125 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 126 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 126 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 127 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5535,7 +5546,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5557,7 +5568,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 129 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5603,7 +5614,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5664,44 +5675,54 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/JSON.parse (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#reset (; 131 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/JSON.parse (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.const 0 - call $~lib/nearEntry/Handler#constructor - local.tee $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - local.set $2 - local.get $2 + global.get $~lib/nearEntry/JSON.decoder local.get $0 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - local.get $2 + global.get $~lib/nearEntry/JSON.decoder i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $3 + local.tee $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release + local.set $2 + global.get $~lib/nearEntry/JSON.decoder + i32.load + call $~lib/nearEntry/Handler#reset local.get $2 - call $~lib/rt/stub/__release - local.get $3 + local.set $3 + local.get $1 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $5 + local.get $3 ) - (func $~lib/string/String.__ne (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5720,7 +5741,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5763,7 +5784,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5791,28 +5812,32 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -5824,20 +5849,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5849,120 +5874,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - local.get $2 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2424 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2472 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2536 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $8 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $7 - local.set $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 return ) - (func $assembly/hello/main/hello (; 135 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/hello (; 137 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5980,7 +6011,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -6002,7 +6033,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6029,7 +6060,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 140 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6076,11 +6107,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -6089,7 +6120,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6108,7 +6139,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 142 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -6118,7 +6149,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 143 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 145 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6130,7 +6161,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 144 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 146 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -6140,7 +6171,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 145 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 147 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -6166,7 +6197,7 @@ i32.store offset=12 end ) - (func $~lib/string/String#substring (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 148 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6273,7 +6304,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 147 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -6339,7 +6370,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 148 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 150 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6481,7 +6512,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 149 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6536,12 +6567,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 152 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6553,7 +6584,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6732,7 +6763,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 153 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 155 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -6785,7 +6816,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 154 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 156 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6798,7 +6829,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 155 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 157 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -6816,7 +6847,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 158 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -6848,13 +6879,13 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6977,7 +7008,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7229,7 +7260,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7263,7 +7294,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7275,7 +7306,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/__wrapper_hello (; 162 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_hello (; 164 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7312,7 +7343,7 @@ local.set $3 local.get $3 i32.const 2304 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/hello local.set $5 @@ -7361,7 +7392,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7378,7 +7409,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7408,7 +7439,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#setString (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setString (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -7448,7 +7479,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setKeyValue (; 166 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/setKeyValue (; 168 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7464,7 +7495,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_setKeyValue (; 167 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setKeyValue (; 169 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7498,11 +7529,11 @@ local.set $3 local.get $3 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $5 call $assembly/hello/main/setKeyValue local.get $1 @@ -7516,7 +7547,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_internalReadBytes (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i64) (local $4 i64) @@ -7575,20 +7606,20 @@ end unreachable ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (; 171 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load i32.sub ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 170 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 16 i32.sub i32.load offset=12 ) - (func $~lib/arraybuffer/ArrayBuffer#slice (; 171 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (; 173 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7671,7 +7702,7 @@ local.get $7 call $~lib/rt/stub/__retain ) - (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 172 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.uint8ArrayToBuffer (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7695,7 +7726,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.UTF8.decode (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7710,7 +7741,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/util/util.bytesToString (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.bytesToString (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -7740,7 +7771,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/near-runtime-ts/storage/Storage#getString (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getString (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -7758,7 +7789,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/getValueByKey (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/getValueByKey (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -7778,7 +7809,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getValueByKey (; 177 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValueByKey (; 179 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7815,7 +7846,7 @@ local.set $3 local.get $3 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/getValueByKey local.set $5 @@ -7864,7 +7895,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/setValue (; 178 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/setValue (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -7874,7 +7905,7 @@ call $~lib/near-runtime-ts/storage/Storage#setString local.get $0 ) - (func $assembly/hello/main/__wrapper_setValue (; 179 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_setValue (; 181 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -7911,7 +7942,7 @@ local.set $3 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/setValue local.set $5 @@ -7960,7 +7991,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/getValue (; 180 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getValue (; 182 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) global.get $~lib/near-runtime-ts/storage/storage i32.const 2304 @@ -7973,7 +8004,7 @@ end call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_getValue (; 181 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getValue (; 183 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8017,7 +8048,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 182 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#_fetchIter (; 184 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i64) @@ -8082,7 +8113,7 @@ end local.get $3 ) - (func $~lib/near-runtime-ts/storage/Storage#keys (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -8111,7 +8142,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#keys|trampoline (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -8130,7 +8161,7 @@ local.get $2 call $~lib/near-runtime-ts/storage/Storage#keys ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -8140,7 +8171,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -8171,7 +8202,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $assembly/hello/main/getAllKeys (; 187 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getAllKeys (; 189 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8216,7 +8247,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 190 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -8238,7 +8269,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#pop (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 191 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8271,7 +8302,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 190 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 192 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -8280,7 +8311,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -8343,7 +8374,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/main/__wrapper_getAllKeys (; 192 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getAllKeys (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8378,7 +8409,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark (; 193 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/benchmark (; 195 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) i32.const 0 @@ -8413,7 +8444,7 @@ i32.const 0 call $~lib/near-runtime-ts/storage/Storage#keys|trampoline ) - (func $assembly/hello/main/__wrapper_benchmark (; 194 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark (; 196 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8448,7 +8479,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/decode (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8456,21 +8487,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8482,19 +8517,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 - i32.const 0 - i32.eq - if + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8506,49 +8541,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -8559,31 +8596,31 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3616 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8591,16 +8628,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -8609,33 +8648,33 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3616 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3688 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8643,10 +8682,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/util/string/isSpace (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 255 @@ -8769,7 +8810,7 @@ end i32.const 0 ) - (func $~lib/util/string/strtol (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (; 199 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9088,7 +9129,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I32.parseInt (; 198 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -9101,7 +9142,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 199 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -9174,7 +9215,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 200 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 202 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -9301,7 +9342,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9366,12 +9407,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 204 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 203 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 205 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -9383,7 +9424,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/benchmark_storage (; 204 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_storage (; 206 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9458,7 +9499,7 @@ local.get $4 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_storage (; 205 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_storage (; 207 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -9494,7 +9535,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/benchmark_storage local.set $4 i32.const 0 @@ -9540,7 +9581,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/util/string/strtol (; 206 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -9862,7 +9903,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 207 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 209 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/stub/__retain @@ -9875,30 +9916,34 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 208 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 210 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -9910,20 +9955,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -9935,49 +9980,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -9988,32 +10035,32 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3784 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -10021,16 +10068,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -10039,39 +10088,39 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3784 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3808 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2536 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -10079,13 +10128,15 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 209 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) + (func $~lib/near-runtime-ts/contract/Context#get:storageUsage (; 211 ;) (type $FUNCSIG$ji) (param $0 i32) (result i64) call $~lib/near-runtime-ts/runtime_api/runtime_api.storage_usage ) - (func $~lib/near-runtime-ts/storage/Storage#delete (; 210 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/near-runtime-ts/storage/Storage#delete (; 212 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -10107,7 +10158,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/limited_storage (; 211 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $assembly/hello/main/limited_storage (; 213 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10157,7 +10208,7 @@ local.get $1 call $~lib/number/I32#toString ) - (func $assembly/hello/main/__wrapper_limited_storage (; 212 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_limited_storage (; 214 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10193,7 +10244,7 @@ local.set $3 local.get $3 i32.const 3744 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/limited_storage local.set $4 i32.const 0 @@ -10239,7 +10290,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/benchmark_sum_n (; 213 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/benchmark_sum_n (; 215 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i64) i32.const 0 @@ -10269,7 +10320,7 @@ local.get $2 call $~lib/number/U64#toString ) - (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 214 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_benchmark_sum_n (; 216 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10305,7 +10356,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/benchmark_sum_n local.set $4 i32.const 0 @@ -10351,7 +10402,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/logging/logging.log (; 215 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/logging/logging.log (; 217 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10371,7 +10422,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/returnHiWithLogs (; 216 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/returnHiWithLogs (; 218 ;) (type $FUNCSIG$i) (result i32) i32.const 3952 call $~lib/near-runtime-ts/logging/logging.log i32.const 3984 @@ -10379,7 +10430,7 @@ i32.const 4016 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 217 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_returnHiWithLogs (; 219 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10423,7 +10474,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/testSetRemove (; 218 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/testSetRemove (; 220 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10455,7 +10506,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_testSetRemove (; 219 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_testSetRemove (; 221 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10488,7 +10539,7 @@ local.set $3 local.get $3 i32.const 3416 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/hello/main/testSetRemove local.get $1 @@ -10500,7 +10551,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/buildString (; 220 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/buildString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10586,7 +10637,7 @@ end local.get $1 ) - (func $~lib/string/String#substr (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substr (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10658,7 +10709,7 @@ local.get $9 call $~lib/rt/stub/__retain ) - (func $assembly/hello/main/insertStrings (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/insertStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10703,7 +10754,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_insertStrings (; 223 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_insertStrings (; 225 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10735,10 +10786,10 @@ local.set $3 local.get $3 i32.const 4120 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.get $3 i32.const 4144 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/insertStrings local.get $1 call $~lib/rt/stub/__release @@ -10747,7 +10798,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/deleteStrings (; 224 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $assembly/hello/main/deleteStrings (; 226 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10793,7 +10844,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_deleteStrings (; 225 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_deleteStrings (; 227 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -10825,10 +10876,10 @@ local.set $3 local.get $3 i32.const 4120 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.get $3 i32.const 4144 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/deleteStrings local.get $1 call $~lib/rt/stub/__release @@ -10837,7 +10888,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/recurse (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/recurse (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 i32.le_s @@ -10852,7 +10903,7 @@ i32.const 1 i32.add ) - (func $~lib/util/number/itoa64 (; 227 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10939,12 +10990,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 228 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 230 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 229 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 231 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -10956,7 +11007,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 230 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 232 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -10966,7 +11017,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 231 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 233 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -10979,7 +11030,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -10998,7 +11049,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/main/__wrapper_recurse (; 233 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_recurse (; 235 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -11034,7 +11085,7 @@ local.set $3 local.get $3 i32.const 1568 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode call $assembly/hello/main/recurse local.set $4 i32.const 0 @@ -11069,7 +11120,7 @@ local.get $7 call $~lib/rt/stub/__release ) - (func $assembly/hello/model/PromiseArgs#constructor (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#constructor (; 236 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -11108,7 +11159,7 @@ i32.store offset=32 local.get $0 ) - (func $~lib/nearEntry/Obj#has (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#has (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11122,7 +11173,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/model/PromiseArgs#decode (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#_decode (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -11136,7 +11187,7 @@ if (result i32) local.get $1 i32.const 4328 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -11156,7 +11207,7 @@ if (result i32) local.get $1 i32.const 4360 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -11176,7 +11227,7 @@ if (result i32) local.get $1 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=8 @@ -11195,7 +11246,7 @@ if (result i32) local.get $1 i32.const 4400 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=12 @@ -11208,7 +11259,7 @@ if (result i32) local.get $1 i32.const 4424 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=16 @@ -11222,7 +11273,7 @@ if (result i32) local.get $1 i32.const 4456 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=20 @@ -11242,7 +11293,7 @@ if (result i32) local.get $1 i32.const 4488 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=24 @@ -11261,7 +11312,7 @@ if (result i32) local.get $1 i32.const 4528 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=28 @@ -11274,7 +11325,7 @@ if (result i32) local.get $1 i32.const 4576 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=32 @@ -11287,35 +11338,72 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#decode<~lib/nearEntry/Obj> (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop local.get $1 call $~lib/rt/stub/__retain drop i32.const 0 local.set $2 - local.get $0 + local.get $1 local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else + local.get $2 + local.tee $4 + i32.ne + if local.get $3 - i32.const 8 - call $~lib/rt/__instanceof + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end - if (result i32) + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/PromiseArgs#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) local.get $1 i32.const 816 call $~lib/string/String.__ne @@ -11323,20 +11411,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11348,87 +11436,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -11437,63 +11529,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4216 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/PromiseArgs#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/PromiseArgs#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/PromiseArgs#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -11515,7 +11609,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 239 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 242 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -11524,7 +11618,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/hello/model/PromiseArgs#encode (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/PromiseArgs#encode (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11619,7 +11713,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -11652,7 +11746,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/InputPromiseArgs#encode (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/InputPromiseArgs#encode (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -11699,7 +11793,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/bignum/integer/u128/u128#constructor (; 243 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/bignum/integer/u128/u128#constructor (; 246 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) local.get $0 i32.eqz if @@ -11717,7 +11811,7 @@ i64.store offset=8 local.get $0 ) - (func $~lib/polyfills/bswap (; 244 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/polyfills/bswap (; 247 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) (local $1 i64) (local $2 i64) (local $3 i64) @@ -11756,7 +11850,7 @@ i64.rotr return ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 245 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferBE (; 248 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load offset=8 @@ -11768,7 +11862,7 @@ call $~lib/polyfills/bswap i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 246 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBufferLE (; 249 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 local.get $0 i64.load @@ -11778,7 +11872,7 @@ i64.load offset=8 i64.store offset=8 ) - (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 247 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/bignum/integer/u128/u128#toArrayBuffer (; 250 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 if local.get $0 @@ -11790,7 +11884,7 @@ call $~lib/bignum/integer/u128/u128#toArrayBufferLE end ) - (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 248 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.create (; 251 ;) (type $FUNCSIG$iiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11886,7 +11980,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 249 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString (; 252 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) i32.const 0 @@ -11914,14 +12008,14 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/contract/Context#get:contractName (; 253 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i64.const 0 call $~lib/near-runtime-ts/runtime_api/runtime_api.current_account_id local.get $0 i64.const 0 call $~lib/near-runtime-ts/contract/Context#_readRegisterContentsAsString ) - (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 251 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#then (; 254 ;) (type $FUNCSIG$iiiiiji) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -12019,12 +12113,12 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 252 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/near-runtime-ts/contract/ContractPromise#returnAsResult (; 255 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i64.load call $~lib/near-runtime-ts/runtime_api/runtime_api.promise_return ) - (func $assembly/hello/main/callPromise (; 253 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $assembly/hello/main/callPromise (; 256 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i64) @@ -12158,7 +12252,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/__wrapper_callPromise (; 254 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callPromise (; 257 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12191,7 +12285,7 @@ local.set $3 local.get $3 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callPromise local.get $1 @@ -12203,7 +12297,7 @@ local.get $4 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/near-runtime-ts/contract/ContractPromiseResult> (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12234,7 +12328,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 256 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_set (; 259 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12264,7 +12358,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 257 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__set (; 260 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12308,7 +12402,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 258 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/near-runtime-ts/contract/ContractPromise.getResults (; 261 ;) (type $FUNCSIG$i) (result i32) (local $0 i64) (local $1 i32) (local $2 i32) @@ -12403,11 +12497,11 @@ end local.get $1 ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#get:length (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array.create (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create (; 263 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -12438,7 +12532,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $assembly/hello/model/MyContractPromiseResult#constructor (; 261 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#constructor (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12456,7 +12550,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#__unchecked_set (; 262 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 265 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -12486,7 +12580,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__set (; 263 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 266 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -12530,7 +12624,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12540,7 +12634,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__get (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12571,7 +12665,7 @@ local.get $1 call $~lib/array/Array<~lib/near-runtime-ts/contract/ContractPromiseResult>#__unchecked_get ) - (func $~lib/array/Array#__unchecked_get (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12581,7 +12675,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12612,7 +12706,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $assembly/hello/model/MyCallbackResult#constructor (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#constructor (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -12630,7 +12724,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/Array#constructor (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -12661,28 +12755,32 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decode (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -12694,19 +12792,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12718,49 +12816,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -12771,31 +12871,31 @@ i32.const 3544 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4800 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3640 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -12803,16 +12903,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 20 call $~lib/rt/__instanceof end @@ -12821,32 +12923,32 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 3576 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4800 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4824 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2536 - i32.const 363 + i32.const 364 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 - i32.load8_u - local.set $7 - local.get $5 - call $~lib/rt/stub/__release local.get $3 + i32.load8_u + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -12854,10 +12956,45 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode<~lib/nearEntry/Obj> (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyCallbackResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12867,21 +13004,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -12893,20 +13034,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -12918,87 +13059,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -13007,63 +13152,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4872 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyCallbackResult#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/MyCallbackResult#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/MyCallbackResult#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/hello/model/MyContractPromiseResult#decode (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#_decode (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -13076,7 +13223,7 @@ if (result i32) local.get $1 i32.const 4776 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load8_u @@ -13090,7 +13237,7 @@ if (result i32) local.get $1 i32.const 1616 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=4 @@ -13109,7 +13256,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#decode<~lib/nearEntry/Obj> (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyContractPromiseResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13119,21 +13299,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -13145,20 +13329,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13170,87 +13354,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -13259,63 +13447,65 @@ i32.const 2424 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3576 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 4712 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 4256 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2536 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/hello/model/MyContractPromiseResult#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/hello/model/MyContractPromiseResult#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/hello/model/MyContractPromiseResult#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/array/Array#push (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13351,7 +13541,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13413,7 +13603,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -13445,28 +13635,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -13478,20 +13672,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -13503,83 +13697,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/hello/model/MyCallbackResult#decode (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#_decode (; 282 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -13593,7 +13793,7 @@ if (result i32) local.get $1 i32.const 4616 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -13613,7 +13813,7 @@ if (result i32) local.get $1 i32.const 1568 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -13632,11 +13832,35 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/model/MyCallbackResult.decode (; 278 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#decode<~lib/typedarray/Uint8Array> (; 283 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/hello/model/MyCallbackResult#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $assembly/hello/model/MyCallbackResult.decode (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -13647,25 +13871,21 @@ local.set $2 local.get $2 local.get $0 - call $~lib/nearEntry/JSON.parse - local.tee $3 - call $assembly/hello/model/MyCallbackResult#decode - call $~lib/rt/stub/__release - local.get $2 - local.set $4 + call $assembly/hello/model/MyCallbackResult#decode<~lib/typedarray/Uint8Array> + local.set $3 local.get $1 call $~lib/rt/stub/__release - local.get $3 + local.get $2 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $4 + local.get $3 ) - (func $~lib/array/Array#get:length (; 279 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 280 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 286 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -13681,7 +13901,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 281 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 287 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13694,7 +13914,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13712,7 +13932,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13745,7 +13965,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/hello/model/MyContractPromiseResult#encode (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyContractPromiseResult#encode (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13798,7 +14018,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13831,7 +14051,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -13894,7 +14114,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/hello/model/MyCallbackResult#encode (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/hello/model/MyCallbackResult#encode (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -13947,7 +14167,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 288 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/near-runtime-ts/storage/Storage#setBytes (; 294 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) local.get $1 @@ -13981,7 +14201,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/callbackWithName (; 289 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/hello/main/callbackWithName (; 295 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14150,7 +14370,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $assembly/hello/main/__wrapper_callbackWithName (; 290 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_callbackWithName (; 296 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -14187,7 +14407,7 @@ local.set $3 local.get $3 i32.const 4192 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/hello/main/callbackWithName local.set $5 @@ -14227,7 +14447,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 291 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/storage/Storage#getBytes (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -14240,7 +14460,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/hello/main/getLastResult (; 292 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/hello/main/getLastResult (; 298 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) global.get $~lib/near-runtime-ts/storage/storage @@ -14253,7 +14473,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/hello/main/__wrapper_getLastResult (; 293 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/__wrapper_getLastResult (; 299 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14288,7 +14508,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/hello/main/generateLogs (; 294 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/generateLogs (; 300 ;) (type $FUNCSIG$v) global.get $~lib/near-runtime-ts/storage/storage i32.const 4960 i32.const 3416 @@ -14298,7 +14518,7 @@ i32.const 5008 call $~lib/near-runtime-ts/logging/logging.log ) - (func $assembly/hello/main/triggerAssert (; 295 ;) (type $FUNCSIG$v) + (func $assembly/hello/main/triggerAssert (; 301 ;) (type $FUNCSIG$v) i32.const 5032 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 @@ -14312,9 +14532,10 @@ unreachable end ) - (func $start (; 296 ;) (type $FUNCSIG$v) + (func $start (; 302 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub + call $start:~lib/nearEntry ) - (func $null (; 297 ;) (type $FUNCSIG$v) + (func $null (; 303 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/near-bindgen/out/test.wat b/tests/near-bindgen/out/test.wat index da8ab132ce..efe6cc193f 100644 --- a/tests/near-bindgen/out/test.wat +++ b/tests/near-bindgen/out/test.wat @@ -196,6 +196,8 @@ (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/number/U32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/nearEntry/JSON.handler (mut i32) (i32.const 0)) + (global $~lib/nearEntry/JSON.decoder (mut i32) (i32.const 0)) (global $~lib/argc (mut i32) (i32.const 0)) (global $~lib/bignum/utils/RadixCharsTable i32 (i32.const 3840)) (global $~lib/rt/__rtti_base i32 (i32.const 5784)) @@ -792,49 +794,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 15 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $3 - i32.store - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONHandler#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -846,7 +806,7 @@ end local.get $0 ) - (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/ThrowingJSONHandler#constructor (; 30 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -861,7 +821,7 @@ local.set $0 local.get $0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#constructor (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -892,7 +852,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Handler#constructor (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -922,7 +882,58 @@ i32.store local.get $0 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 34 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 15 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + local.tee $2 + local.get $1 + local.tee $3 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release + end + local.get $3 + i32.store + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + ) + (func $start:~lib/nearEntry (; 34 ;) (type $FUNCSIG$v) + i32.const 0 + call $~lib/nearEntry/Handler#constructor + global.set $~lib/nearEntry/JSON.handler + i32.const 0 + global.get $~lib/nearEntry/JSON.handler + call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor + global.set $~lib/nearEntry/JSON.decoder + ) + (func $~lib/assemblyscript-json/decoder/DecoderState#constructor (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -950,15 +961,15 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#get:length (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#get:length (; 37 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Uint8Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -977,7 +988,7 @@ i32.add i32.load8_u ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.load offset=4 @@ -998,7 +1009,7 @@ i32.load offset=4 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 39 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#isWhitespace (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 i32.const 9 i32.eq @@ -1024,7 +1035,7 @@ i32.eq end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readChar (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.load offset=4 @@ -1058,7 +1069,7 @@ local.get $1 call $~lib/typedarray/Uint8Array#__get ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 41 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace (; 42 ;) (type $FUNCSIG$vi) (param $0 i32) block $break|0 loop $continue|0 local.get $0 @@ -1075,7 +1086,7 @@ unreachable end ) - (func $~lib/nearEntry/Value#constructor (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value#constructor (; 43 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1087,7 +1098,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 i32.const 1073741808 @@ -1111,7 +1122,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 44 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear (; 45 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1151,7 +1162,7 @@ i32.const 0 i32.store offset=20 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#constructor (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -1183,7 +1194,7 @@ call $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#clear local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#constructor (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#constructor (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -1214,7 +1225,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/Obj#constructor (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Obj#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -1257,11 +1268,11 @@ i32.store offset=4 local.get $0 ) - (func $~lib/nearEntry/Value.Object (; 48 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Object (; 49 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Obj#constructor ) - (func $~lib/rt/__instanceof (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/__instanceof (; 50 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -1298,11 +1309,11 @@ end i32.const 0 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#get:length (; 51 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/memory/memcpy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2330,7 +2341,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 53 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2555,7 +2566,7 @@ end end ) - (func $~lib/rt/stub/__realloc (; 53 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/__realloc (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2694,7 +2705,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/ensureSize (; 54 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureSize (; 55 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2757,7 +2768,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#push (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2793,7 +2804,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2803,7 +2814,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#__get (; 58 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -2834,7 +2845,7 @@ local.get $1 call $~lib/array/Array<~lib/nearEntry/Value>#__unchecked_get ) - (func $~lib/nearEntry/Handler#get:peek (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#get:peek (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -2844,7 +2855,7 @@ i32.sub call $~lib/array/Array<~lib/nearEntry/Value>#__get ) - (func $~lib/util/hash/hashStr (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/hash/hashStr (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2895,7 +2906,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/string/compareImpl (; 60 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $~lib/util/string/compareImpl (; 61 ;) (type $FUNCSIG$iiiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2960,7 +2971,7 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/string/String.__eq (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3033,7 +3044,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 62 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#find (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -3093,7 +3104,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 63 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#has (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3121,7 +3132,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#push (; 64 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#push (; 65 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3157,7 +3168,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 65 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#rehash (; 66 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3319,7 +3330,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3450,7 +3461,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Obj#set (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Obj#set (; 68 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3479,7 +3490,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Arr#push (; 68 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Arr#push (; 69 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -3491,7 +3502,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#addValue (; 69 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#addValue (; 70 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3593,7 +3604,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Handler#pushObject (; 70 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushObject (; 71 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3618,7 +3629,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.getPtr (; 72 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3630,7 +3641,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/string/String.UTF8.decodeUnsafe (; 72 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.UTF8.decodeUnsafe (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3859,7 +3870,7 @@ call $~lib/rt/stub/__realloc call $~lib/rt/stub/__retain ) - (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 73 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/util/index/Buffer.readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -3878,7 +3889,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load offset=8 local.get $1 @@ -3887,7 +3898,7 @@ i32.sub call $~lib/assemblyscript-json/util/index/Buffer.readString ) - (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/DecoderState#readString|trampoline (; 76 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -3907,11 +3918,11 @@ local.get $2 call $~lib/assemblyscript-json/decoder/DecoderState#readString ) - (func $~lib/array/Array<~lib/string/String>#get:length (; 76 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#get:length (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/string/String>#join_str (; 77 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join_str (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4146,7 +4157,7 @@ call $~lib/rt/stub/__release local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#join (; 78 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#join (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -4160,7 +4171,7 @@ local.get $2 return ) - (func $~lib/rt/__allocArray (; 79 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/rt/__allocArray (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4198,7 +4209,7 @@ end local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readHexDigit (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4282,7 +4293,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/string/String.fromCodePoint (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String.fromCodePoint (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4343,7 +4354,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode (; 82 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -4368,7 +4379,7 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/string/String.fromCharCode|trampoline (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.fromCharCode|trampoline (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -4386,7 +4397,7 @@ local.get $1 call $~lib/string/String.fromCharCode ) - (func $~lib/string/String#concat (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4462,7 +4473,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/string/String.__concat (; 85 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 86 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -4485,7 +4496,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readEscapedChar (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4628,7 +4639,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 87 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readString (; 88 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4760,7 +4771,7 @@ end unreachable ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 88 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseKey (; 89 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4794,7 +4805,7 @@ unreachable end ) - (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 89 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/nearEntry/Value>#pop (; 90 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4828,7 +4839,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/nearEntry/Handler#popObject (; 90 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popObject (; 91 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -4841,7 +4852,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 91 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseObject (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4956,7 +4967,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Arr#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Arr#constructor (; 93 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -4986,11 +4997,11 @@ i32.store local.get $0 ) - (func $~lib/nearEntry/Value.Array (; 93 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Array (; 94 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Arr#constructor ) - (func $~lib/nearEntry/Handler#pushArray (; 94 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Handler#pushArray (; 95 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -5015,7 +5026,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Handler#popArray (; 95 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/nearEntry/Handler#popArray (; 96 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.load call $~lib/array/Array<~lib/nearEntry/Value>#get:length @@ -5028,7 +5039,7 @@ call $~lib/rt/stub/__release end ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5141,7 +5152,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/Str#constructor (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Str#constructor (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -5164,7 +5175,7 @@ call $~lib/rt/stub/__release local.get $0 ) - (func $~lib/nearEntry/Value.String (; 98 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.String (; 99 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5177,7 +5188,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/nearEntry/Handler#setString (; 99 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setString (; 100 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5199,7 +5210,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 100 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseString (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -5227,7 +5238,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 101 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#readAndAssert (; 102 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5280,7 +5291,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/Bools#constructor (; 102 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Bools#constructor (; 103 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5297,12 +5308,12 @@ i32.store8 local.get $0 ) - (func $~lib/nearEntry/Value.Bool (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Value.Bool (; 104 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Bools#constructor ) - (func $~lib/nearEntry/Handler#setBoolean (; 104 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/nearEntry/Handler#setBoolean (; 105 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5319,7 +5330,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseBoolean (; 106 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 184 @@ -5362,7 +5373,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Num#constructor (; 106 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/nearEntry/Num#constructor (; 107 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) local.get $0 if (result i32) local.get $0 @@ -5379,12 +5390,12 @@ i64.store local.get $0 ) - (func $~lib/nearEntry/Value.Number (; 107 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/nearEntry/Value.Number (; 108 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) i32.const 0 local.get $0 call $~lib/nearEntry/Num#constructor ) - (func $~lib/nearEntry/Handler#setInteger (; 108 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/nearEntry/Handler#setInteger (; 109 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5401,7 +5412,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 109 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNumber (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i64) (local $2 i64) (local $3 i32) @@ -5481,7 +5492,7 @@ end i32.const 0 ) - (func $~lib/nearEntry/Null#constructor (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Null#constructor (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5495,11 +5506,11 @@ local.set $0 local.get $0 ) - (func $~lib/nearEntry/Value.Null (; 111 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/nearEntry/Value.Null (; 112 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/nearEntry/Null#constructor ) - (func $~lib/nearEntry/Handler#setNull (; 112 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/nearEntry/Handler#setNull (; 113 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5515,7 +5526,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseNull (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#peekChar i32.const 216 @@ -5537,7 +5548,7 @@ end i32.const 0 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#parseValue (; 115 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace @@ -5583,7 +5594,7 @@ call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#skipWhitespace local.get $1 ) - (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 115 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize (; 116 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $1 @@ -5644,44 +5655,54 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/JSON.parse (; 116 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/nearEntry/Handler#reset (; 117 ;) (type $FUNCSIG$vi) (param $0 i32) + block $break|0 + loop $continue|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.const 0 + i32.gt_s + i32.eqz + br_if $break|0 + local.get $0 + i32.load + call $~lib/array/Array<~lib/nearEntry/Value>#pop + call $~lib/rt/stub/__release + br $continue|0 + end + unreachable + end + ) + (func $~lib/nearEntry/JSON.parse (; 118 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 - i32.const 0 - call $~lib/nearEntry/Handler#constructor - local.tee $1 - call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#constructor - local.set $2 - local.get $2 + global.get $~lib/nearEntry/JSON.decoder local.get $0 i32.const 0 call $~lib/assemblyscript-json/decoder/JSONDecoder<~lib/nearEntry/Handler>#deserialize - local.get $2 + global.get $~lib/nearEntry/JSON.decoder i32.load call $~lib/nearEntry/Handler#get:peek - local.tee $3 + local.tee $1 call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release + local.set $2 + global.get $~lib/nearEntry/JSON.decoder + i32.load + call $~lib/nearEntry/Handler#reset local.get $2 - call $~lib/rt/stub/__release - local.get $3 + local.set $3 + local.get $1 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $5 + local.get $3 ) - (func $~lib/string/String.__ne (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 call $~lib/rt/stub/__retain @@ -5700,7 +5721,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map<~lib/string/String,~lib/nearEntry/Value>#get (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5743,7 +5764,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/Obj#get (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#get (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5771,7 +5792,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#constructor (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -5802,7 +5823,7 @@ i32.store offset=12 local.get $0 ) - (func $assembly/model/FooBar#constructor (; 121 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#constructor (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -5857,7 +5878,7 @@ i32.store offset=64 local.get $0 ) - (func $~lib/nearEntry/Obj#has (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/Obj#has (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -5871,7 +5892,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 125 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5879,21 +5900,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -5905,19 +5930,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -5929,49 +5954,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -5982,31 +6009,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2832 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6014,16 +6041,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -6032,33 +6061,33 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2832 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2904 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6066,10 +6095,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 126 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6077,21 +6108,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6103,19 +6138,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6127,49 +6162,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -6180,31 +6217,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2984 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6212,16 +6249,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 21 call $~lib/rt/__instanceof end @@ -6230,33 +6269,33 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2984 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2904 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 376 + i32.const 377 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i64.load i32.wrap_i64 - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6264,10 +6303,12 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/util/string/isSpace (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/string/isSpace (; 127 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 255 @@ -6390,7 +6431,7 @@ end i32.const 0 ) - (func $~lib/util/string/strtol (; 126 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/string/strtol (; 128 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i64) (local $4 i32) @@ -6712,7 +6753,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/number/I64.parseInt (; 127 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/number/I64.parseInt (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i64) local.get $0 call $~lib/rt/stub/__retain @@ -6725,30 +6766,34 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 128 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6760,20 +6805,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6785,49 +6830,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -6838,32 +6885,32 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3040 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6871,16 +6918,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -6889,39 +6938,39 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3040 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3064 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2552 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -6929,33 +6978,39 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/nearEntry/decode (; 129 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/nearEntry/decode (; 131 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i32) + (local $5 i32) + (local $6 i64) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -6967,20 +7022,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 i64.extend_i32_u - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -6992,49 +7047,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $6 - local.get $2 + local.get $5 local.tee $7 + local.get $3 + local.tee $8 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $7 + local.get $8 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $7 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $7 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $7 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $7 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end @@ -7045,32 +7102,32 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3272 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 i64.extend_i32_u - local.set $5 - local.get $7 + local.set $6 + local.get $8 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7078,16 +7135,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end @@ -7096,39 +7155,39 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3272 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3064 call $~lib/string/String.__concat - local.tee $7 + local.tee $8 i32.const 2552 - i32.const 371 + i32.const 372 i32.const 6 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load call $~lib/rt/stub/__retain - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.const 0 call $~lib/number/I64.parseInt - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - local.get $3 + local.set $6 + local.get $7 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $7 + local.get $5 call $~lib/rt/stub/__release - local.get $9 + local.get $8 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7136,31 +7195,37 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $5 + local.get $3 + call $~lib/rt/stub/__release + local.get $6 return ) - (func $~lib/nearEntry/decode (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7172,19 +7237,19 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7196,49 +7261,51 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end @@ -7249,31 +7316,31 @@ i32.const 2800 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3320 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2856 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 354 + i32.const 355 i32.const 4 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $7 - local.get $6 + local.set $8 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $5 call $~lib/rt/stub/__release - local.get $3 + local.get $4 call $~lib/rt/stub/__release - local.get $5 + local.get $6 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7281,16 +7348,18 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - local.get $2 - local.tee $5 + local.get $3 + local.tee $6 i32.eqz if (result i32) i32.const 0 else - local.get $5 + local.get $6 i32.const 20 call $~lib/rt/__instanceof end @@ -7299,32 +7368,32 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2608 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 3320 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 3344 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2552 - i32.const 363 + i32.const 364 i32.const 4 call $~lib/builtins/abort unreachable end - local.get $2 - i32.load8_u - local.set $7 - local.get $5 - call $~lib/rt/stub/__release local.get $3 + i32.load8_u + local.set $8 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $6 + local.get $5 + call $~lib/rt/stub/__release + local.get $7 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -7332,31 +7401,37 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return ) - (func $~lib/nearEntry/decode<~lib/string/String> (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7368,20 +7443,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -7393,120 +7468,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 - i32.ne + local.get $3 + local.tee $7 + i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - local.get $2 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3416 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2552 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $7 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $8 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $7 - local.set $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $5 return ) - (func $~lib/string/String#charAt (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 local.get $0 @@ -7532,7 +7613,7 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/string/String#indexOf (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#indexOf (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7623,7 +7704,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.getByte64 (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -7643,7 +7724,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/typedarray/Uint8Array#__set (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 137 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -7663,7 +7744,7 @@ local.get $2 i32.store8 ) - (func $~lib/near-runtime-ts/base64/base64.decode (; 136 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.decode (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -7946,7 +8027,7 @@ call $~lib/rt/stub/__release local.get $11 ) - (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7954,21 +8035,25 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -7980,20 +8065,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8005,115 +8090,119 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 call $~lib/rt/stub/__retain - local.set $3 + local.set $4 local.get $1 call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $5 + local.get $6 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 3416 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2552 - i32.const 320 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.load call $~lib/rt/stub/__retain - local.set $8 - local.get $5 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release + local.set $9 local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $8 - local.tee $4 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + local.tee $5 call $~lib/near-runtime-ts/base64/base64.decode - local.set $6 - local.get $4 + local.set $7 + local.get $5 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release @@ -8121,12 +8210,14 @@ call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -8157,7 +8248,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/nearEntry/decodeArray<~lib/string/String> (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Value> (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8172,132 +8263,42 @@ call $~lib/rt/stub/__retain drop local.get $0 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $2 - i32.const 17 + local.get $4 + i32.const 8 call $~lib/rt/__instanceof end - i32.eqz - if - i32.const 2432 + if (result i32) local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 2480 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2552 - i32.const 327 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 end - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $4 - local.get $0 - i32.load - call $~lib/rt/stub/__retain - local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $5 - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $5 - local.get $6 - call $~lib/array/Array<~lib/nearEntry/Value>#__get - local.tee $7 - i32.const 816 - call $~lib/nearEntry/decode<~lib/string/String> - local.set $8 - local.get $4 - local.get $8 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $4 - local.set $8 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $3 - i32.const 8 - call $~lib/rt/__instanceof - end - if (result i32) - local.get $1 - i32.const 816 - call $~lib/string/String.__ne - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8309,119 +8310,126 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end - i32.const 0 - local.set $7 - local.get $2 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 local.get $1 - call $~lib/nearEntry/decodeArray<~lib/string/String> + call $~lib/rt/stub/__retain local.set $6 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 + local.get $4 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $6 + call $~lib/string/String.__concat + local.tee $7 + i32.const 3416 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 322 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $8 + local.get $6 call $~lib/rt/stub/__release - local.get $2 + local.get $4 call $~lib/rt/stub/__release local.get $7 call $~lib/rt/stub/__release - local.get $6 - return - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + local.set $5 local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add + call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 - local.set $4 - local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $5 + return ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/string/String> (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8462,7 +8470,7 @@ end i32.const 0 i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor + call $~lib/array/Array<~lib/string/String>#constructor local.set $4 local.get $0 i32.load @@ -8483,11 +8491,11 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push + call $~lib/array/Array<~lib/string/String>#push drop local.get $6 i32.const 1 @@ -8515,28 +8523,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Value> (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8548,20 +8560,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8573,107 +8585,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 - call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> - local.set $6 + call $~lib/nearEntry/decodeArray<~lib/string/String> + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array#constructor (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 26 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#push (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop local.get $0 i32.load offset=12 local.set $2 @@ -8692,13 +8692,18 @@ i32.shl i32.add local.get $1 + call $~lib/rt/stub/__retain i32.store local.get $0 local.get $3 i32.store offset=12 local.get $3 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> (; 145 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8739,7 +8744,7 @@ end i32.const 0 i32.const 0 - call $~lib/array/Array#constructor + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor local.set $4 local.get $0 i32.load @@ -8760,11 +8765,11 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 - call $~lib/array/Array#push + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#push drop local.get $6 i32.const 1 @@ -8772,6 +8777,8 @@ local.set $6 local.get $7 call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release br $loop|0 end unreachable @@ -8790,28 +8797,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/nearEntry/Obj> (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -8823,20 +8834,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -8848,89 +8859,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 - call $~lib/nearEntry/decodeArray - local.set $6 + call $~lib/nearEntry/decodeArray<~lib/array/Array<~lib/string/String>> + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $~lib/array/Array#constructor (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 else i32.const 16 - i32.const 18 + i32.const 26 call $~lib/rt/stub/__alloc call $~lib/rt/stub/__retain end @@ -8946,34 +8963,7 @@ i32.store offset=12 local.get $0 ) - (func $~lib/array/Array#push (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.add - local.set $3 - local.get $0 - local.get $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 - ) - (func $~lib/nearEntry/decodeArray (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8981,6 +8971,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/stub/__retain drop @@ -8988,131 +8979,42 @@ call $~lib/rt/stub/__retain drop local.get $0 - local.tee $2 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $2 - i32.const 17 + local.get $4 + i32.const 8 call $~lib/rt/__instanceof end - i32.eqz - if - i32.const 2432 + if (result i32) local.get $1 - call $~lib/string/String.__concat - local.tee $2 - i32.const 2480 - call $~lib/string/String.__concat - local.tee $3 - i32.const 2552 - i32.const 327 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 end - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $4 - local.get $0 - i32.load - call $~lib/rt/stub/__retain - local.set $5 - block $break|0 + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $5 - call $~lib/array/Array<~lib/nearEntry/Value>#get:length - i32.lt_s - i32.eqz - br_if $break|0 - local.get $5 - local.get $6 - call $~lib/array/Array<~lib/nearEntry/Value>#__get - local.tee $7 - i32.const 816 - call $~lib/nearEntry/decode - local.set $8 - local.get $4 - local.get $8 - call $~lib/array/Array#push - drop - local.get $6 - i32.const 1 - i32.add + i32.eq + if + i32.const 0 local.set $6 - local.get $7 - call $~lib/rt/stub/__release - br $loop|0 - end - unreachable - end - local.get $4 - local.set $8 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $8 - ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__retain - drop - i32.const 0 - local.set $2 - local.get $0 - local.tee $3 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $3 - i32.const 8 - call $~lib/rt/__instanceof - end - if (result i32) - local.get $1 - i32.const 816 - call $~lib/string/String.__ne - else - i32.const 0 - end - if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 - i32.const 0 - i32.eq - if - i32.const 0 - call $~lib/rt/stub/__retain - local.set $5 - local.get $0 + local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release @@ -9123,225 +9025,272 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 - call $~lib/rt/stub/__retain - local.set $6 + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2984 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 return end - i32.const 0 - local.set $7 - local.get $2 - local.get $1 - call $~lib/nearEntry/decodeArray - local.set $6 + local.get $3 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 21 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2984 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 377 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64.load + i32.wrap_i64 + local.set $8 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 return ) - (func $~lib/bignum/integer/u128/u128#constructor (; 152 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i64.store + (func $~lib/array/Array#push (; 149 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - i64.store offset=8 + i32.const 1 + i32.add + local.set $3 local.get $0 - ) - (func $~lib/array/Array#__unchecked_get (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 i32.load offset=4 - local.get $1 - i32.const 0 + local.get $2 + i32.const 2 i32.shl i32.add - i32.load8_u - ) - (func $~lib/array/Array#__get (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 + i32.store local.get $0 - i32.load offset=8 - i32.const 0 - i32.shr_u - i32.ge_u - if - i32.const 832 - i32.const 768 - i32.const 109 - i32.const 61 - call $~lib/builtins/abort - unreachable - end + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/decodeArray (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 + call $~lib/rt/stub/__retain + drop local.get $1 - call $~lib/array/Array#__unchecked_get - ) - (func $~lib/bignum/globals/__multi3 (; 155 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i64) - (local $9 i64) - (local $10 i64) - (local $11 i64) - (local $12 i64) - (local $13 i64) - (local $14 i64) - local.get $1 - local.set $5 - local.get $3 - local.set $6 - local.get $5 - i64.const 4294967295 - i64.and - local.set $9 - local.get $6 - i64.const 4294967295 - i64.and - local.set $10 - local.get $9 - local.get $10 - i64.mul - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and - local.set $12 - local.get $5 - i64.const 32 - i64.shr_u + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2480 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2552 + i32.const 327 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain local.set $5 - local.get $5 - local.get $10 - i64.mul - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $11 - local.get $11 - i64.const 4294967295 - i64.and + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $4 local.set $8 - local.get $11 - i64.const 32 - i64.shr_u - local.set $7 - local.get $6 - i64.const 32 - i64.shr_u - local.set $6 - local.get $9 - local.get $6 - i64.mul - local.get $8 - i64.add - local.set $11 - local.get $12 - local.get $11 - i64.const 32 - i64.shl - i64.add - local.set $13 - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.add - local.set $14 - local.get $14 local.get $2 + call $~lib/rt/stub/__release local.get $3 - i64.mul - i64.add - local.set $14 - local.get $14 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $1 - local.get $4 - i64.mul - i64.add - local.set $14 - local.get $14 - local.get $11 - i64.const 32 - i64.shr_u - i64.add - local.set $14 - local.get $13 - global.set $~lib/bignum/globals/__res128_lo - local.get $14 - global.set $~lib/bignum/globals/__res128_hi + call $~lib/rt/stub/__release + local.get $8 ) - (func $~lib/bignum/utils/atou128 (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9349,106 +9298,885 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i64) - (local $15 i64) - (local $16 i64) - (local $17 i64) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end - if - local.get $0 - call $~lib/rt/stub/__release - i32.const 3640 - i32.const 3688 - i32.const 133 - i32.const 4 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/stub/__retain + drop local.get $0 - call $~lib/string/String#get:length + call $~lib/rt/stub/__retain local.set $2 + i32.const 0 + local.set $3 local.get $2 + local.tee $4 i32.eqz - if + if (result i32) i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 - call $~lib/rt/stub/__retain - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release + else local.get $4 - return + i32.const 8 + call $~lib/rt/__instanceof end - local.get $0 - i32.const 0 - call $~lib/string/String#charCodeAt - local.set $5 - local.get $2 - i32.const 1 - i32.eq if (result i32) - local.get $5 - i32.const 48 - i32.eq + local.get $1 + i32.const 816 + call $~lib/string/String.__ne else i32.const 0 end if - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $3 + local.get $2 call $~lib/rt/stub/__retain local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release local.get $4 - return - end - local.get $5 - i32.const 45 - i32.eq - local.set $6 - local.get $6 - if (result i32) - local.get $6 - else + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/array/Array#constructor (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 18 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode (; 153 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2832 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + return + end + local.get $3 + local.tee $6 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $6 + i32.const 21 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2832 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2904 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 377 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i64.load + i32.wrap_i64 + local.set $8 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + return + ) + (func $~lib/array/Array#push (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 + ) + (func $~lib/nearEntry/decodeArray (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.tee $2 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $2 + i32.const 17 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $2 + i32.const 2480 + call $~lib/string/String.__concat + local.tee $3 + i32.const 2552 + i32.const 327 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $4 + local.get $0 + i32.load + call $~lib/rt/stub/__retain + local.set $5 + block $break|0 + i32.const 0 + local.set $6 + loop $loop|0 + local.get $6 + local.get $5 + call $~lib/array/Array<~lib/nearEntry/Value>#get:length + i32.lt_s + i32.eqz + br_if $break|0 + local.get $5 + local.get $6 + call $~lib/array/Array<~lib/nearEntry/Value>#__get + local.tee $7 + i32.const 816 + call $~lib/nearEntry/decode + local.set $8 + local.get $4 + local.get $8 + call $~lib/array/Array#push + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $7 + call $~lib/rt/stub/__release + br $loop|0 + end + unreachable + end + local.get $4 + local.set $8 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $8 + ) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 156 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/bignum/integer/u128/u128#constructor (; 157 ;) (type $FUNCSIG$iijj) (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + local.get $0 + i32.eqz + if + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end + local.get $0 + local.get $1 + i64.store + local.get $0 + local.get $2 + i64.store offset=8 + local.get $0 + ) + (func $~lib/array/Array#__unchecked_get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + ) + (func $~lib/array/Array#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 0 + i32.shr_u + i32.ge_u + if + i32.const 832 + i32.const 768 + i32.const 109 + i32.const 61 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/array/Array#__unchecked_get + ) + (func $~lib/bignum/globals/__multi3 (; 160 ;) (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (local $14 i64) + local.get $1 + local.set $5 + local.get $3 + local.set $6 + local.get $5 + i64.const 4294967295 + i64.and + local.set $9 + local.get $6 + i64.const 4294967295 + i64.and + local.set $10 + local.get $9 + local.get $10 + i64.mul + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $12 + local.get $5 + i64.const 32 + i64.shr_u + local.set $5 + local.get $5 + local.get $10 + i64.mul + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $11 + local.get $11 + i64.const 4294967295 + i64.and + local.set $8 + local.get $11 + i64.const 32 + i64.shr_u + local.set $7 + local.get $6 + i64.const 32 + i64.shr_u + local.set $6 + local.get $9 + local.get $6 + i64.mul + local.get $8 + i64.add + local.set $11 + local.get $12 + local.get $11 + i64.const 32 + i64.shl + i64.add + local.set $13 + local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.add + local.set $14 + local.get $14 + local.get $2 + local.get $3 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $1 + local.get $4 + i64.mul + i64.add + local.set $14 + local.get $14 + local.get $11 + i64.const 32 + i64.shr_u + i64.add + local.set $14 + local.get $13 + global.set $~lib/bignum/globals/__res128_lo + local.get $14 + global.set $~lib/bignum/globals/__res128_hi + ) + (func $~lib/bignum/utils/atou128 (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i64) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 + end + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + local.get $0 + call $~lib/rt/stub/__release + i32.const 3640 + i32.const 3688 + i32.const 133 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $0 + i32.const 0 + call $~lib/string/String#charCodeAt + local.set $5 + local.get $2 + i32.const 1 + i32.eq + if (result i32) + local.get $5 + i32.const 48 + i32.eq + else + i32.const 0 + end + if + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + return + end + local.get $5 + i32.const 45 + i32.eq + local.set $6 + local.get $6 + if (result i32) + local.get $6 + else local.get $5 i32.const 43 i32.eq @@ -10298,100 +11026,448 @@ br_if $continue|4 end end - local.get $11 + local.get $11 + call $~lib/rt/stub/__release + br $break|0 + end + local.get $6 + if (result i32) + local.get $8 + local.set $18 + local.get $18 + i64.load + i64.const -1 + i64.xor + local.set $17 + local.get $18 + i64.load offset=8 + i64.const -1 + i64.xor + local.set $16 + local.get $17 + i64.const 1 + i64.and + local.get $17 + i64.const 1 + i64.shr_u + i64.add + i64.const 63 + i64.shr_u + local.set $13 + i32.const 0 + local.get $17 + i64.const 1 + i64.add + local.get $16 + local.get $13 + i64.add + call $~lib/bignum/integer/u128/u128#constructor + local.tee $18 + local.tee $11 + else + local.get $8 + call $~lib/rt/stub/__retain + local.tee $10 + end + call $~lib/rt/stub/__retain + local.set $18 + local.get $3 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $18 + ) + (func $~lib/bignum/integer/u128/u128#_decode (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + local.get $1 + i32.const 3896 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3896 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load + end + i64.store + local.get $0 + local.get $1 + i32.const 3920 + call $~lib/nearEntry/Obj#has + if (result i64) + local.get $1 + i32.const 3920 + call $~lib/nearEntry/decode + else + local.get $0 + i64.load offset=8 + end + i64.store offset=8 + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $~lib/bignum/integer/u128/u128#decode<~lib/nearEntry/Obj> (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $~lib/bignum/integer/u128/u128#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> (; 164 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 call $~lib/rt/stub/__release - br $break|0 + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 end - local.get $6 + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.tee $7 + i32.eqz if (result i32) - local.get $8 - local.set $18 - local.get $18 - i64.load - i64.const -1 - i64.xor - local.set $17 - local.get $18 - i64.load offset=8 - i64.const -1 - i64.xor - local.set $16 - local.get $17 - i64.const 1 - i64.and - local.get $17 - i64.const 1 - i64.shr_u - i64.add - i64.const 63 - i64.shr_u - local.set $13 i32.const 0 - local.get $17 - i64.const 1 - i64.add - local.get $16 - local.get $13 - i64.add - call $~lib/bignum/integer/u128/u128#constructor - local.tee $18 - local.tee $11 else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + if + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $1 + call $~lib/rt/stub/__retain + local.set $6 + local.get $4 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $6 + call $~lib/string/String.__concat + local.tee $7 + i32.const 3416 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2552 + i32.const 322 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load + call $~lib/rt/stub/__retain + local.set $9 + local.get $6 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + local.set $9 + i32.const 0 + local.set $5 + local.get $9 + local.get $5 + call $~lib/bignum/utils/atou128 + local.set $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $7 + local.set $5 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 + call $~lib/rt/stub/__release + local.get $5 + return + end + local.get $3 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $9 + i32.const 3872 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.const 0 + i64.const 0 + call $~lib/bignum/integer/u128/u128#constructor + local.tee $6 + local.tee $10 + local.get $8 + local.tee $11 + i32.ne + if + local.get $10 call $~lib/rt/stub/__retain - local.tee $10 + drop + local.get $11 + call $~lib/rt/stub/__release end - call $~lib/rt/stub/__retain - local.set $18 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $~lib/bignum/integer/u128/u128#decode<~lib/nearEntry/Obj> + local.set $10 + local.get $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $9 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $8 + local.get $1 call $~lib/rt/stub/__release - local.get $9 + local.get $8 call $~lib/rt/stub/__release - local.get $18 + local.get $10 ) - (func $~lib/bignum/integer/u128/u128#decode (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/stub/__retain - drop + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 - local.get $1 - i32.const 3896 - call $~lib/nearEntry/Obj#has - if (result i64) - local.get $1 - i32.const 3896 - call $~lib/nearEntry/decode - else + if (result i32) local.get $0 - i64.load + else + i32.const 16 + i32.const 27 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end - i64.store + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 local.get $0 + i32.const 0 + i32.store offset=12 local.get $1 - i32.const 3920 - call $~lib/nearEntry/Obj#has - if (result i64) - local.get $1 - i32.const 3920 - call $~lib/nearEntry/decode - else - local.get $0 - i64.load offset=8 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable end - i64.store offset=8 local.get $0 - call $~lib/rt/stub/__retain - local.set $2 local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=12 + local.get $0 ) - (func $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Value> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10400,22 +11476,24 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -10427,20 +11505,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10452,249 +11530,134 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 - return - end - i32.const 0 - local.set $7 - local.get $2 - local.tee $6 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 19 - call $~lib/rt/__instanceof - end - if - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $1 - call $~lib/rt/stub/__retain - local.set $5 - local.get $3 - local.tee $6 - i32.eqz - if (result i32) - i32.const 0 - else - local.get $6 - i32.const 19 - call $~lib/rt/__instanceof - end - i32.eqz - if - i32.const 2432 - local.get $5 - call $~lib/string/String.__concat - local.tee $6 - i32.const 3416 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2552 - i32.const 320 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load - call $~lib/rt/stub/__retain - local.set $8 - local.get $5 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $8 - local.set $8 - i32.const 0 - local.set $4 - local.get $8 - local.get $4 - call $~lib/bignum/utils/atou128 - local.set $6 - local.get $8 - call $~lib/rt/stub/__release - local.get $6 - local.set $4 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release local.get $7 - call $~lib/rt/stub/__release - local.get $4 return end - local.get $2 - local.tee $4 + i32.const 0 + local.set $8 + local.get $3 + call $~lib/rt/stub/__retain + local.set $4 + local.get $1 + call $~lib/rt/stub/__retain + local.set $6 + local.get $4 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $4 - i32.const 8 + local.get $7 + i32.const 19 call $~lib/rt/__instanceof end i32.eqz if i32.const 2432 - local.get $1 - call $~lib/string/String.__concat - local.tee $4 - i32.const 2608 - call $~lib/string/String.__concat - local.tee $8 - i32.const 3872 + local.get $6 call $~lib/string/String.__concat - local.tee $6 - i32.const 2680 + local.tee $7 + i32.const 3416 call $~lib/string/String.__concat - local.tee $3 + local.tee $5 i32.const 2552 - i32.const 399 + i32.const 322 i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 - i64.const 0 - i64.const 0 - call $~lib/bignum/integer/u128/u128#constructor - local.tee $5 - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $~lib/bignum/integer/u128/u128#decode + local.get $4 + i32.load + call $~lib/rt/stub/__retain local.set $9 - local.get $2 + local.get $6 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $6 + local.get $7 call $~lib/rt/stub/__release - local.get $3 + local.get $5 call $~lib/rt/stub/__release + local.get $9 + local.tee $5 + call $~lib/near-runtime-ts/base64/base64.decode + local.set $7 local.get $5 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $2 call $~lib/rt/stub/__release - local.get $9 - ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#constructor (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 27 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 656 - i32.const 768 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#push (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10730,7 +11693,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10792,7 +11755,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 @@ -10824,28 +11787,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/nearEntry/Obj> (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -10857,20 +11824,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -10882,105 +11849,328 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release local.get $5 - local.set $2 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/array/Array#constructor (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 28 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode (; 171 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + i64.extend_i32_u + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $7 + local.get $3 + local.tee $8 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $8 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $8 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 - call $~lib/rt/stub/__retain + i32.eqz + if + i32.const 2800 + local.get $1 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3040 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2856 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 355 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i64.extend_i32_u local.set $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $6 return end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $4 + i32.const 3040 + call $~lib/string/String.__concat + local.tee $5 + i32.const 3064 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2552 + i32.const 372 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load + call $~lib/rt/stub/__retain + local.set $10 + local.get $10 i32.const 0 - local.set $7 - local.get $2 - local.get $1 - call $~lib/nearEntry/decodeArray<~lib/typedarray/Uint8Array> + call $~lib/number/I64.parseInt local.set $6 + local.get $7 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release local.get $6 return ) - (func $~lib/array/Array#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 28 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#push (; 164 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) + (func $~lib/array/Array#push (; 172 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -11007,7 +12197,7 @@ i32.store offset=12 local.get $3 ) - (func $~lib/nearEntry/decodeArray (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11069,7 +12259,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -11099,28 +12289,32 @@ call $~lib/rt/stub/__release local.get $7 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11132,20 +12326,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11157,83 +12351,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/model/FooBar#decode (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#_decode (; 175 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -11246,7 +12446,7 @@ if (result i32) local.get $1 i32.const 2776 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load @@ -11259,7 +12459,7 @@ if (result i32) local.get $1 i32.const 2960 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load offset=4 @@ -11272,7 +12472,7 @@ if (result i64) local.get $1 i32.const 3008 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=8 @@ -11285,7 +12485,7 @@ if (result i64) local.get $1 i32.const 3208 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=16 @@ -11298,7 +12498,7 @@ if (result i64) local.get $1 i32.const 3240 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i64.load offset=24 @@ -11311,7 +12511,7 @@ if (result i32) local.get $1 i32.const 3296 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load8_u offset=32 @@ -11325,7 +12525,7 @@ if (result i32) local.get $1 i32.const 3392 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load offset=36 @@ -11345,7 +12545,7 @@ if (result i32) local.get $1 i32.const 3480 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=40 @@ -11365,7 +12565,7 @@ if (result i32) local.get $1 i32.const 3520 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array<~lib/string/String>>,~lib/nearEntry/Obj> else local.get $0 i32.load offset=44 @@ -11385,7 +12585,7 @@ if (result i32) local.get $1 i32.const 3544 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=48 @@ -11405,7 +12605,7 @@ if (result i32) local.get $1 i32.const 3576 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=52 @@ -11425,7 +12625,7 @@ if (result i32) local.get $1 i32.const 3608 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> else local.get $0 i32.load offset=56 @@ -11445,7 +12645,7 @@ if (result i32) local.get $1 i32.const 3944 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/typedarray/Uint8Array>,~lib/nearEntry/Obj> else local.get $0 i32.load offset=60 @@ -11465,7 +12665,7 @@ if (result i32) local.get $1 i32.const 3984 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=64 @@ -11484,7 +12684,40 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/decode (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/FooBar#decode<~lib/nearEntry/Obj> (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/FooBar#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11494,21 +12727,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11520,20 +12757,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11545,87 +12782,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return - end - local.get $4 - local.tee $5 - local.get $2 + end + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -11634,63 +12875,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 2648 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/FooBar#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/FooBar#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $~lib/array/Array#push (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11726,7 +12969,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11788,7 +13031,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.set $8 local.get $4 local.get $8 @@ -11820,28 +13063,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array> (; 171 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -11853,20 +13100,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -11878,83 +13125,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/main/convertFoobars~anonymous|0 (; 172 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/main/convertFoobars~anonymous|0 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -11981,7 +13234,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 182 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12056,7 +13309,7 @@ end local.get $3 ) - (func $assembly/main/convertFoobars (; 174 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/convertFoobars (; 183 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12069,7 +13322,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/convertFoobars (; 175 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/convertFoobars (; 184 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -12081,7 +13334,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 176 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#constructor (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12128,11 +13381,11 @@ drop local.get $0 ) - (func $~lib/array/Array#get:length (; 177 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 178 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12141,7 +13394,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 179 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -12160,7 +13413,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 180 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#get:isFirstKey (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load local.get $0 @@ -12170,7 +13423,7 @@ i32.sub call $~lib/array/Array#__get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 181 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#write (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12182,7 +13435,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/array/Array#__unchecked_set (; 182 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__unchecked_set (; 191 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -12192,7 +13445,7 @@ local.get $2 i32.store ) - (func $~lib/array/Array#__set (; 183 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 192 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $0 i32.load offset=12 @@ -12218,7 +13471,7 @@ i32.store offset=12 end ) - (func $~lib/string/String#substring (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12325,7 +13578,7 @@ local.get $10 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/decimalCount32 (; 185 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -12391,7 +13644,7 @@ end unreachable ) - (func $~lib/util/number/utoa32_lut (; 186 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 195 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12533,7 +13786,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 187 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 196 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -12588,12 +13841,12 @@ local.get $3 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 188 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/util/number/itoa32 return ) - (func $~lib/number/I32#toString (; 189 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/number/I32#toString (; 198 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -12605,7 +13858,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 190 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeString (; 199 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12784,7 +14037,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 191 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeKey (; 200 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12837,7 +14090,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 192 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setNull (; 201 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -12850,7 +14103,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushArray (; 202 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12872,11 +14125,11 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/array/Array#get:length (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 203 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 195 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -12886,7 +14139,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -12917,7 +14170,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#pushObject (; 206 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 call $~lib/rt/stub/__retain @@ -12939,7 +14192,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/util/number/decimalCount64 (; 198 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 207 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -13012,7 +14265,7 @@ end unreachable ) - (func $~lib/util/number/utoa64_lut (; 199 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 208 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -13139,7 +14392,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/itoa64 (; 200 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 209 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13226,12 +14479,12 @@ local.get $2 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 201 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 210 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/number/I64#toString (; 202 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/I64#toString (; 211 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13243,7 +14496,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 203 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeInteger (; 212 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) local.get $0 local.get $1 @@ -13253,7 +14506,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 204 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setInteger (; 213 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 call $~lib/rt/stub/__retain drop @@ -13266,7 +14519,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 205 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 214 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13285,7 +14538,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 206 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13304,7 +14557,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/util/number/utoa64 (; 207 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 216 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13369,12 +14622,12 @@ local.get $1 call $~lib/rt/stub/__retain ) - (func $~lib/util/number/itoa (; 208 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 217 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/number/U64#toString (; 209 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/number/U64#toString (; 218 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13386,7 +14639,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 210 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setString (; 219 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13404,7 +14657,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 211 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 220 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13426,7 +14679,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode (; 212 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 221 ;) (type $FUNCSIG$iiji) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13448,7 +14701,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 213 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#writeBoolean (; 222 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -13464,7 +14717,7 @@ end call $~lib/assemblyscript-json/encoder/JSONEncoder#write ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 214 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#setBoolean (; 223 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 call $~lib/rt/stub/__retain drop @@ -13477,7 +14730,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $~lib/nearEntry/encode (; 215 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13495,7 +14748,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/string/String> (; 216 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/string/String> (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13527,7 +14780,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/near-runtime-ts/base64/base64.encode (; 217 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/base64/base64.encode (; 226 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13776,7 +15029,7 @@ call $~lib/rt/stub/__release local.get $6 ) - (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 218 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/typedarray/Uint8Array> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -13812,11 +15065,11 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 219 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#get:length (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13826,7 +15079,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -13857,7 +15110,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get ) - (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__unchecked_get (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -13867,7 +15120,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/string/String>#__get (; 223 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__get (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -13898,7 +15151,7 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get ) - (func $~lib/array/Array#pop (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#pop (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -13931,7 +15184,7 @@ i32.store offset=12 local.get $2 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 225 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popArray (; 234 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 2072 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -13940,7 +15193,7 @@ call $~lib/array/Array#pop drop ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/string/String>> (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14003,7 +15256,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array<~lib/string/String>>> (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14066,11 +15319,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 237 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -14079,7 +15332,7 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -14098,7 +15351,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14157,7 +15410,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14216,7 +15469,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/typedarray/Int8Array#constructor (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#constructor (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) local.get $0 @@ -14232,11 +15485,11 @@ local.set $0 local.get $0 ) - (func $~lib/typedarray/Int8Array#get:length (; 234 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#get:length (; 243 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 call $~lib/arraybuffer/ArrayBufferView#get:byteLength ) - (func $~lib/typedarray/Int8Array#__get (; 235 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -14255,7 +15508,7 @@ i32.add i32.load8_s ) - (func $~lib/typedarray/Int8Array#__set (; 236 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#__set (; 245 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -14275,7 +15528,7 @@ local.get $2 i32.store8 ) - (func $~lib/bignum/utils/processU64 (; 237 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) + (func $~lib/bignum/utils/processU64 (; 246 ;) (type $FUNCSIG$vij) (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14407,7 +15660,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $~lib/bignum/utils/u128toa10 (; 238 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/bignum/utils/u128toa10 (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14497,7 +15750,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/bignum/integer/u128/u128#toString (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/bignum/integer/u128/u128#toString (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14737,7 +15990,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/bignum/integer/u128/u128> (; 249 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14799,11 +16052,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#get:length (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 242 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get (; 251 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -14813,7 +16066,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 243 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__get (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -14844,7 +16097,7 @@ local.get $1 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/typedarray/Uint8Array>> (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -14907,11 +16160,11 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/array/Array#get:length (; 245 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 246 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__unchecked_get (; 255 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 @@ -14920,7 +16173,7 @@ i32.add i64.load ) - (func $~lib/array/Array#__get (; 247 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (; 256 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -14939,7 +16192,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 248 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 257 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -14998,7 +16251,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 249 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#popObject (; 258 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 1160 call $~lib/assemblyscript-json/encoder/JSONEncoder#write @@ -15007,7 +16260,7 @@ call $~lib/array/Array#pop drop ) - (func $assembly/model/FooBar#encode (; 250 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/FooBar#encode (; 259 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -15132,7 +16385,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 251 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 260 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15165,7 +16418,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/model/ContainerClass#encode (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/ContainerClass#encode (; 261 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -15212,7 +16465,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 253 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 262 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -15245,7 +16498,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 254 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -15308,13 +16561,13 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 255 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#toString (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=4 i32.const 816 call $~lib/array/Array<~lib/string/String>#join ) - (func $~lib/string/String.UTF8.byteLength (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15437,7 +16690,7 @@ call $~lib/rt/stub/__release local.get $5 ) - (func $~lib/string/String.UTF8.encode (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.encode (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15646,96 +16899,425 @@ local.get $1 if local.get $2 - local.get $3 - i32.le_u - i32.eqz + local.get $3 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 567 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + call $~lib/rt/stub/__realloc + local.set $4 + local.get $5 + i32.const 0 + i32.store8 + else + local.get $2 + local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 571 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $6 + ) + (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $1 + call $~lib/assemblyscript-json/util/index/Buffer.getPtr + local.get $3 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + call $~lib/memory/memory.copy + local.get $1 + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $4 + ) + (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#toString + local.tee $1 + call $~lib/assemblyscript-json/util/index/Buffer.fromString + local.set $2 + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + ) + (func $assembly/test/__wrapper_convertFoobars (; 269 ;) (type $FUNCSIG$v) + (local $0 i64) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + i64.const 0 + call $~lib/nearEntry/input + i64.const 0 + call $~lib/nearEntry/register_len + local.set $0 + local.get $0 + i64.const 4294967295 + i64.eq + if + call $~lib/nearEntry/panic + end + i32.const 0 + local.get $0 + i32.wrap_i64 + call $~lib/typedarray/Uint8Array#constructor + local.set $1 + i64.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $2 + i64.extend_i32_u + call $~lib/nearEntry/read_register + local.get $1 + call $~lib/nearEntry/JSON.parse + local.set $3 + local.get $3 + i32.const 2304 + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Obj> + local.tee $4 + call $assembly/test/convertFoobars + local.set $5 + i32.const 0 + call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor + local.set $6 + local.get $6 + local.get $5 + i32.const 0 + call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/rt/stub/__release + local.get $6 + call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize + local.set $7 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $7 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $8 + i64.extend_i32_u + call $~lib/nearEntry/value_return + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Obj> (; 270 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq if i32.const 0 - i32.const 1424 - i32.const 567 - i32.const 8 - call $~lib/builtins/abort - unreachable + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return end - local.get $4 local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 local.get $4 - i32.sub - i32.const 1 - i32.add - call $~lib/rt/stub/__realloc - local.set $4 + call $~lib/rt/stub/__release local.get $5 - i32.const 0 - i32.store8 + call $~lib/rt/stub/__release else local.get $2 + local.tee $7 local.get $3 - i32.eq - i32.eqz + local.tee $5 + i32.ne if - i32.const 0 - i32.const 1424 - i32.const 571 - i32.const 8 - call $~lib/builtins/abort - unreachable + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release end + local.get $7 + local.set $3 end - local.get $4 + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray<~lib/string/String> + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $7 + return + ) + (func $~lib/near-runtime-ts/util/util.toUTF8 (; 271 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 call $~lib/rt/stub/__retain - local.set $6 + drop + local.get $0 + local.get $1 + call $~lib/string/String.UTF8.encode + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release - local.get $6 + local.get $3 ) - (func $~lib/assemblyscript-json/util/index/Buffer.fromString (; 258 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/near-runtime-ts/util/util.stringToBytes (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) local.get $0 call $~lib/rt/stub/__retain drop - i32.const 0 local.get $0 - i32.const 0 + i32.const 1 call $~lib/string/String.UTF8.byteLength - call $~lib/typedarray/Uint8Array#constructor + i32.const 1 + i32.sub local.set $1 - local.get $0 i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 local.get $1 - call $~lib/assemblyscript-json/util/index/Buffer.getPtr - local.get $3 + call $~lib/typedarray/Uint8Array#constructor + local.set $2 + local.get $2 + i32.load offset=4 local.get $0 i32.const 0 - call $~lib/string/String.UTF8.byteLength + call $~lib/near-runtime-ts/util/util.toUTF8 + local.get $1 call $~lib/memory/memory.copy + local.get $2 + local.set $3 + local.get $0 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/near-runtime-ts/logging/logging.log (; 273 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/near-runtime-ts/util/util.stringToBytes + local.set $1 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i64.extend_i32_s + local.get $1 + i32.load offset=4 + i64.extend_i32_u + call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 + local.get $1 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + ) + (func $assembly/main/getStringArrayLength (; 274 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + i32.const 5024 local.get $1 + call $~lib/number/I32#toString + local.tee $2 + call $~lib/string/String.__concat + local.tee $3 + call $~lib/near-runtime-ts/logging/logging.log + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length local.set $4 local.get $2 call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/assemblyscript-json/encoder/JSONEncoder#serialize (; 259 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/getStringArrayLength (; 275 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) local.get $0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#toString - local.tee $1 - call $~lib/assemblyscript-json/util/index/Buffer.fromString - local.set $2 - local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $assembly/main/getStringArrayLength + local.set $1 + local.get $0 call $~lib/rt/stub/__release - local.get $2 + local.get $1 ) - (func $assembly/test/__wrapper_convertFoobars (; 260 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_getStringArrayLength (; 276 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -15771,10 +17353,10 @@ call $~lib/nearEntry/JSON.parse local.set $3 local.get $3 - i32.const 2304 - call $~lib/nearEntry/decode<~lib/array/Array> + i32.const 3520 + call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>,~lib/nearEntry/Obj> local.tee $4 - call $assembly/test/convertFoobars + call $assembly/test/getStringArrayLength local.set $5 i32.const 0 call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor @@ -15782,7 +17364,7 @@ local.get $6 local.get $5 i32.const 0 - call $~lib/nearEntry/encode<~lib/array/Array> + call $~lib/nearEntry/encode call $~lib/rt/stub/__release local.get $6 call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize @@ -15803,8 +17385,6 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release local.get $7 @@ -15812,205 +17392,238 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/near-runtime-ts/util/util.toUTF8 (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $assembly/model/ContainerClass#constructor (; 277 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - drop + i32.eqz + if + i32.const 4 + i32.const 23 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + end local.get $0 - local.get $1 - call $~lib/string/String.UTF8.encode - local.tee $2 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release + i32.const 0 + i32.store local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/near-runtime-ts/util/util.stringToBytes (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/nearEntry/decode (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 1 - i32.sub - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - i32.load offset=4 - local.get $0 - i32.const 0 - call $~lib/near-runtime-ts/util/util.toUTF8 local.get $1 - call $~lib/memory/memory.copy - local.get $2 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $~lib/near-runtime-ts/logging/logging.log (; 263 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 call $~lib/rt/stub/__retain drop local.get $0 - call $~lib/near-runtime-ts/util/util.stringToBytes - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $1 - i32.load offset=4 - i64.extend_i32_u - call $~lib/near-runtime-ts/runtime_api/runtime_api.log_utf8 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - ) - (func $assembly/main/getStringArrayLength (; 264 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $1 - i32.const 5024 - local.get $1 - call $~lib/number/I32#toString - local.tee $2 - call $~lib/string/String.__concat - local.tee $3 - call $~lib/near-runtime-ts/logging/logging.log - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $4 + local.set $2 + i32.const 0 + local.set $3 local.get $2 - call $~lib/rt/stub/__release + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end local.get $3 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $assembly/test/getStringArrayLength (; 265 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $assembly/main/getStringArrayLength - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $assembly/test/__wrapper_getStringArrayLength (; 266 ;) (type $FUNCSIG$v) - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i64.const 0 - call $~lib/nearEntry/input - i64.const 0 - call $~lib/nearEntry/register_len - local.set $0 - local.get $0 - i64.const 4294967295 - i64.eq + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end if - call $~lib/nearEntry/panic + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return end i32.const 0 - local.get $0 - i32.wrap_i64 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - i64.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $2 - i64.extend_i32_u - call $~lib/nearEntry/read_register - local.get $1 - call $~lib/nearEntry/JSON.parse - local.set $3 + local.set $8 local.get $3 - i32.const 3520 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/string/String>> - local.tee $4 - call $assembly/test/getStringArrayLength - local.set $5 - i32.const 0 - call $~lib/assemblyscript-json/encoder/JSONEncoder#constructor - local.set $6 - local.get $6 - local.get $5 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2648 + call $~lib/string/String.__concat + local.tee $4 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end i32.const 0 - call $~lib/nearEntry/encode - call $~lib/rt/stub/__release - local.get $6 - call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize - local.set $7 - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i64.extend_i32_s - local.get $7 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $8 - i64.extend_i32_u - call $~lib/nearEntry/value_return - local.get $1 - call $~lib/rt/stub/__release + call $assembly/model/FooBar#constructor + local.tee $9 + local.tee $10 + local.get $8 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $11 + call $~lib/rt/stub/__release + end + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $6 call $~lib/rt/stub/__release - local.get $7 + local.get $9 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release + local.get $10 ) - (func $assembly/model/ContainerClass#constructor (; 267 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 23 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - ) - (func $assembly/model/ContainerClass#decode (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#_decode (; 279 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -16024,7 +17637,7 @@ if (result i32) local.get $1 i32.const 4784 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode else local.get $0 i32.load @@ -16043,7 +17656,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/ContainerClass#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16053,21 +17699,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -16079,20 +17729,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16104,87 +17754,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -16193,63 +17847,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 5128 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/ContainerClass#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/ContainerClass#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/ContainerClass#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/model/AnotherContainerClass#constructor (; 270 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/AnotherContainerClass#constructor (; 282 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -16264,7 +17920,7 @@ i32.store local.get $0 ) - (func $assembly/main/rewrapFoobar (; 271 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/rewrapFoobar (; 283 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16326,7 +17982,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/test/rewrapFoobar (; 272 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/rewrapFoobar (; 284 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -16338,11 +17994,11 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (; 273 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (; 285 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 274 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__unchecked_get (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -16352,7 +18008,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array<~lib/array/Array>#__get (; 275 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -16383,11 +18039,11 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get ) - (func $~lib/array/Array#get:length (; 276 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 288 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__unchecked_get (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__unchecked_get (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -16397,7 +18053,7 @@ i32.load call $~lib/rt/stub/__retain ) - (func $~lib/array/Array#__get (; 278 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 290 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=12 @@ -16428,7 +18084,7 @@ local.get $1 call $~lib/array/Array#__unchecked_get ) - (func $~lib/nearEntry/encode<~lib/array/Array> (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array> (; 291 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16491,7 +18147,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode<~lib/array/Array<~lib/array/Array>> (; 292 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $0 @@ -16554,7 +18210,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/AnotherContainerClass#encode (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/AnotherContainerClass#encode (; 293 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -16601,7 +18257,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/encode (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/nearEntry/encode (; 294 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $0 call $~lib/rt/stub/__retain @@ -16634,7 +18290,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $assembly/test/__wrapper_rewrapFoobar (; 283 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_rewrapFoobar (; 295 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -16671,7 +18327,7 @@ local.set $3 local.get $3 i32.const 5088 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/test/rewrapFoobar local.set $5 @@ -16700,49 +18356,193 @@ call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + ) + (func $~lib/array/Array<~lib/array/Array>#constructor (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $0 + else + i32.const 16 + i32.const 35 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + end + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $1 + if + i32.const 656 + i32.const 768 + i32.const 56 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.store offset=12 + local.get $0 + ) + (func $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $4 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $2 + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $6 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + return + end + local.get $5 + local.tee $6 + local.get $3 + local.tee $7 + i32.ne + if + local.get $6 + call $~lib/rt/stub/__retain + drop + local.get $7 + call $~lib/rt/stub/__release + end + local.get $6 + local.set $3 + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + else + local.get $2 + local.tee $7 + local.get $3 + local.tee $5 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $5 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $3 + end + local.get $3 + local.tee $7 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $7 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $7 + return + end + i32.const 0 + local.set $8 + local.get $3 + local.get $1 + call $~lib/nearEntry/decodeArray + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release local.get $8 call $~lib/rt/stub/__release + local.get $7 + return ) - (func $~lib/array/Array<~lib/array/Array>#constructor (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 16 - i32.const 35 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - if - i32.const 656 - i32.const 768 - i32.const 56 - i32.const 20 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array<~lib/array/Array>#push (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#push (; 298 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16778,7 +18578,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 286 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decodeArray<~lib/array/Array> (; 299 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16840,7 +18640,7 @@ call $~lib/array/Array<~lib/nearEntry/Value>#__get local.tee $7 i32.const 816 - call $~lib/nearEntry/decode<~lib/array/Array> + call $~lib/nearEntry/decode<~lib/array/Array,~lib/nearEntry/Value> local.set $8 local.get $4 local.get $8 @@ -16872,28 +18672,32 @@ call $~lib/rt/stub/__release local.get $8 ) - (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> (; 287 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> (; 300 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -16905,20 +18709,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -16930,83 +18734,89 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 + local.set $8 + local.get $3 local.get $1 call $~lib/nearEntry/decodeArray<~lib/array/Array> - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $7 + local.get $3 call $~lib/rt/stub/__release - local.get $6 + local.get $8 + call $~lib/rt/stub/__release + local.get $7 return ) - (func $assembly/model/AnotherContainerClass#decode (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#_decode (; 301 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17020,7 +18830,7 @@ if (result i32) local.get $1 i32.const 2304 - call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>> + call $~lib/nearEntry/decode<~lib/array/Array<~lib/array/Array>,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -17039,7 +18849,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/AnotherContainerClass#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17049,21 +18892,25 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/rt/stub/__retain + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.tee $4 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $4 i32.const 8 call $~lib/rt/__instanceof end @@ -17075,20 +18922,20 @@ i32.const 0 end if - local.get $0 + local.get $2 call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $1 - call $~lib/nearEntry/Obj#get local.set $4 local.get $4 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $5 + local.get $5 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $6 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -17100,87 +18947,91 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 return end - local.get $4 - local.tee $5 - local.get $2 + local.get $5 local.tee $6 + local.get $3 + local.tee $7 i32.ne if - local.get $5 + local.get $6 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $7 call $~lib/rt/stub/__release end - local.get $5 - local.set $2 - local.get $3 - call $~lib/rt/stub/__release + local.get $6 + local.set $3 local.get $4 call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release else - local.get $0 - local.tee $6 local.get $2 - local.tee $4 + local.tee $7 + local.get $3 + local.tee $5 i32.ne if - local.get $6 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $5 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $7 + local.set $3 end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $7 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $8 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $3 + local.tee $7 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $7 i32.const 8 call $~lib/rt/__instanceof end @@ -17189,63 +19040,65 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $7 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $5 i32.const 5176 call $~lib/string/String.__concat - local.tee $3 + local.tee $4 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $6 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/AnotherContainerClass#constructor - local.tee $8 local.tee $9 - local.get $7 local.tee $10 + local.get $8 + local.tee $11 i32.ne if - local.get $9 + local.get $10 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $11 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/AnotherContainerClass#decode - local.set $9 + local.get $10 + local.set $8 + local.get $8 + local.get $3 + call $assembly/model/AnotherContainerClass#decode<~lib/nearEntry/Obj> + local.set $10 local.get $2 call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release local.get $3 call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $4 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 + local.get $8 call $~lib/rt/stub/__release - local.get $9 + local.get $10 ) - (func $assembly/main/unwrapFoobar (; 290 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/main/unwrapFoobar (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17265,7 +19118,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/unwrapFoobar (; 291 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/unwrapFoobar (; 305 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/stub/__retain @@ -17277,7 +19130,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $assembly/test/__wrapper_unwrapFoobar (; 292 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_unwrapFoobar (; 306 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -17314,7 +19167,7 @@ local.set $3 local.get $3 i32.const 5088 - call $~lib/nearEntry/decode + call $~lib/nearEntry/decode local.tee $4 call $assembly/test/unwrapFoobar local.set $5 @@ -17354,14 +19207,14 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $assembly/main/stringOrNull (; 293 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/main/stringOrNull (; 307 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/rt/stub/__retain ) - (func $assembly/test/stringOrNull (; 294 ;) (type $FUNCSIG$i) (result i32) + (func $assembly/test/stringOrNull (; 308 ;) (type $FUNCSIG$i) (result i32) call $assembly/main/stringOrNull ) - (func $assembly/test/__wrapper_stringOrNull (; 295 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringOrNull (; 309 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17411,7 +19264,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $assembly/test/stringAliasTest (; 296 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/test/stringAliasTest (; 310 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17429,7 +19282,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/test/__wrapper_stringAliasTest (; 297 ;) (type $FUNCSIG$v) + (func $assembly/test/__wrapper_stringAliasTest (; 311 ;) (type $FUNCSIG$v) (local $0 i64) (local $1 i32) (local $2 i32) @@ -17466,7 +19319,7 @@ local.set $3 local.get $3 i32.const 5240 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> local.tee $4 call $assembly/test/stringAliasTest local.set $5 @@ -17515,7 +19368,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 298 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array.create<~lib/typedarray/Uint8Array> (; 312 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 268435452 @@ -17546,7 +19399,7 @@ call $~lib/memory/memory.fill local.get $1 ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 299 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set (; 313 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) local.get $2 @@ -17576,7 +19429,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 300 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/typedarray/Uint8Array>#__set (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 call $~lib/rt/stub/__retain @@ -17605,22 +19458,247 @@ call $~lib/array/ensureSize local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set - local.get $1 - local.get $3 - i32.ge_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $2 + local.get $2 + call $~lib/array/Array<~lib/typedarray/Uint8Array>#__unchecked_set + local.get $1 + local.get $3 + i32.ge_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=12 + end + local.get $2 + call $~lib/rt/stub/__release + ) + (func $~lib/nearEntry/decode (; 315 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/nearEntry/JSON.parse + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.tee $5 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $5 + i32.const 8 + call $~lib/rt/__instanceof + end + if (result i32) + local.get $1 + i32.const 816 + call $~lib/string/String.__ne + else + i32.const 0 + end + if + local.get $3 + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 + local.get $1 + call $~lib/nearEntry/Obj#get + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $7 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 + return + end + local.get $6 + local.tee $7 + local.get $4 + local.tee $8 + i32.ne + if + local.get $7 + call $~lib/rt/stub/__retain + drop + local.get $8 + call $~lib/rt/stub/__release + end + local.get $7 + local.set $4 + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + else + local.get $3 + local.tee $8 + local.get $4 + local.tee $6 + i32.ne + if + local.get $8 + call $~lib/rt/stub/__retain + drop + local.get $6 + call $~lib/rt/stub/__release + end + local.get $8 + local.set $4 + end + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 22 + call $~lib/rt/__instanceof + end + if + i32.const 0 + call $~lib/rt/stub/__retain + local.set $8 + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + return + end + i32.const 0 + local.set $9 + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 19 + call $~lib/rt/__instanceof + end + if + nop + end + local.get $4 + local.tee $8 + i32.eqz + if (result i32) + i32.const 0 + else + local.get $8 + i32.const 8 + call $~lib/rt/__instanceof + end + i32.eqz + if + i32.const 2432 + local.get $1 + call $~lib/string/String.__concat + local.tee $8 + i32.const 2608 + call $~lib/string/String.__concat + local.tee $6 + i32.const 2648 + call $~lib/string/String.__concat + local.tee $5 + i32.const 2680 + call $~lib/string/String.__concat + local.tee $7 + i32.const 2552 + i32.const 400 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $assembly/model/FooBar#constructor + local.tee $10 + local.tee $11 + local.get $9 + local.tee $12 + i32.ne + if + local.get $11 + call $~lib/rt/stub/__retain + drop + local.get $12 + call $~lib/rt/stub/__release + end + local.get $11 + local.set $9 + local.get $9 + local.get $4 + call $assembly/model/FooBar#decode<~lib/nearEntry/Obj> + local.set $11 + local.get $2 + call $~lib/rt/stub/__release + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $5 + call $~lib/rt/stub/__release + local.get $7 + call $~lib/rt/stub/__release + local.get $10 + call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $9 call $~lib/rt/stub/__release + local.get $11 ) - (func $assembly/model/FooBar#toJSON (; 301 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/FooBar#toJSON (; 316 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17634,7 +19712,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#constructor (; 302 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#constructor (; 317 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.eqz if @@ -17655,7 +19733,7 @@ i32.store offset=8 local.get $0 ) - (func $assembly/model/Nullables#encode (; 303 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $assembly/model/Nullables#encode (; 318 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -17714,7 +19792,7 @@ call $~lib/rt/stub/__release local.get $4 ) - (func $assembly/model/Nullables#serialize (; 304 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $assembly/model/Nullables#serialize (; 319 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -17728,7 +19806,7 @@ call $~lib/rt/stub/__release local.get $2 ) - (func $assembly/model/Nullables#decode (; 305 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#_decode (; 320 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $1 @@ -17742,7 +19820,7 @@ if (result i32) local.get $1 i32.const 5240 - call $~lib/nearEntry/decode<~lib/string/String> + call $~lib/nearEntry/decode<~lib/string/String,~lib/nearEntry/Obj> else local.get $0 i32.load @@ -17762,7 +19840,7 @@ if (result i32) local.get $1 i32.const 3872 - call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128> + call $~lib/nearEntry/decode<~lib/bignum/integer/u128/u128,~lib/nearEntry/Obj> else local.get $0 i32.load offset=4 @@ -17782,7 +19860,7 @@ if (result i32) local.get $1 i32.const 5680 - call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array> + call $~lib/nearEntry/decode<~lib/typedarray/Uint8Array,~lib/nearEntry/Obj> else local.get $0 i32.load offset=8 @@ -17801,7 +19879,40 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $~lib/nearEntry/decode (; 306 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $assembly/model/Nullables#decode<~lib/nearEntry/Obj> (; 321 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + call $~lib/rt/stub/__retain + drop + i32.const 0 + local.set $2 + local.get $1 + local.tee $3 + local.get $2 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release + end + local.get $3 + local.set $2 + local.get $0 + local.get $2 + call $assembly/model/Nullables#_decode + local.set $3 + local.get $2 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release + local.get $3 + ) + (func $~lib/nearEntry/decode (; 322 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17811,21 +19922,28 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/stub/__retain drop local.get $1 call $~lib/rt/stub/__retain drop - i32.const 0 - local.set $2 local.get $0 - local.tee $3 + call $~lib/nearEntry/JSON.parse + local.tee $2 + call $~lib/rt/stub/__retain + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.tee $5 i32.eqz if (result i32) i32.const 0 else - local.get $3 + local.get $5 i32.const 8 call $~lib/rt/__instanceof end @@ -17837,20 +19955,20 @@ i32.const 0 end if - local.get $0 - call $~lib/rt/stub/__retain - local.set $3 local.get $3 + call $~lib/rt/stub/__retain + local.set $5 + local.get $5 local.get $1 call $~lib/nearEntry/Obj#get - local.set $4 - local.get $4 + local.set $6 + local.get $6 i32.const 0 i32.eq if i32.const 0 call $~lib/rt/stub/__retain - local.set $5 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $1 @@ -17862,87 +19980,95 @@ local.get $4 call $~lib/rt/stub/__release local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + local.get $7 return end + local.get $6 + local.tee $7 local.get $4 - local.tee $5 - local.get $2 - local.tee $6 + local.tee $8 i32.ne if - local.get $5 + local.get $7 call $~lib/rt/stub/__retain drop - local.get $6 + local.get $8 call $~lib/rt/stub/__release end + local.get $7 + local.set $4 local.get $5 - local.set $2 - local.get $3 call $~lib/rt/stub/__release - local.get $4 + local.get $6 call $~lib/rt/stub/__release else - local.get $0 + local.get $3 + local.tee $8 + local.get $4 local.tee $6 - local.get $2 - local.tee $4 i32.ne if - local.get $6 + local.get $8 call $~lib/rt/stub/__retain drop - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $6 - local.set $2 + local.get $8 + local.set $4 end - local.get $2 - local.tee $6 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 22 call $~lib/rt/__instanceof end if i32.const 0 call $~lib/rt/stub/__retain - local.set $6 + local.set $8 local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 + call $~lib/rt/stub/__release + local.get $4 + call $~lib/rt/stub/__release + local.get $8 return end i32.const 0 - local.set $7 - local.get $2 - local.tee $6 + local.set $9 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 19 call $~lib/rt/__instanceof end if nop end - local.get $2 - local.tee $6 + local.get $4 + local.tee $8 i32.eqz if (result i32) i32.const 0 else - local.get $6 + local.get $8 i32.const 8 call $~lib/rt/__instanceof end @@ -17951,63 +20077,67 @@ i32.const 2432 local.get $1 call $~lib/string/String.__concat - local.tee $6 + local.tee $8 i32.const 2608 call $~lib/string/String.__concat - local.tee $4 + local.tee $6 i32.const 5720 call $~lib/string/String.__concat - local.tee $3 + local.tee $5 i32.const 2680 call $~lib/string/String.__concat - local.tee $5 + local.tee $7 i32.const 2552 - i32.const 399 + i32.const 400 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.tee $8 - local.tee $9 - local.get $7 local.tee $10 + local.tee $11 + local.get $9 + local.tee $12 i32.ne if - local.get $9 + local.get $11 call $~lib/rt/stub/__retain drop - local.get $10 + local.get $12 call $~lib/rt/stub/__release end - local.get $9 - local.set $7 - local.get $7 - local.get $2 - call $assembly/model/Nullables#decode + local.get $11 local.set $9 + local.get $9 + local.get $4 + call $assembly/model/Nullables#decode<~lib/nearEntry/Obj> + local.set $11 local.get $2 call $~lib/rt/stub/__release - local.get $6 + local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $3 + local.get $8 + call $~lib/rt/stub/__release + local.get $6 call $~lib/rt/stub/__release local.get $5 call $~lib/rt/stub/__release - local.get $8 + local.get $7 + call $~lib/rt/stub/__release + local.get $10 call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release local.get $9 + call $~lib/rt/stub/__release + local.get $11 ) - (func $assembly/test/runTest (; 307 ;) (type $FUNCSIG$v) + (func $assembly/test/runTest (; 323 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18036,8 +20166,6 @@ (local $25 i32) (local $26 i32) (local $27 i32) - (local $28 i32) - (local $29 i32) i32.const 5296 call $~lib/near-runtime-ts/logging/logging.log i32.const 0 @@ -18223,43 +20351,40 @@ call $~lib/assemblyscript-json/encoder/JSONEncoder#serialize local.set $10 local.get $10 - call $~lib/nearEntry/JSON.parse - local.set $11 - local.get $11 i32.const 816 - call $~lib/nearEntry/decode - local.set $12 + call $~lib/nearEntry/decode + local.set $11 i32.const 5600 - local.get $12 + local.get $11 call $assembly/model/FooBar#toJSON - local.tee $13 + local.tee $12 call $~lib/string/String.__concat - local.tee $14 + local.tee $13 call $~lib/near-runtime-ts/logging/logging.log local.get $0 i32.load - local.get $12 + local.get $11 i32.load i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 187 + i32.const 186 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i32.load offset=4 - local.get $12 + local.get $11 i32.load offset=4 i32.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 188 + i32.const 187 i32.const 2 call $~lib/builtins/abort unreachable @@ -18267,17 +20392,17 @@ local.get $0 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $15 - local.get $12 + local.tee $14 + local.get $11 i32.load offset=40 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $16 + local.tee $15 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 189 + i32.const 188 i32.const 2 call $~lib/builtins/abort unreachable @@ -18286,22 +20411,22 @@ i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $17 + local.tee $16 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $18 - local.get $12 + local.tee $17 + local.get $11 i32.load offset=60 i32.const 0 call $~lib/array/Array<~lib/typedarray/Uint8Array>#__get - local.tee $19 + local.tee $18 call $~lib/near-runtime-ts/base64/base64.encode - local.tee $20 + local.tee $19 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 190 + i32.const 189 i32.const 2 call $~lib/builtins/abort unreachable @@ -18310,17 +20435,17 @@ i32.load offset=44 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $21 + local.tee $20 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $22 + local.tee $21 i32.const 5424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 191 + i32.const 190 i32.const 2 call $~lib/builtins/abort unreachable @@ -18329,7 +20454,7 @@ i32.load offset=64 i32.const 0 call $~lib/array/Array#__get - local.get $12 + local.get $11 i32.load offset=64 i32.const 0 call $~lib/array/Array#__get @@ -18338,37 +20463,35 @@ if i32.const 0 i32.const 5632 - i32.const 192 + i32.const 191 i32.const 2 call $~lib/builtins/abort unreachable end local.get $0 i64.load offset=16 - local.get $12 + local.get $11 i64.load offset=16 i64.eq i32.eqz if i32.const 0 i32.const 5632 - i32.const 193 + i32.const 192 i32.const 2 call $~lib/builtins/abort unreachable end i32.const 0 call $assembly/model/Nullables#constructor - local.set $23 - local.get $23 + local.set $22 + local.get $22 call $assembly/model/Nullables#serialize - local.tee $24 - call $~lib/nearEntry/JSON.parse - local.tee $25 + local.tee $23 i32.const 816 - call $~lib/nearEntry/decode - local.set $26 - local.get $26 + call $~lib/nearEntry/decode + local.set $24 + local.get $24 i32.load i32.const 0 call $~lib/string/String.__eq @@ -18376,50 +20499,50 @@ if i32.const 0 i32.const 5632 - i32.const 196 + i32.const 195 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $26 + local.get $24 i32.load offset=4 call $~lib/rt/stub/__retain - local.set $28 + local.set $26 i32.const 0 call $~lib/rt/stub/__retain - local.set $27 - local.get $28 + local.set $25 + local.get $26 i64.load offset=8 - local.get $27 + local.get $25 i64.load offset=8 i64.eq if (result i32) - local.get $28 + local.get $26 i64.load - local.get $27 + local.get $25 i64.load i64.eq else i32.const 0 end - local.set $29 - local.get $27 + local.set $27 + local.get $25 call $~lib/rt/stub/__release - local.get $28 + local.get $26 call $~lib/rt/stub/__release - local.get $29 + local.get $27 i32.const 0 i32.ne i32.eqz if i32.const 0 i32.const 5632 - i32.const 197 + i32.const 196 i32.const 2 call $~lib/builtins/abort unreachable end - local.get $26 + local.get $24 i32.load offset=8 i32.const 0 i32.eq @@ -18427,7 +20550,7 @@ if i32.const 0 i32.const 5632 - i32.const 198 + i32.const 197 i32.const 2 call $~lib/builtins/abort unreachable @@ -18484,14 +20607,11 @@ call $~lib/rt/stub/__release local.get $24 call $~lib/rt/stub/__release - local.get $25 - call $~lib/rt/stub/__release - local.get $26 - call $~lib/rt/stub/__release ) - (func $start (; 308 ;) (type $FUNCSIG$v) + (func $start (; 324 ;) (type $FUNCSIG$v) call $start:~lib/rt/index-stub + call $start:~lib/nearEntry ) - (func $null (; 309 ;) (type $FUNCSIG$v) + (func $null (; 325 ;) (type $FUNCSIG$v) ) )