{
  "version": 3,
  "sources": ["../../js-sha256/src/sha256.js", "../../ws/browser.js", "../src/bindings/duckdb-mvp.js", "../src/bindings/duckdb-eh.js", "../src/bindings/connection.ts", "../src/status.ts", "../src/bindings/udf_runtime.ts", "../src/bindings/runtime.ts", "../src/bindings/file_stats.ts", "../src/json_typedef.ts", "../src/bindings/bindings_base.ts", "../src/bindings/config.ts", "../src/bindings/insert_options.ts", "../src/bindings/tokens.ts", "../src/log.ts", "../../wasm-feature-detect/dist/esm/index.js", "../package.json", "../src/version.ts", "../src/platform.ts", "../src/utils/s3_helper.ts", "../src/bindings/runtime_browser.ts", "../src/bindings/bindings_browser_mvp.ts", "../src/bindings/bindings_browser_base.ts", "../src/bindings/bindings_browser_eh.ts", "../src/targets/duckdb-browser-blocking.ts"],
  "sourcesContent": ["/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2025\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n  'use strict';\n\n  var ERROR = 'input is invalid type';\n  var WINDOW = typeof window === 'object';\n  var root = WINDOW ? window : {};\n  if (root.JS_SHA256_NO_WINDOW) {\n    WINDOW = false;\n  }\n  var WEB_WORKER = !WINDOW && typeof self === 'object';\n  var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node && process.type != 'renderer';\n  if (NODE_JS) {\n    root = global;\n  } else if (WEB_WORKER) {\n    root = self;\n  }\n  var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n  var AMD = typeof define === 'function' && define.amd;\n  var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n  var HEX_CHARS = '0123456789abcdef'.split('');\n  var EXTRA = [-2147483648, 8388608, 32768, 128];\n  var SHIFT = [24, 16, 8, 0];\n  var K = [\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n  ];\n  var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n  var blocks = [];\n\n  if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n    Array.isArray = function (obj) {\n      return Object.prototype.toString.call(obj) === '[object Array]';\n    };\n  }\n\n  if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n    ArrayBuffer.isView = function (obj) {\n      return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n    };\n  }\n\n  var createOutputMethod = function (outputType, is224) {\n    return function (message) {\n      return new Sha256(is224, true).update(message)[outputType]();\n    };\n  };\n\n  var createMethod = function (is224) {\n    var method = createOutputMethod('hex', is224);\n    if (NODE_JS) {\n      method = nodeWrap(method, is224);\n    }\n    method.create = function () {\n      return new Sha256(is224);\n    };\n    method.update = function (message) {\n      return method.create().update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createOutputMethod(type, is224);\n    }\n    return method;\n  };\n\n  var nodeWrap = function (method, is224) {\n    var crypto = require('crypto')\n    var Buffer = require('buffer').Buffer;\n    var algorithm = is224 ? 'sha224' : 'sha256';\n    var bufferFrom;\n    if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n      bufferFrom = Buffer.from;\n    } else {\n      bufferFrom = function (message) {\n        return new Buffer(message);\n      };\n    }\n    var nodeMethod = function (message) {\n      if (typeof message === 'string') {\n        return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n      } else {\n        if (message === null || message === undefined) {\n          throw new Error(ERROR);\n        } else if (message.constructor === ArrayBuffer) {\n          message = new Uint8Array(message);\n        }\n      }\n      if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n        message.constructor === Buffer) {\n        return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n      } else {\n        return method(message);\n      }\n    };\n    return nodeMethod;\n  };\n\n  var createHmacOutputMethod = function (outputType, is224) {\n    return function (key, message) {\n      return new HmacSha256(key, is224, true).update(message)[outputType]();\n    };\n  };\n\n  var createHmacMethod = function (is224) {\n    var method = createHmacOutputMethod('hex', is224);\n    method.create = function (key) {\n      return new HmacSha256(key, is224);\n    };\n    method.update = function (key, message) {\n      return method.create(key).update(message);\n    };\n    for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n      var type = OUTPUT_TYPES[i];\n      method[type] = createHmacOutputMethod(type, is224);\n    }\n    return method;\n  };\n\n  function Sha256(is224, sharedMemory) {\n    if (sharedMemory) {\n      blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      this.blocks = blocks;\n    } else {\n      this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n    }\n\n    if (is224) {\n      this.h0 = 0xc1059ed8;\n      this.h1 = 0x367cd507;\n      this.h2 = 0x3070dd17;\n      this.h3 = 0xf70e5939;\n      this.h4 = 0xffc00b31;\n      this.h5 = 0x68581511;\n      this.h6 = 0x64f98fa7;\n      this.h7 = 0xbefa4fa4;\n    } else { // 256\n      this.h0 = 0x6a09e667;\n      this.h1 = 0xbb67ae85;\n      this.h2 = 0x3c6ef372;\n      this.h3 = 0xa54ff53a;\n      this.h4 = 0x510e527f;\n      this.h5 = 0x9b05688c;\n      this.h6 = 0x1f83d9ab;\n      this.h7 = 0x5be0cd19;\n    }\n\n    this.block = this.start = this.bytes = this.hBytes = 0;\n    this.finalized = this.hashed = false;\n    this.first = true;\n    this.is224 = is224;\n  }\n\n  Sha256.prototype.update = function (message) {\n    if (this.finalized) {\n      return;\n    }\n    var notString, type = typeof message;\n    if (type !== 'string') {\n      if (type === 'object') {\n        if (message === null) {\n          throw new Error(ERROR);\n        } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n          message = new Uint8Array(message);\n        } else if (!Array.isArray(message)) {\n          if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n            throw new Error(ERROR);\n          }\n        }\n      } else {\n        throw new Error(ERROR);\n      }\n      notString = true;\n    }\n    var code, index = 0, i, length = message.length, blocks = this.blocks;\n    while (index < length) {\n      if (this.hashed) {\n        this.hashed = false;\n        blocks[0] = this.block;\n        this.block = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n          blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n          blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n          blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n      }\n\n      if (notString) {\n        for (i = this.start; index < length && i < 64; ++index) {\n          blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n        }\n      } else {\n        for (i = this.start; index < length && i < 64; ++index) {\n          code = message.charCodeAt(index);\n          if (code < 0x80) {\n            blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n          } else if (code < 0x800) {\n            blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else if (code < 0xd800 || code >= 0xe000) {\n            blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          } else {\n            code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n            blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n            blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n          }\n        }\n      }\n\n      this.lastByteIndex = i;\n      this.bytes += i - this.start;\n      if (i >= 64) {\n        this.block = blocks[16];\n        this.start = i - 64;\n        this.hash();\n        this.hashed = true;\n      } else {\n        this.start = i;\n      }\n    }\n    if (this.bytes > 4294967295) {\n      this.hBytes += this.bytes / 4294967296 << 0;\n      this.bytes = this.bytes % 4294967296;\n    }\n    return this;\n  };\n\n  Sha256.prototype.finalize = function () {\n    if (this.finalized) {\n      return;\n    }\n    this.finalized = true;\n    var blocks = this.blocks, i = this.lastByteIndex;\n    blocks[16] = this.block;\n    blocks[i >>> 2] |= EXTRA[i & 3];\n    this.block = blocks[16];\n    if (i >= 56) {\n      if (!this.hashed) {\n        this.hash();\n      }\n      blocks[0] = this.block;\n      blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n        blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n        blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n        blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n    }\n    blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n    blocks[15] = this.bytes << 3;\n    this.hash();\n  };\n\n  Sha256.prototype.hash = function () {\n    var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n      h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n    for (j = 16; j < 64; ++j) {\n      // rightrotate\n      t1 = blocks[j - 15];\n      s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n      t1 = blocks[j - 2];\n      s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n      blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n    }\n\n    bc = b & c;\n    for (j = 0; j < 64; j += 4) {\n      if (this.first) {\n        if (this.is224) {\n          ab = 300032;\n          t1 = blocks[0] - 1413257819;\n          h = t1 - 150054599 << 0;\n          d = t1 + 24177077 << 0;\n        } else {\n          ab = 704751109;\n          t1 = blocks[0] - 210244248;\n          h = t1 - 1521486534 << 0;\n          d = t1 + 143694565 << 0;\n        }\n        this.first = false;\n      } else {\n        s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n        s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n        ab = a & b;\n        maj = ab ^ (a & c) ^ bc;\n        ch = (e & f) ^ (~e & g);\n        t1 = h + s1 + ch + K[j] + blocks[j];\n        t2 = s0 + maj;\n        h = d + t1 << 0;\n        d = t1 + t2 << 0;\n      }\n      s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n      s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n      da = d & a;\n      maj = da ^ (d & b) ^ ab;\n      ch = (h & e) ^ (~h & f);\n      t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n      t2 = s0 + maj;\n      g = c + t1 << 0;\n      c = t1 + t2 << 0;\n      s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n      s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n      cd = c & d;\n      maj = cd ^ (c & a) ^ da;\n      ch = (g & h) ^ (~g & e);\n      t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n      t2 = s0 + maj;\n      f = b + t1 << 0;\n      b = t1 + t2 << 0;\n      s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n      s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n      bc = b & c;\n      maj = bc ^ (b & d) ^ cd;\n      ch = (f & g) ^ (~f & h);\n      t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n      t2 = s0 + maj;\n      e = a + t1 << 0;\n      a = t1 + t2 << 0;\n      this.chromeBugWorkAround = true;\n    }\n\n    this.h0 = this.h0 + a << 0;\n    this.h1 = this.h1 + b << 0;\n    this.h2 = this.h2 + c << 0;\n    this.h3 = this.h3 + d << 0;\n    this.h4 = this.h4 + e << 0;\n    this.h5 = this.h5 + f << 0;\n    this.h6 = this.h6 + g << 0;\n    this.h7 = this.h7 + h << 0;\n  };\n\n  Sha256.prototype.hex = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n      h6 = this.h6, h7 = this.h7;\n\n    var hex = HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +\n      HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +\n      HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +\n      HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n      HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +\n      HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +\n      HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +\n      HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n      HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +\n      HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +\n      HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +\n      HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n      HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F] +\n      HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +\n      HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +\n      HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n      HEX_CHARS[(h4 >>> 28) & 0x0F] + HEX_CHARS[(h4 >>> 24) & 0x0F] +\n      HEX_CHARS[(h4 >>> 20) & 0x0F] + HEX_CHARS[(h4 >>> 16) & 0x0F] +\n      HEX_CHARS[(h4 >>> 12) & 0x0F] + HEX_CHARS[(h4 >>> 8) & 0x0F] +\n      HEX_CHARS[(h4 >>> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n      HEX_CHARS[(h5 >>> 28) & 0x0F] + HEX_CHARS[(h5 >>> 24) & 0x0F] +\n      HEX_CHARS[(h5 >>> 20) & 0x0F] + HEX_CHARS[(h5 >>> 16) & 0x0F] +\n      HEX_CHARS[(h5 >>> 12) & 0x0F] + HEX_CHARS[(h5 >>> 8) & 0x0F] +\n      HEX_CHARS[(h5 >>> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n      HEX_CHARS[(h6 >>> 28) & 0x0F] + HEX_CHARS[(h6 >>> 24) & 0x0F] +\n      HEX_CHARS[(h6 >>> 20) & 0x0F] + HEX_CHARS[(h6 >>> 16) & 0x0F] +\n      HEX_CHARS[(h6 >>> 12) & 0x0F] + HEX_CHARS[(h6 >>> 8) & 0x0F] +\n      HEX_CHARS[(h6 >>> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n    if (!this.is224) {\n      hex += HEX_CHARS[(h7 >>> 28) & 0x0F] + HEX_CHARS[(h7 >>> 24) & 0x0F] +\n        HEX_CHARS[(h7 >>> 20) & 0x0F] + HEX_CHARS[(h7 >>> 16) & 0x0F] +\n        HEX_CHARS[(h7 >>> 12) & 0x0F] + HEX_CHARS[(h7 >>> 8) & 0x0F] +\n        HEX_CHARS[(h7 >>> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n    }\n    return hex;\n  };\n\n  Sha256.prototype.toString = Sha256.prototype.hex;\n\n  Sha256.prototype.digest = function () {\n    this.finalize();\n\n    var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n      h6 = this.h6, h7 = this.h7;\n\n    var arr = [\n      (h0 >>> 24) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 8) & 0xFF, h0 & 0xFF,\n      (h1 >>> 24) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 8) & 0xFF, h1 & 0xFF,\n      (h2 >>> 24) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 8) & 0xFF, h2 & 0xFF,\n      (h3 >>> 24) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 8) & 0xFF, h3 & 0xFF,\n      (h4 >>> 24) & 0xFF, (h4 >>> 16) & 0xFF, (h4 >>> 8) & 0xFF, h4 & 0xFF,\n      (h5 >>> 24) & 0xFF, (h5 >>> 16) & 0xFF, (h5 >>> 8) & 0xFF, h5 & 0xFF,\n      (h6 >>> 24) & 0xFF, (h6 >>> 16) & 0xFF, (h6 >>> 8) & 0xFF, h6 & 0xFF\n    ];\n    if (!this.is224) {\n      arr.push((h7 >>> 24) & 0xFF, (h7 >>> 16) & 0xFF, (h7 >>> 8) & 0xFF, h7 & 0xFF);\n    }\n    return arr;\n  };\n\n  Sha256.prototype.array = Sha256.prototype.digest;\n\n  Sha256.prototype.arrayBuffer = function () {\n    this.finalize();\n\n    var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n    var dataView = new DataView(buffer);\n    dataView.setUint32(0, this.h0);\n    dataView.setUint32(4, this.h1);\n    dataView.setUint32(8, this.h2);\n    dataView.setUint32(12, this.h3);\n    dataView.setUint32(16, this.h4);\n    dataView.setUint32(20, this.h5);\n    dataView.setUint32(24, this.h6);\n    if (!this.is224) {\n      dataView.setUint32(28, this.h7);\n    }\n    return buffer;\n  };\n\n  function HmacSha256(key, is224, sharedMemory) {\n    var i, type = typeof key;\n    if (type === 'string') {\n      var bytes = [], length = key.length, index = 0, code;\n      for (i = 0; i < length; ++i) {\n        code = key.charCodeAt(i);\n        if (code < 0x80) {\n          bytes[index++] = code;\n        } else if (code < 0x800) {\n          bytes[index++] = (0xc0 | (code >>> 6));\n          bytes[index++] = (0x80 | (code & 0x3f));\n        } else if (code < 0xd800 || code >= 0xe000) {\n          bytes[index++] = (0xe0 | (code >>> 12));\n          bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n          bytes[index++] = (0x80 | (code & 0x3f));\n        } else {\n          code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n          bytes[index++] = (0xf0 | (code >>> 18));\n          bytes[index++] = (0x80 | ((code >>> 12) & 0x3f));\n          bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n          bytes[index++] = (0x80 | (code & 0x3f));\n        }\n      }\n      key = bytes;\n    } else {\n      if (type === 'object') {\n        if (key === null) {\n          throw new Error(ERROR);\n        } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n          key = new Uint8Array(key);\n        } else if (!Array.isArray(key)) {\n          if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n            throw new Error(ERROR);\n          }\n        }\n      } else {\n        throw new Error(ERROR);\n      }\n    }\n\n    if (key.length > 64) {\n      key = (new Sha256(is224, true)).update(key).array();\n    }\n\n    var oKeyPad = [], iKeyPad = [];\n    for (i = 0; i < 64; ++i) {\n      var b = key[i] || 0;\n      oKeyPad[i] = 0x5c ^ b;\n      iKeyPad[i] = 0x36 ^ b;\n    }\n\n    Sha256.call(this, is224, sharedMemory);\n\n    this.update(iKeyPad);\n    this.oKeyPad = oKeyPad;\n    this.inner = true;\n    this.sharedMemory = sharedMemory;\n  }\n  HmacSha256.prototype = new Sha256();\n\n  HmacSha256.prototype.finalize = function () {\n    Sha256.prototype.finalize.call(this);\n    if (this.inner) {\n      this.inner = false;\n      var innerHash = this.array();\n      Sha256.call(this, this.is224, this.sharedMemory);\n      this.update(this.oKeyPad);\n      this.update(innerHash);\n      Sha256.prototype.finalize.call(this);\n    }\n  };\n\n  var exports = createMethod();\n  exports.sha256 = exports;\n  exports.sha224 = createMethod(true);\n  exports.sha256.hmac = createHmacMethod();\n  exports.sha224.hmac = createHmacMethod(true);\n\n  if (COMMON_JS) {\n    module.exports = exports;\n  } else {\n    root.sha256 = exports.sha256;\n    root.sha224 = exports.sha224;\n    if (AMD) {\n      define(function () {\n        return exports;\n      });\n    }\n  }\n})();\n", "'use strict';\n\nmodule.exports = function () {\n  throw new Error(\n    'ws does not work in the browser. Browser clients must use the native ' +\n      'WebSocket object'\n  );\n};\n", "var DuckDB = (() => {\n    var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n    if (typeof __filename != 'undefined') _scriptName = _scriptName || __filename;\n    return (\n        function(moduleArg = {}) {\n            var moduleRtn;\n\n            var Module = moduleArg;\n            var readyPromiseResolve, readyPromiseReject;\n            var readyPromise = new Promise((resolve, reject) => {\n                readyPromiseResolve = resolve;\n                readyPromiseReject = reject\n            });\n            var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n            var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != \"undefined\";\n            var ENVIRONMENT_IS_NODE = typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\" && process.type != \"renderer\";\n            var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n            if (ENVIRONMENT_IS_NODE) {}\n            var moduleOverrides = Object.assign({}, Module);\n            var arguments_ = [];\n            var thisProgram = \"./this.program\";\n            var quit_ = (status, toThrow) => {\n                throw toThrow\n            };\n            var scriptDirectory = \"\";\n\n            function locateFile(path) {\n                if (Module[\"locateFile\"]) {\n                    return Module[\"locateFile\"](path, scriptDirectory)\n                }\n                return scriptDirectory + path\n            }\n            var readAsync, readBinary;\n            if (ENVIRONMENT_IS_NODE) {\n                var fs = require(\"fs\");\n                var nodePath = require(\"path\");\n                scriptDirectory = __dirname + \"/\";\n                readBinary = filename => {\n                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n                    var ret = fs.readFileSync(filename);\n                    return ret\n                };\n                readAsync = (filename, binary = true) => {\n                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n                    return new Promise((resolve, reject) => {\n                        fs.readFile(filename, binary ? undefined : \"utf8\", (err, data) => {\n                            if (err) reject(err);\n                            else resolve(binary ? data.buffer : data)\n                        })\n                    })\n                };\n                if (!Module[\"thisProgram\"] && process.argv.length > 1) {\n                    thisProgram = process.argv[1].replace(/\\\\/g, \"/\")\n                }\n                arguments_ = process.argv.slice(2);\n                quit_ = (status, toThrow) => {\n                    process.exitCode = status;\n                    throw toThrow\n                }\n            } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n                if (ENVIRONMENT_IS_WORKER) {\n                    scriptDirectory = self.location.href\n                } else if (typeof document != \"undefined\" && document.currentScript) {\n                    scriptDirectory = document.currentScript.src\n                }\n                if (_scriptName) {\n                    scriptDirectory = _scriptName\n                }\n                if (scriptDirectory.startsWith(\"blob:\")) {\n                    scriptDirectory = \"\"\n                } else {\n                    scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1)\n                } {\n                    if (ENVIRONMENT_IS_WORKER) {\n                        readBinary = url => {\n                            var xhr = new XMLHttpRequest;\n                            xhr.open(\"GET\", url, false);\n                            xhr.responseType = \"arraybuffer\";\n                            xhr.send(null);\n                            return new Uint8Array(xhr.response)\n                        }\n                    }\n                    readAsync = url => fetch(url, {\n                        credentials: \"same-origin\"\n                    }).then(response => {\n                        if (response.ok) {\n                            return response.arrayBuffer()\n                        }\n                        return Promise.reject(new Error(response.status + \" : \" + response.url))\n                    })\n                }\n            } else {}\n            var out = Module[\"print\"] || console.log.bind(console);\n            var err = Module[\"printErr\"] || console.error.bind(console);\n            Object.assign(Module, moduleOverrides);\n            moduleOverrides = null;\n            if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n            if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n            var dynamicLibraries = Module[\"dynamicLibraries\"] || [];\n            var wasmBinary = Module[\"wasmBinary\"];\n            var wasmMemory;\n            var ABORT = false;\n            var EXITSTATUS;\n\n            function assert(condition, text) {\n                if (!condition) {\n                    abort(text)\n                }\n            }\n            var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n            function updateMemoryViews() {\n                var b = wasmMemory.buffer;\n                Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n                Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n                Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n                Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n                Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n                Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n                Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n                Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b)\n            }\n            if (Module[\"wasmMemory\"]) {\n                wasmMemory = Module[\"wasmMemory\"]\n            } else {\n                var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n                wasmMemory = new WebAssembly.Memory({\n                    initial: INITIAL_MEMORY / 65536,\n                    maximum: 65536\n                })\n            }\n            updateMemoryViews();\n            var __ATPRERUN__ = [];\n            var __ATINIT__ = [];\n            var __ATMAIN__ = [];\n            var __ATEXIT__ = [];\n            var __ATPOSTRUN__ = [];\n            var __RELOC_FUNCS__ = [];\n            var runtimeInitialized = false;\n\n            function preRun() {\n                if (Module[\"preRun\"]) {\n                    if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n                    while (Module[\"preRun\"].length) {\n                        addOnPreRun(Module[\"preRun\"].shift())\n                    }\n                }\n                callRuntimeCallbacks(__ATPRERUN__)\n            }\n\n            function initRuntime() {\n                runtimeInitialized = true;\n                callRuntimeCallbacks(__RELOC_FUNCS__);\n                if (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n                FS.ignorePermissions = false;\n                TTY.init();\n                SOCKFS.root = FS.mount(SOCKFS, {}, null);\n                PIPEFS.root = FS.mount(PIPEFS, {}, null);\n                callRuntimeCallbacks(__ATINIT__)\n            }\n\n            function preMain() {\n                callRuntimeCallbacks(__ATMAIN__)\n            }\n\n            function postRun() {\n                if (Module[\"postRun\"]) {\n                    if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n                    while (Module[\"postRun\"].length) {\n                        addOnPostRun(Module[\"postRun\"].shift())\n                    }\n                }\n                callRuntimeCallbacks(__ATPOSTRUN__)\n            }\n\n            function addOnPreRun(cb) {\n                __ATPRERUN__.unshift(cb)\n            }\n\n            function addOnInit(cb) {\n                __ATINIT__.unshift(cb)\n            }\n\n            function addOnPreMain(cb) {\n                __ATMAIN__.unshift(cb)\n            }\n\n            function addOnExit(cb) {}\n\n            function addOnPostRun(cb) {\n                __ATPOSTRUN__.unshift(cb)\n            }\n            var runDependencies = 0;\n            var runDependencyWatcher = null;\n            var dependenciesFulfilled = null;\n\n            function getUniqueRunDependency(id) {\n                return id\n            }\n\n            function addRunDependency(id) {\n                runDependencies++;\n                Module[\"monitorRunDependencies\"]?.(runDependencies)\n            }\n\n            function removeRunDependency(id) {\n                runDependencies--;\n                Module[\"monitorRunDependencies\"]?.(runDependencies);\n                if (runDependencies == 0) {\n                    if (runDependencyWatcher !== null) {\n                        clearInterval(runDependencyWatcher);\n                        runDependencyWatcher = null\n                    }\n                    if (dependenciesFulfilled) {\n                        var callback = dependenciesFulfilled;\n                        dependenciesFulfilled = null;\n                        callback()\n                    }\n                }\n            }\n\n            function abort(what) {\n                Module[\"onAbort\"]?.(what);\n                what = \"Aborted(\" + what + \")\";\n                err(what);\n                ABORT = true;\n                what += \". Build with -sASSERTIONS for more info.\";\n                var e = new WebAssembly.RuntimeError(what);\n                readyPromiseReject(e);\n                throw e\n            }\n            var dataURIPrefix = \"data:application/octet-stream;base64,\";\n            var isDataURI = filename => filename.startsWith(dataURIPrefix);\n            var isFileURI = filename => filename.startsWith(\"file://\");\n\n            function findWasmBinary() {\n                var f = \"./duckdb-mvp.wasm\";\n                if (!isDataURI(f)) {\n                    return locateFile(f)\n                }\n                return f\n            }\n            var wasmBinaryFile;\n\n            function getBinarySync(file) {\n                if (file == wasmBinaryFile && wasmBinary) {\n                    return new Uint8Array(wasmBinary)\n                }\n                if (readBinary) {\n                    return readBinary(file)\n                }\n                throw \"both async and sync fetching of the wasm failed\"\n            }\n\n            function getBinaryPromise(binaryFile) {\n                if (!wasmBinary) {\n                    return readAsync(binaryFile).then(response => new Uint8Array(response), () => getBinarySync(binaryFile))\n                }\n                return Promise.resolve().then(() => getBinarySync(binaryFile))\n            }\n\n            function instantiateArrayBuffer(binaryFile, imports, receiver) {\n                return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {\n                    err(`failed to asynchronously prepare wasm: ${reason}`);\n                    abort(reason)\n                })\n            }\n\n            function instantiateAsync(binary, binaryFile, imports, callback) {\n                if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == \"function\") {\n                    return fetch(binaryFile, {\n                        credentials: \"same-origin\"\n                    }).then(response => {\n                        var result = WebAssembly.instantiateStreaming(response, imports);\n                        return result.then(callback, function(reason) {\n                            err(`wasm streaming compile failed: ${reason}`);\n                            err(\"falling back to ArrayBuffer instantiation\");\n                            return instantiateArrayBuffer(binaryFile, imports, callback)\n                        })\n                    })\n                }\n                return instantiateArrayBuffer(binaryFile, imports, callback)\n            }\n\n            function getWasmImports() {\n                return {\n                    env: wasmImports,\n                    wasi_snapshot_preview1: wasmImports,\n                    \"GOT.mem\": new Proxy(wasmImports, GOTHandler),\n                    \"GOT.func\": new Proxy(wasmImports, GOTHandler)\n                }\n            }\n\n            function createWasm() {\n                var info = getWasmImports();\n\n                function receiveInstance(instance, module) {\n                    wasmExports = instance.exports;\n                    wasmExports = relocateExports(wasmExports, 1024);\n                    var metadata = getDylinkMetadata(module);\n                    if (metadata.neededDynlibs) {\n                        dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries)\n                    }\n                    mergeLibSymbols(wasmExports, \"main\");\n                    LDSO.init();\n                    loadDylibs();\n                    wasmExports = applySignatureConversions(wasmExports);\n                    addOnInit(wasmExports[\"__wasm_call_ctors\"]);\n                    __RELOC_FUNCS__.push(wasmExports[\"__wasm_apply_data_relocs\"]);\n                    removeRunDependency(\"wasm-instantiate\");\n                    return wasmExports\n                }\n                addRunDependency(\"wasm-instantiate\");\n\n                function receiveInstantiationResult(result) {\n                    receiveInstance(result[\"instance\"], result[\"module\"])\n                }\n                if (Module[\"instantiateWasm\"]) {\n                    try {\n                        return Module[\"instantiateWasm\"](info, receiveInstance)\n                    } catch (e) {\n                        err(`Module.instantiateWasm callback failed with error: ${e}`);\n                        readyPromiseReject(e)\n                    }\n                }\n                wasmBinaryFile ??= findWasmBinary();\n                instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n                return {}\n            }\n            var tempDouble;\n            var tempI64;\n            var ASM_CONSTS = {\n                2507640: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2509047: ($0, $1, $2, $3, $4, $5) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        var post_payload = new Uint8Array($5);\n                        for (var iii = 0; iii < $5; iii++) {\n                            post_payload[iii] = Module.HEAPU8[iii + $4]\n                        }\n                        xhr.send(post_payload)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = Uint8Array.from(Array.from(xhr.getResponseHeader(\"Etag\")).map(letter => letter.charCodeAt(0)));\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2510667: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        console.log(\"HEAD\", UTF8ToString(ptr1), UTF8ToString(ptr2));\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 8);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 8] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap + 4);\n                    var headers = Uint8Array.from(Array.from(xhr.getAllResponseHeaders()).map(letter => letter.charCodeAt(0)));\n                    len = headers.byteLength;\n                    var headersOnWasmHeap = _malloc(len + 8);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + headersOnWasmHeap + 8] = headers[iii]\n                    }\n                    LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, headersOnWasmHeap + 4);\n                    len = headersOnWasmHeap;\n                    LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2513012: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2514419: ($0, $1, $2, $3, $4, $5) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        var post_payload = new Uint8Array($5);\n                        for (var iii = 0; iii < $5; iii++) {\n                            post_payload[iii] = Module.HEAPU8[iii + $4]\n                        }\n                        xhr.send(post_payload)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2515957: ($0, $1) => {\n                    var jsString = typeof runtime == \"object\" && runtime && typeof runtime.whereToLoad == \"function\" && runtime.whereToLoad ? runtime.whereToLoad(UTF8ToString($0)) : UTF8ToString($1);\n                    var lengthBytes = lengthBytesUTF8(jsString) + 1;\n                    var stringOnWasmHeap = _malloc(lengthBytes);\n                    stringToUTF8(jsString, stringOnWasmHeap, lengthBytes);\n                    return stringOnWasmHeap\n                },\n                2516323: ($0, $1) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        const os = require(\"os\");\n                        const path = require(\"path\");\n                        const fs = require(\"fs\");\n                        var array = url.split(\"/\");\n                        var l = array.length;\n                        var folder = path.join(os.homedir(), \".duckdb/extensions/\" + array[l - 4] + \"/\" + array[l - 3] + \"/\" + array[l - 2] + \"/\");\n                        var filePath = path.join(folder, array[l - 1]);\n                        try {\n                            if (!fs.existsSync(folder)) {\n                                fs.mkdirSync(folder, {\n                                    recursive: true\n                                })\n                            }\n                            if (!fs.existsSync(filePath)) {\n                                const int32 = new Int32Array(new SharedArrayBuffer(8));\n                                var Worker = require(\"node:worker_threads\").Worker;\n                                var worker = new Worker(\"const {Worker,isMainThread,parentPort,workerData,} = require('node:worker_threads');var times = 0;var SAB = 23;var Z = 0; async function ZZZ(e) {var x = await fetch(e);var res = await x.arrayBuffer();Atomics.store(SAB, 1, res.byteLength);Atomics.store(SAB, 0, 1);Atomics.notify(SAB, 1);Atomics.notify(SAB, 0);Z = res;};parentPort.on('message', function(event) {if (times == 0) {times++;SAB = event;} else if (times == 1) {times++; ZZZ(event);} else {const a = new Uint8Array(Z);const b = new Uint8Array(event.buffer);var K = Z.byteLength;for (var i = 0; i < K; i++) {b[i] = a[i];}Atomics.notify(event, 0);Atomics.store(SAB, 0, 2);Atomics.notify(SAB, 0);}});\", {\n                                    eval: true\n                                });\n                                var uInt8Array;\n                                int32[0] = 0;\n                                int32[2] = 4;\n                                worker.postMessage(int32);\n                                worker.postMessage(url);\n                                Atomics.wait(int32, 0, 0);\n                                const int32_2 = new Int32Array(new SharedArrayBuffer(int32[1] + 3 - (int32[1] + 3) % 4));\n                                worker.postMessage(int32_2);\n                                Atomics.wait(int32, 0, 1);\n                                var x = new Uint8Array(int32_2.buffer, 0, int32[1]);\n                                uInt8Array = x;\n                                worker.terminate();\n                                fs.writeFileSync(filePath, uInt8Array)\n                            } else {\n                                uInt8Array = fs.readFileSync(filePath)\n                            }\n                        } catch (e) {\n                            console.log(\"Error fetching module\", e);\n                            return 0\n                        }\n                    } else {\n                        const xhr = new XMLHttpRequest;\n                        xhr.open(\"GET\", url, false);\n                        xhr.responseType = \"arraybuffer\";\n                        xhr.send(null);\n                        if (xhr.status != 200) return 0;\n                        uInt8Array = xhr.response\n                    }\n                    var valid = WebAssembly.validate(uInt8Array);\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    FS.writeFile(UTF8ToString($1), new Uint8Array(uInt8Array));\n                    return fileOnWasmHeap\n                },\n                2518964: $0 => {\n                    if (!$0) {\n                        AL.alcErr = 40964;\n                        return 1\n                    }\n                },\n                2519012: $0 => {\n                    if (!AL.currentCtx) {\n                        err(\"alGetProcAddress() called without a valid context\");\n                        return 1\n                    }\n                    if (!$0) {\n                        AL.currentCtx.err = 40963;\n                        return 1\n                    }\n                }\n            };\n            class ExitStatus {\n                name = \"ExitStatus\";\n                constructor(status) {\n                    this.message = `Program terminated with exit(${status})`;\n                    this.status = status\n                }\n            }\n            var GOT = {};\n            var currentModuleWeakSymbols = new Set([]);\n            var GOTHandler = {\n                get(obj, symName) {\n                    var rtn = GOT[symName];\n                    if (!rtn) {\n                        rtn = GOT[symName] = new WebAssembly.Global({\n                            value: \"i32\",\n                            mutable: true\n                        })\n                    }\n                    if (!currentModuleWeakSymbols.has(symName)) {\n                        rtn.required = true\n                    }\n                    return rtn\n                }\n            };\n            var callRuntimeCallbacks = callbacks => {\n                while (callbacks.length > 0) {\n                    callbacks.shift()(Module)\n                }\n            };\n            var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder : undefined;\n            var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n                idx >>>= 0;\n                var endIdx = idx + maxBytesToRead;\n                var endPtr = idx;\n                while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n                if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n                    return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr))\n                }\n                var str = \"\";\n                while (idx < endPtr) {\n                    var u0 = heapOrArray[idx++];\n                    if (!(u0 & 128)) {\n                        str += String.fromCharCode(u0);\n                        continue\n                    }\n                    var u1 = heapOrArray[idx++] & 63;\n                    if ((u0 & 224) == 192) {\n                        str += String.fromCharCode((u0 & 31) << 6 | u1);\n                        continue\n                    }\n                    var u2 = heapOrArray[idx++] & 63;\n                    if ((u0 & 240) == 224) {\n                        u0 = (u0 & 15) << 12 | u1 << 6 | u2\n                    } else {\n                        u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63\n                    }\n                    if (u0 < 65536) {\n                        str += String.fromCharCode(u0)\n                    } else {\n                        var ch = u0 - 65536;\n                        str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)\n                    }\n                }\n                return str\n            };\n            var getDylinkMetadata = binary => {\n                var offset = 0;\n                var end = 0;\n\n                function getU8() {\n                    return binary[offset++]\n                }\n\n                function getLEB() {\n                    var ret = 0;\n                    var mul = 1;\n                    while (1) {\n                        var byte = binary[offset++];\n                        ret += (byte & 127) * mul;\n                        mul *= 128;\n                        if (!(byte & 128)) break\n                    }\n                    return ret\n                }\n\n                function getString() {\n                    var len = getLEB();\n                    offset += len;\n                    return UTF8ArrayToString(binary, offset - len, len)\n                }\n\n                function failIf(condition, message) {\n                    if (condition) throw new Error(message)\n                }\n                var name = \"dylink.0\";\n                if (binary instanceof WebAssembly.Module) {\n                    var dylinkSection = WebAssembly.Module.customSections(binary, name);\n                    if (dylinkSection.length === 0) {\n                        name = \"dylink\";\n                        dylinkSection = WebAssembly.Module.customSections(binary, name)\n                    }\n                    failIf(dylinkSection.length === 0, \"need dylink section\");\n                    binary = new Uint8Array(dylinkSection[0]);\n                    end = binary.length\n                } else {\n                    var int32View = new Uint32Array(new Uint8Array(binary.subarray(0, 24)).buffer);\n                    var magicNumberFound = int32View[0] == 1836278016;\n                    failIf(!magicNumberFound, \"need to see wasm magic number\");\n                    failIf(binary[8] !== 0, \"need the dylink section to be first\");\n                    offset = 9;\n                    var section_size = getLEB();\n                    end = offset + section_size;\n                    name = getString()\n                }\n                var customSection = {\n                    neededDynlibs: [],\n                    tlsExports: new Set,\n                    weakImports: new Set\n                };\n                if (name == \"dylink\") {\n                    customSection.memorySize = getLEB();\n                    customSection.memoryAlign = getLEB();\n                    customSection.tableSize = getLEB();\n                    customSection.tableAlign = getLEB();\n                    var neededDynlibsCount = getLEB();\n                    for (var i = 0; i < neededDynlibsCount; ++i) {\n                        var libname = getString();\n                        customSection.neededDynlibs.push(libname)\n                    }\n                } else {\n                    failIf(name !== \"dylink.0\");\n                    var WASM_DYLINK_MEM_INFO = 1;\n                    var WASM_DYLINK_NEEDED = 2;\n                    var WASM_DYLINK_EXPORT_INFO = 3;\n                    var WASM_DYLINK_IMPORT_INFO = 4;\n                    var WASM_SYMBOL_TLS = 256;\n                    var WASM_SYMBOL_BINDING_MASK = 3;\n                    var WASM_SYMBOL_BINDING_WEAK = 1;\n                    while (offset < end) {\n                        var subsectionType = getU8();\n                        var subsectionSize = getLEB();\n                        if (subsectionType === WASM_DYLINK_MEM_INFO) {\n                            customSection.memorySize = getLEB();\n                            customSection.memoryAlign = getLEB();\n                            customSection.tableSize = getLEB();\n                            customSection.tableAlign = getLEB()\n                        } else if (subsectionType === WASM_DYLINK_NEEDED) {\n                            var neededDynlibsCount = getLEB();\n                            for (var i = 0; i < neededDynlibsCount; ++i) {\n                                libname = getString();\n                                customSection.neededDynlibs.push(libname)\n                            }\n                        } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {\n                            var count = getLEB();\n                            while (count--) {\n                                var symname = getString();\n                                var flags = getLEB();\n                                if (flags & WASM_SYMBOL_TLS) {\n                                    customSection.tlsExports.add(symname)\n                                }\n                            }\n                        } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {\n                            var count = getLEB();\n                            while (count--) {\n                                var modname = getString();\n                                var symname = getString();\n                                var flags = getLEB();\n                                if ((flags & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {\n                                    customSection.weakImports.add(symname)\n                                }\n                            }\n                        } else {\n                            offset += subsectionSize\n                        }\n                    }\n                }\n                return customSection\n            };\n\n            function getValue(ptr, type = \"i8\") {\n                if (type.endsWith(\"*\")) type = \"*\";\n                switch (type) {\n                    case \"i1\":\n                        return HEAP8[ptr >>> 0];\n                    case \"i8\":\n                        return HEAP8[ptr >>> 0];\n                    case \"i16\":\n                        return HEAP16[ptr >>> 1 >>> 0];\n                    case \"i32\":\n                        return HEAP32[ptr >>> 2 >>> 0];\n                    case \"i64\":\n                        abort(\"to do getValue(i64) use WASM_BIGINT\");\n                    case \"float\":\n                        return HEAPF32[ptr >>> 2 >>> 0];\n                    case \"double\":\n                        return HEAPF64[ptr >>> 3 >>> 0];\n                    case \"*\":\n                        return HEAPU32[ptr >>> 2 >>> 0];\n                    default:\n                        abort(`invalid type for getValue: ${type}`)\n                }\n            }\n            var newDSO = (name, handle, syms) => {\n                var dso = {\n                    refcount: Infinity,\n                    name,\n                    exports: syms,\n                    global: true\n                };\n                LDSO.loadedLibsByName[name] = dso;\n                if (handle != undefined) {\n                    LDSO.loadedLibsByHandle[handle] = dso\n                }\n                return dso\n            };\n            var LDSO = {\n                loadedLibsByName: {},\n                loadedLibsByHandle: {},\n                init() {\n                    newDSO(\"__main__\", 0, wasmImports)\n                }\n            };\n            var ___heap_base = 3657008;\n            var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n            var getMemory = size => {\n                if (runtimeInitialized) {\n                    return _calloc(size, 1)\n                }\n                var ret = ___heap_base;\n                var end = ret + alignMemory(size, 16);\n                ___heap_base = end;\n                GOT[\"__heap_base\"].value = end;\n                return ret\n            };\n            var isInternalSym = symName => [\"__cpp_exception\", \"__c_longjmp\", \"__wasm_apply_data_relocs\", \"__dso_handle\", \"__tls_size\", \"__tls_align\", \"__set_stack_limits\", \"_emscripten_tls_init\", \"__wasm_init_tls\", \"__wasm_call_ctors\", \"__start_em_asm\", \"__stop_em_asm\", \"__start_em_js\", \"__stop_em_js\"].includes(symName) || symName.startsWith(\"__em_js__\");\n            var uleb128Encode = (n, target) => {\n                if (n < 128) {\n                    target.push(n)\n                } else {\n                    target.push(n % 128 | 128, n >> 7)\n                }\n            };\n            var sigToWasmTypes = sig => {\n                var typeNames = {\n                    i: \"i32\",\n                    j: \"i64\",\n                    f: \"f32\",\n                    d: \"f64\",\n                    e: \"externref\",\n                    p: \"i32\"\n                };\n                var type = {\n                    parameters: [],\n                    results: sig[0] == \"v\" ? [] : [typeNames[sig[0]]]\n                };\n                for (var i = 1; i < sig.length; ++i) {\n                    type.parameters.push(typeNames[sig[i]])\n                }\n                return type\n            };\n            var generateFuncType = (sig, target) => {\n                var sigRet = sig.slice(0, 1);\n                var sigParam = sig.slice(1);\n                var typeCodes = {\n                    i: 127,\n                    p: 127,\n                    j: 126,\n                    f: 125,\n                    d: 124,\n                    e: 111\n                };\n                target.push(96);\n                uleb128Encode(sigParam.length, target);\n                for (var i = 0; i < sigParam.length; ++i) {\n                    target.push(typeCodes[sigParam[i]])\n                }\n                if (sigRet == \"v\") {\n                    target.push(0)\n                } else {\n                    target.push(1, typeCodes[sigRet])\n                }\n            };\n            var convertJsFunctionToWasm = (func, sig) => {\n                if (typeof WebAssembly.Function == \"function\") {\n                    return new WebAssembly.Function(sigToWasmTypes(sig), func)\n                }\n                var typeSectionBody = [1];\n                generateFuncType(sig, typeSectionBody);\n                var bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1];\n                uleb128Encode(typeSectionBody.length, bytes);\n                bytes.push(...typeSectionBody);\n                bytes.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n                var module = new WebAssembly.Module(new Uint8Array(bytes));\n                var instance = new WebAssembly.Instance(module, {\n                    e: {\n                        f: func\n                    }\n                });\n                var wrappedFunc = instance.exports[\"f\"];\n                return wrappedFunc\n            };\n            var wasmTable = new WebAssembly.Table({\n                initial: 44072,\n                element: \"anyfunc\"\n            });\n            var getWasmTableEntry = funcPtr => wasmTable.get(funcPtr);\n            var updateTableMap = (offset, count) => {\n                if (functionsInTableMap) {\n                    for (var i = offset; i < offset + count; i++) {\n                        var item = getWasmTableEntry(i);\n                        if (item) {\n                            functionsInTableMap.set(item, i)\n                        }\n                    }\n                }\n            };\n            var functionsInTableMap;\n            var getFunctionAddress = func => {\n                if (!functionsInTableMap) {\n                    functionsInTableMap = new WeakMap;\n                    updateTableMap(0, wasmTable.length)\n                }\n                return functionsInTableMap.get(func) || 0\n            };\n            var freeTableIndexes = [];\n            var getEmptyTableSlot = () => {\n                if (freeTableIndexes.length) {\n                    return freeTableIndexes.pop()\n                }\n                try {\n                    wasmTable.grow(1)\n                } catch (err) {\n                    if (!(err instanceof RangeError)) {\n                        throw err\n                    }\n                    throw \"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"\n                }\n                return wasmTable.length - 1\n            };\n            var setWasmTableEntry = (idx, func) => wasmTable.set(idx, func);\n            var addFunction = (func, sig) => {\n                var rtn = getFunctionAddress(func);\n                if (rtn) {\n                    return rtn\n                }\n                var ret = getEmptyTableSlot();\n                try {\n                    setWasmTableEntry(ret, func)\n                } catch (err) {\n                    if (!(err instanceof TypeError)) {\n                        throw err\n                    }\n                    var wrapped = convertJsFunctionToWasm(func, sig);\n                    setWasmTableEntry(ret, wrapped)\n                }\n                functionsInTableMap.set(func, ret);\n                return ret\n            };\n            var updateGOT = (exports, replace) => {\n                for (var symName in exports) {\n                    if (isInternalSym(symName)) {\n                        continue\n                    }\n                    var value = exports[symName];\n                    if (symName.startsWith(\"orig$\")) {\n                        symName = symName.split(\"$\")[1];\n                        replace = true\n                    }\n                    GOT[symName] ||= new WebAssembly.Global({\n                        value: \"i32\",\n                        mutable: true\n                    });\n                    if (replace || GOT[symName].value == 0) {\n                        if (typeof value == \"function\") {\n                            GOT[symName].value = addFunction(value)\n                        } else if (typeof value == \"number\") {\n                            GOT[symName].value = value\n                        } else {\n                            err(`unhandled export type for '${symName}': ${typeof value}`)\n                        }\n                    }\n                }\n            };\n            var relocateExports = (exports, memoryBase, replace) => {\n                var relocated = {};\n                for (var e in exports) {\n                    var value = exports[e];\n                    if (typeof value == \"object\") {\n                        value = value.value\n                    }\n                    if (typeof value == \"number\") {\n                        value += memoryBase\n                    }\n                    relocated[e] = value\n                }\n                updateGOT(relocated, replace);\n                return relocated\n            };\n            var isSymbolDefined = symName => {\n                var existing = wasmImports[symName];\n                if (!existing || existing.stub) {\n                    return false\n                }\n                return true\n            };\n            var setTempRet0 = val => __emscripten_tempret_set(val);\n            var _setTempRet0 = setTempRet0;\n            Module[\"_setTempRet0\"] = _setTempRet0;\n            var createDyncallWrapper = sig => {\n                var sections = [];\n                var prelude = [0, 97, 115, 109, 1, 0, 0, 0];\n                sections.push(prelude);\n                var wrappersig = [sig[0].replace(\"j\", \"i\"), \"i\", sig.slice(1).replace(/j/g, \"ii\")].join(\"\");\n                var typeSectionBody = [3];\n                generateFuncType(wrappersig, typeSectionBody);\n                generateFuncType(sig, typeSectionBody);\n                generateFuncType(\"vi\", typeSectionBody);\n                var typeSection = [1];\n                uleb128Encode(typeSectionBody.length, typeSection);\n                typeSection.push(...typeSectionBody);\n                sections.push(typeSection);\n                var importSection = [2, 15, 2, 1, 101, 1, 116, 1, 112, 0, 0, 1, 101, 1, 114, 0, 2];\n                sections.push(importSection);\n                var functionSection = [3, 2, 1, 0];\n                sections.push(functionSection);\n                var exportSection = [7, 5, 1, 1, 102, 0, 1];\n                sections.push(exportSection);\n                var convert_code = [];\n                if (sig[0] === \"j\") {\n                    convert_code = [1, 1, 126]\n                } else {\n                    convert_code.push(0)\n                }\n\n                function localGet(j) {\n                    convert_code.push(32);\n                    uleb128Encode(j, convert_code)\n                }\n                var j = 1;\n                for (var i = 1; i < sig.length; i++) {\n                    if (sig[i] == \"j\") {\n                        localGet(j + 1);\n                        convert_code.push(173, 66, 32, 134);\n                        localGet(j);\n                        convert_code.push(172, 132);\n                        j += 2\n                    } else {\n                        localGet(j);\n                        j++\n                    }\n                }\n                convert_code.push(32, 0, 17, 1, 0);\n                if (sig[0] === \"j\") {\n                    convert_code.push(34);\n                    uleb128Encode(j, convert_code);\n                    convert_code.push(66, 32, 136, 167, 16, 0);\n                    localGet(j);\n                    convert_code.push(167)\n                }\n                convert_code.push(11);\n                var codeBody = [1];\n                uleb128Encode(convert_code.length, codeBody);\n                codeBody.push(...convert_code);\n                var codeSection = [10];\n                uleb128Encode(codeBody.length, codeSection);\n                codeSection.push(...codeBody);\n                sections.push(codeSection);\n                var bytes = new Uint8Array([].concat.apply([], sections));\n                var module = new WebAssembly.Module(bytes);\n                var instance = new WebAssembly.Instance(module, {\n                    e: {\n                        t: wasmTable,\n                        r: setTempRet0\n                    }\n                });\n                var wrappedFunc = instance.exports[\"f\"];\n                return wrappedFunc\n            };\n            var dynCallLegacy = (sig, ptr, args) => {\n                sig = sig.replace(/p/g, \"i\");\n                if (!(\"dynCall_\" + sig in Module)) {\n                    Module[\"dynCall_\" + sig] = createDyncallWrapper(sig)\n                }\n                var f = Module[\"dynCall_\" + sig];\n                return f(ptr, ...args)\n            };\n            var dynCall = (sig, ptr, args = []) => {\n                if (sig.includes(\"j\")) {\n                    return dynCallLegacy(sig, ptr, args)\n                }\n                var rtn = getWasmTableEntry(ptr)(...args);\n                return sig[0] == \"p\" ? rtn >>> 0 : rtn\n            };\n            var stackSave = () => _emscripten_stack_get_current();\n            var stackRestore = val => __emscripten_stack_restore(val);\n            var createInvokeFunction = sig => (ptr, ...args) => {\n                var sp = stackSave();\n                try {\n                    return dynCall(sig, ptr, args)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            };\n            var resolveGlobalSymbol = (symName, direct = false) => {\n                var sym;\n                if (direct && \"orig$\" + symName in wasmImports) {\n                    symName = \"orig$\" + symName\n                }\n                if (isSymbolDefined(symName)) {\n                    sym = wasmImports[symName]\n                } else if (symName.startsWith(\"invoke_\")) {\n                    sym = wasmImports[symName] = createInvokeFunction(symName.split(\"_\")[1])\n                } else if (symName.startsWith(\"__cxa_find_matching_catch_\")) {\n                    sym = wasmImports[symName] = (...args) => {\n                        var rtn = findMatchingCatch(args);\n                        return rtn\n                    }\n                }\n                return {\n                    sym,\n                    name: symName\n                }\n            };\n            var UTF8ToString = (ptr, maxBytesToRead) => {\n                ptr >>>= 0;\n                return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\"\n            };\n            var loadWebAssemblyModule = (binary, flags, libName, localScope, handle) => {\n                var metadata = getDylinkMetadata(binary);\n                currentModuleWeakSymbols = metadata.weakImports;\n\n                function loadModule() {\n                    var firstLoad = !handle || !HEAP8[handle + 8 >>> 0];\n                    if (firstLoad) {\n                        var memAlign = Math.pow(2, metadata.memoryAlign);\n                        var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;\n                        var tableBase = metadata.tableSize ? wasmTable.length : 0;\n                        if (handle) {\n                            HEAP8[handle + 8 >>> 0] = 1;\n                            HEAPU32[handle + 12 >>> 2 >>> 0] = memoryBase;\n                            HEAP32[handle + 16 >>> 2 >>> 0] = metadata.memorySize;\n                            HEAPU32[handle + 20 >>> 2 >>> 0] = tableBase;\n                            HEAP32[handle + 24 >>> 2 >>> 0] = metadata.tableSize\n                        }\n                    } else {\n                        memoryBase = HEAPU32[handle + 12 >>> 2 >>> 0];\n                        tableBase = HEAPU32[handle + 20 >>> 2 >>> 0]\n                    }\n                    var tableGrowthNeeded = tableBase + metadata.tableSize - wasmTable.length;\n                    if (tableGrowthNeeded > 0) {\n                        wasmTable.grow(tableGrowthNeeded)\n                    }\n                    var moduleExports;\n\n                    function resolveSymbol(sym) {\n                        var resolved = resolveGlobalSymbol(sym).sym;\n                        if (!resolved && localScope) {\n                            resolved = localScope[sym]\n                        }\n                        if (!resolved) {\n                            resolved = moduleExports[sym]\n                        }\n                        return resolved\n                    }\n                    var proxyHandler = {\n                        get(stubs,prop) { if (prop.startsWith(\"invoke_\")) {return createDyncallWrapper(prop.substring(7));}\n                            switch (prop) {\n                                case \"__memory_base\":\n                                    return memoryBase;\n                                case \"getTempRet0\": return getTempRet0;   case \"__table_base\":\n                                    return tableBase\n                            }\n                            if (prop in wasmImports && !wasmImports[prop].stub) {\n                                return wasmImports[prop]\n                            }\n                            if (!(prop in stubs)) {\n                                var resolved;\n                                stubs[prop] = (...args) => {\n                                    resolved ||= resolveSymbol(prop);\n                                    return resolved(...args)\n                                }\n                            }\n                            return stubs[prop]\n                        }\n                    };\n                    var proxy = new Proxy({}, proxyHandler);\n                    var info = {\n                        \"GOT.mem\": new Proxy({}, GOTHandler),\n                        \"GOT.func\": new Proxy({}, GOTHandler),\n                        env: proxy,\n                        wasi_snapshot_preview1: proxy\n                    };\n\n                    function postInstantiation(module, instance) {\n                        updateTableMap(tableBase, metadata.tableSize);\n                        moduleExports = relocateExports(instance.exports, memoryBase);\n                        if (!flags.allowUndefined) {\n                            reportUndefinedSymbols()\n                        }\n\n                        function addEmAsm(addr, body) {\n                            var args = [];\n                            var arity = 0;\n                            for (; arity < 16; arity++) {\n                                if (body.indexOf(\"$\" + arity) != -1) {\n                                    args.push(\"$\" + arity)\n                                } else {\n                                    break\n                                }\n                            }\n                            args = args.join(\",\");\n                            var func = `(${args}) => { ${body} };`;\n                            ASM_CONSTS[start] = eval(func)\n                        }\n                        if (\"__start_em_asm\" in moduleExports) {\n                            var start = moduleExports[\"__start_em_asm\"];\n                            var stop = moduleExports[\"__stop_em_asm\"];\n                            while (start < stop) {\n                                var jsString = UTF8ToString(start);\n                                addEmAsm(start, jsString);\n                                start = HEAPU8.indexOf(0, start) + 1\n                            }\n                        }\n\n                        function addEmJs(name, cSig, body) {\n                            var jsArgs = [];\n                            cSig = cSig.slice(1, -1);\n                            if (cSig != \"void\") {\n                                cSig = cSig.split(\",\");\n                                for (var i in cSig) {\n                                    var jsArg = cSig[i].split(\" \").pop();\n                                    jsArgs.push(jsArg.replace(\"*\", \"\"))\n                                }\n                            }\n                            var func = `(${jsArgs}) => ${body};`;\n                            moduleExports[name] = eval(func)\n                        }\n                        for (var name in moduleExports) {\n                            if (name.startsWith(\"__em_js__\")) {\n                                var start = moduleExports[name];\n                                var jsString = UTF8ToString(start);\n                                var parts = jsString.split(\"<::>\");\n                                addEmJs(name.replace(\"__em_js__\", \"\"), parts[0], parts[1]);\n                                delete moduleExports[name]\n                            }\n                        }\n                        var applyRelocs = moduleExports[\"__wasm_apply_data_relocs\"];\n                        if (applyRelocs) {\n                            if (runtimeInitialized) {\n                                applyRelocs()\n                            } else {\n                                __RELOC_FUNCS__.push(applyRelocs)\n                            }\n                        }\n                        var init = moduleExports[\"__wasm_call_ctors\"];\n                        if (init) {\n                            if (runtimeInitialized) {\n                                init()\n                            } else {\n                                __ATINIT__.push(init)\n                            }\n                        }\n                        return moduleExports\n                    }\n                    if (flags.loadAsync) {\n                        if (binary instanceof WebAssembly.Module) {\n                            var instance = new WebAssembly.Instance(binary, info);\n                            return Promise.resolve(postInstantiation(binary, instance))\n                        }\n                        return WebAssembly.instantiate(binary, info).then(result => postInstantiation(result.module, result.instance))\n                    }\n                    var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);\n                    var instance = new WebAssembly.Instance(module, info);\n                    return postInstantiation(module, instance)\n                }\n                if (flags.loadAsync) {\n                    return metadata.neededDynlibs.reduce((chain, dynNeeded) => chain.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule)\n                }\n                metadata.neededDynlibs.forEach(needed => loadDynamicLibrary(needed, flags, localScope));\n                return loadModule()\n            };\n            var mergeLibSymbols = (exports, libName) => {\n                registerDynCallSymbols(exports);\n                for (var [sym, exp] of Object.entries(exports)) {\n                    const setImport = target => {\n                        if (!isSymbolDefined(target)) {\n                            wasmImports[target] = exp\n                        }\n                    };\n                    setImport(sym)\n                }\n            };\n            var asyncLoad = (url, onload, onerror, noRunDep) => {\n                var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : \"\";\n                readAsync(url).then(arrayBuffer => {\n                    onload(new Uint8Array(arrayBuffer));\n                    if (dep) removeRunDependency(dep)\n                }, err => {\n                    if (onerror) {\n                        onerror()\n                    } else {\n                        throw `Loading data file \"${url}\" failed.`\n                    }\n                });\n                if (dep) addRunDependency(dep)\n            };\n            var preloadPlugins = Module[\"preloadPlugins\"] || [];\n            var registerWasmPlugin = () => {\n                var wasmPlugin = {\n                    promiseChainEnd: Promise.resolve(),\n                    canHandle: name => !Module[\"noWasmDecoding\"] && name.endsWith(\".so\"),\n                    handle: (byteArray, name, onload, onerror) => {\n                        wasmPlugin[\"promiseChainEnd\"] = wasmPlugin[\"promiseChainEnd\"].then(() => loadWebAssemblyModule(byteArray, {\n                            loadAsync: true,\n                            nodelete: true\n                        }, name, {})).then(exports => {\n                            preloadedWasm[name] = exports;\n                            onload(byteArray)\n                        }, error => {\n                            err(`failed to instantiate wasm: ${name}: ${error}`);\n                            onerror()\n                        })\n                    }\n                };\n                preloadPlugins.push(wasmPlugin)\n            };\n            var preloadedWasm = {};\n            var registerDynCallSymbols = exports => {\n                for (var [sym, exp] of Object.entries(exports)) {\n                    if (sym.startsWith(\"dynCall_\") && !Module.hasOwnProperty(sym)) {\n                        Module[sym] = exp\n                    }\n                }\n            };\n\n            function loadDynamicLibrary(libName, flags = {\n                global: true,\n                nodelete: true\n            }, localScope, handle) {\n                var dso = LDSO.loadedLibsByName[libName];\n                if (dso) {\n                    if (!flags.global) {\n                        if (localScope) {\n                            Object.assign(localScope, dso.exports)\n                        }\n                        registerDynCallSymbols(dso.exports)\n                    } else if (!dso.global) {\n                        dso.global = true;\n                        mergeLibSymbols(dso.exports, libName)\n                    }\n                    if (flags.nodelete && dso.refcount !== Infinity) {\n                        dso.refcount = Infinity\n                    }\n                    dso.refcount++;\n                    if (handle) {\n                        LDSO.loadedLibsByHandle[handle] = dso\n                    }\n                    return flags.loadAsync ? Promise.resolve(true) : true\n                }\n                dso = newDSO(libName, handle, \"loading\");\n                dso.refcount = flags.nodelete ? Infinity : 1;\n                dso.global = flags.global;\n\n                function loadLibData() {\n                    if (handle) {\n                        var data = HEAPU32[handle + 28 >>> 2 >>> 0];\n                        var dataSize = HEAPU32[handle + 32 >>> 2 >>> 0];\n                        if (data && dataSize) {\n                            var libData = HEAP8.slice(data, data + dataSize);\n                            return flags.loadAsync ? Promise.resolve(libData) : libData\n                        }\n                    }\n                    var libFile = locateFile(libName);\n                    if (flags.loadAsync) {\n                        return new Promise((resolve, reject) => asyncLoad(libFile, resolve, reject))\n                    }\n                    if (!readBinary) {\n                        throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`)\n                    }\n                    return readBinary(libFile)\n                }\n\n                function getExports() {\n                    var preloaded = preloadedWasm[libName];\n                    if (preloaded) {\n                        return flags.loadAsync ? Promise.resolve(preloaded) : preloaded\n                    }\n                    if (flags.loadAsync) {\n                        return loadLibData().then(libData => loadWebAssemblyModule(libData, flags, libName, localScope, handle))\n                    }\n                    return loadWebAssemblyModule(loadLibData(), flags, libName, localScope, handle)\n                }\n\n                function moduleLoaded(exports) {\n                    if (dso.global) {\n                        mergeLibSymbols(exports, libName)\n                    } else if (localScope) {\n                        Object.assign(localScope, exports);\n                        registerDynCallSymbols(exports)\n                    }\n                    dso.exports = exports\n                }\n                if (flags.loadAsync) {\n                    return getExports().then(exports => {\n                        moduleLoaded(exports);\n                        return true\n                    })\n                }\n                moduleLoaded(getExports());\n                return true\n            }\n            var reportUndefinedSymbols = () => {\n                for (var [symName, entry] of Object.entries(GOT)) {\n                    if (entry.value == 0) {\n                        var value = resolveGlobalSymbol(symName, true).sym;\n                        if (!value && !entry.required) {\n                            continue\n                        }\n                        if (typeof value == \"function\") {\n                            entry.value = addFunction(value, value.sig)\n                        } else if (typeof value == \"number\") {\n                            entry.value = value\n                        } else {\n                            throw new Error(`bad export type for '${symName}': ${typeof value}`)\n                        }\n                    }\n                }\n            };\n            var loadDylibs = () => {\n                if (!dynamicLibraries.length) {\n                    reportUndefinedSymbols();\n                    return\n                }\n                addRunDependency(\"loadDylibs\");\n                dynamicLibraries.reduce((chain, lib) => chain.then(() => loadDynamicLibrary(lib, {\n                    loadAsync: true,\n                    global: true,\n                    nodelete: true,\n                    allowUndefined: true\n                })), Promise.resolve()).then(() => {\n                    reportUndefinedSymbols();\n                    removeRunDependency(\"loadDylibs\")\n                })\n            };\n            var noExitRuntime = Module[\"noExitRuntime\"] || true;\n\n            function setValue(ptr, value, type = \"i8\") {\n                if (type.endsWith(\"*\")) type = \"*\";\n                switch (type) {\n                    case \"i1\":\n                        HEAP8[ptr >>> 0] = value;\n                        break;\n                    case \"i8\":\n                        HEAP8[ptr >>> 0] = value;\n                        break;\n                    case \"i16\":\n                        HEAP16[ptr >>> 1 >>> 0] = value;\n                        break;\n                    case \"i32\":\n                        HEAP32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    case \"i64\":\n                        abort(\"to do setValue(i64) use WASM_BIGINT\");\n                    case \"float\":\n                        HEAPF32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    case \"double\":\n                        HEAPF64[ptr >>> 3 >>> 0] = value;\n                        break;\n                    case \"*\":\n                        HEAPU32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    default:\n                        abort(`invalid type for setValue: ${type}`)\n                }\n            }\n            var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n\n            function ___assert_fail(condition, filename, line, func) {\n                condition >>>= 0;\n                filename >>>= 0;\n                func >>>= 0;\n                abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"])\n            }\n            ___assert_fail.sig = \"vppip\";\n\n            function ___call_sighandler(fp, sig) {\n                fp >>>= 0;\n                return getWasmTableEntry(fp)(sig)\n            }\n            ___call_sighandler.sig = \"vpi\";\n            var exceptionCaught = [];\n            var uncaughtExceptionCount = 0;\n\n            function ___cxa_begin_catch(ptr) {\n                ptr >>>= 0;\n                var info = new ExceptionInfo(ptr);\n                if (!info.get_caught()) {\n                    info.set_caught(true);\n                    uncaughtExceptionCount--\n                }\n                info.set_rethrown(false);\n                exceptionCaught.push(info);\n                ___cxa_increment_exception_refcount(ptr);\n                return ___cxa_get_exception_ptr(ptr)\n            }\n            ___cxa_begin_catch.sig = \"pp\";\n\n            function ___cxa_current_primary_exception() {\n                if (!exceptionCaught.length) {\n                    return 0\n                }\n                var info = exceptionCaught[exceptionCaught.length - 1];\n                ___cxa_increment_exception_refcount(info.excPtr);\n                return info.excPtr\n            }\n            ___cxa_current_primary_exception.sig = \"p\";\n            var exceptionLast = 0;\n            var ___cxa_end_catch = () => {\n                _setThrew(0, 0);\n                var info = exceptionCaught.pop();\n                ___cxa_decrement_exception_refcount(info.excPtr);\n                exceptionLast = 0\n            };\n            ___cxa_end_catch.sig = \"v\";\n            class ExceptionInfo {\n                constructor(excPtr) {\n                    this.excPtr = excPtr;\n                    this.ptr = excPtr - 24\n                }\n                set_type(type) {\n                    HEAPU32[this.ptr + 4 >>> 2 >>> 0] = type\n                }\n                get_type() {\n                    return HEAPU32[this.ptr + 4 >>> 2 >>> 0]\n                }\n                set_destructor(destructor) {\n                    HEAPU32[this.ptr + 8 >>> 2 >>> 0] = destructor\n                }\n                get_destructor() {\n                    return HEAPU32[this.ptr + 8 >>> 2 >>> 0]\n                }\n                set_caught(caught) {\n                    caught = caught ? 1 : 0;\n                    HEAP8[this.ptr + 12 >>> 0] = caught\n                }\n                get_caught() {\n                    return HEAP8[this.ptr + 12 >>> 0] != 0\n                }\n                set_rethrown(rethrown) {\n                    rethrown = rethrown ? 1 : 0;\n                    HEAP8[this.ptr + 13 >>> 0] = rethrown\n                }\n                get_rethrown() {\n                    return HEAP8[this.ptr + 13 >>> 0] != 0\n                }\n                init(type, destructor) {\n                    this.set_adjusted_ptr(0);\n                    this.set_type(type);\n                    this.set_destructor(destructor)\n                }\n                set_adjusted_ptr(adjustedPtr) {\n                    HEAPU32[this.ptr + 16 >>> 2 >>> 0] = adjustedPtr\n                }\n                get_adjusted_ptr() {\n                    return HEAPU32[this.ptr + 16 >>> 2 >>> 0]\n                }\n            }\n\n            function ___resumeException(ptr) {\n                ptr >>>= 0;\n                if (!exceptionLast) {\n                    exceptionLast = ptr\n                }\n                throw exceptionLast\n            }\n            ___resumeException.sig = \"vp\";\n            var findMatchingCatch = args => {\n                var thrown = exceptionLast;\n                if (!thrown) {\n                    setTempRet0(0);\n                    return 0\n                }\n                var info = new ExceptionInfo(thrown);\n                info.set_adjusted_ptr(thrown);\n                var thrownType = info.get_type();\n                if (!thrownType) {\n                    setTempRet0(0);\n                    return thrown\n                }\n                for (var caughtType of args) {\n                    if (caughtType === 0 || caughtType === thrownType) {\n                        break\n                    }\n                    var adjusted_ptr_addr = info.ptr + 16;\n                    if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {\n                        setTempRet0(caughtType);\n                        return thrown\n                    }\n                }\n                setTempRet0(thrownType);\n                return thrown\n            };\n\n            function ___cxa_find_matching_catch_2() {\n                return findMatchingCatch([])\n            }\n            ___cxa_find_matching_catch_2.sig = \"p\";\n\n            function ___cxa_find_matching_catch_3(arg0) {\n                arg0 >>>= 0;\n                return findMatchingCatch([arg0])\n            }\n            ___cxa_find_matching_catch_3.sig = \"pp\";\n\n            function ___cxa_find_matching_catch_4(arg0, arg1) {\n                arg0 >>>= 0;\n                arg1 >>>= 0;\n                return findMatchingCatch([arg0, arg1])\n            }\n            ___cxa_find_matching_catch_4.sig = \"ppp\";\n\n            function ___cxa_find_matching_catch_5(arg0, arg1, arg2) {\n                arg0 >>>= 0;\n                arg1 >>>= 0;\n                arg2 >>>= 0;\n                return findMatchingCatch([arg0, arg1, arg2])\n            }\n            ___cxa_find_matching_catch_5.sig = \"pppp\";\n            var ___cxa_rethrow = () => {\n                var info = exceptionCaught.pop();\n                if (!info) {\n                    abort(\"no exception to throw\")\n                }\n                var ptr = info.excPtr;\n                if (!info.get_rethrown()) {\n                    exceptionCaught.push(info);\n                    info.set_rethrown(true);\n                    info.set_caught(false);\n                    uncaughtExceptionCount++\n                }\n                exceptionLast = ptr;\n                throw exceptionLast\n            };\n            ___cxa_rethrow.sig = \"v\";\n\n            function ___cxa_rethrow_primary_exception(ptr) {\n                ptr >>>= 0;\n                if (!ptr) return;\n                var info = new ExceptionInfo(ptr);\n                exceptionCaught.push(info);\n                info.set_rethrown(true);\n                ___cxa_rethrow()\n            }\n            ___cxa_rethrow_primary_exception.sig = \"vp\";\n\n            function ___cxa_throw(ptr, type, destructor) {\n                ptr >>>= 0;\n                type >>>= 0;\n                destructor >>>= 0;\n                var info = new ExceptionInfo(ptr);\n                info.init(type, destructor);\n                exceptionLast = ptr;\n                uncaughtExceptionCount++;\n                throw exceptionLast\n            }\n            ___cxa_throw.sig = \"vppp\";\n            var ___cxa_uncaught_exceptions = () => uncaughtExceptionCount;\n            ___cxa_uncaught_exceptions.sig = \"i\";\n            var ___memory_base = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: false\n            }, 1024);\n            var ___stack_high = 3657008;\n            var ___stack_low = 2608432;\n            var ___stack_pointer = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: true\n            }, 3657008);\n            var PATH = {\n                isAbs: path => path.charAt(0) === \"/\",\n                splitPath: filename => {\n                    var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n                    return splitPathRe.exec(filename).slice(1)\n                },\n                normalizeArray: (parts, allowAboveRoot) => {\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                    if (allowAboveRoot) {\n                        for (; up; up--) {\n                            parts.unshift(\"..\")\n                        }\n                    }\n                    return parts\n                },\n                normalize: path => {\n                    var isAbsolute = PATH.isAbs(path),\n                        trailingSlash = path.substr(-1) === \"/\";\n                    path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n                    if (!path && !isAbsolute) {\n                        path = \".\"\n                    }\n                    if (path && trailingSlash) {\n                        path += \"/\"\n                    }\n                    return (isAbsolute ? \"/\" : \"\") + path\n                },\n                dirname: path => {\n                    var result = PATH.splitPath(path),\n                        root = result[0],\n                        dir = result[1];\n                    if (!root && !dir) {\n                        return \".\"\n                    }\n                    if (dir) {\n                        dir = dir.substr(0, dir.length - 1)\n                    }\n                    return root + dir\n                },\n                basename: path => {\n                    if (path === \"/\") return \"/\";\n                    path = PATH.normalize(path);\n                    path = path.replace(/\\/$/, \"\");\n                    var lastSlash = path.lastIndexOf(\"/\");\n                    if (lastSlash === -1) return path;\n                    return path.substr(lastSlash + 1)\n                },\n                join: (...paths) => PATH.normalize(paths.join(\"/\")),\n                join2: (l, r) => PATH.normalize(l + \"/\" + r)\n            };\n            var initRandomFill = () => {\n                if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n                    return view => crypto.getRandomValues(view)\n                } else if (ENVIRONMENT_IS_NODE) {\n                    try {\n                        var crypto_module = require(\"crypto\");\n                        var randomFillSync = crypto_module[\"randomFillSync\"];\n                        if (randomFillSync) {\n                            return view => crypto_module[\"randomFillSync\"](view)\n                        }\n                        var randomBytes = crypto_module[\"randomBytes\"];\n                        return view => (view.set(randomBytes(view.byteLength)), view)\n                    } catch (e) {}\n                }\n                abort(\"initRandomDevice\")\n            };\n            var randomFill = view => (randomFill = initRandomFill())(view);\n            var PATH_FS = {\n                resolve: (...args) => {\n                    var resolvedPath = \"\",\n                        resolvedAbsolute = false;\n                    for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n                        var path = i >= 0 ? args[i] : FS.cwd();\n                        if (typeof path != \"string\") {\n                            throw new TypeError(\"Arguments to path.resolve must be strings\")\n                        } else if (!path) {\n                            return \"\"\n                        }\n                        resolvedPath = path + \"/\" + resolvedPath;\n                        resolvedAbsolute = PATH.isAbs(path)\n                    }\n                    resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n                    return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\"\n                },\n                relative: (from, to) => {\n                    from = PATH_FS.resolve(from).substr(1);\n                    to = PATH_FS.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                        var end = arr.length - 1;\n                        for (; end >= 0; end--) {\n                            if (arr[end] !== \"\") break\n                        }\n                        if (start > end) return [];\n                        return arr.slice(start, end - start + 1)\n                    }\n                    var fromParts = trim(from.split(\"/\"));\n                    var toParts = trim(to.split(\"/\"));\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                    var outputParts = [];\n                    for (var i = samePartsLength; i < fromParts.length; i++) {\n                        outputParts.push(\"..\")\n                    }\n                    outputParts = outputParts.concat(toParts.slice(samePartsLength));\n                    return outputParts.join(\"/\")\n                }\n            };\n            var FS_stdin_getChar_buffer = [];\n            var lengthBytesUTF8 = str => {\n                var len = 0;\n                for (var i = 0; i < str.length; ++i) {\n                    var c = str.charCodeAt(i);\n                    if (c <= 127) {\n                        len++\n                    } else if (c <= 2047) {\n                        len += 2\n                    } else if (c >= 55296 && c <= 57343) {\n                        len += 4;\n                        ++i\n                    } else {\n                        len += 3\n                    }\n                }\n                return len\n            };\n            Module[\"lengthBytesUTF8\"] = lengthBytesUTF8;\n            var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n                outIdx >>>= 0;\n                if (!(maxBytesToWrite > 0)) return 0;\n                var startIdx = outIdx;\n                var endIdx = outIdx + maxBytesToWrite - 1;\n                for (var i = 0; i < str.length; ++i) {\n                    var u = str.charCodeAt(i);\n                    if (u >= 55296 && u <= 57343) {\n                        var u1 = str.charCodeAt(++i);\n                        u = 65536 + ((u & 1023) << 10) | u1 & 1023\n                    }\n                    if (u <= 127) {\n                        if (outIdx >= endIdx) break;\n                        heap[outIdx++ >>> 0] = u\n                    } else if (u <= 2047) {\n                        if (outIdx + 1 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 192 | u >> 6;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    } else if (u <= 65535) {\n                        if (outIdx + 2 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 224 | u >> 12;\n                        heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    } else {\n                        if (outIdx + 3 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 240 | u >> 18;\n                        heap[outIdx++ >>> 0] = 128 | u >> 12 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    }\n                }\n                heap[outIdx >>> 0] = 0;\n                return outIdx - startIdx\n            };\n\n            function intArrayFromString(stringy, dontAddNull, length) {\n                var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n                var u8array = new Array(len);\n                var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n                if (dontAddNull) u8array.length = numBytesWritten;\n                return u8array\n            }\n            var FS_stdin_getChar = () => {\n                if (!FS_stdin_getChar_buffer.length) {\n                    var result = null;\n                    if (ENVIRONMENT_IS_NODE) {\n                        var BUFSIZE = 256;\n                        var buf = Buffer.alloc(BUFSIZE);\n                        var bytesRead = 0;\n                        var fd = process.stdin.fd;\n                        try {\n                            bytesRead = fs.readSync(fd, buf, 0, BUFSIZE)\n                        } catch (e) {\n                            if (e.toString().includes(\"EOF\")) bytesRead = 0;\n                            else throw e\n                        }\n                        if (bytesRead > 0) {\n                            result = buf.slice(0, bytesRead).toString(\"utf-8\")\n                        }\n                    } else if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n                        result = window.prompt(\"Input: \");\n                        if (result !== null) {\n                            result += \"\\n\"\n                        }\n                    } else {}\n                    if (!result) {\n                        return null\n                    }\n                    FS_stdin_getChar_buffer = intArrayFromString(result, true)\n                }\n                return FS_stdin_getChar_buffer.shift()\n            };\n            var TTY = {\n                ttys: [],\n                init() {},\n                shutdown() {},\n                register(dev, ops) {\n                    TTY.ttys[dev] = {\n                        input: [],\n                        output: [],\n                        ops\n                    };\n                    FS.registerDevice(dev, TTY.stream_ops)\n                },\n                stream_ops: {\n                    open(stream) {\n                        var tty = TTY.ttys[stream.node.rdev];\n                        if (!tty) {\n                            throw new FS.ErrnoError(43)\n                        }\n                        stream.tty = tty;\n                        stream.seekable = false\n                    },\n                    close(stream) {\n                        stream.tty.ops.fsync(stream.tty)\n                    },\n                    fsync(stream) {\n                        stream.tty.ops.fsync(stream.tty)\n                    },\n                    read(stream, buffer, offset, length, pos) {\n                        if (!stream.tty || !stream.tty.ops.get_char) {\n                            throw new FS.ErrnoError(60)\n                        }\n                        var bytesRead = 0;\n                        for (var i = 0; i < length; i++) {\n                            var result;\n                            try {\n                                result = stream.tty.ops.get_char(stream.tty)\n                            } catch (e) {\n                                throw new FS.ErrnoError(29)\n                            }\n                            if (result === undefined && bytesRead === 0) {\n                                throw new FS.ErrnoError(6)\n                            }\n                            if (result === null || result === undefined) break;\n                            bytesRead++;\n                            buffer[offset + i] = result\n                        }\n                        if (bytesRead) {\n                            stream.node.timestamp = Date.now()\n                        }\n                        return bytesRead\n                    },\n                    write(stream, buffer, offset, length, pos) {\n                        if (!stream.tty || !stream.tty.ops.put_char) {\n                            throw new FS.ErrnoError(60)\n                        }\n                        try {\n                            for (var i = 0; i < length; i++) {\n                                stream.tty.ops.put_char(stream.tty, buffer[offset + i])\n                            }\n                        } catch (e) {\n                            throw new FS.ErrnoError(29)\n                        }\n                        if (length) {\n                            stream.node.timestamp = Date.now()\n                        }\n                        return i\n                    }\n                },\n                default_tty_ops: {\n                    get_char(tty) {\n                        return FS_stdin_getChar()\n                    },\n                    put_char(tty, val) {\n                        if (val === null || val === 10) {\n                            out(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        } else {\n                            if (val != 0) tty.output.push(val)\n                        }\n                    },\n                    fsync(tty) {\n                        if (tty.output && tty.output.length > 0) {\n                            out(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        }\n                    },\n                    ioctl_tcgets(tty) {\n                        return {\n                            c_iflag: 25856,\n                            c_oflag: 5,\n                            c_cflag: 191,\n                            c_lflag: 35387,\n                            c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n                        }\n                    },\n                    ioctl_tcsets(tty, optional_actions, data) {\n                        return 0\n                    },\n                    ioctl_tiocgwinsz(tty) {\n                        return [24, 80]\n                    }\n                },\n                default_tty1_ops: {\n                    put_char(tty, val) {\n                        if (val === null || val === 10) {\n                            err(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        } else {\n                            if (val != 0) tty.output.push(val)\n                        }\n                    },\n                    fsync(tty) {\n                        if (tty.output && tty.output.length > 0) {\n                            err(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        }\n                    }\n                }\n            };\n            var zeroMemory = (address, size) => {\n                HEAPU8.fill(0, address, address + size)\n            };\n            var mmapAlloc = size => {\n                size = alignMemory(size, 65536);\n                var ptr = _emscripten_builtin_memalign(65536, size);\n                if (ptr) zeroMemory(ptr, size);\n                return ptr\n            };\n            var MEMFS = {\n                ops_table: null,\n                mount(mount) {\n                    return MEMFS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createNode(parent, name, mode, dev) {\n                    if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    MEMFS.ops_table ||= {\n                        dir: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr,\n                                lookup: MEMFS.node_ops.lookup,\n                                mknod: MEMFS.node_ops.mknod,\n                                rename: MEMFS.node_ops.rename,\n                                unlink: MEMFS.node_ops.unlink,\n                                rmdir: MEMFS.node_ops.rmdir,\n                                readdir: MEMFS.node_ops.readdir,\n                                symlink: MEMFS.node_ops.symlink\n                            },\n                            stream: {\n                                llseek: MEMFS.stream_ops.llseek\n                            }\n                        },\n                        file: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr\n                            },\n                            stream: {\n                                llseek: MEMFS.stream_ops.llseek,\n                                read: MEMFS.stream_ops.read,\n                                write: MEMFS.stream_ops.write,\n                                allocate: MEMFS.stream_ops.allocate,\n                                mmap: MEMFS.stream_ops.mmap,\n                                msync: MEMFS.stream_ops.msync\n                            }\n                        },\n                        link: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr,\n                                readlink: MEMFS.node_ops.readlink\n                            },\n                            stream: {}\n                        },\n                        chrdev: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr\n                            },\n                            stream: FS.chrdev_stream_ops\n                        }\n                    };\n                    var node = FS.createNode(parent, name, mode, dev);\n                    if (FS.isDir(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.dir.node;\n                        node.stream_ops = MEMFS.ops_table.dir.stream;\n                        node.contents = {}\n                    } else if (FS.isFile(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.file.node;\n                        node.stream_ops = MEMFS.ops_table.file.stream;\n                        node.usedBytes = 0;\n                        node.contents = null\n                    } else if (FS.isLink(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.link.node;\n                        node.stream_ops = MEMFS.ops_table.link.stream\n                    } else if (FS.isChrdev(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.chrdev.node;\n                        node.stream_ops = MEMFS.ops_table.chrdev.stream\n                    }\n                    node.timestamp = Date.now();\n                    if (parent) {\n                        parent.contents[name] = node;\n                        parent.timestamp = node.timestamp\n                    }\n                    return node\n                },\n                getFileDataAsTypedArray(node) {\n                    if (!node.contents) return new Uint8Array(0);\n                    if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n                    return new Uint8Array(node.contents)\n                },\n                expandFileStorage(node, newCapacity) {\n                    var prevCapacity = node.contents ? node.contents.length : 0;\n                    if (prevCapacity >= newCapacity) return;\n                    var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n                    newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n                    if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n                    var oldContents = node.contents;\n                    node.contents = new Uint8Array(newCapacity);\n                    if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0)\n                },\n                resizeFileStorage(node, newSize) {\n                    if (node.usedBytes == newSize) return;\n                    if (newSize == 0) {\n                        node.contents = null;\n                        node.usedBytes = 0\n                    } else {\n                        var oldContents = node.contents;\n                        node.contents = new Uint8Array(newSize);\n                        if (oldContents) {\n                            node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))\n                        }\n                        node.usedBytes = newSize\n                    }\n                },\n                node_ops: {\n                    getattr(node) {\n                        var attr = {};\n                        attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n                        attr.ino = node.id;\n                        attr.mode = node.mode;\n                        attr.nlink = 1;\n                        attr.uid = 0;\n                        attr.gid = 0;\n                        attr.rdev = node.rdev;\n                        if (FS.isDir(node.mode)) {\n                            attr.size = 4096\n                        } else if (FS.isFile(node.mode)) {\n                            attr.size = node.usedBytes\n                        } else if (FS.isLink(node.mode)) {\n                            attr.size = node.link.length\n                        } else {\n                            attr.size = 0\n                        }\n                        attr.atime = new Date(node.timestamp);\n                        attr.mtime = new Date(node.timestamp);\n                        attr.ctime = new Date(node.timestamp);\n                        attr.blksize = 4096;\n                        attr.blocks = Math.ceil(attr.size / attr.blksize);\n                        return attr\n                    },\n                    setattr(node, attr) {\n                        if (attr.mode !== undefined) {\n                            node.mode = attr.mode\n                        }\n                        if (attr.timestamp !== undefined) {\n                            node.timestamp = attr.timestamp\n                        }\n                        if (attr.size !== undefined) {\n                            MEMFS.resizeFileStorage(node, attr.size)\n                        }\n                    },\n                    lookup(parent, name) {\n                        throw FS.genericErrors[44]\n                    },\n                    mknod(parent, name, mode, dev) {\n                        return MEMFS.createNode(parent, name, mode, dev)\n                    },\n                    rename(old_node, new_dir, new_name) {\n                        if (FS.isDir(old_node.mode)) {\n                            var new_node;\n                            try {\n                                new_node = FS.lookupNode(new_dir, new_name)\n                            } catch (e) {}\n                            if (new_node) {\n                                for (var i in new_node.contents) {\n                                    throw new FS.ErrnoError(55)\n                                }\n                            }\n                        }\n                        delete old_node.parent.contents[old_node.name];\n                        old_node.parent.timestamp = Date.now();\n                        old_node.name = new_name;\n                        new_dir.contents[new_name] = old_node;\n                        new_dir.timestamp = old_node.parent.timestamp\n                    },\n                    unlink(parent, name) {\n                        delete parent.contents[name];\n                        parent.timestamp = Date.now()\n                    },\n                    rmdir(parent, name) {\n                        var node = FS.lookupNode(parent, name);\n                        for (var i in node.contents) {\n                            throw new FS.ErrnoError(55)\n                        }\n                        delete parent.contents[name];\n                        parent.timestamp = Date.now()\n                    },\n                    readdir(node) {\n                        var entries = [\".\", \"..\"];\n                        for (var key of Object.keys(node.contents)) {\n                            entries.push(key)\n                        }\n                        return entries\n                    },\n                    symlink(parent, newname, oldpath) {\n                        var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n                        node.link = oldpath;\n                        return node\n                    },\n                    readlink(node) {\n                        if (!FS.isLink(node.mode)) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        return node.link\n                    }\n                },\n                stream_ops: {\n                    read(stream, buffer, offset, length, position) {\n                        var contents = stream.node.contents;\n                        if (position >= stream.node.usedBytes) return 0;\n                        var size = Math.min(stream.node.usedBytes - position, length);\n                        if (size > 8 && contents.subarray) {\n                            buffer.set(contents.subarray(position, position + size), offset)\n                        } else {\n                            for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]\n                        }\n                        return size\n                    },\n                    write(stream, buffer, offset, length, position, canOwn) {\n                        if (buffer.buffer === HEAP8.buffer) {\n                            canOwn = false\n                        }\n                        if (!length) return 0;\n                        var node = stream.node;\n                        node.timestamp = Date.now();\n                        if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n                            if (canOwn) {\n                                node.contents = buffer.subarray(offset, offset + length);\n                                node.usedBytes = length;\n                                return length\n                            } else if (node.usedBytes === 0 && position === 0) {\n                                node.contents = buffer.slice(offset, offset + length);\n                                node.usedBytes = length;\n                                return length\n                            } else if (position + length <= node.usedBytes) {\n                                node.contents.set(buffer.subarray(offset, offset + length), position);\n                                return length\n                            }\n                        }\n                        MEMFS.expandFileStorage(node, position + length);\n                        if (node.contents.subarray && buffer.subarray) {\n                            node.contents.set(buffer.subarray(offset, offset + length), position)\n                        } else {\n                            for (var i = 0; i < length; i++) {\n                                node.contents[position + i] = buffer[offset + i]\n                            }\n                        }\n                        node.usedBytes = Math.max(node.usedBytes, position + length);\n                        return length\n                    },\n                    llseek(stream, offset, whence) {\n                        var position = offset;\n                        if (whence === 1) {\n                            position += stream.position\n                        } else if (whence === 2) {\n                            if (FS.isFile(stream.node.mode)) {\n                                position += stream.node.usedBytes\n                            }\n                        }\n                        if (position < 0) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        return position\n                    },\n                    allocate(stream, offset, length) {\n                        MEMFS.expandFileStorage(stream.node, offset + length);\n                        stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)\n                    },\n                    mmap(stream, length, position, prot, flags) {\n                        if (!FS.isFile(stream.node.mode)) {\n                            throw new FS.ErrnoError(43)\n                        }\n                        var ptr;\n                        var allocated;\n                        var contents = stream.node.contents;\n                        if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {\n                            allocated = false;\n                            ptr = contents.byteOffset\n                        } else {\n                            allocated = true;\n                            ptr = mmapAlloc(length);\n                            if (!ptr) {\n                                throw new FS.ErrnoError(48)\n                            }\n                            if (contents) {\n                                if (position > 0 || position + length < contents.length) {\n                                    if (contents.subarray) {\n                                        contents = contents.subarray(position, position + length)\n                                    } else {\n                                        contents = Array.prototype.slice.call(contents, position, position + length)\n                                    }\n                                }\n                                HEAP8.set(contents, ptr >>> 0)\n                            }\n                        }\n                        return {\n                            ptr,\n                            allocated\n                        }\n                    },\n                    msync(stream, buffer, offset, length, mmapFlags) {\n                        MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n                        return 0\n                    }\n                }\n            };\n            var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {\n                FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn)\n            };\n            var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {\n                if (typeof Browser != \"undefined\") Browser.init();\n                var handled = false;\n                preloadPlugins.forEach(plugin => {\n                    if (handled) return;\n                    if (plugin[\"canHandle\"](fullname)) {\n                        plugin[\"handle\"](byteArray, fullname, finish, onerror);\n                        handled = true\n                    }\n                });\n                return handled\n            };\n            var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n                var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n                var dep = getUniqueRunDependency(`cp ${fullname}`);\n\n                function processData(byteArray) {\n                    function finish(byteArray) {\n                        preFinish?.();\n                        if (!dontCreateFile) {\n                            FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)\n                        }\n                        onload?.();\n                        removeRunDependency(dep)\n                    }\n                    if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {\n                            onerror?.();\n                            removeRunDependency(dep)\n                        })) {\n                        return\n                    }\n                    finish(byteArray)\n                }\n                addRunDependency(dep);\n                if (typeof url == \"string\") {\n                    asyncLoad(url, processData, onerror)\n                } else {\n                    processData(url)\n                }\n            };\n            var FS_modeStringToFlags = str => {\n                var flagModes = {\n                    r: 0,\n                    \"r+\": 2,\n                    w: 512 | 64 | 1,\n                    \"w+\": 512 | 64 | 2,\n                    a: 1024 | 64 | 1,\n                    \"a+\": 1024 | 64 | 2\n                };\n                var flags = flagModes[str];\n                if (typeof flags == \"undefined\") {\n                    throw new Error(`Unknown file open mode: ${str}`)\n                }\n                return flags\n            };\n            var FS_getMode = (canRead, canWrite) => {\n                var mode = 0;\n                if (canRead) mode |= 292 | 73;\n                if (canWrite) mode |= 146;\n                return mode\n            };\n            var FS = {\n                root: null,\n                mounts: [],\n                devices: {},\n                streams: [],\n                nextInode: 1,\n                nameTable: null,\n                currentPath: \"/\",\n                initialized: false,\n                ignorePermissions: true,\n                ErrnoError: class {\n                    name = \"ErrnoError\";\n                    constructor(errno) {\n                        this.errno = errno\n                    }\n                },\n                genericErrors: {},\n                filesystems: null,\n                syncFSRequests: 0,\n                readFiles: {},\n                FSStream: class {\n                    shared = {};\n                    get object() {\n                        return this.node\n                    }\n                    set object(val) {\n                        this.node = val\n                    }\n                    get isRead() {\n                        return (this.flags & 2097155) !== 1\n                    }\n                    get isWrite() {\n                        return (this.flags & 2097155) !== 0\n                    }\n                    get isAppend() {\n                        return this.flags & 1024\n                    }\n                    get flags() {\n                        return this.shared.flags\n                    }\n                    set flags(val) {\n                        this.shared.flags = val\n                    }\n                    get position() {\n                        return this.shared.position\n                    }\n                    set position(val) {\n                        this.shared.position = val\n                    }\n                },\n                FSNode: class {\n                    node_ops = {};\n                    stream_ops = {};\n                    readMode = 292 | 73;\n                    writeMode = 146;\n                    mounted = null;\n                    constructor(parent, name, mode, rdev) {\n                        if (!parent) {\n                            parent = this\n                        }\n                        this.parent = parent;\n                        this.mount = parent.mount;\n                        this.id = FS.nextInode++;\n                        this.name = name;\n                        this.mode = mode;\n                        this.rdev = rdev\n                    }\n                    get read() {\n                        return (this.mode & this.readMode) === this.readMode\n                    }\n                    set read(val) {\n                        val ? this.mode |= this.readMode : this.mode &= ~this.readMode\n                    }\n                    get write() {\n                        return (this.mode & this.writeMode) === this.writeMode\n                    }\n                    set write(val) {\n                        val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode\n                    }\n                    get isFolder() {\n                        return FS.isDir(this.mode)\n                    }\n                    get isDevice() {\n                        return FS.isChrdev(this.mode)\n                    }\n                },\n                lookupPath(path, opts = {}) {\n                    path = PATH_FS.resolve(path);\n                    if (!path) return {\n                        path: \"\",\n                        node: null\n                    };\n                    var defaults = {\n                        follow_mount: true,\n                        recurse_count: 0\n                    };\n                    opts = Object.assign(defaults, opts);\n                    if (opts.recurse_count > 8) {\n                        throw new FS.ErrnoError(32)\n                    }\n                    var parts = path.split(\"/\").filter(p => !!p);\n                    var current = FS.root;\n                    var current_path = \"/\";\n                    for (var i = 0; i < parts.length; i++) {\n                        var islast = i === parts.length - 1;\n                        if (islast && opts.parent) {\n                            break\n                        }\n                        current = FS.lookupNode(current, parts[i]);\n                        current_path = PATH.join2(current_path, parts[i]);\n                        if (FS.isMountpoint(current)) {\n                            if (!islast || islast && opts.follow_mount) {\n                                current = current.mounted.root\n                            }\n                        }\n                        if (!islast || opts.follow) {\n                            var count = 0;\n                            while (FS.isLink(current.mode)) {\n                                var link = FS.readlink(current_path);\n                                current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n                                var lookup = FS.lookupPath(current_path, {\n                                    recurse_count: opts.recurse_count + 1\n                                });\n                                current = lookup.node;\n                                if (count++ > 40) {\n                                    throw new FS.ErrnoError(32)\n                                }\n                            }\n                        }\n                    }\n                    return {\n                        path: current_path,\n                        node: current\n                    }\n                },\n                getPath(node) {\n                    var path;\n                    while (true) {\n                        if (FS.isRoot(node)) {\n                            var mount = node.mount.mountpoint;\n                            if (!path) return mount;\n                            return mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path\n                        }\n                        path = path ? `${node.name}/${path}` : node.name;\n                        node = node.parent\n                    }\n                },\n                hashName(parentid, name) {\n                    var hash = 0;\n                    for (var i = 0; i < name.length; i++) {\n                        hash = (hash << 5) - hash + name.charCodeAt(i) | 0\n                    }\n                    return (parentid + hash >>> 0) % FS.nameTable.length\n                },\n                hashAddNode(node) {\n                    var hash = FS.hashName(node.parent.id, node.name);\n                    node.name_next = FS.nameTable[hash];\n                    FS.nameTable[hash] = node\n                },\n                hashRemoveNode(node) {\n                    var hash = FS.hashName(node.parent.id, node.name);\n                    if (FS.nameTable[hash] === node) {\n                        FS.nameTable[hash] = node.name_next\n                    } else {\n                        var current = FS.nameTable[hash];\n                        while (current) {\n                            if (current.name_next === node) {\n                                current.name_next = node.name_next;\n                                break\n                            }\n                            current = current.name_next\n                        }\n                    }\n                },\n                lookupNode(parent, name) {\n                    var errCode = FS.mayLookup(parent);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    var hash = FS.hashName(parent.id, name);\n                    for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n                        var nodeName = node.name;\n                        if (node.parent.id === parent.id && nodeName === name) {\n                            return node\n                        }\n                    }\n                    return FS.lookup(parent, name)\n                },\n                createNode(parent, name, mode, rdev) {\n                    var node = new FS.FSNode(parent, name, mode, rdev);\n                    FS.hashAddNode(node);\n                    return node\n                },\n                destroyNode(node) {\n                    FS.hashRemoveNode(node)\n                },\n                isRoot(node) {\n                    return node === node.parent\n                },\n                isMountpoint(node) {\n                    return !!node.mounted\n                },\n                isFile(mode) {\n                    return (mode & 61440) === 32768\n                },\n                isDir(mode) {\n                    return (mode & 61440) === 16384\n                },\n                isLink(mode) {\n                    return (mode & 61440) === 40960\n                },\n                isChrdev(mode) {\n                    return (mode & 61440) === 8192\n                },\n                isBlkdev(mode) {\n                    return (mode & 61440) === 24576\n                },\n                isFIFO(mode) {\n                    return (mode & 61440) === 4096\n                },\n                isSocket(mode) {\n                    return (mode & 49152) === 49152\n                },\n                flagsToPermissionString(flag) {\n                    var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n                    if (flag & 512) {\n                        perms += \"w\"\n                    }\n                    return perms\n                },\n                nodePermissions(node, perms) {\n                    if (FS.ignorePermissions) {\n                        return 0\n                    }\n                    if (perms.includes(\"r\") && !(node.mode & 292)) {\n                        return 2\n                    } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n                        return 2\n                    } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n                        return 2\n                    }\n                    return 0\n                },\n                mayLookup(dir) {\n                    if (!FS.isDir(dir.mode)) return 54;\n                    var errCode = FS.nodePermissions(dir, \"x\");\n                    if (errCode) return errCode;\n                    if (!dir.node_ops.lookup) return 2;\n                    return 0\n                },\n                mayCreate(dir, name) {\n                    try {\n                        var node = FS.lookupNode(dir, name);\n                        return 20\n                    } catch (e) {}\n                    return FS.nodePermissions(dir, \"wx\")\n                },\n                mayDelete(dir, name, isdir) {\n                    var node;\n                    try {\n                        node = FS.lookupNode(dir, name)\n                    } catch (e) {\n                        return e.errno\n                    }\n                    var errCode = FS.nodePermissions(dir, \"wx\");\n                    if (errCode) {\n                        return errCode\n                    }\n                    if (isdir) {\n                        if (!FS.isDir(node.mode)) {\n                            return 54\n                        }\n                        if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n                            return 10\n                        }\n                    } else {\n                        if (FS.isDir(node.mode)) {\n                            return 31\n                        }\n                    }\n                    return 0\n                },\n                mayOpen(node, flags) {\n                    if (!node) {\n                        return 44\n                    }\n                    if (FS.isLink(node.mode)) {\n                        return 32\n                    } else if (FS.isDir(node.mode)) {\n                        if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n                            return 31\n                        }\n                    }\n                    return FS.nodePermissions(node, FS.flagsToPermissionString(flags))\n                },\n                MAX_OPEN_FDS: 4096,\n                nextfd() {\n                    for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {\n                        if (!FS.streams[fd]) {\n                            return fd\n                        }\n                    }\n                    throw new FS.ErrnoError(33)\n                },\n                getStreamChecked(fd) {\n                    var stream = FS.getStream(fd);\n                    if (!stream) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    return stream\n                },\n                getStream: fd => FS.streams[fd],\n                createStream(stream, fd = -1) {\n                    stream = Object.assign(new FS.FSStream, stream);\n                    if (fd == -1) {\n                        fd = FS.nextfd()\n                    }\n                    stream.fd = fd;\n                    FS.streams[fd] = stream;\n                    return stream\n                },\n                closeStream(fd) {\n                    FS.streams[fd] = null\n                },\n                dupStream(origStream, fd = -1) {\n                    var stream = FS.createStream(origStream, fd);\n                    stream.stream_ops?.dup?.(stream);\n                    return stream\n                },\n                chrdev_stream_ops: {\n                    open(stream) {\n                        var device = FS.getDevice(stream.node.rdev);\n                        stream.stream_ops = device.stream_ops;\n                        stream.stream_ops.open?.(stream)\n                    },\n                    llseek() {\n                        throw new FS.ErrnoError(70)\n                    }\n                },\n                major: dev => dev >> 8,\n                minor: dev => dev & 255,\n                makedev: (ma, mi) => ma << 8 | mi,\n                registerDevice(dev, ops) {\n                    FS.devices[dev] = {\n                        stream_ops: ops\n                    }\n                },\n                getDevice: dev => FS.devices[dev],\n                getMounts(mount) {\n                    var mounts = [];\n                    var check = [mount];\n                    while (check.length) {\n                        var m = check.pop();\n                        mounts.push(m);\n                        check.push(...m.mounts)\n                    }\n                    return mounts\n                },\n                syncfs(populate, callback) {\n                    if (typeof populate == \"function\") {\n                        callback = populate;\n                        populate = false\n                    }\n                    FS.syncFSRequests++;\n                    if (FS.syncFSRequests > 1) {\n                        err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)\n                    }\n                    var mounts = FS.getMounts(FS.root.mount);\n                    var completed = 0;\n\n                    function doCallback(errCode) {\n                        FS.syncFSRequests--;\n                        return callback(errCode)\n                    }\n\n                    function done(errCode) {\n                        if (errCode) {\n                            if (!done.errored) {\n                                done.errored = true;\n                                return doCallback(errCode)\n                            }\n                            return\n                        }\n                        if (++completed >= mounts.length) {\n                            doCallback(null)\n                        }\n                    }\n                    mounts.forEach(mount => {\n                        if (!mount.type.syncfs) {\n                            return done(null)\n                        }\n                        mount.type.syncfs(mount, populate, done)\n                    })\n                },\n                mount(type, opts, mountpoint) {\n                    var root = mountpoint === \"/\";\n                    var pseudo = !mountpoint;\n                    var node;\n                    if (root && FS.root) {\n                        throw new FS.ErrnoError(10)\n                    } else if (!root && !pseudo) {\n                        var lookup = FS.lookupPath(mountpoint, {\n                            follow_mount: false\n                        });\n                        mountpoint = lookup.path;\n                        node = lookup.node;\n                        if (FS.isMountpoint(node)) {\n                            throw new FS.ErrnoError(10)\n                        }\n                        if (!FS.isDir(node.mode)) {\n                            throw new FS.ErrnoError(54)\n                        }\n                    }\n                    var mount = {\n                        type,\n                        opts,\n                        mountpoint,\n                        mounts: []\n                    };\n                    var mountRoot = type.mount(mount);\n                    mountRoot.mount = mount;\n                    mount.root = mountRoot;\n                    if (root) {\n                        FS.root = mountRoot\n                    } else if (node) {\n                        node.mounted = mount;\n                        if (node.mount) {\n                            node.mount.mounts.push(mount)\n                        }\n                    }\n                    return mountRoot\n                },\n                unmount(mountpoint) {\n                    var lookup = FS.lookupPath(mountpoint, {\n                        follow_mount: false\n                    });\n                    if (!FS.isMountpoint(lookup.node)) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var node = lookup.node;\n                    var mount = node.mounted;\n                    var mounts = FS.getMounts(mount);\n                    Object.keys(FS.nameTable).forEach(hash => {\n                        var current = FS.nameTable[hash];\n                        while (current) {\n                            var next = current.name_next;\n                            if (mounts.includes(current.mount)) {\n                                FS.destroyNode(current)\n                            }\n                            current = next\n                        }\n                    });\n                    node.mounted = null;\n                    var idx = node.mount.mounts.indexOf(mount);\n                    node.mount.mounts.splice(idx, 1)\n                },\n                lookup(parent, name) {\n                    return parent.node_ops.lookup(parent, name)\n                },\n                mknod(path, mode, dev) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    var name = PATH.basename(path);\n                    if (!name || name === \".\" || name === \"..\") {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var errCode = FS.mayCreate(parent, name);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.mknod) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return parent.node_ops.mknod(parent, name, mode, dev)\n                },\n                create(path, mode) {\n                    mode = mode !== undefined ? mode : 438;\n                    mode &= 4095;\n                    mode |= 32768;\n                    return FS.mknod(path, mode, 0)\n                },\n                mkdir(path, mode) {\n                    mode = mode !== undefined ? mode : 511;\n                    mode &= 511 | 512;\n                    mode |= 16384;\n                    return FS.mknod(path, mode, 0)\n                },\n                mkdirTree(path, mode) {\n                    var dirs = path.split(\"/\");\n                    var d = \"\";\n                    for (var i = 0; i < dirs.length; ++i) {\n                        if (!dirs[i]) continue;\n                        d += \"/\" + dirs[i];\n                        try {\n                            FS.mkdir(d, mode)\n                        } catch (e) {\n                            if (e.errno != 20) throw e\n                        }\n                    }\n                },\n                mkdev(path, mode, dev) {\n                    if (typeof dev == \"undefined\") {\n                        dev = mode;\n                        mode = 438\n                    }\n                    mode |= 8192;\n                    return FS.mknod(path, mode, dev)\n                },\n                symlink(oldpath, newpath) {\n                    if (!PATH_FS.resolve(oldpath)) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var lookup = FS.lookupPath(newpath, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    if (!parent) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var newname = PATH.basename(newpath);\n                    var errCode = FS.mayCreate(parent, newname);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.symlink) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return parent.node_ops.symlink(parent, newname, oldpath)\n                },\n                rename(old_path, new_path) {\n                    var old_dirname = PATH.dirname(old_path);\n                    var new_dirname = PATH.dirname(new_path);\n                    var old_name = PATH.basename(old_path);\n                    var new_name = PATH.basename(new_path);\n                    var lookup, old_dir, new_dir;\n                    lookup = FS.lookupPath(old_path, {\n                        parent: true\n                    });\n                    old_dir = lookup.node;\n                    lookup = FS.lookupPath(new_path, {\n                        parent: true\n                    });\n                    new_dir = lookup.node;\n                    if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n                    if (old_dir.mount !== new_dir.mount) {\n                        throw new FS.ErrnoError(75)\n                    }\n                    var old_node = FS.lookupNode(old_dir, old_name);\n                    var relative = PATH_FS.relative(old_path, new_dirname);\n                    if (relative.charAt(0) !== \".\") {\n                        throw new FS.ErrnoError(28)\n                    }\n                    relative = PATH_FS.relative(new_path, old_dirname);\n                    if (relative.charAt(0) !== \".\") {\n                        throw new FS.ErrnoError(55)\n                    }\n                    var new_node;\n                    try {\n                        new_node = FS.lookupNode(new_dir, new_name)\n                    } catch (e) {}\n                    if (old_node === new_node) {\n                        return\n                    }\n                    var isdir = FS.isDir(old_node.mode);\n                    var errCode = FS.mayDelete(old_dir, old_name, isdir);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!old_dir.node_ops.rename) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    if (new_dir !== old_dir) {\n                        errCode = FS.nodePermissions(old_dir, \"w\");\n                        if (errCode) {\n                            throw new FS.ErrnoError(errCode)\n                        }\n                    }\n                    FS.hashRemoveNode(old_node);\n                    try {\n                        old_dir.node_ops.rename(old_node, new_dir, new_name);\n                        old_node.parent = new_dir\n                    } catch (e) {\n                        throw e\n                    } finally {\n                        FS.hashAddNode(old_node)\n                    }\n                },\n                rmdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    var name = PATH.basename(path);\n                    var node = FS.lookupNode(parent, name);\n                    var errCode = FS.mayDelete(parent, name, true);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.rmdir) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    parent.node_ops.rmdir(parent, name);\n                    FS.destroyNode(node)\n                },\n                readdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    if (!node.node_ops.readdir) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    return node.node_ops.readdir(node)\n                },\n                unlink(path) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    if (!parent) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var name = PATH.basename(path);\n                    var node = FS.lookupNode(parent, name);\n                    var errCode = FS.mayDelete(parent, name, false);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.unlink) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    parent.node_ops.unlink(parent, name);\n                    FS.destroyNode(node)\n                },\n                readlink(path) {\n                    var lookup = FS.lookupPath(path);\n                    var link = lookup.node;\n                    if (!link) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!link.node_ops.readlink) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))\n                },\n                stat(path, dontFollow) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: !dontFollow\n                    });\n                    var node = lookup.node;\n                    if (!node) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!node.node_ops.getattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return node.node_ops.getattr(node)\n                },\n                lstat(path) {\n                    return FS.stat(path, true)\n                },\n                chmod(path, mode, dontFollow) {\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontFollow\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    node.node_ops.setattr(node, {\n                        mode: mode & 4095 | node.mode & ~4095,\n                        timestamp: Date.now()\n                    })\n                },\n                lchmod(path, mode) {\n                    FS.chmod(path, mode, true)\n                },\n                fchmod(fd, mode) {\n                    var stream = FS.getStreamChecked(fd);\n                    FS.chmod(stream.node, mode)\n                },\n                chown(path, uid, gid, dontFollow) {\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontFollow\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    node.node_ops.setattr(node, {\n                        timestamp: Date.now()\n                    })\n                },\n                lchown(path, uid, gid) {\n                    FS.chown(path, uid, gid, true)\n                },\n                fchown(fd, uid, gid) {\n                    var stream = FS.getStreamChecked(fd);\n                    FS.chown(stream.node, uid, gid)\n                },\n                truncate(path, len) {\n                    if (len < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: true\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isDir(node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!FS.isFile(node.mode)) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var errCode = FS.nodePermissions(node, \"w\");\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    node.node_ops.setattr(node, {\n                        size: len,\n                        timestamp: Date.now()\n                    })\n                },\n                ftruncate(fd, len) {\n                    var stream = FS.getStreamChecked(fd);\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    FS.truncate(stream.node, len)\n                },\n                utime(path, atime, mtime) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    node.node_ops.setattr(node, {\n                        timestamp: Math.max(atime, mtime)\n                    })\n                },\n                open(path, flags, mode) {\n                    if (path === \"\") {\n                        throw new FS.ErrnoError(44)\n                    }\n                    flags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n                    if (flags & 64) {\n                        mode = typeof mode == \"undefined\" ? 438 : mode;\n                        mode = mode & 4095 | 32768\n                    } else {\n                        mode = 0\n                    }\n                    var node;\n                    if (typeof path == \"object\") {\n                        node = path\n                    } else {\n                        path = PATH.normalize(path);\n                        try {\n                            var lookup = FS.lookupPath(path, {\n                                follow: !(flags & 131072)\n                            });\n                            node = lookup.node\n                        } catch (e) {}\n                    }\n                    var created = false;\n                    if (flags & 64) {\n                        if (node) {\n                            if (flags & 128) {\n                                throw new FS.ErrnoError(20)\n                            }\n                        } else {\n                            node = FS.mknod(path, mode, 0);\n                            created = true\n                        }\n                    }\n                    if (!node) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (FS.isChrdev(node.mode)) {\n                        flags &= ~512\n                    }\n                    if (flags & 65536 && !FS.isDir(node.mode)) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    if (!created) {\n                        var errCode = FS.mayOpen(node, flags);\n                        if (errCode) {\n                            throw new FS.ErrnoError(errCode)\n                        }\n                    }\n                    if (flags & 512 && !created) {\n                        FS.truncate(node, 0)\n                    }\n                    flags &= ~(128 | 512 | 131072);\n                    var stream = FS.createStream({\n                        node,\n                        path: FS.getPath(node),\n                        flags,\n                        seekable: true,\n                        position: 0,\n                        stream_ops: node.stream_ops,\n                        ungotten: [],\n                        error: false\n                    });\n                    if (stream.stream_ops.open) {\n                        stream.stream_ops.open(stream)\n                    }\n                    if (Module[\"logReadFiles\"] && !(flags & 1)) {\n                        if (!(path in FS.readFiles)) {\n                            FS.readFiles[path] = 1\n                        }\n                    }\n                    return stream\n                },\n                close(stream) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (stream.getdents) stream.getdents = null;\n                    try {\n                        if (stream.stream_ops.close) {\n                            stream.stream_ops.close(stream)\n                        }\n                    } catch (e) {\n                        throw e\n                    } finally {\n                        FS.closeStream(stream.fd)\n                    }\n                    stream.fd = null\n                },\n                isClosed(stream) {\n                    return stream.fd === null\n                },\n                llseek(stream, offset, whence) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (!stream.seekable || !stream.stream_ops.llseek) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    if (whence != 0 && whence != 1 && whence != 2) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    stream.position = stream.stream_ops.llseek(stream, offset, whence);\n                    stream.ungotten = [];\n                    return stream.position\n                },\n                read(stream, buffer, offset, length, position) {\n                    if (length < 0 || position < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if ((stream.flags & 2097155) === 1) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!stream.stream_ops.read) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var seeking = typeof position != \"undefined\";\n                    if (!seeking) {\n                        position = stream.position\n                    } else if (!stream.seekable) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n                    if (!seeking) stream.position += bytesRead;\n                    return bytesRead\n                },\n                write(stream, buffer, offset, length, position, canOwn) {\n                    if (length < 0 || position < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!stream.stream_ops.write) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (stream.seekable && stream.flags & 1024) {\n                        FS.llseek(stream, 0, 2)\n                    }\n                    var seeking = typeof position != \"undefined\";\n                    if (!seeking) {\n                        position = stream.position\n                    } else if (!stream.seekable) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n                    if (!seeking) stream.position += bytesWritten;\n                    return bytesWritten\n                },\n                allocate(stream, offset, length) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (offset < 0 || length <= 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (!stream.stream_ops.allocate) {\n                        throw new FS.ErrnoError(138)\n                    }\n                    stream.stream_ops.allocate(stream, offset, length)\n                },\n                mmap(stream, length, position, prot, flags) {\n                    if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n                        throw new FS.ErrnoError(2)\n                    }\n                    if ((stream.flags & 2097155) === 1) {\n                        throw new FS.ErrnoError(2)\n                    }\n                    if (!stream.stream_ops.mmap) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (!length) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    return stream.stream_ops.mmap(stream, length, position, prot, flags)\n                },\n                msync(stream, buffer, offset, length, mmapFlags) {\n                    if (!stream.stream_ops.msync) {\n                        return 0\n                    }\n                    return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)\n                },\n                ioctl(stream, cmd, arg) {\n                    if (!stream.stream_ops.ioctl) {\n                        throw new FS.ErrnoError(59)\n                    }\n                    return stream.stream_ops.ioctl(stream, cmd, arg)\n                },\n                readFile(path, opts = {}) {\n                    opts.flags = opts.flags || 0;\n                    opts.encoding = opts.encoding || \"binary\";\n                    if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n                        throw new Error(`Invalid encoding type \"${opts.encoding}\"`)\n                    }\n                    var ret;\n                    var stream = FS.open(path, opts.flags);\n                    var stat = FS.stat(path);\n                    var length = stat.size;\n                    var buf = new Uint8Array(length);\n                    FS.read(stream, buf, 0, length, 0);\n                    if (opts.encoding === \"utf8\") {\n                        ret = UTF8ArrayToString(buf)\n                    } else if (opts.encoding === \"binary\") {\n                        ret = buf\n                    }\n                    FS.close(stream);\n                    return ret\n                },\n                writeFile(path, data, opts = {}) {\n                    opts.flags = opts.flags || 577;\n                    var stream = FS.open(path, opts.flags, opts.mode);\n                    if (typeof data == \"string\") {\n                        var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n                        var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n                        FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn)\n                    } else if (ArrayBuffer.isView(data)) {\n                        FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn)\n                    } else {\n                        throw new Error(\"Unsupported data type\")\n                    }\n                    FS.close(stream)\n                },\n                cwd: () => FS.currentPath,\n                chdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    if (lookup.node === null) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!FS.isDir(lookup.node.mode)) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    var errCode = FS.nodePermissions(lookup.node, \"x\");\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    FS.currentPath = lookup.path\n                },\n                createDefaultDirectories() {\n                    FS.mkdir(\"/tmp\");\n                    FS.mkdir(\"/home\");\n                    FS.mkdir(\"/home/web_user\")\n                },\n                createDefaultDevices() {\n                    FS.mkdir(\"/dev\");\n                    FS.registerDevice(FS.makedev(1, 3), {\n                        read: () => 0,\n                        write: (stream, buffer, offset, length, pos) => length\n                    });\n                    FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n                    TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n                    TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n                    FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n                    FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n                    var randomBuffer = new Uint8Array(1024),\n                        randomLeft = 0;\n                    var randomByte = () => {\n                        if (randomLeft === 0) {\n                            randomLeft = randomFill(randomBuffer).byteLength\n                        }\n                        return randomBuffer[--randomLeft]\n                    };\n                    FS.createDevice(\"/dev\", \"random\", randomByte);\n                    FS.createDevice(\"/dev\", \"urandom\", randomByte);\n                    FS.mkdir(\"/dev/shm\");\n                    FS.mkdir(\"/dev/shm/tmp\")\n                },\n                createSpecialDirectories() {\n                    FS.mkdir(\"/proc\");\n                    var proc_self = FS.mkdir(\"/proc/self\");\n                    FS.mkdir(\"/proc/self/fd\");\n                    FS.mount({\n                        mount() {\n                            var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n                            node.node_ops = {\n                                lookup(parent, name) {\n                                    var fd = +name;\n                                    var stream = FS.getStreamChecked(fd);\n                                    var ret = {\n                                        parent: null,\n                                        mount: {\n                                            mountpoint: \"fake\"\n                                        },\n                                        node_ops: {\n                                            readlink: () => stream.path\n                                        }\n                                    };\n                                    ret.parent = ret;\n                                    return ret\n                                }\n                            };\n                            return node\n                        }\n                    }, {}, \"/proc/self/fd\")\n                },\n                createStandardStreams(input, output, error) {\n                    if (input) {\n                        FS.createDevice(\"/dev\", \"stdin\", input)\n                    } else {\n                        FS.symlink(\"/dev/tty\", \"/dev/stdin\")\n                    }\n                    if (output) {\n                        FS.createDevice(\"/dev\", \"stdout\", null, output)\n                    } else {\n                        FS.symlink(\"/dev/tty\", \"/dev/stdout\")\n                    }\n                    if (error) {\n                        FS.createDevice(\"/dev\", \"stderr\", null, error)\n                    } else {\n                        FS.symlink(\"/dev/tty1\", \"/dev/stderr\")\n                    }\n                    var stdin = FS.open(\"/dev/stdin\", 0);\n                    var stdout = FS.open(\"/dev/stdout\", 1);\n                    var stderr = FS.open(\"/dev/stderr\", 1)\n                },\n                staticInit() {\n                    [44].forEach(code => {\n                        FS.genericErrors[code] = new FS.ErrnoError(code);\n                        FS.genericErrors[code].stack = \"<generic error, no stack>\"\n                    });\n                    FS.nameTable = new Array(4096);\n                    FS.mount(MEMFS, {}, \"/\");\n                    FS.createDefaultDirectories();\n                    FS.createDefaultDevices();\n                    FS.createSpecialDirectories();\n                    FS.filesystems = {\n                        MEMFS\n                    }\n                },\n                init(input, output, error) {\n                    FS.initialized = true;\n                    input ??= Module[\"stdin\"];\n                    output ??= Module[\"stdout\"];\n                    error ??= Module[\"stderr\"];\n                    FS.createStandardStreams(input, output, error)\n                },\n                quit() {\n                    FS.initialized = false;\n                    for (var i = 0; i < FS.streams.length; i++) {\n                        var stream = FS.streams[i];\n                        if (!stream) {\n                            continue\n                        }\n                        FS.close(stream)\n                    }\n                },\n                findObject(path, dontResolveLastLink) {\n                    var ret = FS.analyzePath(path, dontResolveLastLink);\n                    if (!ret.exists) {\n                        return null\n                    }\n                    return ret.object\n                },\n                analyzePath(path, dontResolveLastLink) {\n                    try {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontResolveLastLink\n                        });\n                        path = lookup.path\n                    } catch (e) {}\n                    var ret = {\n                        isRoot: false,\n                        exists: false,\n                        error: 0,\n                        name: null,\n                        path: null,\n                        object: null,\n                        parentExists: false,\n                        parentPath: null,\n                        parentObject: null\n                    };\n                    try {\n                        var lookup = FS.lookupPath(path, {\n                            parent: true\n                        });\n                        ret.parentExists = true;\n                        ret.parentPath = lookup.path;\n                        ret.parentObject = lookup.node;\n                        ret.name = PATH.basename(path);\n                        lookup = FS.lookupPath(path, {\n                            follow: !dontResolveLastLink\n                        });\n                        ret.exists = true;\n                        ret.path = lookup.path;\n                        ret.object = lookup.node;\n                        ret.name = lookup.node.name;\n                        ret.isRoot = lookup.path === \"/\"\n                    } catch (e) {\n                        ret.error = e.errno\n                    }\n                    return ret\n                },\n                createPath(parent, path, canRead, canWrite) {\n                    parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n                    var parts = path.split(\"/\").reverse();\n                    while (parts.length) {\n                        var part = parts.pop();\n                        if (!part) continue;\n                        var current = PATH.join2(parent, part);\n                        try {\n                            FS.mkdir(current)\n                        } catch (e) {}\n                        parent = current\n                    }\n                    return current\n                },\n                createFile(parent, name, properties, canRead, canWrite) {\n                    var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n                    var mode = FS_getMode(canRead, canWrite);\n                    return FS.create(path, mode)\n                },\n                createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n                    var path = name;\n                    if (parent) {\n                        parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n                        path = name ? PATH.join2(parent, name) : parent\n                    }\n                    var mode = FS_getMode(canRead, canWrite);\n                    var node = FS.create(path, mode);\n                    if (data) {\n                        if (typeof data == \"string\") {\n                            var arr = new Array(data.length);\n                            for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n                            data = arr\n                        }\n                        FS.chmod(node, mode | 146);\n                        var stream = FS.open(node, 577);\n                        FS.write(stream, data, 0, data.length, 0, canOwn);\n                        FS.close(stream);\n                        FS.chmod(node, mode)\n                    }\n                },\n                createDevice(parent, name, input, output) {\n                    var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n                    var mode = FS_getMode(!!input, !!output);\n                    FS.createDevice.major ??= 64;\n                    var dev = FS.makedev(FS.createDevice.major++, 0);\n                    FS.registerDevice(dev, {\n                        open(stream) {\n                            stream.seekable = false\n                        },\n                        close(stream) {\n                            if (output?.buffer?.length) {\n                                output(10)\n                            }\n                        },\n                        read(stream, buffer, offset, length, pos) {\n                            var bytesRead = 0;\n                            for (var i = 0; i < length; i++) {\n                                var result;\n                                try {\n                                    result = input()\n                                } catch (e) {\n                                    throw new FS.ErrnoError(29)\n                                }\n                                if (result === undefined && bytesRead === 0) {\n                                    throw new FS.ErrnoError(6)\n                                }\n                                if (result === null || result === undefined) break;\n                                bytesRead++;\n                                buffer[offset + i] = result\n                            }\n                            if (bytesRead) {\n                                stream.node.timestamp = Date.now()\n                            }\n                            return bytesRead\n                        },\n                        write(stream, buffer, offset, length, pos) {\n                            for (var i = 0; i < length; i++) {\n                                try {\n                                    output(buffer[offset + i])\n                                } catch (e) {\n                                    throw new FS.ErrnoError(29)\n                                }\n                            }\n                            if (length) {\n                                stream.node.timestamp = Date.now()\n                            }\n                            return i\n                        }\n                    });\n                    return FS.mkdev(path, mode, dev)\n                },\n                forceLoadFile(obj) {\n                    if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n                    if (typeof XMLHttpRequest != \"undefined\") {\n                        throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")\n                    } else {\n                        try {\n                            obj.contents = readBinary(obj.url);\n                            obj.usedBytes = obj.contents.length\n                        } catch (e) {\n                            throw new FS.ErrnoError(29)\n                        }\n                    }\n                },\n                createLazyFile(parent, name, url, canRead, canWrite) {\n                    class LazyUint8Array {\n                        lengthKnown = false;\n                        chunks = [];\n                        get(idx) {\n                            if (idx > this.length - 1 || idx < 0) {\n                                return undefined\n                            }\n                            var chunkOffset = idx % this.chunkSize;\n                            var chunkNum = idx / this.chunkSize | 0;\n                            return this.getter(chunkNum)[chunkOffset]\n                        }\n                        setDataGetter(getter) {\n                            this.getter = getter\n                        }\n                        cacheLength() {\n                            var xhr = new XMLHttpRequest;\n                            xhr.open(\"HEAD\", url, false);\n                            xhr.send(null);\n                            if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n                            var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n                            var header;\n                            var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n                            var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n                            var chunkSize = 1024 * 1024;\n                            if (!hasByteServing) chunkSize = datalength;\n                            var doXHR = (from, to) => {\n                                if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n                                if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n                                var xhr = new XMLHttpRequest;\n                                xhr.open(\"GET\", url, false);\n                                if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n                                xhr.responseType = \"arraybuffer\";\n                                if (xhr.overrideMimeType) {\n                                    xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")\n                                }\n                                xhr.send(null);\n                                if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n                                if (xhr.response !== undefined) {\n                                    return new Uint8Array(xhr.response || [])\n                                }\n                                return intArrayFromString(xhr.responseText || \"\", true)\n                            };\n                            var lazyArray = this;\n                            lazyArray.setDataGetter(chunkNum => {\n                                var start = chunkNum * chunkSize;\n                                var end = (chunkNum + 1) * chunkSize - 1;\n                                end = Math.min(end, datalength - 1);\n                                if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n                                    lazyArray.chunks[chunkNum] = doXHR(start, end)\n                                }\n                                if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n                                return lazyArray.chunks[chunkNum]\n                            });\n                            if (usesGzip || !datalength) {\n                                chunkSize = datalength = 1;\n                                datalength = this.getter(0).length;\n                                chunkSize = datalength;\n                                out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")\n                            }\n                            this._length = datalength;\n                            this._chunkSize = chunkSize;\n                            this.lengthKnown = true\n                        }\n                        get length() {\n                            if (!this.lengthKnown) {\n                                this.cacheLength()\n                            }\n                            return this._length\n                        }\n                        get chunkSize() {\n                            if (!this.lengthKnown) {\n                                this.cacheLength()\n                            }\n                            return this._chunkSize\n                        }\n                    }\n                    if (typeof XMLHttpRequest != \"undefined\") {\n                        if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n                        var lazyArray = new LazyUint8Array;\n                        var properties = {\n                            isDevice: false,\n                            contents: lazyArray\n                        }\n                    } else {\n                        var properties = {\n                            isDevice: false,\n                            url\n                        }\n                    }\n                    var node = FS.createFile(parent, name, properties, canRead, canWrite);\n                    if (properties.contents) {\n                        node.contents = properties.contents\n                    } else if (properties.url) {\n                        node.contents = null;\n                        node.url = properties.url\n                    }\n                    Object.defineProperties(node, {\n                        usedBytes: {\n                            get: function() {\n                                return this.contents.length\n                            }\n                        }\n                    });\n                    var stream_ops = {};\n                    var keys = Object.keys(node.stream_ops);\n                    keys.forEach(key => {\n                        var fn = node.stream_ops[key];\n                        stream_ops[key] = (...args) => {\n                            FS.forceLoadFile(node);\n                            return fn(...args)\n                        }\n                    });\n\n                    function writeChunks(stream, buffer, offset, length, position) {\n                        var contents = stream.node.contents;\n                        if (position >= contents.length) return 0;\n                        var size = Math.min(contents.length - position, length);\n                        if (contents.slice) {\n                            for (var i = 0; i < size; i++) {\n                                buffer[offset + i] = contents[position + i]\n                            }\n                        } else {\n                            for (var i = 0; i < size; i++) {\n                                buffer[offset + i] = contents.get(position + i)\n                            }\n                        }\n                        return size\n                    }\n                    stream_ops.read = (stream, buffer, offset, length, position) => {\n                        FS.forceLoadFile(node);\n                        return writeChunks(stream, buffer, offset, length, position)\n                    };\n                    stream_ops.mmap = (stream, length, position, prot, flags) => {\n                        FS.forceLoadFile(node);\n                        var ptr = mmapAlloc(length);\n                        if (!ptr) {\n                            throw new FS.ErrnoError(48)\n                        }\n                        writeChunks(stream, HEAP8, ptr, length, position);\n                        return {\n                            ptr,\n                            allocated: true\n                        }\n                    };\n                    node.stream_ops = stream_ops;\n                    return node\n                }\n            };\n            var SYSCALLS = {\n                DEFAULT_POLLMASK: 5,\n                calculateAt(dirfd, path, allowEmpty) {\n                    if (PATH.isAbs(path)) {\n                        return path\n                    }\n                    var dir;\n                    if (dirfd === -100) {\n                        dir = FS.cwd()\n                    } else {\n                        var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n                        dir = dirstream.path\n                    }\n                    if (path.length == 0) {\n                        if (!allowEmpty) {\n                            throw new FS.ErrnoError(44)\n                        }\n                        return dir\n                    }\n                    return PATH.join2(dir, path)\n                },\n                doStat(func, path, buf) {\n                    var stat = func(path);\n                    HEAP32[buf >>> 2 >>> 0] = stat.dev;\n                    HEAP32[buf + 4 >>> 2 >>> 0] = stat.mode;\n                    HEAPU32[buf + 8 >>> 2 >>> 0] = stat.nlink;\n                    HEAP32[buf + 12 >>> 2 >>> 0] = stat.uid;\n                    HEAP32[buf + 16 >>> 2 >>> 0] = stat.gid;\n                    HEAP32[buf + 20 >>> 2 >>> 0] = stat.rdev;\n                    tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 28 >>> 2 >>> 0] = tempI64[1];\n                    HEAP32[buf + 32 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 36 >>> 2 >>> 0] = stat.blocks;\n                    var atime = stat.atime.getTime();\n                    var mtime = stat.mtime.getTime();\n                    var ctime = stat.ctime.getTime();\n                    tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 44 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 48 >>> 2 >>> 0] = atime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 60 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 64 >>> 2 >>> 0] = mtime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 76 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 80 >>> 2 >>> 0] = ctime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 92 >>> 2 >>> 0] = tempI64[1];\n                    return 0\n                },\n                doMsync(addr, stream, len, flags, offset) {\n                    if (!FS.isFile(stream.node.mode)) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (flags & 2) {\n                        return 0\n                    }\n                    var buffer = HEAPU8.slice(addr, addr + len);\n                    FS.msync(stream, buffer, offset, len, flags)\n                },\n                getStreamFromFD(fd) {\n                    var stream = FS.getStreamChecked(fd);\n                    return stream\n                },\n                varargs: undefined,\n                getStr(ptr) {\n                    var ret = UTF8ToString(ptr);\n                    return ret\n                }\n            };\n            var ___syscall__newselect = function(nfds, readfds, writefds, exceptfds, timeout) {\n                readfds >>>= 0;\n                writefds >>>= 0;\n                exceptfds >>>= 0;\n                timeout >>>= 0;\n                try {\n                    var total = 0;\n                    var srcReadLow = readfds ? HEAP32[readfds >>> 2 >>> 0] : 0,\n                        srcReadHigh = readfds ? HEAP32[readfds + 4 >>> 2 >>> 0] : 0;\n                    var srcWriteLow = writefds ? HEAP32[writefds >>> 2 >>> 0] : 0,\n                        srcWriteHigh = writefds ? HEAP32[writefds + 4 >>> 2 >>> 0] : 0;\n                    var srcExceptLow = exceptfds ? HEAP32[exceptfds >>> 2 >>> 0] : 0,\n                        srcExceptHigh = exceptfds ? HEAP32[exceptfds + 4 >>> 2 >>> 0] : 0;\n                    var dstReadLow = 0,\n                        dstReadHigh = 0;\n                    var dstWriteLow = 0,\n                        dstWriteHigh = 0;\n                    var dstExceptLow = 0,\n                        dstExceptHigh = 0;\n                    var allLow = (readfds ? HEAP32[readfds >>> 2 >>> 0] : 0) | (writefds ? HEAP32[writefds >>> 2 >>> 0] : 0) | (exceptfds ? HEAP32[exceptfds >>> 2 >>> 0] : 0);\n                    var allHigh = (readfds ? HEAP32[readfds + 4 >>> 2 >>> 0] : 0) | (writefds ? HEAP32[writefds + 4 >>> 2 >>> 0] : 0) | (exceptfds ? HEAP32[exceptfds + 4 >>> 2 >>> 0] : 0);\n                    var check = (fd, low, high, val) => fd < 32 ? low & val : high & val;\n                    for (var fd = 0; fd < nfds; fd++) {\n                        var mask = 1 << fd % 32;\n                        if (!check(fd, allLow, allHigh, mask)) {\n                            continue\n                        }\n                        var stream = SYSCALLS.getStreamFromFD(fd);\n                        var flags = SYSCALLS.DEFAULT_POLLMASK;\n                        if (stream.stream_ops.poll) {\n                            var timeoutInMillis = -1;\n                            if (timeout) {\n                                var tv_sec = readfds ? HEAP32[timeout >>> 2 >>> 0] : 0,\n                                    tv_usec = readfds ? HEAP32[timeout + 4 >>> 2 >>> 0] : 0;\n                                timeoutInMillis = (tv_sec + tv_usec / 1e6) * 1e3\n                            }\n                            flags = stream.stream_ops.poll(stream, timeoutInMillis)\n                        }\n                        if (flags & 1 && check(fd, srcReadLow, srcReadHigh, mask)) {\n                            fd < 32 ? dstReadLow = dstReadLow | mask : dstReadHigh = dstReadHigh | mask;\n                            total++\n                        }\n                        if (flags & 4 && check(fd, srcWriteLow, srcWriteHigh, mask)) {\n                            fd < 32 ? dstWriteLow = dstWriteLow | mask : dstWriteHigh = dstWriteHigh | mask;\n                            total++\n                        }\n                        if (flags & 2 && check(fd, srcExceptLow, srcExceptHigh, mask)) {\n                            fd < 32 ? dstExceptLow = dstExceptLow | mask : dstExceptHigh = dstExceptHigh | mask;\n                            total++\n                        }\n                    }\n                    if (readfds) {\n                        HEAP32[readfds >>> 2 >>> 0] = dstReadLow;\n                        HEAP32[readfds + 4 >>> 2 >>> 0] = dstReadHigh\n                    }\n                    if (writefds) {\n                        HEAP32[writefds >>> 2 >>> 0] = dstWriteLow;\n                        HEAP32[writefds + 4 >>> 2 >>> 0] = dstWriteHigh\n                    }\n                    if (exceptfds) {\n                        HEAP32[exceptfds >>> 2 >>> 0] = dstExceptLow;\n                        HEAP32[exceptfds + 4 >>> 2 >>> 0] = dstExceptHigh\n                    }\n                    return total\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            };\n            ___syscall__newselect.sig = \"iipppp\";\n            var SOCKFS = {\n                websocketArgs: {},\n                callbacks: {},\n                on(event, callback) {\n                    SOCKFS.callbacks[event] = callback\n                },\n                emit(event, param) {\n                    SOCKFS.callbacks[event]?.(param)\n                },\n                mount(mount) {\n                    SOCKFS.websocketArgs = Module[\"websocket\"] || {};\n                    (Module[\"websocket\"] ??= {})[\"on\"] = SOCKFS.on;\n                    return FS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createSocket(family, type, protocol) {\n                    type &= ~526336;\n                    var streaming = type == 1;\n                    if (streaming && protocol && protocol != 6) {\n                        throw new FS.ErrnoError(66)\n                    }\n                    var sock = {\n                        family,\n                        type,\n                        protocol,\n                        server: null,\n                        error: null,\n                        peers: {},\n                        pending: [],\n                        recv_queue: [],\n                        sock_ops: SOCKFS.websocket_sock_ops\n                    };\n                    var name = SOCKFS.nextname();\n                    var node = FS.createNode(SOCKFS.root, name, 49152, 0);\n                    node.sock = sock;\n                    var stream = FS.createStream({\n                        path: name,\n                        node,\n                        flags: 2,\n                        seekable: false,\n                        stream_ops: SOCKFS.stream_ops\n                    });\n                    sock.stream = stream;\n                    return sock\n                },\n                getSocket(fd) {\n                    var stream = FS.getStream(fd);\n                    if (!stream || !FS.isSocket(stream.node.mode)) {\n                        return null\n                    }\n                    return stream.node.sock\n                },\n                stream_ops: {\n                    poll(stream) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.poll(sock)\n                    },\n                    ioctl(stream, request, varargs) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.ioctl(sock, request, varargs)\n                    },\n                    read(stream, buffer, offset, length, position) {\n                        var sock = stream.node.sock;\n                        var msg = sock.sock_ops.recvmsg(sock, length);\n                        if (!msg) {\n                            return 0\n                        }\n                        buffer.set(msg.buffer, offset);\n                        return msg.buffer.length\n                    },\n                    write(stream, buffer, offset, length, position) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.sendmsg(sock, buffer, offset, length)\n                    },\n                    close(stream) {\n                        var sock = stream.node.sock;\n                        sock.sock_ops.close(sock)\n                    }\n                },\n                nextname() {\n                    if (!SOCKFS.nextname.current) {\n                        SOCKFS.nextname.current = 0\n                    }\n                    return \"socket[\" + SOCKFS.nextname.current++ + \"]\"\n                },\n                websocket_sock_ops: {\n                    createPeer(sock, addr, port) {\n                        var ws;\n                        if (typeof addr == \"object\") {\n                            ws = addr;\n                            addr = null;\n                            port = null\n                        }\n                        if (ws) {\n                            if (ws._socket) {\n                                addr = ws._socket.remoteAddress;\n                                port = ws._socket.remotePort\n                            } else {\n                                var result = /ws[s]?:\\/\\/([^:]+):(\\d+)/.exec(ws.url);\n                                if (!result) {\n                                    throw new Error(\"WebSocket URL must be in the format ws(s)://address:port\")\n                                }\n                                addr = result[1];\n                                port = parseInt(result[2], 10)\n                            }\n                        } else {\n                            try {\n                                var url = \"ws:#\".replace(\"#\", \"//\");\n                                var subProtocols = \"binary\";\n                                var opts = undefined;\n                                if (SOCKFS.websocketArgs[\"url\"]) {\n                                    url = SOCKFS.websocketArgs[\"url\"]\n                                }\n                                if (SOCKFS.websocketArgs[\"subprotocol\"]) {\n                                    subProtocols = SOCKFS.websocketArgs[\"subprotocol\"]\n                                } else if (SOCKFS.websocketArgs[\"subprotocol\"] === null) {\n                                    subProtocols = \"null\"\n                                }\n                                if (url === \"ws://\" || url === \"wss://\") {\n                                    var parts = addr.split(\"/\");\n                                    url = url + parts[0] + \":\" + port + \"/\" + parts.slice(1).join(\"/\")\n                                }\n                                if (subProtocols !== \"null\") {\n                                    subProtocols = subProtocols.replace(/^ +| +$/g, \"\").split(/ *, */);\n                                    opts = subProtocols\n                                }\n                                var WebSocketConstructor;\n                                if (ENVIRONMENT_IS_NODE) {\n                                    WebSocketConstructor = require(\"ws\")\n                                } else {\n                                    WebSocketConstructor = WebSocket\n                                }\n                                ws = new WebSocketConstructor(url, opts);\n                                ws.binaryType = \"arraybuffer\"\n                            } catch (e) {\n                                throw new FS.ErrnoError(23)\n                            }\n                        }\n                        var peer = {\n                            addr,\n                            port,\n                            socket: ws,\n                            msg_send_queue: []\n                        };\n                        SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n                        SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);\n                        if (sock.type === 2 && typeof sock.sport != \"undefined\") {\n                            peer.msg_send_queue.push(new Uint8Array([255, 255, 255, 255, \"p\".charCodeAt(0), \"o\".charCodeAt(0), \"r\".charCodeAt(0), \"t\".charCodeAt(0), (sock.sport & 65280) >> 8, sock.sport & 255]))\n                        }\n                        return peer\n                    },\n                    getPeer(sock, addr, port) {\n                        return sock.peers[addr + \":\" + port]\n                    },\n                    addPeer(sock, peer) {\n                        sock.peers[peer.addr + \":\" + peer.port] = peer\n                    },\n                    removePeer(sock, peer) {\n                        delete sock.peers[peer.addr + \":\" + peer.port]\n                    },\n                    handlePeerEvents(sock, peer) {\n                        var first = true;\n                        var handleOpen = function() {\n                            sock.connecting = false;\n                            SOCKFS.emit(\"open\", sock.stream.fd);\n                            try {\n                                var queued = peer.msg_send_queue.shift();\n                                while (queued) {\n                                    peer.socket.send(queued);\n                                    queued = peer.msg_send_queue.shift()\n                                }\n                            } catch (e) {\n                                peer.socket.close()\n                            }\n                        };\n\n                        function handleMessage(data) {\n                            if (typeof data == \"string\") {\n                                var encoder = new TextEncoder;\n                                data = encoder.encode(data)\n                            } else {\n                                assert(data.byteLength !== undefined);\n                                if (data.byteLength == 0) {\n                                    return\n                                }\n                                data = new Uint8Array(data)\n                            }\n                            var wasfirst = first;\n                            first = false;\n                            if (wasfirst && data.length === 10 && data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && data[4] === \"p\".charCodeAt(0) && data[5] === \"o\".charCodeAt(0) && data[6] === \"r\".charCodeAt(0) && data[7] === \"t\".charCodeAt(0)) {\n                                var newport = data[8] << 8 | data[9];\n                                SOCKFS.websocket_sock_ops.removePeer(sock, peer);\n                                peer.port = newport;\n                                SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n                                return\n                            }\n                            sock.recv_queue.push({\n                                addr: peer.addr,\n                                port: peer.port,\n                                data\n                            });\n                            SOCKFS.emit(\"message\", sock.stream.fd)\n                        }\n                        if (ENVIRONMENT_IS_NODE) {\n                            peer.socket.on(\"open\", handleOpen);\n                            peer.socket.on(\"message\", function(data, isBinary) {\n                                if (!isBinary) {\n                                    return\n                                }\n                                handleMessage(new Uint8Array(data).buffer)\n                            });\n                            peer.socket.on(\"close\", function() {\n                                SOCKFS.emit(\"close\", sock.stream.fd)\n                            });\n                            peer.socket.on(\"error\", function(error) {\n                                sock.error = 14;\n                                SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"ECONNREFUSED: Connection refused\"])\n                            })\n                        } else {\n                            peer.socket.onopen = handleOpen;\n                            peer.socket.onclose = function() {\n                                SOCKFS.emit(\"close\", sock.stream.fd)\n                            };\n                            peer.socket.onmessage = function peer_socket_onmessage(event) {\n                                handleMessage(event.data)\n                            };\n                            peer.socket.onerror = function(error) {\n                                sock.error = 14;\n                                SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"ECONNREFUSED: Connection refused\"])\n                            }\n                        }\n                    },\n                    poll(sock) {\n                        if (sock.type === 1 && sock.server) {\n                            return sock.pending.length ? 64 | 1 : 0\n                        }\n                        var mask = 0;\n                        var dest = sock.type === 1 ? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : null;\n                        if (sock.recv_queue.length || !dest || dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n                            mask |= 64 | 1\n                        }\n                        if (!dest || dest && dest.socket.readyState === dest.socket.OPEN) {\n                            mask |= 4\n                        }\n                        if (dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n                            if (sock.connecting) {\n                                mask |= 4\n                            } else {\n                                mask |= 16\n                            }\n                        }\n                        return mask\n                    },\n                    ioctl(sock, request, arg) {\n                        switch (request) {\n                            case 21531:\n                                var bytes = 0;\n                                if (sock.recv_queue.length) {\n                                    bytes = sock.recv_queue[0].data.length\n                                }\n                                HEAP32[arg >>> 2 >>> 0] = bytes;\n                                return 0;\n                            default:\n                                return 28\n                        }\n                    },\n                    close(sock) {\n                        if (sock.server) {\n                            try {\n                                sock.server.close()\n                            } catch (e) {}\n                            sock.server = null\n                        }\n                        var peers = Object.keys(sock.peers);\n                        for (var i = 0; i < peers.length; i++) {\n                            var peer = sock.peers[peers[i]];\n                            try {\n                                peer.socket.close()\n                            } catch (e) {}\n                            SOCKFS.websocket_sock_ops.removePeer(sock, peer)\n                        }\n                        return 0\n                    },\n                    bind(sock, addr, port) {\n                        if (typeof sock.saddr != \"undefined\" || typeof sock.sport != \"undefined\") {\n                            throw new FS.ErrnoError(28)\n                        }\n                        sock.saddr = addr;\n                        sock.sport = port;\n                        if (sock.type === 2) {\n                            if (sock.server) {\n                                sock.server.close();\n                                sock.server = null\n                            }\n                            try {\n                                sock.sock_ops.listen(sock, 0)\n                            } catch (e) {\n                                if (!(e.name === \"ErrnoError\")) throw e;\n                                if (e.errno !== 138) throw e\n                            }\n                        }\n                    },\n                    connect(sock, addr, port) {\n                        if (sock.server) {\n                            throw new FS.ErrnoError(138)\n                        }\n                        if (typeof sock.daddr != \"undefined\" && typeof sock.dport != \"undefined\") {\n                            var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n                            if (dest) {\n                                if (dest.socket.readyState === dest.socket.CONNECTING) {\n                                    throw new FS.ErrnoError(7)\n                                } else {\n                                    throw new FS.ErrnoError(30)\n                                }\n                            }\n                        }\n                        var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);\n                        sock.daddr = peer.addr;\n                        sock.dport = peer.port;\n                        sock.connecting = true\n                    },\n                    listen(sock, backlog) {\n                        if (!ENVIRONMENT_IS_NODE) {\n                            throw new FS.ErrnoError(138)\n                        }\n                        if (sock.server) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        var WebSocketServer = require(\"ws\").Server;\n                        var host = sock.saddr;\n                        sock.server = new WebSocketServer({\n                            host,\n                            port: sock.sport\n                        });\n                        SOCKFS.emit(\"listen\", sock.stream.fd);\n                        sock.server.on(\"connection\", function(ws) {\n                            if (sock.type === 1) {\n                                var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);\n                                var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);\n                                newsock.daddr = peer.addr;\n                                newsock.dport = peer.port;\n                                sock.pending.push(newsock);\n                                SOCKFS.emit(\"connection\", newsock.stream.fd)\n                            } else {\n                                SOCKFS.websocket_sock_ops.createPeer(sock, ws);\n                                SOCKFS.emit(\"connection\", sock.stream.fd)\n                            }\n                        });\n                        sock.server.on(\"close\", function() {\n                            SOCKFS.emit(\"close\", sock.stream.fd);\n                            sock.server = null\n                        });\n                        sock.server.on(\"error\", function(error) {\n                            sock.error = 23;\n                            SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"EHOSTUNREACH: Host is unreachable\"])\n                        })\n                    },\n                    accept(listensock) {\n                        if (!listensock.server || !listensock.pending.length) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        var newsock = listensock.pending.shift();\n                        newsock.stream.flags = listensock.stream.flags;\n                        return newsock\n                    },\n                    getname(sock, peer) {\n                        var addr, port;\n                        if (peer) {\n                            if (sock.daddr === undefined || sock.dport === undefined) {\n                                throw new FS.ErrnoError(53)\n                            }\n                            addr = sock.daddr;\n                            port = sock.dport\n                        } else {\n                            addr = sock.saddr || 0;\n                            port = sock.sport || 0\n                        }\n                        return {\n                            addr,\n                            port\n                        }\n                    },\n                    sendmsg(sock, buffer, offset, length, addr, port) {\n                        if (sock.type === 2) {\n                            if (addr === undefined || port === undefined) {\n                                addr = sock.daddr;\n                                port = sock.dport\n                            }\n                            if (addr === undefined || port === undefined) {\n                                throw new FS.ErrnoError(17)\n                            }\n                        } else {\n                            addr = sock.daddr;\n                            port = sock.dport\n                        }\n                        var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);\n                        if (sock.type === 1) {\n                            if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                throw new FS.ErrnoError(53)\n                            }\n                        }\n                        if (ArrayBuffer.isView(buffer)) {\n                            offset += buffer.byteOffset;\n                            buffer = buffer.buffer\n                        }\n                        var data;\n                        data = buffer.slice(offset, offset + length);\n                        if (!dest || dest.socket.readyState !== dest.socket.OPEN) {\n                            if (sock.type === 2) {\n                                if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                    dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port)\n                                }\n                            }\n                            dest.msg_send_queue.push(data);\n                            return length\n                        }\n                        try {\n                            dest.socket.send(data);\n                            return length\n                        } catch (e) {\n                            throw new FS.ErrnoError(28)\n                        }\n                    },\n                    recvmsg(sock, length) {\n                        if (sock.type === 1 && sock.server) {\n                            throw new FS.ErrnoError(53)\n                        }\n                        var queued = sock.recv_queue.shift();\n                        if (!queued) {\n                            if (sock.type === 1) {\n                                var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n                                if (!dest) {\n                                    throw new FS.ErrnoError(53)\n                                }\n                                if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                    return null\n                                }\n                                throw new FS.ErrnoError(6)\n                            }\n                            throw new FS.ErrnoError(6)\n                        }\n                        var queuedLength = queued.data.byteLength || queued.data.length;\n                        var queuedOffset = queued.data.byteOffset || 0;\n                        var queuedBuffer = queued.data.buffer || queued.data;\n                        var bytesRead = Math.min(length, queuedLength);\n                        var res = {\n                            buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),\n                            addr: queued.addr,\n                            port: queued.port\n                        };\n                        if (sock.type === 1 && bytesRead < queuedLength) {\n                            var bytesRemaining = queuedLength - bytesRead;\n                            queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);\n                            sock.recv_queue.unshift(queued)\n                        }\n                        return res\n                    }\n                }\n            };\n            var getSocketFromFD = fd => {\n                var socket = SOCKFS.getSocket(fd);\n                if (!socket) throw new FS.ErrnoError(8);\n                return socket\n            };\n            var Sockets = {\n                BUFFER_SIZE: 10240,\n                MAX_BUFFER_SIZE: 10485760,\n                nextFd: 1,\n                fds: {},\n                nextport: 1,\n                maxport: 65535,\n                peer: null,\n                connections: {},\n                portmap: {},\n                localAddr: 4261412874,\n                addrPool: [33554442, 50331658, 67108874, 83886090, 100663306, 117440522, 134217738, 150994954, 167772170, 184549386, 201326602, 218103818, 234881034]\n            };\n            var inetPton4 = str => {\n                var b = str.split(\".\");\n                for (var i = 0; i < 4; i++) {\n                    var tmp = Number(b[i]);\n                    if (isNaN(tmp)) return null;\n                    b[i] = tmp\n                }\n                return (b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24) >>> 0\n            };\n            var jstoi_q = str => parseInt(str);\n            var inetPton6 = str => {\n                var words;\n                var w, offset, z, i;\n                var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i;\n                var parts = [];\n                if (!valid6regx.test(str)) {\n                    return null\n                }\n                if (str === \"::\") {\n                    return [0, 0, 0, 0, 0, 0, 0, 0]\n                }\n                if (str.startsWith(\"::\")) {\n                    str = str.replace(\"::\", \"Z:\")\n                } else {\n                    str = str.replace(\"::\", \":Z:\")\n                }\n                if (str.indexOf(\".\") > 0) {\n                    str = str.replace(new RegExp(\"[.]\", \"g\"), \":\");\n                    words = str.split(\":\");\n                    words[words.length - 4] = jstoi_q(words[words.length - 4]) + jstoi_q(words[words.length - 3]) * 256;\n                    words[words.length - 3] = jstoi_q(words[words.length - 2]) + jstoi_q(words[words.length - 1]) * 256;\n                    words = words.slice(0, words.length - 2)\n                } else {\n                    words = str.split(\":\")\n                }\n                offset = 0;\n                z = 0;\n                for (w = 0; w < words.length; w++) {\n                    if (typeof words[w] == \"string\") {\n                        if (words[w] === \"Z\") {\n                            for (z = 0; z < 8 - words.length + 1; z++) {\n                                parts[w + z] = 0\n                            }\n                            offset = z - 1\n                        } else {\n                            parts[w + offset] = _htons(parseInt(words[w], 16))\n                        }\n                    } else {\n                        parts[w + offset] = words[w]\n                    }\n                }\n                return [parts[1] << 16 | parts[0], parts[3] << 16 | parts[2], parts[5] << 16 | parts[4], parts[7] << 16 | parts[6]]\n            };\n            var writeSockaddr = (sa, family, addr, port, addrlen) => {\n                switch (family) {\n                    case 2:\n                        addr = inetPton4(addr);\n                        zeroMemory(sa, 16);\n                        if (addrlen) {\n                            HEAP32[addrlen >>> 2 >>> 0] = 16\n                        }\n                        HEAP16[sa >>> 1 >>> 0] = family;\n                        HEAP32[sa + 4 >>> 2 >>> 0] = addr;\n                        HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n                        break;\n                    case 10:\n                        addr = inetPton6(addr);\n                        zeroMemory(sa, 28);\n                        if (addrlen) {\n                            HEAP32[addrlen >>> 2 >>> 0] = 28\n                        }\n                        HEAP32[sa >>> 2 >>> 0] = family;\n                        HEAP32[sa + 8 >>> 2 >>> 0] = addr[0];\n                        HEAP32[sa + 12 >>> 2 >>> 0] = addr[1];\n                        HEAP32[sa + 16 >>> 2 >>> 0] = addr[2];\n                        HEAP32[sa + 20 >>> 2 >>> 0] = addr[3];\n                        HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n                        break;\n                    default:\n                        return 5\n                }\n                return 0\n            };\n            var DNS = {\n                address_map: {\n                    id: 1,\n                    addrs: {},\n                    names: {}\n                },\n                lookup_name(name) {\n                    var res = inetPton4(name);\n                    if (res !== null) {\n                        return name\n                    }\n                    res = inetPton6(name);\n                    if (res !== null) {\n                        return name\n                    }\n                    var addr;\n                    if (DNS.address_map.addrs[name]) {\n                        addr = DNS.address_map.addrs[name]\n                    } else {\n                        var id = DNS.address_map.id++;\n                        assert(id < 65535, \"exceeded max address mappings of 65535\");\n                        addr = \"172.29.\" + (id & 255) + \".\" + (id & 65280);\n                        DNS.address_map.names[addr] = name;\n                        DNS.address_map.addrs[name] = addr\n                    }\n                    return addr\n                },\n                lookup_addr(addr) {\n                    if (DNS.address_map.names[addr]) {\n                        return DNS.address_map.names[addr]\n                    }\n                    return null\n                }\n            };\n\n            function ___syscall_accept4(fd, addr, addrlen, flags, d1, d2) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var newsock = sock.sock_ops.accept(sock);\n                    if (addr) {\n                        var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen)\n                    }\n                    return newsock.stream.fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_accept4.sig = \"iippiii\";\n            var inetNtop4 = addr => (addr & 255) + \".\" + (addr >> 8 & 255) + \".\" + (addr >> 16 & 255) + \".\" + (addr >> 24 & 255);\n            var inetNtop6 = ints => {\n                var str = \"\";\n                var word = 0;\n                var longest = 0;\n                var lastzero = 0;\n                var zstart = 0;\n                var len = 0;\n                var i = 0;\n                var parts = [ints[0] & 65535, ints[0] >> 16, ints[1] & 65535, ints[1] >> 16, ints[2] & 65535, ints[2] >> 16, ints[3] & 65535, ints[3] >> 16];\n                var hasipv4 = true;\n                var v4part = \"\";\n                for (i = 0; i < 5; i++) {\n                    if (parts[i] !== 0) {\n                        hasipv4 = false;\n                        break\n                    }\n                }\n                if (hasipv4) {\n                    v4part = inetNtop4(parts[6] | parts[7] << 16);\n                    if (parts[5] === -1) {\n                        str = \"::ffff:\";\n                        str += v4part;\n                        return str\n                    }\n                    if (parts[5] === 0) {\n                        str = \"::\";\n                        if (v4part === \"0.0.0.0\") v4part = \"\";\n                        if (v4part === \"0.0.0.1\") v4part = \"1\";\n                        str += v4part;\n                        return str\n                    }\n                }\n                for (word = 0; word < 8; word++) {\n                    if (parts[word] === 0) {\n                        if (word - lastzero > 1) {\n                            len = 0\n                        }\n                        lastzero = word;\n                        len++\n                    }\n                    if (len > longest) {\n                        longest = len;\n                        zstart = word - longest + 1\n                    }\n                }\n                for (word = 0; word < 8; word++) {\n                    if (longest > 1) {\n                        if (parts[word] === 0 && word >= zstart && word < zstart + longest) {\n                            if (word === zstart) {\n                                str += \":\";\n                                if (zstart === 0) str += \":\"\n                            }\n                            continue\n                        }\n                    }\n                    str += Number(_ntohs(parts[word] & 65535)).toString(16);\n                    str += word < 7 ? \":\" : \"\"\n                }\n                return str\n            };\n            var readSockaddr = (sa, salen) => {\n                var family = HEAP16[sa >>> 1 >>> 0];\n                var port = _ntohs(HEAPU16[sa + 2 >>> 1 >>> 0]);\n                var addr;\n                switch (family) {\n                    case 2:\n                        if (salen !== 16) {\n                            return {\n                                errno: 28\n                            }\n                        }\n                        addr = HEAP32[sa + 4 >>> 2 >>> 0];\n                        addr = inetNtop4(addr);\n                        break;\n                    case 10:\n                        if (salen !== 28) {\n                            return {\n                                errno: 28\n                            }\n                        }\n                        addr = [HEAP32[sa + 8 >>> 2 >>> 0], HEAP32[sa + 12 >>> 2 >>> 0], HEAP32[sa + 16 >>> 2 >>> 0], HEAP32[sa + 20 >>> 2 >>> 0]];\n                        addr = inetNtop6(addr);\n                        break;\n                    default:\n                        return {\n                            errno: 5\n                        }\n                }\n                return {\n                    family,\n                    addr,\n                    port\n                }\n            };\n            var getSocketAddress = (addrp, addrlen) => {\n                var info = readSockaddr(addrp, addrlen);\n                if (info.errno) throw new FS.ErrnoError(info.errno);\n                info.addr = DNS.lookup_addr(info.addr) || info.addr;\n                return info\n            };\n\n            function ___syscall_bind(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var info = getSocketAddress(addr, addrlen);\n                    sock.sock_ops.bind(sock, info.addr, info.port);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_bind.sig = \"iippiii\";\n\n            function ___syscall_chdir(path) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.chdir(path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_chdir.sig = \"ip\";\n\n            function ___syscall_chmod(path, mode) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.chmod(path, mode);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_chmod.sig = \"ipi\";\n\n            function ___syscall_connect(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var info = getSocketAddress(addr, addrlen);\n                    sock.sock_ops.connect(sock, info.addr, info.port);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_connect.sig = \"iippiii\";\n\n            function ___syscall_dup(fd) {\n                try {\n                    var old = SYSCALLS.getStreamFromFD(fd);\n                    return FS.dupStream(old).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_dup.sig = \"ii\";\n\n            function ___syscall_dup3(fd, newfd, flags) {\n                try {\n                    var old = SYSCALLS.getStreamFromFD(fd);\n                    if (old.fd === newfd) return -28;\n                    if (newfd < 0 || newfd >= FS.MAX_OPEN_FDS) return -8;\n                    var existing = FS.getStream(newfd);\n                    if (existing) FS.close(existing);\n                    return FS.dupStream(old, newfd).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_dup3.sig = \"iiii\";\n\n            function ___syscall_faccessat(dirfd, path, amode, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (amode & ~7) {\n                        return -28\n                    }\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    if (!node) {\n                        return -44\n                    }\n                    var perms = \"\";\n                    if (amode & 4) perms += \"r\";\n                    if (amode & 2) perms += \"w\";\n                    if (amode & 1) perms += \"x\";\n                    if (perms && FS.nodePermissions(node, perms)) {\n                        return -2\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_faccessat.sig = \"iipii\";\n            var ___syscall_fadvise64 = (fd, offset, len, advice) => 0;\n            ___syscall_fadvise64.sig = \"iiiiiii\";\n\n            function ___syscall_fallocate(fd, mode, offset_low, offset_high, len_low, len_high) {\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                var len = convertI32PairToI53Checked(len_low, len_high);\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.allocate(stream, offset, len);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fallocate.sig = \"iiiiiii\";\n\n            function ___syscall_fchdir(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.chdir(stream.path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchdir.sig = \"ii\";\n\n            function ___syscall_fchmod(fd, mode) {\n                try {\n                    FS.fchmod(fd, mode);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchmod.sig = \"iii\";\n\n            function ___syscall_fchmodat2(dirfd, path, mode, flags) {\n                path >>>= 0;\n                try {\n                    var nofollow = flags & 256;\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    FS.chmod(path, mode, nofollow);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchmodat2.sig = \"iipii\";\n\n            function ___syscall_fchown32(fd, owner, group) {\n                try {\n                    FS.fchown(fd, owner, group);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchown32.sig = \"iiii\";\n\n            function ___syscall_fchownat(dirfd, path, owner, group, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    var nofollow = flags & 256;\n                    flags = flags & ~256;\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    (nofollow ? FS.lchown : FS.chown)(path, owner, group);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchownat.sig = \"iipiii\";\n            var syscallGetVarargI = () => {\n                var ret = HEAP32[+SYSCALLS.varargs >>> 2 >>> 0];\n                SYSCALLS.varargs += 4;\n                return ret\n            };\n            var syscallGetVarargP = syscallGetVarargI;\n\n            function ___syscall_fcntl64(fd, cmd, varargs) {\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    switch (cmd) {\n                        case 0: {\n                            var arg = syscallGetVarargI();\n                            if (arg < 0) {\n                                return -28\n                            }\n                            while (FS.streams[arg]) {\n                                arg++\n                            }\n                            var newStream;\n                            newStream = FS.dupStream(stream, arg);\n                            return newStream.fd\n                        }\n                        case 1:\n                        case 2:\n                            return 0;\n                        case 3:\n                            return stream.flags;\n                        case 4: {\n                            var arg = syscallGetVarargI();\n                            stream.flags |= arg;\n                            return 0\n                        }\n                        case 12: {\n                            var arg = syscallGetVarargP();\n                            var offset = 0;\n                            HEAP16[arg + offset >>> 1 >>> 0] = 2;\n                            return 0\n                        }\n                        case 13:\n                        case 14:\n                            return 0\n                    }\n                    return -28\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fcntl64.sig = \"iiip\";\n\n            function ___syscall_fdatasync(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fdatasync.sig = \"ii\";\n\n            function ___syscall_fstat64(fd, buf) {\n                buf >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return SYSCALLS.doStat(FS.stat, stream.path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fstat64.sig = \"iip\";\n\n            function ___syscall_statfs64(path, size, buf) {\n                path >>>= 0;\n                size >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    HEAP32[buf + 4 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 40 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 8 >>> 2 >>> 0] = 1e6;\n                    HEAP32[buf + 12 >>> 2 >>> 0] = 5e5;\n                    HEAP32[buf + 16 >>> 2 >>> 0] = 5e5;\n                    HEAP32[buf + 20 >>> 2 >>> 0] = FS.nextInode;\n                    HEAP32[buf + 24 >>> 2 >>> 0] = 1e6;\n                    HEAP32[buf + 28 >>> 2 >>> 0] = 42;\n                    HEAP32[buf + 44 >>> 2 >>> 0] = 2;\n                    HEAP32[buf + 36 >>> 2 >>> 0] = 255;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_statfs64.sig = \"ippp\";\n\n            function ___syscall_fstatfs64(fd, size, buf) {\n                size >>>= 0;\n                buf >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return ___syscall_statfs64(0, size, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fstatfs64.sig = \"iipp\";\n\n            function ___syscall_ftruncate64(fd, length_low, length_high) {\n                var length = convertI32PairToI53Checked(length_low, length_high);\n                try {\n                    if (isNaN(length)) return 61;\n                    FS.ftruncate(fd, length);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_ftruncate64.sig = \"iiii\";\n            var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n            Module[\"stringToUTF8\"] = stringToUTF8;\n\n            function ___syscall_getcwd(buf, size) {\n                buf >>>= 0;\n                size >>>= 0;\n                try {\n                    if (size === 0) return -28;\n                    var cwd = FS.cwd();\n                    var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n                    if (size < cwdLengthInBytes) return -68;\n                    stringToUTF8(cwd, buf, size);\n                    return cwdLengthInBytes\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getcwd.sig = \"ipp\";\n\n            function ___syscall_getdents64(fd, dirp, count) {\n                dirp >>>= 0;\n                count >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    stream.getdents ||= FS.readdir(stream.path);\n                    var struct_size = 280;\n                    var pos = 0;\n                    var off = FS.llseek(stream, 0, 1);\n                    var idx = Math.floor(off / struct_size);\n                    while (idx < stream.getdents.length && pos + struct_size <= count) {\n                        var id;\n                        var type;\n                        var name = stream.getdents[idx];\n                        if (name === \".\") {\n                            id = stream.node.id;\n                            type = 4\n                        } else if (name === \"..\") {\n                            var lookup = FS.lookupPath(stream.path, {\n                                parent: true\n                            });\n                            id = lookup.node.id;\n                            type = 4\n                        } else {\n                            var child = FS.lookupNode(stream.node, name);\n                            id = child.id;\n                            type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8\n                        }\n                        tempI64 = [id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos >>> 2 >>> 0] = tempI64[0], HEAP32[dirp + pos + 4 >>> 2 >>> 0] = tempI64[1];\n                        tempI64 = [(idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[dirp + pos + 12 >>> 2 >>> 0] = tempI64[1];\n                        HEAP16[dirp + pos + 16 >>> 1 >>> 0] = 280;\n                        HEAP8[dirp + pos + 18 >>> 0] = type;\n                        stringToUTF8(name, dirp + pos + 19, 256);\n                        pos += struct_size;\n                        idx += 1\n                    }\n                    FS.llseek(stream, idx * struct_size, 0);\n                    return pos\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getdents64.sig = \"iipp\";\n\n            function ___syscall_getpeername(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (!sock.daddr) {\n                        return -53\n                    }\n                    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getpeername.sig = \"iippiii\";\n\n            function ___syscall_getsockname(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || \"0.0.0.0\"), sock.sport, addrlen);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getsockname.sig = \"iippiii\";\n\n            function ___syscall_getsockopt(fd, level, optname, optval, optlen, d1) {\n                optval >>>= 0;\n                optlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (level === 1) {\n                        if (optname === 4) {\n                            HEAP32[optval >>> 2 >>> 0] = sock.error;\n                            HEAP32[optlen >>> 2 >>> 0] = 4;\n                            sock.error = null;\n                            return 0\n                        }\n                    }\n                    return -50\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getsockopt.sig = \"iiiippi\";\n\n            function ___syscall_ioctl(fd, op, varargs) {\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    switch (op) {\n                        case 21509: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21505: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tcgets) {\n                                var termios = stream.tty.ops.ioctl_tcgets(stream);\n                                var argp = syscallGetVarargP();\n                                HEAP32[argp >>> 2 >>> 0] = termios.c_iflag || 0;\n                                HEAP32[argp + 4 >>> 2 >>> 0] = termios.c_oflag || 0;\n                                HEAP32[argp + 8 >>> 2 >>> 0] = termios.c_cflag || 0;\n                                HEAP32[argp + 12 >>> 2 >>> 0] = termios.c_lflag || 0;\n                                for (var i = 0; i < 32; i++) {\n                                    HEAP8[argp + i + 17 >>> 0] = termios.c_cc[i] || 0\n                                }\n                                return 0\n                            }\n                            return 0\n                        }\n                        case 21510:\n                        case 21511:\n                        case 21512: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21506:\n                        case 21507:\n                        case 21508: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tcsets) {\n                                var argp = syscallGetVarargP();\n                                var c_iflag = HEAP32[argp >>> 2 >>> 0];\n                                var c_oflag = HEAP32[argp + 4 >>> 2 >>> 0];\n                                var c_cflag = HEAP32[argp + 8 >>> 2 >>> 0];\n                                var c_lflag = HEAP32[argp + 12 >>> 2 >>> 0];\n                                var c_cc = [];\n                                for (var i = 0; i < 32; i++) {\n                                    c_cc.push(HEAP8[argp + i + 17 >>> 0])\n                                }\n                                return stream.tty.ops.ioctl_tcsets(stream.tty, op, {\n                                    c_iflag,\n                                    c_oflag,\n                                    c_cflag,\n                                    c_lflag,\n                                    c_cc\n                                })\n                            }\n                            return 0\n                        }\n                        case 21519: {\n                            if (!stream.tty) return -59;\n                            var argp = syscallGetVarargP();\n                            HEAP32[argp >>> 2 >>> 0] = 0;\n                            return 0\n                        }\n                        case 21520: {\n                            if (!stream.tty) return -59;\n                            return -28\n                        }\n                        case 21531: {\n                            var argp = syscallGetVarargP();\n                            return FS.ioctl(stream, op, argp)\n                        }\n                        case 21523: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tiocgwinsz) {\n                                var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n                                var argp = syscallGetVarargP();\n                                HEAP16[argp >>> 1 >>> 0] = winsize[0];\n                                HEAP16[argp + 2 >>> 1 >>> 0] = winsize[1]\n                            }\n                            return 0\n                        }\n                        case 21524: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21515: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        default:\n                            return -28\n                    }\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_ioctl.sig = \"iiip\";\n\n            function ___syscall_listen(fd, backlog) {\n                try {\n                    var sock = getSocketFromFD(fd);\n                    sock.sock_ops.listen(sock, backlog);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_listen.sig = \"iiiiiii\";\n\n            function ___syscall_lstat64(path, buf) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    return SYSCALLS.doStat(FS.lstat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_lstat64.sig = \"ipp\";\n\n            function ___syscall_mkdirat(dirfd, path, mode) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    path = PATH.normalize(path);\n                    if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n                    FS.mkdir(path, mode, 0);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_mkdirat.sig = \"iipi\";\n\n            function ___syscall_mknodat(dirfd, path, mode, dev) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    switch (mode & 61440) {\n                        case 32768:\n                        case 8192:\n                        case 24576:\n                        case 4096:\n                        case 49152:\n                            break;\n                        default:\n                            return -28\n                    }\n                    FS.mknod(path, mode, dev);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_mknodat.sig = \"iipii\";\n\n            function ___syscall_newfstatat(dirfd, path, buf, flags) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    var nofollow = flags & 256;\n                    var allowEmpty = flags & 4096;\n                    flags = flags & ~6400;\n                    path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n                    return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_newfstatat.sig = \"iippi\";\n\n            function ___syscall_openat(dirfd, path, flags, varargs) {\n                path >>>= 0;\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    var mode = varargs ? syscallGetVarargI() : 0;\n                    return FS.open(path, flags, mode).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_openat.sig = \"iipip\";\n            var PIPEFS = {\n                BUCKET_BUFFER_SIZE: 8192,\n                mount(mount) {\n                    return FS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createPipe() {\n                    var pipe = {\n                        buckets: [],\n                        refcnt: 2\n                    };\n                    pipe.buckets.push({\n                        buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                        offset: 0,\n                        roffset: 0\n                    });\n                    var rName = PIPEFS.nextname();\n                    var wName = PIPEFS.nextname();\n                    var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);\n                    var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);\n                    rNode.pipe = pipe;\n                    wNode.pipe = pipe;\n                    var readableStream = FS.createStream({\n                        path: rName,\n                        node: rNode,\n                        flags: 0,\n                        seekable: false,\n                        stream_ops: PIPEFS.stream_ops\n                    });\n                    rNode.stream = readableStream;\n                    var writableStream = FS.createStream({\n                        path: wName,\n                        node: wNode,\n                        flags: 1,\n                        seekable: false,\n                        stream_ops: PIPEFS.stream_ops\n                    });\n                    wNode.stream = writableStream;\n                    return {\n                        readable_fd: readableStream.fd,\n                        writable_fd: writableStream.fd\n                    }\n                },\n                stream_ops: {\n                    poll(stream) {\n                        var pipe = stream.node.pipe;\n                        if ((stream.flags & 2097155) === 1) {\n                            return 256 | 4\n                        }\n                        if (pipe.buckets.length > 0) {\n                            for (var i = 0; i < pipe.buckets.length; i++) {\n                                var bucket = pipe.buckets[i];\n                                if (bucket.offset - bucket.roffset > 0) {\n                                    return 64 | 1\n                                }\n                            }\n                        }\n                        return 0\n                    },\n                    ioctl(stream, request, varargs) {\n                        return 28\n                    },\n                    fsync(stream) {\n                        return 28\n                    },\n                    read(stream, buffer, offset, length, position) {\n                        var pipe = stream.node.pipe;\n                        var currentLength = 0;\n                        for (var i = 0; i < pipe.buckets.length; i++) {\n                            var bucket = pipe.buckets[i];\n                            currentLength += bucket.offset - bucket.roffset\n                        }\n                        var data = buffer.subarray(offset, offset + length);\n                        if (length <= 0) {\n                            return 0\n                        }\n                        if (currentLength == 0) {\n                            throw new FS.ErrnoError(6)\n                        }\n                        var toRead = Math.min(currentLength, length);\n                        var totalRead = toRead;\n                        var toRemove = 0;\n                        for (var i = 0; i < pipe.buckets.length; i++) {\n                            var currBucket = pipe.buckets[i];\n                            var bucketSize = currBucket.offset - currBucket.roffset;\n                            if (toRead <= bucketSize) {\n                                var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n                                if (toRead < bucketSize) {\n                                    tmpSlice = tmpSlice.subarray(0, toRead);\n                                    currBucket.roffset += toRead\n                                } else {\n                                    toRemove++\n                                }\n                                data.set(tmpSlice);\n                                break\n                            } else {\n                                var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n                                data.set(tmpSlice);\n                                data = data.subarray(tmpSlice.byteLength);\n                                toRead -= tmpSlice.byteLength;\n                                toRemove++\n                            }\n                        }\n                        if (toRemove && toRemove == pipe.buckets.length) {\n                            toRemove--;\n                            pipe.buckets[toRemove].offset = 0;\n                            pipe.buckets[toRemove].roffset = 0\n                        }\n                        pipe.buckets.splice(0, toRemove);\n                        return totalRead\n                    },\n                    write(stream, buffer, offset, length, position) {\n                        var pipe = stream.node.pipe;\n                        var data = buffer.subarray(offset, offset + length);\n                        var dataLen = data.byteLength;\n                        if (dataLen <= 0) {\n                            return 0\n                        }\n                        var currBucket = null;\n                        if (pipe.buckets.length == 0) {\n                            currBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: 0,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(currBucket)\n                        } else {\n                            currBucket = pipe.buckets[pipe.buckets.length - 1]\n                        }\n                        assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n                        var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n                        if (freeBytesInCurrBuffer >= dataLen) {\n                            currBucket.buffer.set(data, currBucket.offset);\n                            currBucket.offset += dataLen;\n                            return dataLen\n                        } else if (freeBytesInCurrBuffer > 0) {\n                            currBucket.buffer.set(data.subarray(0, freeBytesInCurrBuffer), currBucket.offset);\n                            currBucket.offset += freeBytesInCurrBuffer;\n                            data = data.subarray(freeBytesInCurrBuffer, data.byteLength)\n                        }\n                        var numBuckets = data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;\n                        var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n                        for (var i = 0; i < numBuckets; i++) {\n                            var newBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: PIPEFS.BUCKET_BUFFER_SIZE,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(newBucket);\n                            newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n                            data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength)\n                        }\n                        if (remElements > 0) {\n                            var newBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: data.byteLength,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(newBucket);\n                            newBucket.buffer.set(data)\n                        }\n                        return dataLen\n                    },\n                    close(stream) {\n                        var pipe = stream.node.pipe;\n                        pipe.refcnt--;\n                        if (pipe.refcnt === 0) {\n                            pipe.buckets = null\n                        }\n                    }\n                },\n                nextname() {\n                    if (!PIPEFS.nextname.current) {\n                        PIPEFS.nextname.current = 0\n                    }\n                    return \"pipe[\" + PIPEFS.nextname.current++ + \"]\"\n                }\n            };\n\n            function ___syscall_pipe(fdPtr) {\n                fdPtr >>>= 0;\n                try {\n                    if (fdPtr == 0) {\n                        throw new FS.ErrnoError(21)\n                    }\n                    var res = PIPEFS.createPipe();\n                    HEAP32[fdPtr >>> 2 >>> 0] = res.readable_fd;\n                    HEAP32[fdPtr + 4 >>> 2 >>> 0] = res.writable_fd;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_pipe.sig = \"ip\";\n\n            function ___syscall_poll(fds, nfds, timeout) {\n                fds >>>= 0;\n                try {\n                    var nonzero = 0;\n                    for (var i = 0; i < nfds; i++) {\n                        var pollfd = fds + 8 * i;\n                        var fd = HEAP32[pollfd >>> 2 >>> 0];\n                        var events = HEAP16[pollfd + 4 >>> 1 >>> 0];\n                        var mask = 32;\n                        var stream = FS.getStream(fd);\n                        if (stream) {\n                            mask = SYSCALLS.DEFAULT_POLLMASK;\n                            if (stream.stream_ops.poll) {\n                                mask = stream.stream_ops.poll(stream, -1)\n                            }\n                        }\n                        mask &= events | 8 | 16;\n                        if (mask) nonzero++;\n                        HEAP16[pollfd + 6 >>> 1 >>> 0] = mask\n                    }\n                    return nonzero\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_poll.sig = \"ipii\";\n\n            function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n                path >>>= 0;\n                buf >>>= 0;\n                bufsize >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (bufsize <= 0) return -28;\n                    var ret = FS.readlink(path);\n                    var len = Math.min(bufsize, lengthBytesUTF8(ret));\n                    var endChar = HEAP8[buf + len >>> 0];\n                    stringToUTF8(ret, buf, bufsize + 1);\n                    HEAP8[buf + len >>> 0] = endChar;\n                    return len\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_readlinkat.sig = \"iippp\";\n\n            function ___syscall_recvfrom(fd, buf, len, flags, addr, addrlen) {\n                buf >>>= 0;\n                len >>>= 0;\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var msg = sock.sock_ops.recvmsg(sock, len);\n                    if (!msg) return 0;\n                    if (addr) {\n                        var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen)\n                    }\n                    HEAPU8.set(msg.buffer, buf >>> 0);\n                    return msg.buffer.byteLength\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_recvfrom.sig = \"iippipp\";\n\n            function ___syscall_recvmsg(fd, message, flags, d1, d2, d3) {\n                message >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n                    var num = HEAP32[message + 12 >>> 2 >>> 0];\n                    var total = 0;\n                    for (var i = 0; i < num; i++) {\n                        total += HEAP32[iov + (8 * i + 4) >>> 2 >>> 0]\n                    }\n                    var msg = sock.sock_ops.recvmsg(sock, total);\n                    if (!msg) return 0;\n                    var name = HEAPU32[message >>> 2 >>> 0];\n                    if (name) {\n                        var errno = writeSockaddr(name, sock.family, DNS.lookup_name(msg.addr), msg.port)\n                    }\n                    var bytesRead = 0;\n                    var bytesRemaining = msg.buffer.byteLength;\n                    for (var i = 0; bytesRemaining > 0 && i < num; i++) {\n                        var iovbase = HEAPU32[iov + (8 * i + 0) >>> 2 >>> 0];\n                        var iovlen = HEAP32[iov + (8 * i + 4) >>> 2 >>> 0];\n                        if (!iovlen) {\n                            continue\n                        }\n                        var length = Math.min(iovlen, bytesRemaining);\n                        var buf = msg.buffer.subarray(bytesRead, bytesRead + length);\n                        HEAPU8.set(buf, iovbase + bytesRead >>> 0);\n                        bytesRead += length;\n                        bytesRemaining -= length\n                    }\n                    return bytesRead\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_recvmsg.sig = \"iipiiii\";\n\n            function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n                oldpath >>>= 0;\n                newpath >>>= 0;\n                try {\n                    oldpath = SYSCALLS.getStr(oldpath);\n                    newpath = SYSCALLS.getStr(newpath);\n                    oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n                    newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n                    FS.rename(oldpath, newpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_renameat.sig = \"iipip\";\n\n            function ___syscall_rmdir(path) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.rmdir(path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_rmdir.sig = \"ip\";\n\n            function ___syscall_sendmsg(fd, message, flags, d1, d2, d3) {\n                message >>>= 0;\n                d1 >>>= 0;\n                d2 >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n                    var num = HEAP32[message + 12 >>> 2 >>> 0];\n                    var addr, port;\n                    var name = HEAPU32[message >>> 2 >>> 0];\n                    var namelen = HEAP32[message + 4 >>> 2 >>> 0];\n                    if (name) {\n                        var info = getSocketAddress(name, namelen);\n                        port = info.port;\n                        addr = info.addr\n                    }\n                    var total = 0;\n                    for (var i = 0; i < num; i++) {\n                        total += HEAP32[iov + (8 * i + 4) >>> 2 >>> 0]\n                    }\n                    var view = new Uint8Array(total);\n                    var offset = 0;\n                    for (var i = 0; i < num; i++) {\n                        var iovbase = HEAPU32[iov + (8 * i + 0) >>> 2 >>> 0];\n                        var iovlen = HEAP32[iov + (8 * i + 4) >>> 2 >>> 0];\n                        for (var j = 0; j < iovlen; j++) {\n                            view[offset++] = HEAP8[iovbase + j >>> 0]\n                        }\n                    }\n                    return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_sendmsg.sig = \"iipippi\";\n\n            function ___syscall_sendto(fd, message, length, flags, addr, addr_len) {\n                message >>>= 0;\n                length >>>= 0;\n                addr >>>= 0;\n                addr_len >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (!addr) {\n                        return FS.write(sock.stream, HEAP8, message, length)\n                    }\n                    var dest = getSocketAddress(addr, addr_len);\n                    return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_sendto.sig = \"iippipp\";\n\n            function ___syscall_socket(domain, type, protocol) {\n                try {\n                    var sock = SOCKFS.createSocket(domain, type, protocol);\n                    return sock.stream.fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_socket.sig = \"iiiiiii\";\n\n            function ___syscall_stat64(path, buf) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    return SYSCALLS.doStat(FS.stat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_stat64.sig = \"ipp\";\n\n            function ___syscall_symlink(target, linkpath) {\n                target >>>= 0;\n                linkpath >>>= 0;\n                try {\n                    target = SYSCALLS.getStr(target);\n                    linkpath = SYSCALLS.getStr(linkpath);\n                    FS.symlink(target, linkpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_symlink.sig = \"ipp\";\n\n            function ___syscall_symlinkat(target, newdirfd, linkpath) {\n                target >>>= 0;\n                linkpath >>>= 0;\n                try {\n                    linkpath = SYSCALLS.calculateAt(newdirfd, linkpath);\n                    FS.symlink(target, linkpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_symlinkat.sig = \"ipip\";\n\n            function ___syscall_truncate64(path, length_low, length_high) {\n                path >>>= 0;\n                var length = convertI32PairToI53Checked(length_low, length_high);\n                try {\n                    if (isNaN(length)) return 61;\n                    path = SYSCALLS.getStr(path);\n                    FS.truncate(path, length);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_truncate64.sig = \"ipii\";\n\n            function ___syscall_unlinkat(dirfd, path, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (flags === 0) {\n                        FS.unlink(path)\n                    } else if (flags === 512) {\n                        FS.rmdir(path)\n                    } else {\n                        abort(\"Invalid flags passed to unlinkat\")\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_unlinkat.sig = \"iipi\";\n            var readI53FromI64 = ptr => HEAPU32[ptr >>> 2 >>> 0] + HEAP32[ptr + 4 >>> 2 >>> 0] * 4294967296;\n\n            function ___syscall_utimensat(dirfd, path, times, flags) {\n                path >>>= 0;\n                times >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path, true);\n                    var now = Date.now(),\n                        atime, mtime;\n                    if (!times) {\n                        atime = now;\n                        mtime = now\n                    } else {\n                        var seconds = readI53FromI64(times);\n                        var nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n                        if (nanoseconds == 1073741823) {\n                            atime = now\n                        } else if (nanoseconds == 1073741822) {\n                            atime = -1\n                        } else {\n                            atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3)\n                        }\n                        times += 16;\n                        seconds = readI53FromI64(times);\n                        nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n                        if (nanoseconds == 1073741823) {\n                            mtime = now\n                        } else if (nanoseconds == 1073741822) {\n                            mtime = -1\n                        } else {\n                            mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3)\n                        }\n                    }\n                    if (mtime != -1 || atime != -1) {\n                        FS.utime(path, atime, mtime)\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_utimensat.sig = \"iippi\";\n            var ___table_base = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: false\n            }, 1);\n            var __abort_js = () => {\n                abort(\"\")\n            };\n            __abort_js.sig = \"v\";\n            var ENV = {};\n            var stackAlloc = sz => __emscripten_stack_alloc(sz);\n            Module[\"stackAlloc\"] = stackAlloc;\n            var stringToUTF8OnStack = str => {\n                var size = lengthBytesUTF8(str) + 1;\n                var ret = stackAlloc(size);\n                stringToUTF8(str, ret, size);\n                return ret\n            };\n            var dlSetError = msg => {\n                var sp = stackSave();\n                var cmsg = stringToUTF8OnStack(msg);\n                ___dl_seterr(cmsg, 0);\n                stackRestore(sp)\n            };\n            var dlopenInternal = (handle, jsflags) => {\n                var filename = UTF8ToString(handle + 36);\n                var flags = HEAP32[handle + 4 >>> 2 >>> 0];\n                filename = PATH.normalize(filename);\n                var searchpaths = [];\n                var global = Boolean(flags & 256);\n                var localScope = global ? null : {};\n                var combinedFlags = {\n                    global,\n                    nodelete: Boolean(flags & 4096),\n                    loadAsync: jsflags.loadAsync\n                };\n                if (jsflags.loadAsync) {\n                    return loadDynamicLibrary(filename, combinedFlags, localScope, handle)\n                }\n                try {\n                    return loadDynamicLibrary(filename, combinedFlags, localScope, handle)\n                } catch (e) {\n                    dlSetError(`Could not load dynamic lib: ${filename}\\n${e}`);\n                    return 0\n                }\n            };\n\n            function __dlopen_js(handle) {\n                handle >>>= 0;\n                return dlopenInternal(handle, {\n                    loadAsync: false\n                })\n            }\n            __dlopen_js.sig = \"pp\";\n\n            function __dlsym_js(handle, symbol, symbolIndex) {\n                handle >>>= 0;\n                symbol >>>= 0;\n                symbolIndex >>>= 0;\n                symbol = UTF8ToString(symbol);\n                var result;\n                var newSymIndex;\n                var lib = LDSO.loadedLibsByHandle[handle];\n                if (!lib.exports.hasOwnProperty(symbol) || lib.exports[symbol].stub) {\n                    dlSetError(`Tried to lookup unknown symbol \"${symbol}\" in dynamic lib: ${lib.name}`);\n                    return 0\n                }\n                newSymIndex = Object.keys(lib.exports).indexOf(symbol);\n                var origSym = \"orig$\" + symbol;\n                result = lib.exports[origSym];\n                if (result) {\n                    newSymIndex = Object.keys(lib.exports).indexOf(origSym)\n                } else result = lib.exports[symbol];\n                if (typeof result == \"function\") {\n                    var addr = getFunctionAddress(result);\n                    if (addr) {\n                        result = addr\n                    } else {\n                        result = addFunction(result, result.sig);\n                        HEAPU32[symbolIndex >>> 2 >>> 0] = newSymIndex\n                    }\n                }\n                return result\n            }\n            __dlsym_js.sig = \"pppp\";\n\n            function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {\n                primitiveType >>>= 0;\n                name >>>= 0;\n                size >>>= 0\n            }\n            __embind_register_bigint.sig = \"vpppiiii\";\n            var embind_init_charCodes = () => {\n                var codes = new Array(256);\n                for (var i = 0; i < 256; ++i) {\n                    codes[i] = String.fromCharCode(i)\n                }\n                embind_charCodes = codes\n            };\n            var embind_charCodes;\n            var readLatin1String = ptr => {\n                var ret = \"\";\n                var c = ptr;\n                while (HEAPU8[c >>> 0]) {\n                    ret += embind_charCodes[HEAPU8[c++ >>> 0]]\n                }\n                return ret\n            };\n            var awaitingDependencies = {};\n            var registeredTypes = {};\n            var typeDependencies = {};\n            var BindingError;\n            var throwBindingError = message => {\n                throw new BindingError(message)\n            };\n            var InternalError;\n            var throwInternalError = message => {\n                throw new InternalError(message)\n            };\n            var whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => {\n                myTypes.forEach(type => typeDependencies[type] = dependentTypes);\n\n                function onComplete(typeConverters) {\n                    var myTypeConverters = getTypeConverters(typeConverters);\n                    if (myTypeConverters.length !== myTypes.length) {\n                        throwInternalError(\"Mismatched type converter count\")\n                    }\n                    for (var i = 0; i < myTypes.length; ++i) {\n                        registerType(myTypes[i], myTypeConverters[i])\n                    }\n                }\n                var typeConverters = new Array(dependentTypes.length);\n                var unregisteredTypes = [];\n                var registered = 0;\n                dependentTypes.forEach((dt, i) => {\n                    if (registeredTypes.hasOwnProperty(dt)) {\n                        typeConverters[i] = registeredTypes[dt]\n                    } else {\n                        unregisteredTypes.push(dt);\n                        if (!awaitingDependencies.hasOwnProperty(dt)) {\n                            awaitingDependencies[dt] = []\n                        }\n                        awaitingDependencies[dt].push(() => {\n                            typeConverters[i] = registeredTypes[dt];\n                            ++registered;\n                            if (registered === unregisteredTypes.length) {\n                                onComplete(typeConverters)\n                            }\n                        })\n                    }\n                });\n                if (0 === unregisteredTypes.length) {\n                    onComplete(typeConverters)\n                }\n            };\n\n            function sharedRegisterType(rawType, registeredInstance, options = {}) {\n                var name = registeredInstance.name;\n                if (!rawType) {\n                    throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)\n                }\n                if (registeredTypes.hasOwnProperty(rawType)) {\n                    if (options.ignoreDuplicateRegistrations) {\n                        return\n                    } else {\n                        throwBindingError(`Cannot register type '${name}' twice`)\n                    }\n                }\n                registeredTypes[rawType] = registeredInstance;\n                delete typeDependencies[rawType];\n                if (awaitingDependencies.hasOwnProperty(rawType)) {\n                    var callbacks = awaitingDependencies[rawType];\n                    delete awaitingDependencies[rawType];\n                    callbacks.forEach(cb => cb())\n                }\n            }\n\n            function registerType(rawType, registeredInstance, options = {}) {\n                return sharedRegisterType(rawType, registeredInstance, options)\n            }\n            var GenericWireTypeSize = 8;\n\n            function __embind_register_bool(rawType, name, trueValue, falseValue) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: function(wt) {\n                        return !!wt\n                    },\n                    toWireType: function(destructors, o) {\n                        return o ? trueValue : falseValue\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: function(pointer) {\n                        return this[\"fromWireType\"](HEAPU8[pointer >>> 0])\n                    },\n                    destructorFunction: null\n                })\n            }\n            __embind_register_bool.sig = \"vppii\";\n            var emval_freelist = [];\n            var emval_handles = [];\n\n            function __emval_decref(handle) {\n                handle >>>= 0;\n                if (handle > 9 && 0 === --emval_handles[handle + 1]) {\n                    emval_handles[handle] = undefined;\n                    emval_freelist.push(handle)\n                }\n            }\n            __emval_decref.sig = \"vp\";\n            var count_emval_handles = () => emval_handles.length / 2 - 5 - emval_freelist.length;\n            var init_emval = () => {\n                emval_handles.push(0, 1, undefined, 1, null, 1, true, 1, false, 1);\n                Module[\"count_emval_handles\"] = count_emval_handles\n            };\n            var Emval = {\n                toValue: handle => {\n                    if (!handle) {\n                        throwBindingError(\"Cannot use deleted val. handle = \" + handle)\n                    }\n                    return emval_handles[handle]\n                },\n                toHandle: value => {\n                    switch (value) {\n                        case undefined:\n                            return 2;\n                        case null:\n                            return 4;\n                        case true:\n                            return 6;\n                        case false:\n                            return 8;\n                        default: {\n                            const handle = emval_freelist.pop() || emval_handles.length;\n                            emval_handles[handle] = value;\n                            emval_handles[handle + 1] = 1;\n                            return handle\n                        }\n                    }\n                }\n            };\n\n            function readPointer(pointer) {\n                return this[\"fromWireType\"](HEAPU32[pointer >>> 2 >>> 0])\n            }\n            var EmValType = {\n                name: \"emscripten::val\",\n                fromWireType: handle => {\n                    var rv = Emval.toValue(handle);\n                    __emval_decref(handle);\n                    return rv\n                },\n                toWireType: (destructors, value) => Emval.toHandle(value),\n                argPackAdvance: GenericWireTypeSize,\n                readValueFromPointer: readPointer,\n                destructorFunction: null\n            };\n\n            function __embind_register_emval(rawType) {\n                rawType >>>= 0;\n                return registerType(rawType, EmValType)\n            }\n            __embind_register_emval.sig = \"vp\";\n            var embindRepr = v => {\n                if (v === null) {\n                    return \"null\"\n                }\n                var t = typeof v;\n                if (t === \"object\" || t === \"array\" || t === \"function\") {\n                    return v.toString()\n                } else {\n                    return \"\" + v\n                }\n            };\n            var floatReadValueFromPointer = (name, width) => {\n                switch (width) {\n                    case 4:\n                        return function(pointer) {\n                            return this[\"fromWireType\"](HEAPF32[pointer >>> 2 >>> 0])\n                        };\n                    case 8:\n                        return function(pointer) {\n                            return this[\"fromWireType\"](HEAPF64[pointer >>> 3 >>> 0])\n                        };\n                    default:\n                        throw new TypeError(`invalid float width (${width}): ${name}`)\n                }\n            };\n            var __embind_register_float = function(rawType, name, size) {\n                rawType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: value => value,\n                    toWireType: (destructors, value) => value,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: floatReadValueFromPointer(name, size),\n                    destructorFunction: null\n                })\n            };\n            __embind_register_float.sig = \"vppp\";\n            var integerReadValueFromPointer = (name, width, signed) => {\n                switch (width) {\n                    case 1:\n                        return signed ? pointer => HEAP8[pointer >>> 0] : pointer => HEAPU8[pointer >>> 0];\n                    case 2:\n                        return signed ? pointer => HEAP16[pointer >>> 1 >>> 0] : pointer => HEAPU16[pointer >>> 1 >>> 0];\n                    case 4:\n                        return signed ? pointer => HEAP32[pointer >>> 2 >>> 0] : pointer => HEAPU32[pointer >>> 2 >>> 0];\n                    default:\n                        throw new TypeError(`invalid integer width (${width}): ${name}`)\n                }\n            };\n\n            function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {\n                primitiveType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n                if (maxRange === -1) {\n                    maxRange = 4294967295\n                }\n                var fromWireType = value => value;\n                if (minRange === 0) {\n                    var bitshift = 32 - 8 * size;\n                    fromWireType = value => value << bitshift >>> bitshift\n                }\n                var isUnsignedType = name.includes(\"unsigned\");\n                var checkAssertions = (value, toTypeName) => {};\n                var toWireType;\n                if (isUnsignedType) {\n                    toWireType = function(destructors, value) {\n                        checkAssertions(value, this.name);\n                        return value >>> 0\n                    }\n                } else {\n                    toWireType = function(destructors, value) {\n                        checkAssertions(value, this.name);\n                        return value\n                    }\n                }\n                registerType(primitiveType, {\n                    name,\n                    fromWireType,\n                    toWireType,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: integerReadValueFromPointer(name, size, minRange !== 0),\n                    destructorFunction: null\n                })\n            }\n            __embind_register_integer.sig = \"vpppii\";\n\n            function __embind_register_memory_view(rawType, dataTypeIndex, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\n                var TA = typeMapping[dataTypeIndex];\n\n                function decodeMemoryView(handle) {\n                    var size = HEAPU32[handle >>> 2 >>> 0];\n                    var data = HEAPU32[handle + 4 >>> 2 >>> 0];\n                    return new TA(HEAP8.buffer, data, size)\n                }\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: decodeMemoryView,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: decodeMemoryView\n                }, {\n                    ignoreDuplicateRegistrations: true\n                })\n            }\n            __embind_register_memory_view.sig = \"vpip\";\n\n            function __embind_register_std_string(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                var stdStringIsUTF8 = name === \"std::string\";\n                registerType(rawType, {\n                    name,\n                    fromWireType(value) {\n                        var length = HEAPU32[value >>> 2 >>> 0];\n                        var payload = value + 4;\n                        var str;\n                        if (stdStringIsUTF8) {\n                            var decodeStartPtr = payload;\n                            for (var i = 0; i <= length; ++i) {\n                                var currentBytePtr = payload + i;\n                                if (i == length || HEAPU8[currentBytePtr >>> 0] == 0) {\n                                    var maxRead = currentBytePtr - decodeStartPtr;\n                                    var stringSegment = UTF8ToString(decodeStartPtr, maxRead);\n                                    if (str === undefined) {\n                                        str = stringSegment\n                                    } else {\n                                        str += String.fromCharCode(0);\n                                        str += stringSegment\n                                    }\n                                    decodeStartPtr = currentBytePtr + 1\n                                }\n                            }\n                        } else {\n                            var a = new Array(length);\n                            for (var i = 0; i < length; ++i) {\n                                a[i] = String.fromCharCode(HEAPU8[payload + i >>> 0])\n                            }\n                            str = a.join(\"\")\n                        }\n                        _free(value);\n                        return str\n                    },\n                    toWireType(destructors, value) {\n                        if (value instanceof ArrayBuffer) {\n                            value = new Uint8Array(value)\n                        }\n                        var length;\n                        var valueIsOfTypeString = typeof value == \"string\";\n                        if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {\n                            throwBindingError(\"Cannot pass non-string to std::string\")\n                        }\n                        if (stdStringIsUTF8 && valueIsOfTypeString) {\n                            length = lengthBytesUTF8(value)\n                        } else {\n                            length = value.length\n                        }\n                        var base = _malloc(4 + length + 1);\n                        var ptr = base + 4;\n                        HEAPU32[base >>> 2 >>> 0] = length;\n                        if (stdStringIsUTF8 && valueIsOfTypeString) {\n                            stringToUTF8(value, ptr, length + 1)\n                        } else {\n                            if (valueIsOfTypeString) {\n                                for (var i = 0; i < length; ++i) {\n                                    var charCode = value.charCodeAt(i);\n                                    if (charCode > 255) {\n                                        _free(ptr);\n                                        throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")\n                                    }\n                                    HEAPU8[ptr + i >>> 0] = charCode\n                                }\n                            } else {\n                                for (var i = 0; i < length; ++i) {\n                                    HEAPU8[ptr + i >>> 0] = value[i]\n                                }\n                            }\n                        }\n                        if (destructors !== null) {\n                            destructors.push(_free, base)\n                        }\n                        return base\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    destructorFunction(ptr) {\n                        _free(ptr)\n                    }\n                })\n            }\n            __embind_register_std_string.sig = \"vpp\";\n            var UTF16Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n            var UTF16ToString = (ptr, maxBytesToRead) => {\n                var endPtr = ptr;\n                var idx = endPtr >> 1;\n                var maxIdx = idx + maxBytesToRead / 2;\n                while (!(idx >= maxIdx) && HEAPU16[idx >>> 0]) ++idx;\n                endPtr = idx << 1;\n                if (endPtr - ptr > 32 && UTF16Decoder) return UTF16Decoder.decode(HEAPU8.subarray(ptr >>> 0, endPtr >>> 0));\n                var str = \"\";\n                for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {\n                    var codeUnit = HEAP16[ptr + i * 2 >>> 1 >>> 0];\n                    if (codeUnit == 0) break;\n                    str += String.fromCharCode(codeUnit)\n                }\n                return str\n            };\n            var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {\n                maxBytesToWrite ??= 2147483647;\n                if (maxBytesToWrite < 2) return 0;\n                maxBytesToWrite -= 2;\n                var startPtr = outPtr;\n                var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n                for (var i = 0; i < numCharsToWrite; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    HEAP16[outPtr >>> 1 >>> 0] = codeUnit;\n                    outPtr += 2\n                }\n                HEAP16[outPtr >>> 1 >>> 0] = 0;\n                return outPtr - startPtr\n            };\n            var lengthBytesUTF16 = str => str.length * 2;\n            var UTF32ToString = (ptr, maxBytesToRead) => {\n                var i = 0;\n                var str = \"\";\n                while (!(i >= maxBytesToRead / 4)) {\n                    var utf32 = HEAP32[ptr + i * 4 >>> 2 >>> 0];\n                    if (utf32 == 0) break;\n                    ++i;\n                    if (utf32 >= 65536) {\n                        var ch = utf32 - 65536;\n                        str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)\n                    } else {\n                        str += String.fromCharCode(utf32)\n                    }\n                }\n                return str\n            };\n            var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {\n                outPtr >>>= 0;\n                maxBytesToWrite ??= 2147483647;\n                if (maxBytesToWrite < 4) return 0;\n                var startPtr = outPtr;\n                var endPtr = startPtr + maxBytesToWrite - 4;\n                for (var i = 0; i < str.length; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    if (codeUnit >= 55296 && codeUnit <= 57343) {\n                        var trailSurrogate = str.charCodeAt(++i);\n                        codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023\n                    }\n                    HEAP32[outPtr >>> 2 >>> 0] = codeUnit;\n                    outPtr += 4;\n                    if (outPtr + 4 > endPtr) break\n                }\n                HEAP32[outPtr >>> 2 >>> 0] = 0;\n                return outPtr - startPtr\n            };\n            var lengthBytesUTF32 = str => {\n                var len = 0;\n                for (var i = 0; i < str.length; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    if (codeUnit >= 55296 && codeUnit <= 57343) ++i;\n                    len += 4\n                }\n                return len\n            };\n            var __embind_register_std_wstring = function(rawType, charSize, name) {\n                rawType >>>= 0;\n                charSize >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                var decodeString, encodeString, readCharAt, lengthBytesUTF;\n                if (charSize === 2) {\n                    decodeString = UTF16ToString;\n                    encodeString = stringToUTF16;\n                    lengthBytesUTF = lengthBytesUTF16;\n                    readCharAt = pointer => HEAPU16[pointer >>> 1 >>> 0]\n                } else if (charSize === 4) {\n                    decodeString = UTF32ToString;\n                    encodeString = stringToUTF32;\n                    lengthBytesUTF = lengthBytesUTF32;\n                    readCharAt = pointer => HEAPU32[pointer >>> 2 >>> 0]\n                }\n                registerType(rawType, {\n                    name,\n                    fromWireType: value => {\n                        var length = HEAPU32[value >>> 2 >>> 0];\n                        var str;\n                        var decodeStartPtr = value + 4;\n                        for (var i = 0; i <= length; ++i) {\n                            var currentBytePtr = value + 4 + i * charSize;\n                            if (i == length || readCharAt(currentBytePtr) == 0) {\n                                var maxReadBytes = currentBytePtr - decodeStartPtr;\n                                var stringSegment = decodeString(decodeStartPtr, maxReadBytes);\n                                if (str === undefined) {\n                                    str = stringSegment\n                                } else {\n                                    str += String.fromCharCode(0);\n                                    str += stringSegment\n                                }\n                                decodeStartPtr = currentBytePtr + charSize\n                            }\n                        }\n                        _free(value);\n                        return str\n                    },\n                    toWireType: (destructors, value) => {\n                        if (!(typeof value == \"string\")) {\n                            throwBindingError(`Cannot pass non-string to C++ string type ${name}`)\n                        }\n                        var length = lengthBytesUTF(value);\n                        var ptr = _malloc(4 + length + charSize);\n                        HEAPU32[ptr >>> 2 >>> 0] = length / charSize;\n                        encodeString(value, ptr + 4, length + charSize);\n                        if (destructors !== null) {\n                            destructors.push(_free, ptr)\n                        }\n                        return ptr\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    destructorFunction(ptr) {\n                        _free(ptr)\n                    }\n                })\n            };\n            __embind_register_std_wstring.sig = \"vppp\";\n            var __embind_register_void = function(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    isVoid: true,\n                    name,\n                    argPackAdvance: 0,\n                    fromWireType: () => undefined,\n                    toWireType: (destructors, o) => undefined\n                })\n            };\n            __embind_register_void.sig = \"vpp\";\n            var handleException = e => {\n                if (e instanceof ExitStatus || e == \"unwind\") {\n                    return EXITSTATUS\n                }\n                quit_(1, e)\n            };\n            var runtimeKeepaliveCounter = 0;\n            var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n            var _proc_exit = code => {\n                EXITSTATUS = code;\n                if (!keepRuntimeAlive()) {\n                    Module[\"onExit\"]?.(code);\n                    ABORT = true\n                }\n                quit_(code, new ExitStatus(code))\n            };\n            _proc_exit.sig = \"vi\";\n            var exitJS = (status, implicit) => {\n                EXITSTATUS = status;\n                _proc_exit(status)\n            };\n            var _exit = exitJS;\n            _exit.sig = \"vi\";\n            var maybeExit = () => {\n                if (!keepRuntimeAlive()) {\n                    try {\n                        _exit(EXITSTATUS)\n                    } catch (e) {\n                        handleException(e)\n                    }\n                }\n            };\n            var callUserCallback = func => {\n                if (ABORT) {\n                    return\n                }\n                try {\n                    func();\n                    maybeExit()\n                } catch (e) {\n                    handleException(e)\n                }\n            };\n\n            function __emscripten_dlopen_js(handle, onsuccess, onerror, user_data) {\n                handle >>>= 0;\n                onsuccess >>>= 0;\n                onerror >>>= 0;\n                user_data >>>= 0;\n\n                function errorCallback(e) {\n                    var filename = UTF8ToString(handle + 36);\n                    dlSetError(`'Could not load dynamic lib: ${filename}\\n${e}`);\n                    callUserCallback(() => getWasmTableEntry(onerror)(handle, user_data))\n                }\n\n                function successCallback() {\n                    callUserCallback(() => getWasmTableEntry(onsuccess)(handle, user_data))\n                }\n                var promise = dlopenInternal(handle, {\n                    loadAsync: true\n                });\n                if (promise) {\n                    promise.then(successCallback, errorCallback)\n                } else {\n                    errorCallback()\n                }\n            }\n            __emscripten_dlopen_js.sig = \"vpppp\";\n            var nowIsMonotonic = 1;\n            var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n            __emscripten_get_now_is_monotonic.sig = \"i\";\n            var getExecutableName = () => thisProgram || \"./this.program\";\n\n            function __emscripten_get_progname(str, len) {\n                str >>>= 0;\n                stringToUTF8(getExecutableName(), str, len)\n            }\n            __emscripten_get_progname.sig = \"vpi\";\n\n            function __emscripten_lookup_name(name) {\n                name >>>= 0;\n                var nameString = UTF8ToString(name);\n                return inetPton4(DNS.lookup_name(nameString))\n            }\n            __emscripten_lookup_name.sig = \"ip\";\n\n            function __emscripten_memcpy_js(dest, src, num) {\n                dest >>>= 0;\n                src >>>= 0;\n                num >>>= 0;\n                return HEAPU8.copyWithin(dest >>> 0, src >>> 0, src + num >>> 0)\n            }\n            __emscripten_memcpy_js.sig = \"vppp\";\n            var __emscripten_runtime_keepalive_clear = () => {\n                noExitRuntime = false;\n                runtimeKeepaliveCounter = 0\n            };\n            __emscripten_runtime_keepalive_clear.sig = \"v\";\n\n            function __emscripten_set_offscreencanvas_size(target, width, height) {\n                target >>>= 0;\n                return -1\n            }\n            __emscripten_set_offscreencanvas_size.sig = \"ipii\";\n\n            function __emscripten_system(command) {\n                command >>>= 0;\n                if (ENVIRONMENT_IS_NODE) {\n                    if (!command) return 1;\n                    var cmdstr = UTF8ToString(command);\n                    if (!cmdstr.length) return 0;\n                    var cp = [\"child_process\"].map(require);\n                    var ret = cp.spawnSync(cmdstr, [], {\n                        shell: true,\n                        stdio: \"inherit\"\n                    });\n                    var _W_EXITCODE = (ret, sig) => ret << 8 | sig;\n                    if (ret.status === null) {\n                        var signalToNumber = sig => {\n                            switch (sig) {\n                                case \"SIGHUP\":\n                                    return 1;\n                                case \"SIGQUIT\":\n                                    return 3;\n                                case \"SIGFPE\":\n                                    return 8;\n                                case \"SIGKILL\":\n                                    return 9;\n                                case \"SIGALRM\":\n                                    return 14;\n                                case \"SIGTERM\":\n                                    return 15;\n                                default:\n                                    return 2\n                            }\n                        };\n                        return _W_EXITCODE(0, signalToNumber(ret.signal))\n                    }\n                    return _W_EXITCODE(ret.status, 0)\n                }\n                if (!command) return 0;\n                return -52\n            }\n            __emscripten_system.sig = \"ip\";\n            var __emscripten_throw_longjmp = () => {\n                throw Infinity\n            };\n            __emscripten_throw_longjmp.sig = \"v\";\n            var emval_symbols = {};\n            var getStringOrSymbol = address => {\n                var symbol = emval_symbols[address];\n                if (symbol === undefined) {\n                    return readLatin1String(address)\n                }\n                return symbol\n            };\n            var emval_methodCallers = [];\n\n            function __emval_call_method(caller, objHandle, methodName, destructorsRef, args) {\n                caller >>>= 0;\n                objHandle >>>= 0;\n                methodName >>>= 0;\n                destructorsRef >>>= 0;\n                args >>>= 0;\n                caller = emval_methodCallers[caller];\n                objHandle = Emval.toValue(objHandle);\n                methodName = getStringOrSymbol(methodName);\n                return caller(objHandle, objHandle[methodName], destructorsRef, args)\n            }\n            __emval_call_method.sig = \"dppppp\";\n            var emval_get_global = () => {\n                if (typeof globalThis == \"object\") {\n                    return globalThis\n                }\n                return function() {\n                    return Function\n                }()(\"return this\")()\n            };\n\n            function __emval_get_global(name) {\n                name >>>= 0;\n                if (name === 0) {\n                    return Emval.toHandle(emval_get_global())\n                } else {\n                    name = getStringOrSymbol(name);\n                    return Emval.toHandle(emval_get_global()[name])\n                }\n            }\n            __emval_get_global.sig = \"pp\";\n            var emval_addMethodCaller = caller => {\n                var id = emval_methodCallers.length;\n                emval_methodCallers.push(caller);\n                return id\n            };\n            var getTypeName = type => {\n                var ptr = ___getTypeName(type);\n                var rv = readLatin1String(ptr);\n                _free(ptr);\n                return rv\n            };\n            var requireRegisteredType = (rawType, humanName) => {\n                var impl = registeredTypes[rawType];\n                if (undefined === impl) {\n                    throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)\n                }\n                return impl\n            };\n            var emval_lookupTypes = (argCount, argTypes) => {\n                var a = new Array(argCount);\n                for (var i = 0; i < argCount; ++i) {\n                    a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >>> 2 >>> 0], \"parameter \" + i)\n                }\n                return a\n            };\n            var createNamedFunction = (name, body) => Object.defineProperty(body, \"name\", {\n                value: name\n            });\n            var reflectConstruct = Reflect.construct;\n            var emval_returnValue = (returnType, destructorsRef, handle) => {\n                var destructors = [];\n                var result = returnType[\"toWireType\"](destructors, handle);\n                if (destructors.length) {\n                    HEAPU32[destructorsRef >>> 2 >>> 0] = Emval.toHandle(destructors)\n                }\n                return result\n            };\n\n            function newFunc(constructor, argumentList) {\n                if (!(constructor instanceof Function)) {\n                    throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)\n                }\n                var dummy = createNamedFunction(constructor.name || \"unknownFunctionName\", function() {});\n                dummy.prototype = constructor.prototype;\n                var obj = new dummy;\n                var r = constructor.apply(obj, argumentList);\n                return r instanceof Object ? r : obj\n            }\n\n            function __emval_get_method_caller(argCount, argTypes, kind) {\n                argTypes >>>= 0;\n                var types = emval_lookupTypes(argCount, argTypes);\n                var retType = types.shift();\n                argCount--;\n                var functionBody = `return function (obj, func, destructorsRef, args) {\\n`;\n                var offset = 0;\n                var argsList = [];\n                if (kind === 0) {\n                    argsList.push(\"obj\")\n                }\n                var params = [\"retType\"];\n                var args = [retType];\n                for (var i = 0; i < argCount; ++i) {\n                    argsList.push(\"arg\" + i);\n                    params.push(\"argType\" + i);\n                    args.push(types[i]);\n                    functionBody += `  var arg${i} = argType${i}.readValueFromPointer(args${offset?\"+\"+offset:\"\"});\\n`;\n                    offset += types[i].argPackAdvance\n                }\n                var invoker = kind === 1 ? \"new func\" : \"func.call\";\n                functionBody += `  var rv = ${invoker}(${argsList.join(\", \")});\\n`;\n                if (!retType.isVoid) {\n                    params.push(\"emval_returnValue\");\n                    args.push(emval_returnValue);\n                    functionBody += \"  return emval_returnValue(retType, destructorsRef, rv);\\n\"\n                }\n                functionBody += \"};\\n\";\n                params.push(functionBody);\n                var invokerFunction = newFunc(Function, params)(...args);\n                var functionName = `methodCaller<(${types.map(t=>t.name).join(\", \")}) => ${retType.name}>`;\n                return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction))\n            }\n            __emval_get_method_caller.sig = \"pipi\";\n            var runDestructors = destructors => {\n                while (destructors.length) {\n                    var ptr = destructors.pop();\n                    var del = destructors.pop();\n                    del(ptr)\n                }\n            };\n\n            function __emval_run_destructors(handle) {\n                handle >>>= 0;\n                var destructors = Emval.toValue(handle);\n                runDestructors(destructors);\n                __emval_decref(handle)\n            }\n            __emval_run_destructors.sig = \"vp\";\n\n            function __gmtime_js(time_low, time_high, tmPtr) {\n                var time = convertI32PairToI53Checked(time_low, time_high);\n                tmPtr >>>= 0;\n                var date = new Date(time * 1e3);\n                HEAP32[tmPtr >>> 2 >>> 0] = date.getUTCSeconds();\n                HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getUTCMinutes();\n                HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getUTCHours();\n                HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getUTCDate();\n                HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getUTCMonth();\n                HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getUTCFullYear() - 1900;\n                HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n                var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n                var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n                HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday\n            }\n            __gmtime_js.sig = \"viip\";\n            var isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n            var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n            var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n            var ydayFromDate = date => {\n                var leap = isLeapYear(date.getFullYear());\n                var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;\n                var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n                return yday\n            };\n\n            function __localtime_js(time_low, time_high, tmPtr) {\n                var time = convertI32PairToI53Checked(time_low, time_high);\n                tmPtr >>>= 0;\n                var date = new Date(time * 1e3);\n                HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n                HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n                HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n                HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n                HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n                HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getFullYear() - 1900;\n                HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n                var yday = ydayFromDate(date) | 0;\n                HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                HEAP32[tmPtr + 36 >>> 2 >>> 0] = -(date.getTimezoneOffset() * 60);\n                var start = new Date(date.getFullYear(), 0, 1);\n                var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n                var winterOffset = start.getTimezoneOffset();\n                var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n                HEAP32[tmPtr + 32 >>> 2 >>> 0] = dst\n            }\n            __localtime_js.sig = \"viip\";\n            var __mktime_js = function(tmPtr) {\n                tmPtr >>>= 0;\n                var ret = (() => {\n                    var date = new Date(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n                    var dst = HEAP32[tmPtr + 32 >>> 2 >>> 0];\n                    var guessedOffset = date.getTimezoneOffset();\n                    var start = new Date(date.getFullYear(), 0, 1);\n                    var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n                    var winterOffset = start.getTimezoneOffset();\n                    var dstOffset = Math.min(winterOffset, summerOffset);\n                    if (dst < 0) {\n                        HEAP32[tmPtr + 32 >>> 2 >>> 0] = Number(summerOffset != winterOffset && dstOffset == guessedOffset)\n                    } else if (dst > 0 != (dstOffset == guessedOffset)) {\n                        var nonDstOffset = Math.max(winterOffset, summerOffset);\n                        var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n                        date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4)\n                    }\n                    HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n                    var yday = ydayFromDate(date) | 0;\n                    HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                    HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n                    HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n                    HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n                    HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n                    HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n                    HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getYear();\n                    var timeMs = date.getTime();\n                    if (isNaN(timeMs)) {\n                        return -1\n                    }\n                    return timeMs / 1e3\n                })();\n                return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0\n            };\n            __mktime_js.sig = \"ip\";\n\n            function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                allocated >>>= 0;\n                addr >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var res = FS.mmap(stream, len, offset, prot, flags);\n                    var ptr = res.ptr;\n                    HEAP32[allocated >>> 2 >>> 0] = res.allocated;\n                    HEAPU32[addr >>> 2 >>> 0] = ptr;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __mmap_js.sig = \"ipiiiiipp\";\n\n            function __msync_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n                addr >>>= 0;\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                try {\n                    if (isNaN(offset)) return 61;\n                    SYSCALLS.doMsync(addr, SYSCALLS.getStreamFromFD(fd), len, flags, offset);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __msync_js.sig = \"ippiiiii\";\n\n            function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n                addr >>>= 0;\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    if (prot & 2) {\n                        SYSCALLS.doMsync(addr, stream, len, flags, offset)\n                    }\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __munmap_js.sig = \"ippiiiii\";\n            var timers = {};\n            var _emscripten_get_now = () => performance.now();\n            _emscripten_get_now.sig = \"d\";\n            var __setitimer_js = (which, timeout_ms) => {\n                if (timers[which]) {\n                    clearTimeout(timers[which].id);\n                    delete timers[which]\n                }\n                if (!timeout_ms) return 0;\n                var id = setTimeout(() => {\n                    delete timers[which];\n                    callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()))\n                }, timeout_ms);\n                timers[which] = {\n                    id,\n                    timeout_ms\n                };\n                return 0\n            };\n            __setitimer_js.sig = \"iid\";\n            var __timegm_js = function(tmPtr) {\n                tmPtr >>>= 0;\n                var ret = (() => {\n                    var time = Date.UTC(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n                    var date = new Date(time);\n                    HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n                    var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n                    var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n                    HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                    return date.getTime() / 1e3\n                })();\n                return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0\n            };\n            __timegm_js.sig = \"ip\";\n            var __tzset_js = function(timezone, daylight, std_name, dst_name) {\n                timezone >>>= 0;\n                daylight >>>= 0;\n                std_name >>>= 0;\n                dst_name >>>= 0;\n                var currentYear = (new Date).getFullYear();\n                var winter = new Date(currentYear, 0, 1);\n                var summer = new Date(currentYear, 6, 1);\n                var winterOffset = winter.getTimezoneOffset();\n                var summerOffset = summer.getTimezoneOffset();\n                var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n                HEAPU32[timezone >>> 2 >>> 0] = stdTimezoneOffset * 60;\n                HEAP32[daylight >>> 2 >>> 0] = Number(winterOffset != summerOffset);\n                var extractZone = timezoneOffset => {\n                    var sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n                    var absOffset = Math.abs(timezoneOffset);\n                    var hours = String(Math.floor(absOffset / 60)).padStart(2, \"0\");\n                    var minutes = String(absOffset % 60).padStart(2, \"0\");\n                    return `UTC${sign}${hours}${minutes}`\n                };\n                var winterName = extractZone(winterOffset);\n                var summerName = extractZone(summerOffset);\n                if (summerOffset < winterOffset) {\n                    stringToUTF8(winterName, std_name, 17);\n                    stringToUTF8(summerName, dst_name, 17)\n                } else {\n                    stringToUTF8(winterName, dst_name, 17);\n                    stringToUTF8(summerName, std_name, 17)\n                }\n            };\n            __tzset_js.sig = \"vpppp\";\n            var _emscripten_set_main_loop_timing = (mode, value) => {\n                MainLoop.timingMode = mode;\n                MainLoop.timingValue = value;\n                if (!MainLoop.func) {\n                    return 1\n                }\n                if (!MainLoop.running) {\n                    MainLoop.running = true\n                }\n                if (mode == 0) {\n                    MainLoop.scheduler = function MainLoop_scheduler_setTimeout() {\n                        var timeUntilNextTick = Math.max(0, MainLoop.tickStartTime + value - _emscripten_get_now()) | 0;\n                        setTimeout(MainLoop.runner, timeUntilNextTick)\n                    };\n                    MainLoop.method = \"timeout\"\n                } else if (mode == 1) {\n                    MainLoop.scheduler = function MainLoop_scheduler_rAF() {\n                        MainLoop.requestAnimationFrame(MainLoop.runner)\n                    };\n                    MainLoop.method = \"rAF\"\n                } else if (mode == 2) {\n                    if (typeof MainLoop.setImmediate == \"undefined\") {\n                        if (typeof setImmediate == \"undefined\") {\n                            var setImmediates = [];\n                            var emscriptenMainLoopMessageId = \"setimmediate\";\n                            var MainLoop_setImmediate_messageHandler = event => {\n                                if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) {\n                                    event.stopPropagation();\n                                    setImmediates.shift()()\n                                }\n                            };\n                            addEventListener(\"message\", MainLoop_setImmediate_messageHandler, true);\n                            MainLoop.setImmediate = func => {\n                                setImmediates.push(func);\n                                if (ENVIRONMENT_IS_WORKER) {\n                                    Module[\"setImmediates\"] ??= [];\n                                    Module[\"setImmediates\"].push(func);\n                                    postMessage({\n                                        target: emscriptenMainLoopMessageId\n                                    })\n                                } else postMessage(emscriptenMainLoopMessageId, \"*\")\n                            }\n                        } else {\n                            MainLoop.setImmediate = setImmediate\n                        }\n                    }\n                    MainLoop.scheduler = function MainLoop_scheduler_setImmediate() {\n                        MainLoop.setImmediate(MainLoop.runner)\n                    };\n                    MainLoop.method = \"immediate\"\n                }\n                return 0\n            };\n            _emscripten_set_main_loop_timing.sig = \"iii\";\n            var setMainLoop = (iterFunc, fps, simulateInfiniteLoop, arg, noSetTiming) => {\n                MainLoop.func = iterFunc;\n                MainLoop.arg = arg;\n                var thisMainLoopId = MainLoop.currentlyRunningMainloop;\n\n                function checkIsRunning() {\n                    if (thisMainLoopId < MainLoop.currentlyRunningMainloop) {\n                        maybeExit();\n                        return false\n                    }\n                    return true\n                }\n                MainLoop.running = false;\n                MainLoop.runner = function MainLoop_runner() {\n                    if (ABORT) return;\n                    if (MainLoop.queue.length > 0) {\n                        var start = Date.now();\n                        var blocker = MainLoop.queue.shift();\n                        blocker.func(blocker.arg);\n                        if (MainLoop.remainingBlockers) {\n                            var remaining = MainLoop.remainingBlockers;\n                            var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);\n                            if (blocker.counted) {\n                                MainLoop.remainingBlockers = next\n                            } else {\n                                next = next + .5;\n                                MainLoop.remainingBlockers = (8 * remaining + next) / 9\n                            }\n                        }\n                        MainLoop.updateStatus();\n                        if (!checkIsRunning()) return;\n                        setTimeout(MainLoop.runner, 0);\n                        return\n                    }\n                    if (!checkIsRunning()) return;\n                    MainLoop.currentFrameNumber = MainLoop.currentFrameNumber + 1 | 0;\n                    if (MainLoop.timingMode == 1 && MainLoop.timingValue > 1 && MainLoop.currentFrameNumber % MainLoop.timingValue != 0) {\n                        MainLoop.scheduler();\n                        return\n                    } else if (MainLoop.timingMode == 0) {\n                        MainLoop.tickStartTime = _emscripten_get_now()\n                    }\n                    MainLoop.runIter(iterFunc);\n                    if (!checkIsRunning()) return;\n                    MainLoop.scheduler()\n                };\n                if (!noSetTiming) {\n                    if (fps && fps > 0) {\n                        _emscripten_set_main_loop_timing(0, 1e3 / fps)\n                    } else {\n                        _emscripten_set_main_loop_timing(1, 1)\n                    }\n                    MainLoop.scheduler()\n                }\n                if (simulateInfiniteLoop) {\n                    throw \"unwind\"\n                }\n            };\n            var MainLoop = {\n                running: false,\n                scheduler: null,\n                method: \"\",\n                currentlyRunningMainloop: 0,\n                func: null,\n                arg: 0,\n                timingMode: 0,\n                timingValue: 0,\n                currentFrameNumber: 0,\n                queue: [],\n                preMainLoop: [],\n                postMainLoop: [],\n                pause() {\n                    MainLoop.scheduler = null;\n                    MainLoop.currentlyRunningMainloop++\n                },\n                resume() {\n                    MainLoop.currentlyRunningMainloop++;\n                    var timingMode = MainLoop.timingMode;\n                    var timingValue = MainLoop.timingValue;\n                    var func = MainLoop.func;\n                    MainLoop.func = null;\n                    setMainLoop(func, 0, false, MainLoop.arg, true);\n                    _emscripten_set_main_loop_timing(timingMode, timingValue);\n                    MainLoop.scheduler()\n                },\n                updateStatus() {\n                    if (Module[\"setStatus\"]) {\n                        var message = Module[\"statusMessage\"] || \"Please wait...\";\n                        var remaining = MainLoop.remainingBlockers ?? 0;\n                        var expected = MainLoop.expectedBlockers ?? 0;\n                        if (remaining) {\n                            if (remaining < expected) {\n                                Module[\"setStatus\"](`{message} ({expected - remaining}/{expected})`)\n                            } else {\n                                Module[\"setStatus\"](message)\n                            }\n                        } else {\n                            Module[\"setStatus\"](\"\")\n                        }\n                    }\n                },\n                init() {\n                    Module[\"preMainLoop\"] && MainLoop.preMainLoop.push(Module[\"preMainLoop\"]);\n                    Module[\"postMainLoop\"] && MainLoop.postMainLoop.push(Module[\"postMainLoop\"])\n                },\n                runIter(func) {\n                    if (ABORT) return;\n                    for (var pre of MainLoop.preMainLoop) {\n                        if (pre() === false) {\n                            return\n                        }\n                    }\n                    callUserCallback(func);\n                    for (var post of MainLoop.postMainLoop) {\n                        post()\n                    }\n                },\n                nextRAF: 0,\n                fakeRequestAnimationFrame(func) {\n                    var now = Date.now();\n                    if (MainLoop.nextRAF === 0) {\n                        MainLoop.nextRAF = now + 1e3 / 60\n                    } else {\n                        while (now + 2 >= MainLoop.nextRAF) {\n                            MainLoop.nextRAF += 1e3 / 60\n                        }\n                    }\n                    var delay = Math.max(MainLoop.nextRAF - now, 0);\n                    setTimeout(func, delay)\n                },\n                requestAnimationFrame(func) {\n                    if (typeof requestAnimationFrame == \"function\") {\n                        requestAnimationFrame(func);\n                        return\n                    }\n                    var RAF = MainLoop.fakeRequestAnimationFrame;\n                    RAF(func)\n                }\n            };\n            var AL = {\n                QUEUE_INTERVAL: 25,\n                QUEUE_LOOKAHEAD: .1,\n                DEVICE_NAME: \"Emscripten OpenAL\",\n                CAPTURE_DEVICE_NAME: \"Emscripten OpenAL capture\",\n                ALC_EXTENSIONS: {\n                    ALC_SOFT_pause_device: true,\n                    ALC_SOFT_HRTF: true\n                },\n                AL_EXTENSIONS: {\n                    AL_EXT_float32: true,\n                    AL_SOFT_loop_points: true,\n                    AL_SOFT_source_length: true,\n                    AL_EXT_source_distance_model: true,\n                    AL_SOFT_source_spatialize: true\n                },\n                _alcErr: 0,\n                alcErr: 0,\n                deviceRefCounts: {},\n                alcStringCache: {},\n                paused: false,\n                stringCache: {},\n                contexts: {},\n                currentCtx: null,\n                buffers: {\n                    0: {\n                        id: 0,\n                        refCount: 0,\n                        audioBuf: null,\n                        frequency: 0,\n                        bytesPerSample: 2,\n                        channels: 1,\n                        length: 0\n                    }\n                },\n                paramArray: [],\n                _nextId: 1,\n                newId: () => AL.freeIds.length > 0 ? AL.freeIds.pop() : AL._nextId++,\n                freeIds: [],\n                scheduleContextAudio: ctx => {\n                    if (MainLoop.timingMode === 1 && document[\"visibilityState\"] != \"visible\") {\n                        return\n                    }\n                    for (var i in ctx.sources) {\n                        AL.scheduleSourceAudio(ctx.sources[i])\n                    }\n                },\n                scheduleSourceAudio: (src, lookahead) => {\n                    if (MainLoop.timingMode === 1 && document[\"visibilityState\"] != \"visible\") {\n                        return\n                    }\n                    if (src.state !== 4114) {\n                        return\n                    }\n                    var currentTime = AL.updateSourceTime(src);\n                    var startTime = src.bufStartTime;\n                    var startOffset = src.bufOffset;\n                    var bufCursor = src.bufsProcessed;\n                    for (var i = 0; i < src.audioQueue.length; i++) {\n                        var audioSrc = src.audioQueue[i];\n                        startTime = audioSrc._startTime + audioSrc._duration;\n                        startOffset = 0;\n                        bufCursor += audioSrc._skipCount + 1\n                    }\n                    if (!lookahead) {\n                        lookahead = AL.QUEUE_LOOKAHEAD\n                    }\n                    var lookaheadTime = currentTime + lookahead;\n                    var skipCount = 0;\n                    while (startTime < lookaheadTime) {\n                        if (bufCursor >= src.bufQueue.length) {\n                            if (src.looping) {\n                                bufCursor %= src.bufQueue.length\n                            } else {\n                                break\n                            }\n                        }\n                        var buf = src.bufQueue[bufCursor % src.bufQueue.length];\n                        if (buf.length === 0) {\n                            skipCount++;\n                            if (skipCount === src.bufQueue.length) {\n                                break\n                            }\n                        } else {\n                            var audioSrc = src.context.audioCtx.createBufferSource();\n                            audioSrc.buffer = buf.audioBuf;\n                            audioSrc.playbackRate.value = src.playbackRate;\n                            if (buf.audioBuf._loopStart || buf.audioBuf._loopEnd) {\n                                audioSrc.loopStart = buf.audioBuf._loopStart;\n                                audioSrc.loopEnd = buf.audioBuf._loopEnd\n                            }\n                            var duration = 0;\n                            if (src.type === 4136 && src.looping) {\n                                duration = Number.POSITIVE_INFINITY;\n                                audioSrc.loop = true;\n                                if (buf.audioBuf._loopStart) {\n                                    audioSrc.loopStart = buf.audioBuf._loopStart\n                                }\n                                if (buf.audioBuf._loopEnd) {\n                                    audioSrc.loopEnd = buf.audioBuf._loopEnd\n                                }\n                            } else {\n                                duration = (buf.audioBuf.duration - startOffset) / src.playbackRate\n                            }\n                            audioSrc._startOffset = startOffset;\n                            audioSrc._duration = duration;\n                            audioSrc._skipCount = skipCount;\n                            skipCount = 0;\n                            audioSrc.connect(src.gain);\n                            if (typeof audioSrc.start != \"undefined\") {\n                                startTime = Math.max(startTime, src.context.audioCtx.currentTime);\n                                audioSrc.start(startTime, startOffset)\n                            } else if (typeof audioSrc.noteOn != \"undefined\") {\n                                startTime = Math.max(startTime, src.context.audioCtx.currentTime);\n                                audioSrc.noteOn(startTime)\n                            }\n                            audioSrc._startTime = startTime;\n                            src.audioQueue.push(audioSrc);\n                            startTime += duration\n                        }\n                        startOffset = 0;\n                        bufCursor++\n                    }\n                },\n                updateSourceTime: src => {\n                    var currentTime = src.context.audioCtx.currentTime;\n                    if (src.state !== 4114) {\n                        return currentTime\n                    }\n                    if (!isFinite(src.bufStartTime)) {\n                        src.bufStartTime = currentTime - src.bufOffset / src.playbackRate;\n                        src.bufOffset = 0\n                    }\n                    var nextStartTime = 0;\n                    while (src.audioQueue.length) {\n                        var audioSrc = src.audioQueue[0];\n                        src.bufsProcessed += audioSrc._skipCount;\n                        nextStartTime = audioSrc._startTime + audioSrc._duration;\n                        if (currentTime < nextStartTime) {\n                            break\n                        }\n                        src.audioQueue.shift();\n                        src.bufStartTime = nextStartTime;\n                        src.bufOffset = 0;\n                        src.bufsProcessed++\n                    }\n                    if (src.bufsProcessed >= src.bufQueue.length && !src.looping) {\n                        AL.setSourceState(src, 4116)\n                    } else if (src.type === 4136 && src.looping) {\n                        var buf = src.bufQueue[0];\n                        if (buf.length === 0) {\n                            src.bufOffset = 0\n                        } else {\n                            var delta = (currentTime - src.bufStartTime) * src.playbackRate;\n                            var loopStart = buf.audioBuf._loopStart || 0;\n                            var loopEnd = buf.audioBuf._loopEnd || buf.audioBuf.duration;\n                            if (loopEnd <= loopStart) {\n                                loopEnd = buf.audioBuf.duration\n                            }\n                            if (delta < loopEnd) {\n                                src.bufOffset = delta\n                            } else {\n                                src.bufOffset = loopStart + (delta - loopStart) % (loopEnd - loopStart)\n                            }\n                        }\n                    } else if (src.audioQueue[0]) {\n                        src.bufOffset = (currentTime - src.audioQueue[0]._startTime) * src.playbackRate\n                    } else {\n                        if (src.type !== 4136 && src.looping) {\n                            var srcDuration = AL.sourceDuration(src) / src.playbackRate;\n                            if (srcDuration > 0) {\n                                src.bufStartTime += Math.floor((currentTime - src.bufStartTime) / srcDuration) * srcDuration\n                            }\n                        }\n                        for (var i = 0; i < src.bufQueue.length; i++) {\n                            if (src.bufsProcessed >= src.bufQueue.length) {\n                                if (src.looping) {\n                                    src.bufsProcessed %= src.bufQueue.length\n                                } else {\n                                    AL.setSourceState(src, 4116);\n                                    break\n                                }\n                            }\n                            var buf = src.bufQueue[src.bufsProcessed];\n                            if (buf.length > 0) {\n                                nextStartTime = src.bufStartTime + buf.audioBuf.duration / src.playbackRate;\n                                if (currentTime < nextStartTime) {\n                                    src.bufOffset = (currentTime - src.bufStartTime) * src.playbackRate;\n                                    break\n                                }\n                                src.bufStartTime = nextStartTime\n                            }\n                            src.bufOffset = 0;\n                            src.bufsProcessed++\n                        }\n                    }\n                    return currentTime\n                },\n                cancelPendingSourceAudio: src => {\n                    AL.updateSourceTime(src);\n                    for (var i = 1; i < src.audioQueue.length; i++) {\n                        var audioSrc = src.audioQueue[i];\n                        audioSrc.stop()\n                    }\n                    if (src.audioQueue.length > 1) {\n                        src.audioQueue.length = 1\n                    }\n                },\n                stopSourceAudio: src => {\n                    for (var i = 0; i < src.audioQueue.length; i++) {\n                        src.audioQueue[i].stop()\n                    }\n                    src.audioQueue.length = 0\n                },\n                setSourceState: (src, state) => {\n                    if (state === 4114) {\n                        if (src.state === 4114 || src.state == 4116) {\n                            src.bufsProcessed = 0;\n                            src.bufOffset = 0\n                        } else {}\n                        AL.stopSourceAudio(src);\n                        src.state = 4114;\n                        src.bufStartTime = Number.NEGATIVE_INFINITY;\n                        AL.scheduleSourceAudio(src)\n                    } else if (state === 4115) {\n                        if (src.state === 4114) {\n                            AL.updateSourceTime(src);\n                            AL.stopSourceAudio(src);\n                            src.state = 4115\n                        }\n                    } else if (state === 4116) {\n                        if (src.state !== 4113) {\n                            src.state = 4116;\n                            src.bufsProcessed = src.bufQueue.length;\n                            src.bufStartTime = Number.NEGATIVE_INFINITY;\n                            src.bufOffset = 0;\n                            AL.stopSourceAudio(src)\n                        }\n                    } else if (state === 4113) {\n                        if (src.state !== 4113) {\n                            src.state = 4113;\n                            src.bufsProcessed = 0;\n                            src.bufStartTime = Number.NEGATIVE_INFINITY;\n                            src.bufOffset = 0;\n                            AL.stopSourceAudio(src)\n                        }\n                    }\n                },\n                initSourcePanner: src => {\n                    if (src.type === 4144) {\n                        return\n                    }\n                    var templateBuf = AL.buffers[0];\n                    for (var i = 0; i < src.bufQueue.length; i++) {\n                        if (src.bufQueue[i].id !== 0) {\n                            templateBuf = src.bufQueue[i];\n                            break\n                        }\n                    }\n                    if (src.spatialize === 1 || src.spatialize === 2 && templateBuf.channels === 1) {\n                        if (src.panner) {\n                            return\n                        }\n                        src.panner = src.context.audioCtx.createPanner();\n                        AL.updateSourceGlobal(src);\n                        AL.updateSourceSpace(src);\n                        src.panner.connect(src.context.gain);\n                        src.gain.disconnect();\n                        src.gain.connect(src.panner)\n                    } else {\n                        if (!src.panner) {\n                            return\n                        }\n                        src.panner.disconnect();\n                        src.gain.disconnect();\n                        src.gain.connect(src.context.gain);\n                        src.panner = null\n                    }\n                },\n                updateContextGlobal: ctx => {\n                    for (var i in ctx.sources) {\n                        AL.updateSourceGlobal(ctx.sources[i])\n                    }\n                },\n                updateSourceGlobal: src => {\n                    var panner = src.panner;\n                    if (!panner) {\n                        return\n                    }\n                    panner.refDistance = src.refDistance;\n                    panner.maxDistance = src.maxDistance;\n                    panner.rolloffFactor = src.rolloffFactor;\n                    panner.panningModel = src.context.hrtf ? \"HRTF\" : \"equalpower\";\n                    var distanceModel = src.context.sourceDistanceModel ? src.distanceModel : src.context.distanceModel;\n                    switch (distanceModel) {\n                        case 0:\n                            panner.distanceModel = \"inverse\";\n                            panner.refDistance = 340282e33;\n                            break;\n                        case 53249:\n                        case 53250:\n                            panner.distanceModel = \"inverse\";\n                            break;\n                        case 53251:\n                        case 53252:\n                            panner.distanceModel = \"linear\";\n                            break;\n                        case 53253:\n                        case 53254:\n                            panner.distanceModel = \"exponential\";\n                            break\n                    }\n                },\n                updateListenerSpace: ctx => {\n                    var listener = ctx.audioCtx.listener;\n                    if (listener.positionX) {\n                        listener.positionX.value = ctx.listener.position[0];\n                        listener.positionY.value = ctx.listener.position[1];\n                        listener.positionZ.value = ctx.listener.position[2]\n                    } else {\n                        listener.setPosition(ctx.listener.position[0], ctx.listener.position[1], ctx.listener.position[2])\n                    }\n                    if (listener.forwardX) {\n                        listener.forwardX.value = ctx.listener.direction[0];\n                        listener.forwardY.value = ctx.listener.direction[1];\n                        listener.forwardZ.value = ctx.listener.direction[2];\n                        listener.upX.value = ctx.listener.up[0];\n                        listener.upY.value = ctx.listener.up[1];\n                        listener.upZ.value = ctx.listener.up[2]\n                    } else {\n                        listener.setOrientation(ctx.listener.direction[0], ctx.listener.direction[1], ctx.listener.direction[2], ctx.listener.up[0], ctx.listener.up[1], ctx.listener.up[2])\n                    }\n                    for (var i in ctx.sources) {\n                        AL.updateSourceSpace(ctx.sources[i])\n                    }\n                },\n                updateSourceSpace: src => {\n                    if (!src.panner) {\n                        return\n                    }\n                    var panner = src.panner;\n                    var posX = src.position[0];\n                    var posY = src.position[1];\n                    var posZ = src.position[2];\n                    var dirX = src.direction[0];\n                    var dirY = src.direction[1];\n                    var dirZ = src.direction[2];\n                    var listener = src.context.listener;\n                    var lPosX = listener.position[0];\n                    var lPosY = listener.position[1];\n                    var lPosZ = listener.position[2];\n                    if (src.relative) {\n                        var lBackX = -listener.direction[0];\n                        var lBackY = -listener.direction[1];\n                        var lBackZ = -listener.direction[2];\n                        var lUpX = listener.up[0];\n                        var lUpY = listener.up[1];\n                        var lUpZ = listener.up[2];\n                        var inverseMagnitude = (x, y, z) => {\n                            var length = Math.sqrt(x * x + y * y + z * z);\n                            if (length < Number.EPSILON) {\n                                return 0\n                            }\n                            return 1 / length\n                        };\n                        var invMag = inverseMagnitude(lBackX, lBackY, lBackZ);\n                        lBackX *= invMag;\n                        lBackY *= invMag;\n                        lBackZ *= invMag;\n                        invMag = inverseMagnitude(lUpX, lUpY, lUpZ);\n                        lUpX *= invMag;\n                        lUpY *= invMag;\n                        lUpZ *= invMag;\n                        var lRightX = lUpY * lBackZ - lUpZ * lBackY;\n                        var lRightY = lUpZ * lBackX - lUpX * lBackZ;\n                        var lRightZ = lUpX * lBackY - lUpY * lBackX;\n                        invMag = inverseMagnitude(lRightX, lRightY, lRightZ);\n                        lRightX *= invMag;\n                        lRightY *= invMag;\n                        lRightZ *= invMag;\n                        lUpX = lBackY * lRightZ - lBackZ * lRightY;\n                        lUpY = lBackZ * lRightX - lBackX * lRightZ;\n                        lUpZ = lBackX * lRightY - lBackY * lRightX;\n                        var oldX = dirX;\n                        var oldY = dirY;\n                        var oldZ = dirZ;\n                        dirX = oldX * lRightX + oldY * lUpX + oldZ * lBackX;\n                        dirY = oldX * lRightY + oldY * lUpY + oldZ * lBackY;\n                        dirZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ;\n                        oldX = posX;\n                        oldY = posY;\n                        oldZ = posZ;\n                        posX = oldX * lRightX + oldY * lUpX + oldZ * lBackX;\n                        posY = oldX * lRightY + oldY * lUpY + oldZ * lBackY;\n                        posZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ;\n                        posX += lPosX;\n                        posY += lPosY;\n                        posZ += lPosZ\n                    }\n                    if (panner.positionX) {\n                        if (posX != panner.positionX.value) panner.positionX.value = posX;\n                        if (posY != panner.positionY.value) panner.positionY.value = posY;\n                        if (posZ != panner.positionZ.value) panner.positionZ.value = posZ\n                    } else {\n                        panner.setPosition(posX, posY, posZ)\n                    }\n                    if (panner.orientationX) {\n                        if (dirX != panner.orientationX.value) panner.orientationX.value = dirX;\n                        if (dirY != panner.orientationY.value) panner.orientationY.value = dirY;\n                        if (dirZ != panner.orientationZ.value) panner.orientationZ.value = dirZ\n                    } else {\n                        panner.setOrientation(dirX, dirY, dirZ)\n                    }\n                    var oldShift = src.dopplerShift;\n                    var velX = src.velocity[0];\n                    var velY = src.velocity[1];\n                    var velZ = src.velocity[2];\n                    var lVelX = listener.velocity[0];\n                    var lVelY = listener.velocity[1];\n                    var lVelZ = listener.velocity[2];\n                    if (posX === lPosX && posY === lPosY && posZ === lPosZ || velX === lVelX && velY === lVelY && velZ === lVelZ) {\n                        src.dopplerShift = 1\n                    } else {\n                        var speedOfSound = src.context.speedOfSound;\n                        var dopplerFactor = src.context.dopplerFactor;\n                        var slX = lPosX - posX;\n                        var slY = lPosY - posY;\n                        var slZ = lPosZ - posZ;\n                        var magSl = Math.sqrt(slX * slX + slY * slY + slZ * slZ);\n                        var vls = (slX * lVelX + slY * lVelY + slZ * lVelZ) / magSl;\n                        var vss = (slX * velX + slY * velY + slZ * velZ) / magSl;\n                        vls = Math.min(vls, speedOfSound / dopplerFactor);\n                        vss = Math.min(vss, speedOfSound / dopplerFactor);\n                        src.dopplerShift = (speedOfSound - dopplerFactor * vls) / (speedOfSound - dopplerFactor * vss)\n                    }\n                    if (src.dopplerShift !== oldShift) {\n                        AL.updateSourceRate(src)\n                    }\n                },\n                updateSourceRate: src => {\n                    if (src.state === 4114) {\n                        AL.cancelPendingSourceAudio(src);\n                        var audioSrc = src.audioQueue[0];\n                        if (!audioSrc) {\n                            return\n                        }\n                        var duration;\n                        if (src.type === 4136 && src.looping) {\n                            duration = Number.POSITIVE_INFINITY\n                        } else {\n                            duration = (audioSrc.buffer.duration - audioSrc._startOffset) / src.playbackRate\n                        }\n                        audioSrc._duration = duration;\n                        audioSrc.playbackRate.value = src.playbackRate;\n                        AL.scheduleSourceAudio(src)\n                    }\n                },\n                sourceDuration: src => {\n                    var length = 0;\n                    for (var i = 0; i < src.bufQueue.length; i++) {\n                        var audioBuf = src.bufQueue[i].audioBuf;\n                        length += audioBuf ? audioBuf.duration : 0\n                    }\n                    return length\n                },\n                sourceTell: src => {\n                    AL.updateSourceTime(src);\n                    var offset = 0;\n                    for (var i = 0; i < src.bufsProcessed; i++) {\n                        if (src.bufQueue[i].audioBuf) {\n                            offset += src.bufQueue[i].audioBuf.duration\n                        }\n                    }\n                    offset += src.bufOffset;\n                    return offset\n                },\n                sourceSeek: (src, offset) => {\n                    var playing = src.state == 4114;\n                    if (playing) {\n                        AL.setSourceState(src, 4113)\n                    }\n                    if (src.bufQueue[src.bufsProcessed].audioBuf !== null) {\n                        src.bufsProcessed = 0;\n                        while (offset > src.bufQueue[src.bufsProcessed].audioBuf.duration) {\n                            offset -= src.bufQueue[src.bufsProcessed].audioBuf.duration;\n                            src.bufsProcessed++\n                        }\n                        src.bufOffset = offset\n                    }\n                    if (playing) {\n                        AL.setSourceState(src, 4114)\n                    }\n                },\n                getGlobalParam: (funcname, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    switch (param) {\n                        case 49152:\n                            return AL.currentCtx.dopplerFactor;\n                        case 49155:\n                            return AL.currentCtx.speedOfSound;\n                        case 53248:\n                            return AL.currentCtx.distanceModel;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setGlobalParam: (funcname, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    switch (param) {\n                        case 49152:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.dopplerFactor = value;\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 49155:\n                            if (!Number.isFinite(value) || value <= 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.speedOfSound = value;\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 53248:\n                            switch (value) {\n                                case 0:\n                                case 53249:\n                                case 53250:\n                                case 53251:\n                                case 53252:\n                                case 53253:\n                                case 53254:\n                                    AL.currentCtx.distanceModel = value;\n                                    AL.updateContextGlobal(AL.currentCtx);\n                                    break;\n                                default:\n                                    AL.currentCtx.err = 40963;\n                                    return\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getListenerParam: (funcname, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    switch (param) {\n                        case 4100:\n                            return AL.currentCtx.listener.position;\n                        case 4102:\n                            return AL.currentCtx.listener.velocity;\n                        case 4111:\n                            return AL.currentCtx.listener.direction.concat(AL.currentCtx.listener.up);\n                        case 4106:\n                            return AL.currentCtx.gain.gain.value;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setListenerParam: (funcname, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    var listener = AL.currentCtx.listener;\n                    switch (param) {\n                        case 4100:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.position[0] = value[0];\n                            listener.position[1] = value[1];\n                            listener.position[2] = value[2];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 4102:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.velocity[0] = value[0];\n                            listener.velocity[1] = value[1];\n                            listener.velocity[2] = value[2];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 4106:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.gain.gain.value = value;\n                            break;\n                        case 4111:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2]) || !Number.isFinite(value[3]) || !Number.isFinite(value[4]) || !Number.isFinite(value[5])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.direction[0] = value[0];\n                            listener.direction[1] = value[1];\n                            listener.direction[2] = value[2];\n                            listener.up[0] = value[3];\n                            listener.up[1] = value[4];\n                            listener.up[2] = value[5];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getBufferParam: (funcname, bufferId, param) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var buf = AL.buffers[bufferId];\n                    if (!buf || bufferId === 0) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    switch (param) {\n                        case 8193:\n                            return buf.frequency;\n                        case 8194:\n                            return buf.bytesPerSample * 8;\n                        case 8195:\n                            return buf.channels;\n                        case 8196:\n                            return buf.length * buf.bytesPerSample * buf.channels;\n                        case 8213:\n                            if (buf.length === 0) {\n                                return [0, 0]\n                            }\n                            return [(buf.audioBuf._loopStart || 0) * buf.frequency, (buf.audioBuf._loopEnd || buf.length) * buf.frequency];\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setBufferParam: (funcname, bufferId, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var buf = AL.buffers[bufferId];\n                    if (!buf || bufferId === 0) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    switch (param) {\n                        case 8196:\n                            if (value !== 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 8213:\n                            if (value[0] < 0 || value[0] > buf.length || value[1] < 0 || value[1] > buf.Length || value[0] >= value[1]) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            if (buf.refCount > 0) {\n                                AL.currentCtx.err = 40964;\n                                return\n                            }\n                            if (buf.audioBuf) {\n                                buf.audioBuf._loopStart = value[0] / buf.frequency;\n                                buf.audioBuf._loopEnd = value[1] / buf.frequency\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getSourceParam: (funcname, sourceId, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    var src = AL.currentCtx.sources[sourceId];\n                    if (!src) {\n                        AL.currentCtx.err = 40961;\n                        return null\n                    }\n                    switch (param) {\n                        case 514:\n                            return src.relative;\n                        case 4097:\n                            return src.coneInnerAngle;\n                        case 4098:\n                            return src.coneOuterAngle;\n                        case 4099:\n                            return src.pitch;\n                        case 4100:\n                            return src.position;\n                        case 4101:\n                            return src.direction;\n                        case 4102:\n                            return src.velocity;\n                        case 4103:\n                            return src.looping;\n                        case 4105:\n                            if (src.type === 4136) {\n                                return src.bufQueue[0].id\n                            }\n                            return 0;\n                        case 4106:\n                            return src.gain.gain.value;\n                        case 4109:\n                            return src.minGain;\n                        case 4110:\n                            return src.maxGain;\n                        case 4112:\n                            return src.state;\n                        case 4117:\n                            if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) {\n                                return 0\n                            }\n                            return src.bufQueue.length;\n                        case 4118:\n                            if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 || src.looping) {\n                                return 0\n                            }\n                            return src.bufsProcessed;\n                        case 4128:\n                            return src.refDistance;\n                        case 4129:\n                            return src.rolloffFactor;\n                        case 4130:\n                            return src.coneOuterGain;\n                        case 4131:\n                            return src.maxDistance;\n                        case 4132:\n                            return AL.sourceTell(src);\n                        case 4133:\n                            var offset = AL.sourceTell(src);\n                            if (offset > 0) {\n                                offset *= src.bufQueue[0].frequency\n                            }\n                            return offset;\n                        case 4134:\n                            var offset = AL.sourceTell(src);\n                            if (offset > 0) {\n                                offset *= src.bufQueue[0].frequency * src.bufQueue[0].bytesPerSample\n                            }\n                            return offset;\n                        case 4135:\n                            return src.type;\n                        case 4628:\n                            return src.spatialize;\n                        case 8201:\n                            var length = 0;\n                            var bytesPerFrame = 0;\n                            for (var i = 0; i < src.bufQueue.length; i++) {\n                                length += src.bufQueue[i].length;\n                                if (src.bufQueue[i].id !== 0) {\n                                    bytesPerFrame = src.bufQueue[i].bytesPerSample * src.bufQueue[i].channels\n                                }\n                            }\n                            return length * bytesPerFrame;\n                        case 8202:\n                            var length = 0;\n                            for (var i = 0; i < src.bufQueue.length; i++) {\n                                length += src.bufQueue[i].length\n                            }\n                            return length;\n                        case 8203:\n                            return AL.sourceDuration(src);\n                        case 53248:\n                            return src.distanceModel;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setSourceParam: (funcname, sourceId, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var src = AL.currentCtx.sources[sourceId];\n                    if (!src) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    switch (param) {\n                        case 514:\n                            if (value === 1) {\n                                src.relative = true;\n                                AL.updateSourceSpace(src)\n                            } else if (value === 0) {\n                                src.relative = false;\n                                AL.updateSourceSpace(src)\n                            } else {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 4097:\n                            if (!Number.isFinite(value)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneInnerAngle = value;\n                            if (src.panner) {\n                                src.panner.coneInnerAngle = value % 360\n                            }\n                            break;\n                        case 4098:\n                            if (!Number.isFinite(value)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneOuterAngle = value;\n                            if (src.panner) {\n                                src.panner.coneOuterAngle = value % 360\n                            }\n                            break;\n                        case 4099:\n                            if (!Number.isFinite(value) || value <= 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            if (src.pitch === value) {\n                                break\n                            }\n                            src.pitch = value;\n                            AL.updateSourceRate(src);\n                            break;\n                        case 4100:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.position[0] = value[0];\n                            src.position[1] = value[1];\n                            src.position[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4101:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.direction[0] = value[0];\n                            src.direction[1] = value[1];\n                            src.direction[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4102:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.velocity[0] = value[0];\n                            src.velocity[1] = value[1];\n                            src.velocity[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4103:\n                            if (value === 1) {\n                                src.looping = true;\n                                AL.updateSourceTime(src);\n                                if (src.type === 4136 && src.audioQueue.length > 0) {\n                                    var audioSrc = src.audioQueue[0];\n                                    audioSrc.loop = true;\n                                    audioSrc._duration = Number.POSITIVE_INFINITY\n                                }\n                            } else if (value === 0) {\n                                src.looping = false;\n                                var currentTime = AL.updateSourceTime(src);\n                                if (src.type === 4136 && src.audioQueue.length > 0) {\n                                    var audioSrc = src.audioQueue[0];\n                                    audioSrc.loop = false;\n                                    audioSrc._duration = src.bufQueue[0].audioBuf.duration / src.playbackRate;\n                                    audioSrc._startTime = currentTime - src.bufOffset / src.playbackRate\n                                }\n                            } else {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 4105:\n                            if (src.state === 4114 || src.state === 4115) {\n                                AL.currentCtx.err = 40964;\n                                return\n                            }\n                            if (value === 0) {\n                                for (var i in src.bufQueue) {\n                                    src.bufQueue[i].refCount--\n                                }\n                                src.bufQueue.length = 1;\n                                src.bufQueue[0] = AL.buffers[0];\n                                src.bufsProcessed = 0;\n                                src.type = 4144\n                            } else {\n                                var buf = AL.buffers[value];\n                                if (!buf) {\n                                    AL.currentCtx.err = 40963;\n                                    return\n                                }\n                                for (var i in src.bufQueue) {\n                                    src.bufQueue[i].refCount--\n                                }\n                                src.bufQueue.length = 0;\n                                buf.refCount++;\n                                src.bufQueue = [buf];\n                                src.bufsProcessed = 0;\n                                src.type = 4136\n                            }\n                            AL.initSourcePanner(src);\n                            AL.scheduleSourceAudio(src);\n                            break;\n                        case 4106:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.gain.gain.value = value;\n                            break;\n                        case 4109:\n                            if (!Number.isFinite(value) || value < 0 || value > Math.min(src.maxGain, 1)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.minGain = value;\n                            break;\n                        case 4110:\n                            if (!Number.isFinite(value) || value < Math.max(0, src.minGain) || value > 1) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.maxGain = value;\n                            break;\n                        case 4128:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.refDistance = value;\n                            if (src.panner) {\n                                src.panner.refDistance = value\n                            }\n                            break;\n                        case 4129:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.rolloffFactor = value;\n                            if (src.panner) {\n                                src.panner.rolloffFactor = value\n                            }\n                            break;\n                        case 4130:\n                            if (!Number.isFinite(value) || value < 0 || value > 1) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneOuterGain = value;\n                            if (src.panner) {\n                                src.panner.coneOuterGain = value\n                            }\n                            break;\n                        case 4131:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.maxDistance = value;\n                            if (src.panner) {\n                                src.panner.maxDistance = value\n                            }\n                            break;\n                        case 4132:\n                            if (value < 0 || value > AL.sourceDuration(src)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4133:\n                            var srcLen = AL.sourceDuration(src);\n                            if (srcLen > 0) {\n                                var frequency;\n                                for (var bufId in src.bufQueue) {\n                                    if (bufId) {\n                                        frequency = src.bufQueue[bufId].frequency;\n                                        break\n                                    }\n                                }\n                                value /= frequency\n                            }\n                            if (value < 0 || value > srcLen) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4134:\n                            var srcLen = AL.sourceDuration(src);\n                            if (srcLen > 0) {\n                                var bytesPerSec;\n                                for (var bufId in src.bufQueue) {\n                                    if (bufId) {\n                                        var buf = src.bufQueue[bufId];\n                                        bytesPerSec = buf.frequency * buf.bytesPerSample * buf.channels;\n                                        break\n                                    }\n                                }\n                                value /= bytesPerSec\n                            }\n                            if (value < 0 || value > srcLen) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4628:\n                            if (value !== 0 && value !== 1 && value !== 2) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.spatialize = value;\n                            AL.initSourcePanner(src);\n                            break;\n                        case 8201:\n                        case 8202:\n                        case 8203:\n                            AL.currentCtx.err = 40964;\n                            break;\n                        case 53248:\n                            switch (value) {\n                                case 0:\n                                case 53249:\n                                case 53250:\n                                case 53251:\n                                case 53252:\n                                case 53253:\n                                case 53254:\n                                    src.distanceModel = value;\n                                    if (AL.currentCtx.sourceDistanceModel) {\n                                        AL.updateContextGlobal(AL.currentCtx)\n                                    }\n                                    break;\n                                default:\n                                    AL.currentCtx.err = 40963;\n                                    return\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                captures: {},\n                sharedCaptureAudioCtx: null,\n                requireValidCaptureDevice: (deviceId, funcname) => {\n                    if (deviceId === 0) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    var c = AL.captures[deviceId];\n                    if (!c) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    var err = c.mediaStreamError;\n                    if (err) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    return c\n                }\n            };\n            var _alBuffer3f = (bufferId, param, value0, value1, value2) => {\n                AL.setBufferParam(\"alBuffer3f\", bufferId, param, null)\n            };\n            _alBuffer3f.sig = \"viifff\";\n            var _alBuffer3i = (bufferId, param, value0, value1, value2) => {\n                AL.setBufferParam(\"alBuffer3i\", bufferId, param, null)\n            };\n            _alBuffer3i.sig = \"viiiii\";\n\n            function _alBufferData(bufferId, format, pData, size, freq) {\n                pData >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var buf = AL.buffers[bufferId];\n                if (!buf) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                if (freq <= 0) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                var audioBuf = null;\n                try {\n                    switch (format) {\n                        case 4352:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                for (var i = 0; i < size; ++i) {\n                                    channel0[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1\n                                }\n                            }\n                            buf.bytesPerSample = 1;\n                            buf.channels = 1;\n                            buf.length = size;\n                            break;\n                        case 4353:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 1, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                pData >>= 1;\n                                for (var i = 0; i < size >> 1; ++i) {\n                                    channel0[i] = HEAP16[pData++ >>> 0] * 30517578125e-15\n                                }\n                            }\n                            buf.bytesPerSample = 2;\n                            buf.channels = 1;\n                            buf.length = size >> 1;\n                            break;\n                        case 4354:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 1, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                for (var i = 0; i < size >> 1; ++i) {\n                                    channel0[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1;\n                                    channel1[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1\n                                }\n                            }\n                            buf.bytesPerSample = 1;\n                            buf.channels = 2;\n                            buf.length = size >> 1;\n                            break;\n                        case 4355:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 2, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                pData >>= 1;\n                                for (var i = 0; i < size >> 2; ++i) {\n                                    channel0[i] = HEAP16[pData++ >>> 0] * 30517578125e-15;\n                                    channel1[i] = HEAP16[pData++ >>> 0] * 30517578125e-15\n                                }\n                            }\n                            buf.bytesPerSample = 2;\n                            buf.channels = 2;\n                            buf.length = size >> 2;\n                            break;\n                        case 65552:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 2, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                pData >>= 2;\n                                for (var i = 0; i < size >> 2; ++i) {\n                                    channel0[i] = HEAPF32[pData++ >>> 0]\n                                }\n                            }\n                            buf.bytesPerSample = 4;\n                            buf.channels = 1;\n                            buf.length = size >> 2;\n                            break;\n                        case 65553:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 3, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                pData >>= 2;\n                                for (var i = 0; i < size >> 3; ++i) {\n                                    channel0[i] = HEAPF32[pData++ >>> 0];\n                                    channel1[i] = HEAPF32[pData++ >>> 0]\n                                }\n                            }\n                            buf.bytesPerSample = 4;\n                            buf.channels = 2;\n                            buf.length = size >> 3;\n                            break;\n                        default:\n                            AL.currentCtx.err = 40963;\n                            return\n                    }\n                    buf.frequency = freq;\n                    buf.audioBuf = audioBuf\n                } catch (e) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n            }\n            _alBufferData.sig = \"viipii\";\n            var _alBufferf = (bufferId, param, value) => {\n                AL.setBufferParam(\"alBufferf\", bufferId, param, null)\n            };\n            _alBufferf.sig = \"viif\";\n\n            function _alBufferfv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.setBufferParam(\"alBufferfv\", bufferId, param, null)\n            }\n            _alBufferfv.sig = \"viip\";\n            var _alBufferi = (bufferId, param, value) => {\n                AL.setBufferParam(\"alBufferi\", bufferId, param, null)\n            };\n            _alBufferi.sig = \"viii\";\n\n            function _alBufferiv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8213:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.setBufferParam(\"alBufferiv\", bufferId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setBufferParam(\"alBufferiv\", bufferId, param, null);\n                        break\n                }\n            }\n            _alBufferiv.sig = \"viip\";\n\n            function _alDeleteBuffers(count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    if (bufId === 0) {\n                        continue\n                    }\n                    if (!AL.buffers[bufId]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (AL.buffers[bufId].refCount) {\n                        AL.currentCtx.err = 40964;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    if (bufId === 0) {\n                        continue\n                    }\n                    AL.deviceRefCounts[AL.buffers[bufId].deviceId]--;\n                    delete AL.buffers[bufId];\n                    AL.freeIds.push(bufId)\n                }\n            }\n            _alDeleteBuffers.sig = \"vip\";\n            var _alSourcei = (sourceId, param, value) => {\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        AL.setSourceParam(\"alSourcei\", sourceId, param, value);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcei\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSourcei.sig = \"viii\";\n\n            function _alDeleteSources(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    if (!AL.currentCtx.sources[srcId]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4116);\n                    _alSourcei(srcId, 4105, 0);\n                    delete AL.currentCtx.sources[srcId];\n                    AL.freeIds.push(srcId)\n                }\n            }\n            _alDeleteSources.sig = \"vip\";\n            var _alDisable = param => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                switch (param) {\n                    case 512:\n                        AL.currentCtx.sourceDistanceModel = false;\n                        AL.updateContextGlobal(AL.currentCtx);\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            };\n            _alDisable.sig = \"vi\";\n            var _alDistanceModel = model => {\n                AL.setGlobalParam(\"alDistanceModel\", 53248, model)\n            };\n            _alDistanceModel.sig = \"vi\";\n            var _alDopplerFactor = value => {\n                AL.setGlobalParam(\"alDopplerFactor\", 49152, value)\n            };\n            _alDopplerFactor.sig = \"vf\";\n            var _alDopplerVelocity = value => {\n                warnOnce(\"alDopplerVelocity() is deprecated, and only kept for compatibility with OpenAL 1.0. Use alSpeedOfSound() instead.\");\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (value <= 0) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n            };\n            _alDopplerVelocity.sig = \"vf\";\n            var _alEnable = param => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                switch (param) {\n                    case 512:\n                        AL.currentCtx.sourceDistanceModel = true;\n                        AL.updateContextGlobal(AL.currentCtx);\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            };\n            _alEnable.sig = \"vi\";\n\n            function _alGenBuffers(count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var buf = {\n                        deviceId: AL.currentCtx.deviceId,\n                        id: AL.newId(),\n                        refCount: 0,\n                        audioBuf: null,\n                        frequency: 0,\n                        bytesPerSample: 2,\n                        channels: 1,\n                        length: 0\n                    };\n                    AL.deviceRefCounts[buf.deviceId]++;\n                    AL.buffers[buf.id] = buf;\n                    HEAP32[pBufferIds + i * 4 >>> 2 >>> 0] = buf.id\n                }\n            }\n            _alGenBuffers.sig = \"vip\";\n\n            function _alGenSources(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var gain = AL.currentCtx.audioCtx.createGain();\n                    gain.connect(AL.currentCtx.gain);\n                    var src = {\n                        context: AL.currentCtx,\n                        id: AL.newId(),\n                        type: 4144,\n                        state: 4113,\n                        bufQueue: [AL.buffers[0]],\n                        audioQueue: [],\n                        looping: false,\n                        pitch: 1,\n                        dopplerShift: 1,\n                        gain,\n                        minGain: 0,\n                        maxGain: 1,\n                        panner: null,\n                        bufsProcessed: 0,\n                        bufStartTime: Number.NEGATIVE_INFINITY,\n                        bufOffset: 0,\n                        relative: false,\n                        refDistance: 1,\n                        maxDistance: 340282e33,\n                        rolloffFactor: 1,\n                        position: [0, 0, 0],\n                        velocity: [0, 0, 0],\n                        direction: [0, 0, 0],\n                        coneOuterGain: 0,\n                        coneInnerAngle: 360,\n                        coneOuterAngle: 360,\n                        distanceModel: 53250,\n                        spatialize: 2,\n                        get playbackRate() {\n                            return this.pitch * this.dopplerShift\n                        }\n                    };\n                    AL.currentCtx.sources[src.id] = src;\n                    HEAP32[pSourceIds + i * 4 >>> 2 >>> 0] = src.id\n                }\n            }\n            _alGenSources.sig = \"vip\";\n            var _alGetBoolean = param => {\n                var val = AL.getGlobalParam(\"alGetBoolean\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val !== 0 ? 1 : 0;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetBoolean.sig = \"ii\";\n\n            function _alGetBooleanv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetBooleanv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAP8[pValues >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBooleanv.sig = \"vip\";\n\n            function _alGetBuffer3f(bufferId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getBufferParam(\"alGetBuffer3f\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBuffer3f.sig = \"viippp\";\n\n            function _alGetBuffer3i(bufferId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getBufferParam(\"alGetBuffer3i\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBuffer3i.sig = \"viippp\";\n\n            function _alGetBufferf(bufferId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferf\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBufferf.sig = \"viip\";\n\n            function _alGetBufferfv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferfv\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBufferfv.sig = \"viip\";\n\n            function _alGetBufferi(bufferId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferi\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8193:\n                    case 8194:\n                    case 8195:\n                    case 8196:\n                        HEAP32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBufferi.sig = \"viip\";\n\n            function _alGetBufferiv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferiv\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8193:\n                    case 8194:\n                    case 8195:\n                    case 8196:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    case 8213:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBufferiv.sig = \"viip\";\n            var _alGetDouble = param => {\n                var val = AL.getGlobalParam(\"alGetDouble\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetDouble.sig = \"di\";\n\n            function _alGetDoublev(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetDoublev\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAPF64[pValues >>> 3 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetDoublev.sig = \"vip\";\n\n            function _alGetEnumValue(pEnumName) {\n                pEnumName >>>= 0;\n                if (!AL.currentCtx) {\n                    return 0\n                }\n                if (!pEnumName) {\n                    AL.currentCtx.err = 40963;\n                    return 0\n                }\n                var name = UTF8ToString(pEnumName);\n                switch (name) {\n                    case \"AL_BITS\":\n                        return 8194;\n                    case \"AL_BUFFER\":\n                        return 4105;\n                    case \"AL_BUFFERS_PROCESSED\":\n                        return 4118;\n                    case \"AL_BUFFERS_QUEUED\":\n                        return 4117;\n                    case \"AL_BYTE_OFFSET\":\n                        return 4134;\n                    case \"AL_CHANNELS\":\n                        return 8195;\n                    case \"AL_CONE_INNER_ANGLE\":\n                        return 4097;\n                    case \"AL_CONE_OUTER_ANGLE\":\n                        return 4098;\n                    case \"AL_CONE_OUTER_GAIN\":\n                        return 4130;\n                    case \"AL_DIRECTION\":\n                        return 4101;\n                    case \"AL_DISTANCE_MODEL\":\n                        return 53248;\n                    case \"AL_DOPPLER_FACTOR\":\n                        return 49152;\n                    case \"AL_DOPPLER_VELOCITY\":\n                        return 49153;\n                    case \"AL_EXPONENT_DISTANCE\":\n                        return 53253;\n                    case \"AL_EXPONENT_DISTANCE_CLAMPED\":\n                        return 53254;\n                    case \"AL_EXTENSIONS\":\n                        return 45060;\n                    case \"AL_FORMAT_MONO16\":\n                        return 4353;\n                    case \"AL_FORMAT_MONO8\":\n                        return 4352;\n                    case \"AL_FORMAT_STEREO16\":\n                        return 4355;\n                    case \"AL_FORMAT_STEREO8\":\n                        return 4354;\n                    case \"AL_FREQUENCY\":\n                        return 8193;\n                    case \"AL_GAIN\":\n                        return 4106;\n                    case \"AL_INITIAL\":\n                        return 4113;\n                    case \"AL_INVALID\":\n                        return -1;\n                    case \"AL_ILLEGAL_ENUM\":\n                    case \"AL_INVALID_ENUM\":\n                        return 40962;\n                    case \"AL_INVALID_NAME\":\n                        return 40961;\n                    case \"AL_ILLEGAL_COMMAND\":\n                    case \"AL_INVALID_OPERATION\":\n                        return 40964;\n                    case \"AL_INVALID_VALUE\":\n                        return 40963;\n                    case \"AL_INVERSE_DISTANCE\":\n                        return 53249;\n                    case \"AL_INVERSE_DISTANCE_CLAMPED\":\n                        return 53250;\n                    case \"AL_LINEAR_DISTANCE\":\n                        return 53251;\n                    case \"AL_LINEAR_DISTANCE_CLAMPED\":\n                        return 53252;\n                    case \"AL_LOOPING\":\n                        return 4103;\n                    case \"AL_MAX_DISTANCE\":\n                        return 4131;\n                    case \"AL_MAX_GAIN\":\n                        return 4110;\n                    case \"AL_MIN_GAIN\":\n                        return 4109;\n                    case \"AL_NONE\":\n                        return 0;\n                    case \"AL_NO_ERROR\":\n                        return 0;\n                    case \"AL_ORIENTATION\":\n                        return 4111;\n                    case \"AL_OUT_OF_MEMORY\":\n                        return 40965;\n                    case \"AL_PAUSED\":\n                        return 4115;\n                    case \"AL_PENDING\":\n                        return 8209;\n                    case \"AL_PITCH\":\n                        return 4099;\n                    case \"AL_PLAYING\":\n                        return 4114;\n                    case \"AL_POSITION\":\n                        return 4100;\n                    case \"AL_PROCESSED\":\n                        return 8210;\n                    case \"AL_REFERENCE_DISTANCE\":\n                        return 4128;\n                    case \"AL_RENDERER\":\n                        return 45059;\n                    case \"AL_ROLLOFF_FACTOR\":\n                        return 4129;\n                    case \"AL_SAMPLE_OFFSET\":\n                        return 4133;\n                    case \"AL_SEC_OFFSET\":\n                        return 4132;\n                    case \"AL_SIZE\":\n                        return 8196;\n                    case \"AL_SOURCE_RELATIVE\":\n                        return 514;\n                    case \"AL_SOURCE_STATE\":\n                        return 4112;\n                    case \"AL_SOURCE_TYPE\":\n                        return 4135;\n                    case \"AL_SPEED_OF_SOUND\":\n                        return 49155;\n                    case \"AL_STATIC\":\n                        return 4136;\n                    case \"AL_STOPPED\":\n                        return 4116;\n                    case \"AL_STREAMING\":\n                        return 4137;\n                    case \"AL_UNDETERMINED\":\n                        return 4144;\n                    case \"AL_UNUSED\":\n                        return 8208;\n                    case \"AL_VELOCITY\":\n                        return 4102;\n                    case \"AL_VENDOR\":\n                        return 45057;\n                    case \"AL_VERSION\":\n                        return 45058;\n                    case \"AL_AUTO_SOFT\":\n                        return 2;\n                    case \"AL_SOURCE_DISTANCE_MODEL\":\n                        return 512;\n                    case \"AL_SOURCE_SPATIALIZE_SOFT\":\n                        return 4628;\n                    case \"AL_LOOP_POINTS_SOFT\":\n                        return 8213;\n                    case \"AL_BYTE_LENGTH_SOFT\":\n                        return 8201;\n                    case \"AL_SAMPLE_LENGTH_SOFT\":\n                        return 8202;\n                    case \"AL_SEC_LENGTH_SOFT\":\n                        return 8203;\n                    case \"AL_FORMAT_MONO_FLOAT32\":\n                        return 65552;\n                    case \"AL_FORMAT_STEREO_FLOAT32\":\n                        return 65553;\n                    default:\n                        AL.currentCtx.err = 40963;\n                        return 0\n                }\n            }\n            _alGetEnumValue.sig = \"ip\";\n            var _alGetError = () => {\n                if (!AL.currentCtx) {\n                    return 40964\n                }\n                var err = AL.currentCtx.err;\n                AL.currentCtx.err = 0;\n                return err\n            };\n            _alGetError.sig = \"i\";\n            var _alGetFloat = param => {\n                var val = AL.getGlobalParam(\"alGetFloat\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        return 0\n                }\n            };\n            _alGetFloat.sig = \"fi\";\n\n            function _alGetFloatv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetFloatv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAPF32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetFloatv.sig = \"vip\";\n            var _alGetInteger = param => {\n                var val = AL.getGlobalParam(\"alGetInteger\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetInteger.sig = \"ii\";\n\n            function _alGetIntegerv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetIntegerv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetIntegerv.sig = \"vip\";\n\n            function _alGetListener3f(param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getListenerParam(\"alGetListener3f\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAPF32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListener3f.sig = \"vippp\";\n\n            function _alGetListener3i(param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getListenerParam(\"alGetListener3i\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAP32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAP32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListener3i.sig = \"vippp\";\n\n            function _alGetListenerf(param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getListenerParam(\"alGetListenerf\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4106:\n                        HEAPF32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListenerf.sig = \"vip\";\n\n            function _alGetListenerfv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getListenerParam(\"alGetListenerfv\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    case 4111:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        HEAPF32[pValues + 12 >>> 2 >>> 0] = val[3];\n                        HEAPF32[pValues + 16 >>> 2 >>> 0] = val[4];\n                        HEAPF32[pValues + 20 >>> 2 >>> 0] = val[5];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListenerfv.sig = \"vip\";\n\n            function _alGetListeneri(param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getListenerParam(\"alGetListeneri\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetListeneri.sig = \"vip\";\n\n            function _alGetListeneriv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getListenerParam(\"alGetListeneriv\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    case 4111:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        HEAP32[pValues + 12 >>> 2 >>> 0] = val[3];\n                        HEAP32[pValues + 16 >>> 2 >>> 0] = val[4];\n                        HEAP32[pValues + 20 >>> 2 >>> 0] = val[5];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListeneriv.sig = \"vip\";\n\n            function _alGetSource3f(sourceId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getSourceParam(\"alGetSource3f\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAPF32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSource3f.sig = \"viippp\";\n\n            function _alGetSource3i(sourceId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getSourceParam(\"alGetSource3i\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAP32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAP32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSource3i.sig = \"viippp\";\n\n            function _alGetSourcef(sourceId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcef\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        HEAPF32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcef.sig = \"viip\";\n\n            function _alGetSourcefv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcefv\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcefv.sig = \"viip\";\n\n            function _alGetSourcei(sourceId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcei\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4112:\n                    case 4117:\n                    case 4118:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4135:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        HEAP32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcei.sig = \"viip\";\n\n            function _alGetSourceiv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourceiv\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4112:\n                    case 4117:\n                    case 4118:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4135:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourceiv.sig = \"viip\";\n            var stringToNewUTF8 = str => {\n                var size = lengthBytesUTF8(str) + 1;\n                var ret = _malloc(size);\n                if (ret) stringToUTF8(str, ret, size);\n                return ret\n            };\n\n            function _alGetString(param) {\n                if (AL.stringCache[param]) {\n                    return AL.stringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 0:\n                        ret = \"No Error\";\n                        break;\n                    case 40961:\n                        ret = \"Invalid Name\";\n                        break;\n                    case 40962:\n                        ret = \"Invalid Enum\";\n                        break;\n                    case 40963:\n                        ret = \"Invalid Value\";\n                        break;\n                    case 40964:\n                        ret = \"Invalid Operation\";\n                        break;\n                    case 40965:\n                        ret = \"Out of Memory\";\n                        break;\n                    case 45057:\n                        ret = \"Emscripten\";\n                        break;\n                    case 45058:\n                        ret = \"1.1\";\n                        break;\n                    case 45059:\n                        ret = \"WebAudio\";\n                        break;\n                    case 45060:\n                        ret = Object.keys(AL.AL_EXTENSIONS).join(\" \");\n                        break;\n                    default:\n                        if (AL.currentCtx) {\n                            AL.currentCtx.err = 40962\n                        } else {}\n                        return 0\n                }\n                ret = stringToNewUTF8(ret);\n                AL.stringCache[param] = ret;\n                return ret\n            }\n            _alGetString.sig = \"pi\";\n            var _alIsBuffer = bufferId => {\n                if (!AL.currentCtx) {\n                    return false\n                }\n                if (bufferId > AL.buffers.length) {\n                    return false\n                }\n                if (!AL.buffers[bufferId]) {\n                    return false\n                }\n                return true\n            };\n            _alIsBuffer.sig = \"ii\";\n            var _alIsEnabled = param => {\n                if (!AL.currentCtx) {\n                    return 0\n                }\n                switch (param) {\n                    case 512:\n                        return AL.currentCtx.sourceDistanceModel ? 0 : 1;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alIsEnabled.sig = \"ii\";\n\n            function _alIsExtensionPresent(pExtName) {\n                pExtName >>>= 0;\n                var name = UTF8ToString(pExtName);\n                return AL.AL_EXTENSIONS[name] ? 1 : 0\n            }\n            _alIsExtensionPresent.sig = \"ip\";\n            var _alIsSource = sourceId => {\n                if (!AL.currentCtx) {\n                    return false\n                }\n                if (!AL.currentCtx.sources[sourceId]) {\n                    return false\n                }\n                return true\n            };\n            _alIsSource.sig = \"ii\";\n            var _alListener3f = (param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setListenerParam(\"alListener3f\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListener3f\", param, null);\n                        break\n                }\n            };\n            _alListener3f.sig = \"vifff\";\n            var _alListener3i = (param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setListenerParam(\"alListener3i\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListener3i\", param, null);\n                        break\n                }\n            };\n            _alListener3i.sig = \"viiii\";\n            var _alListenerf = (param, value) => {\n                switch (param) {\n                    case 4106:\n                        AL.setListenerParam(\"alListenerf\", param, value);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListenerf\", param, null);\n                        break\n                }\n            };\n            _alListenerf.sig = \"vif\";\n\n            function _alListenerfv(param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListenerfv\", param, AL.paramArray);\n                        break;\n                    case 4111:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.paramArray[3] = HEAPF32[pValues + 12 >>> 2 >>> 0];\n                        AL.paramArray[4] = HEAPF32[pValues + 16 >>> 2 >>> 0];\n                        AL.paramArray[5] = HEAPF32[pValues + 20 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListenerfv\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListenerfv\", param, null);\n                        break\n                }\n            }\n            _alListenerfv.sig = \"vip\";\n            var _alListeneri = (param, value) => {\n                AL.setListenerParam(\"alListeneri\", param, null)\n            };\n            _alListeneri.sig = \"vii\";\n\n            function _alListeneriv(param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListeneriv\", param, AL.paramArray);\n                        break;\n                    case 4111:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.paramArray[3] = HEAP32[pValues + 12 >>> 2 >>> 0];\n                        AL.paramArray[4] = HEAP32[pValues + 16 >>> 2 >>> 0];\n                        AL.paramArray[5] = HEAP32[pValues + 20 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListeneriv\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListeneriv\", param, null);\n                        break\n                }\n            }\n            _alListeneriv.sig = \"vip\";\n            var _alSource3f = (sourceId, param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setSourceParam(\"alSource3f\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSource3f\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSource3f.sig = \"viifff\";\n            var _alSource3i = (sourceId, param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setSourceParam(\"alSource3i\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSource3i\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSource3i.sig = \"viiiii\";\n            var _alSourcePause = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4115)\n            };\n            _alSourcePause.sig = \"vi\";\n\n            function _alSourcePausev(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4115)\n                }\n            }\n            _alSourcePausev.sig = \"vip\";\n            var _alSourcePlay = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4114)\n            };\n            _alSourcePlay.sig = \"vi\";\n\n            function _alSourcePlayv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4114)\n                }\n            }\n            _alSourcePlayv.sig = \"vip\";\n\n            function _alSourceQueueBuffers(sourceId, count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                if (src.type === 4136) {\n                    AL.currentCtx.err = 40964;\n                    return\n                }\n                if (count === 0) {\n                    return\n                }\n                var templateBuf = AL.buffers[0];\n                for (var i = 0; i < src.bufQueue.length; i++) {\n                    if (src.bufQueue[i].id !== 0) {\n                        templateBuf = src.bufQueue[i];\n                        break\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    var buf = AL.buffers[bufId];\n                    if (!buf) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (templateBuf.id !== 0 && (buf.frequency !== templateBuf.frequency || buf.bytesPerSample !== templateBuf.bytesPerSample || buf.channels !== templateBuf.channels)) {\n                        AL.currentCtx.err = 40964\n                    }\n                }\n                if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) {\n                    src.bufQueue.length = 0\n                }\n                src.type = 4137;\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    var buf = AL.buffers[bufId];\n                    buf.refCount++;\n                    src.bufQueue.push(buf)\n                }\n                if (src.looping) {\n                    AL.cancelPendingSourceAudio(src)\n                }\n                AL.initSourcePanner(src);\n                AL.scheduleSourceAudio(src)\n            }\n            _alSourceQueueBuffers.sig = \"viip\";\n            var _alSourceRewind = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4116);\n                AL.setSourceState(src, 4113)\n            };\n            _alSourceRewind.sig = \"vi\";\n\n            function _alSourceRewindv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4113)\n                }\n            }\n            _alSourceRewindv.sig = \"vip\";\n            var _alSourceStop = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4116)\n            };\n            _alSourceStop.sig = \"vi\";\n\n            function _alSourceStopv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4116)\n                }\n            }\n            _alSourceStopv.sig = \"vip\";\n\n            function _alSourceUnqueueBuffers(sourceId, count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                if (count > (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 ? 0 : src.bufsProcessed)) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                if (count === 0) {\n                    return\n                }\n                for (var i = 0; i < count; i++) {\n                    var buf = src.bufQueue.shift();\n                    buf.refCount--;\n                    HEAP32[pBufferIds + i * 4 >>> 2 >>> 0] = buf.id;\n                    src.bufsProcessed--\n                }\n                if (src.bufQueue.length === 0) {\n                    src.bufQueue.push(AL.buffers[0])\n                }\n                AL.initSourcePanner(src);\n                AL.scheduleSourceAudio(src)\n            }\n            _alSourceUnqueueBuffers.sig = \"viip\";\n            var _alSourcef = (sourceId, param, value) => {\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        AL.setSourceParam(\"alSourcef\", sourceId, param, value);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcef\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSourcef.sig = \"viif\";\n\n            function _alSourcefv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        var val = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, val);\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, null);\n                        break\n                }\n            }\n            _alSourcefv.sig = \"viip\";\n\n            function _alSourceiv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        var val = HEAP32[pValues >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, val);\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, null);\n                        break\n                }\n            }\n            _alSourceiv.sig = \"viip\";\n            var _alSpeedOfSound = value => {\n                AL.setGlobalParam(\"alSpeedOfSound\", 49155, value)\n            };\n            _alSpeedOfSound.sig = \"vf\";\n            var _alcCaptureCloseDevice = function(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureCloseDevice\");\n                if (!c) return false;\n                delete AL.captures[deviceId];\n                AL.freeIds.push(deviceId);\n                c.mediaStreamSourceNode?.disconnect();\n                c.mergerNode?.disconnect();\n                c.splitterNode?.disconnect();\n                c.scriptProcessorNode?.disconnect();\n                if (c.mediaStream) {\n                    c.mediaStream.getTracks().forEach(track => track.stop())\n                }\n                delete c.buffers;\n                c.capturedFrameCount = 0;\n                c.isCapturing = false;\n                return true\n            };\n            _alcCaptureCloseDevice.sig = \"ip\";\n            var listenOnce = (object, event, func) => {\n                object.addEventListener(event, func, {\n                    once: true\n                })\n            };\n            var autoResumeAudioContext = (ctx, elements) => {\n                if (!elements) {\n                    elements = [document, document.getElementById(\"canvas\")]\n                } [\"keydown\", \"mousedown\", \"touchstart\"].forEach(event => {\n                    elements.forEach(element => {\n                        if (element) {\n                            listenOnce(element, event, () => {\n                                if (ctx.state === \"suspended\") ctx.resume()\n                            })\n                        }\n                    })\n                })\n            };\n\n            function _alcCaptureOpenDevice(pDeviceName, requestedSampleRate, format, bufferFrameCapacity) {\n                pDeviceName >>>= 0;\n                var resolvedDeviceName = AL.CAPTURE_DEVICE_NAME;\n                if (pDeviceName !== 0) {\n                    resolvedDeviceName = UTF8ToString(pDeviceName);\n                    if (resolvedDeviceName !== AL.CAPTURE_DEVICE_NAME) {\n                        AL.alcErr = 40965;\n                        return 0\n                    }\n                }\n                if (bufferFrameCapacity < 0) {\n                    AL.alcErr = 40964;\n                    return 0\n                }\n                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\n                var has_getUserMedia = navigator.getUserMedia || navigator.mediaDevices && navigator.mediaDevices.getUserMedia;\n                if (!has_getUserMedia) {\n                    AL.alcErr = 40965;\n                    return 0\n                }\n                var AudioContext = window.AudioContext || window.webkitAudioContext;\n                if (!AL.sharedCaptureAudioCtx) {\n                    try {\n                        AL.sharedCaptureAudioCtx = new AudioContext\n                    } catch (e) {\n                        AL.alcErr = 40965;\n                        return 0\n                    }\n                }\n                autoResumeAudioContext(AL.sharedCaptureAudioCtx);\n                var outputChannelCount;\n                switch (format) {\n                    case 65552:\n                    case 4353:\n                    case 4352:\n                        outputChannelCount = 1;\n                        break;\n                    case 65553:\n                    case 4355:\n                    case 4354:\n                        outputChannelCount = 2;\n                        break;\n                    default:\n                        AL.alcErr = 40964;\n                        return 0\n                }\n\n                function newF32Array(cap) {\n                    return new Float32Array(cap)\n                }\n\n                function newI16Array(cap) {\n                    return new Int16Array(cap)\n                }\n\n                function newU8Array(cap) {\n                    return new Uint8Array(cap)\n                }\n                var requestedSampleType;\n                var newSampleArray;\n                switch (format) {\n                    case 65552:\n                    case 65553:\n                        requestedSampleType = \"f32\";\n                        newSampleArray = newF32Array;\n                        break;\n                    case 4353:\n                    case 4355:\n                        requestedSampleType = \"i16\";\n                        newSampleArray = newI16Array;\n                        break;\n                    case 4352:\n                    case 4354:\n                        requestedSampleType = \"u8\";\n                        newSampleArray = newU8Array;\n                        break\n                }\n                var buffers = [];\n                try {\n                    for (var chan = 0; chan < outputChannelCount; ++chan) {\n                        buffers[chan] = newSampleArray(bufferFrameCapacity)\n                    }\n                } catch (e) {\n                    AL.alcErr = 40965;\n                    return 0\n                }\n                var newCapture = {\n                    audioCtx: AL.sharedCaptureAudioCtx,\n                    deviceName: resolvedDeviceName,\n                    requestedSampleRate,\n                    requestedSampleType,\n                    outputChannelCount,\n                    inputChannelCount: null,\n                    mediaStreamError: null,\n                    mediaStreamSourceNode: null,\n                    mediaStream: null,\n                    mergerNode: null,\n                    splitterNode: null,\n                    scriptProcessorNode: null,\n                    isCapturing: false,\n                    buffers,\n                    get bufferFrameCapacity() {\n                        return buffers[0].length\n                    },\n                    capturePlayhead: 0,\n                    captureReadhead: 0,\n                    capturedFrameCount: 0\n                };\n                var onError = mediaStreamError => {\n                    newCapture.mediaStreamError = mediaStreamError\n                };\n                var onSuccess = mediaStream => {\n                    newCapture.mediaStreamSourceNode = newCapture.audioCtx.createMediaStreamSource(mediaStream);\n                    newCapture.mediaStream = mediaStream;\n                    var inputChannelCount = 1;\n                    switch (newCapture.mediaStreamSourceNode.channelCountMode) {\n                        case \"max\":\n                            inputChannelCount = outputChannelCount;\n                            break;\n                        case \"clamped-max\":\n                            inputChannelCount = Math.min(outputChannelCount, newCapture.mediaStreamSourceNode.channelCount);\n                            break;\n                        case \"explicit\":\n                            inputChannelCount = newCapture.mediaStreamSourceNode.channelCount;\n                            break\n                    }\n                    newCapture.inputChannelCount = inputChannelCount;\n                    var processorFrameCount = 512;\n                    newCapture.scriptProcessorNode = newCapture.audioCtx.createScriptProcessor(processorFrameCount, inputChannelCount, outputChannelCount);\n                    if (inputChannelCount > outputChannelCount) {\n                        newCapture.mergerNode = newCapture.audioCtx.createChannelMerger(inputChannelCount);\n                        newCapture.mediaStreamSourceNode.connect(newCapture.mergerNode);\n                        newCapture.mergerNode.connect(newCapture.scriptProcessorNode)\n                    } else if (inputChannelCount < outputChannelCount) {\n                        newCapture.splitterNode = newCapture.audioCtx.createChannelSplitter(outputChannelCount);\n                        newCapture.mediaStreamSourceNode.connect(newCapture.splitterNode);\n                        newCapture.splitterNode.connect(newCapture.scriptProcessorNode)\n                    } else {\n                        newCapture.mediaStreamSourceNode.connect(newCapture.scriptProcessorNode)\n                    }\n                    newCapture.scriptProcessorNode.connect(newCapture.audioCtx.destination);\n                    newCapture.scriptProcessorNode.onaudioprocess = audioProcessingEvent => {\n                        if (!newCapture.isCapturing) {\n                            return\n                        }\n                        var c = newCapture;\n                        var srcBuf = audioProcessingEvent.inputBuffer;\n                        switch (format) {\n                            case 65552:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i]\n                                }\n                                break;\n                            case 65553:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i];\n                                    c.buffers[1][wi] = channel1[i]\n                                }\n                                break;\n                            case 4353:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i] * 32767\n                                }\n                                break;\n                            case 4355:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i] * 32767;\n                                    c.buffers[1][wi] = channel1[i] * 32767\n                                }\n                                break;\n                            case 4352:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = (channel0[i] + 1) * 127\n                                }\n                                break;\n                            case 4354:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = (channel0[i] + 1) * 127;\n                                    c.buffers[1][wi] = (channel1[i] + 1) * 127\n                                }\n                                break\n                        }\n                        c.capturePlayhead += srcBuf.length;\n                        c.capturePlayhead %= c.bufferFrameCapacity;\n                        c.capturedFrameCount += srcBuf.length;\n                        c.capturedFrameCount = Math.min(c.capturedFrameCount, c.bufferFrameCapacity)\n                    }\n                };\n                if (navigator.mediaDevices?.getUserMedia) {\n                    navigator.mediaDevices.getUserMedia({\n                        audio: true\n                    }).then(onSuccess).catch(onError)\n                } else {\n                    navigator.getUserMedia({\n                        audio: true\n                    }, onSuccess, onError)\n                }\n                var id = AL.newId();\n                AL.captures[id] = newCapture;\n                return id\n            }\n            _alcCaptureOpenDevice.sig = \"ppiii\";\n\n            function _alcCaptureSamples(deviceId, pFrames, requestedFrameCount) {\n                deviceId >>>= 0;\n                pFrames >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureSamples\");\n                if (!c) return;\n                var dstfreq = c.requestedSampleRate;\n                var srcfreq = c.audioCtx.sampleRate;\n                var fratio = srcfreq / dstfreq;\n                if (requestedFrameCount < 0 || requestedFrameCount > c.capturedFrameCount / fratio) {\n                    AL.alcErr = 40964;\n                    return\n                }\n\n                function setF32Sample(i, sample) {\n                    HEAPF32[pFrames + 4 * i >>> 2 >>> 0] = sample\n                }\n\n                function setI16Sample(i, sample) {\n                    HEAP16[pFrames + 2 * i >>> 1 >>> 0] = sample\n                }\n\n                function setU8Sample(i, sample) {\n                    HEAP8[pFrames + i >>> 0] = sample\n                }\n                var setSample;\n                switch (c.requestedSampleType) {\n                    case \"f32\":\n                        setSample = setF32Sample;\n                        break;\n                    case \"i16\":\n                        setSample = setI16Sample;\n                        break;\n                    case \"u8\":\n                        setSample = setU8Sample;\n                        break;\n                    default:\n                        return\n                }\n                if (Math.floor(fratio) == fratio) {\n                    for (var i = 0, frame_i = 0; frame_i < requestedFrameCount; ++frame_i) {\n                        for (var chan = 0; chan < c.buffers.length; ++chan, ++i) {\n                            setSample(i, c.buffers[chan][c.captureReadhead])\n                        }\n                        c.captureReadhead = (fratio + c.captureReadhead) % c.bufferFrameCapacity\n                    }\n                } else {\n                    for (var i = 0, frame_i = 0; frame_i < requestedFrameCount; ++frame_i) {\n                        var lefti = Math.floor(c.captureReadhead);\n                        var righti = Math.ceil(c.captureReadhead);\n                        var d = c.captureReadhead - lefti;\n                        for (var chan = 0; chan < c.buffers.length; ++chan, ++i) {\n                            var lefts = c.buffers[chan][lefti];\n                            var rights = c.buffers[chan][righti];\n                            setSample(i, (1 - d) * lefts + d * rights)\n                        }\n                        c.captureReadhead = (c.captureReadhead + fratio) % c.bufferFrameCapacity\n                    }\n                }\n                c.capturedFrameCount = 0\n            }\n            _alcCaptureSamples.sig = \"vppi\";\n\n            function _alcCaptureStart(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureStart\");\n                if (!c) return;\n                if (c.isCapturing) {\n                    return\n                }\n                c.isCapturing = true;\n                c.capturedFrameCount = 0;\n                c.capturePlayhead = 0\n            }\n            _alcCaptureStart.sig = \"vp\";\n\n            function _alcCaptureStop(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureStop\");\n                if (!c) return;\n                c.isCapturing = false\n            }\n            _alcCaptureStop.sig = \"vp\";\n\n            function _alcCloseDevice(deviceId) {\n                deviceId >>>= 0;\n                if (!(deviceId in AL.deviceRefCounts) || AL.deviceRefCounts[deviceId] > 0) {\n                    return 0\n                }\n                delete AL.deviceRefCounts[deviceId];\n                AL.freeIds.push(deviceId);\n                return 1\n            }\n            _alcCloseDevice.sig = \"ip\";\n\n            function _alcCreateContext(deviceId, pAttrList) {\n                deviceId >>>= 0;\n                pAttrList >>>= 0;\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                var options = null;\n                var attrs = [];\n                var hrtf = null;\n                pAttrList >>= 2;\n                if (pAttrList) {\n                    var attr = 0;\n                    var val = 0;\n                    while (true) {\n                        attr = HEAP32[pAttrList++ >>> 0];\n                        attrs.push(attr);\n                        if (attr === 0) {\n                            break\n                        }\n                        val = HEAP32[pAttrList++ >>> 0];\n                        attrs.push(val);\n                        switch (attr) {\n                            case 4103:\n                                if (!options) {\n                                    options = {}\n                                }\n                                options.sampleRate = val;\n                                break;\n                            case 4112:\n                            case 4113:\n                                break;\n                            case 6546:\n                                switch (val) {\n                                    case 0:\n                                        hrtf = false;\n                                        break;\n                                    case 1:\n                                        hrtf = true;\n                                        break;\n                                    case 2:\n                                        break;\n                                    default:\n                                        AL.alcErr = 40964;\n                                        return 0\n                                }\n                                break;\n                            case 6550:\n                                if (val !== 0) {\n                                    AL.alcErr = 40964;\n                                    return 0\n                                }\n                                break;\n                            default:\n                                AL.alcErr = 40964;\n                                return 0\n                        }\n                    }\n                }\n                var AudioContext = window.AudioContext || window.webkitAudioContext;\n                var ac = null;\n                try {\n                    if (options) {\n                        ac = new AudioContext(options)\n                    } else {\n                        ac = new AudioContext\n                    }\n                } catch (e) {\n                    if (e.name === \"NotSupportedError\") {\n                        AL.alcErr = 40964\n                    } else {\n                        AL.alcErr = 40961\n                    }\n                    return 0\n                }\n                autoResumeAudioContext(ac);\n                if (typeof ac.createGain == \"undefined\") {\n                    ac.createGain = ac.createGainNode\n                }\n                var gain = ac.createGain();\n                gain.connect(ac.destination);\n                var ctx = {\n                    deviceId,\n                    id: AL.newId(),\n                    attrs,\n                    audioCtx: ac,\n                    listener: {\n                        position: [0, 0, 0],\n                        velocity: [0, 0, 0],\n                        direction: [0, 0, 0],\n                        up: [0, 0, 0]\n                    },\n                    sources: [],\n                    interval: setInterval(() => AL.scheduleContextAudio(ctx), AL.QUEUE_INTERVAL),\n                    gain,\n                    distanceModel: 53250,\n                    speedOfSound: 343.3,\n                    dopplerFactor: 1,\n                    sourceDistanceModel: false,\n                    hrtf: hrtf || false,\n                    _err: 0,\n                    get err() {\n                        return this._err\n                    },\n                    set err(val) {\n                        if (this._err === 0 || val === 0) {\n                            this._err = val\n                        }\n                    }\n                };\n                AL.deviceRefCounts[deviceId]++;\n                AL.contexts[ctx.id] = ctx;\n                if (hrtf !== null) {\n                    for (var ctxId in AL.contexts) {\n                        var c = AL.contexts[ctxId];\n                        if (c.deviceId === deviceId) {\n                            c.hrtf = hrtf;\n                            AL.updateContextGlobal(c)\n                        }\n                    }\n                }\n                return ctx.id\n            }\n            _alcCreateContext.sig = \"ppp\";\n\n            function _alcDestroyContext(contextId) {\n                contextId >>>= 0;\n                var ctx = AL.contexts[contextId];\n                if (AL.currentCtx === ctx) {\n                    AL.alcErr = 40962;\n                    return\n                }\n                if (AL.contexts[contextId].interval) {\n                    clearInterval(AL.contexts[contextId].interval)\n                }\n                AL.deviceRefCounts[ctx.deviceId]--;\n                delete AL.contexts[contextId];\n                AL.freeIds.push(contextId)\n            }\n            _alcDestroyContext.sig = \"vp\";\n\n            function _alcGetContextsDevice(contextId) {\n                contextId >>>= 0;\n                if (contextId in AL.contexts) {\n                    return AL.contexts[contextId].deviceId\n                }\n                return 0\n            }\n            _alcGetContextsDevice.sig = \"pp\";\n\n            function _alcGetCurrentContext() {\n                if (AL.currentCtx !== null) {\n                    return AL.currentCtx.id\n                }\n                return 0\n            }\n            _alcGetCurrentContext.sig = \"p\";\n\n            function _alcGetEnumValue(deviceId, pEnumName) {\n                deviceId >>>= 0;\n                pEnumName >>>= 0;\n                if (deviceId !== 0 && !(deviceId in AL.deviceRefCounts)) {\n                    return 0\n                } else if (!pEnumName) {\n                    AL.alcErr = 40964;\n                    return 0\n                }\n                var name = UTF8ToString(pEnumName);\n                switch (name) {\n                    case \"ALC_NO_ERROR\":\n                        return 0;\n                    case \"ALC_INVALID_DEVICE\":\n                        return 40961;\n                    case \"ALC_INVALID_CONTEXT\":\n                        return 40962;\n                    case \"ALC_INVALID_ENUM\":\n                        return 40963;\n                    case \"ALC_INVALID_VALUE\":\n                        return 40964;\n                    case \"ALC_OUT_OF_MEMORY\":\n                        return 40965;\n                    case \"ALC_MAJOR_VERSION\":\n                        return 4096;\n                    case \"ALC_MINOR_VERSION\":\n                        return 4097;\n                    case \"ALC_ATTRIBUTES_SIZE\":\n                        return 4098;\n                    case \"ALC_ALL_ATTRIBUTES\":\n                        return 4099;\n                    case \"ALC_DEFAULT_DEVICE_SPECIFIER\":\n                        return 4100;\n                    case \"ALC_DEVICE_SPECIFIER\":\n                        return 4101;\n                    case \"ALC_EXTENSIONS\":\n                        return 4102;\n                    case \"ALC_FREQUENCY\":\n                        return 4103;\n                    case \"ALC_REFRESH\":\n                        return 4104;\n                    case \"ALC_SYNC\":\n                        return 4105;\n                    case \"ALC_MONO_SOURCES\":\n                        return 4112;\n                    case \"ALC_STEREO_SOURCES\":\n                        return 4113;\n                    case \"ALC_CAPTURE_DEVICE_SPECIFIER\":\n                        return 784;\n                    case \"ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER\":\n                        return 785;\n                    case \"ALC_CAPTURE_SAMPLES\":\n                        return 786;\n                    case \"ALC_HRTF_SOFT\":\n                        return 6546;\n                    case \"ALC_HRTF_ID_SOFT\":\n                        return 6550;\n                    case \"ALC_DONT_CARE_SOFT\":\n                        return 2;\n                    case \"ALC_HRTF_STATUS_SOFT\":\n                        return 6547;\n                    case \"ALC_NUM_HRTF_SPECIFIERS_SOFT\":\n                        return 6548;\n                    case \"ALC_HRTF_SPECIFIER_SOFT\":\n                        return 6549;\n                    case \"ALC_HRTF_DISABLED_SOFT\":\n                        return 0;\n                    case \"ALC_HRTF_ENABLED_SOFT\":\n                        return 1;\n                    case \"ALC_HRTF_DENIED_SOFT\":\n                        return 2;\n                    case \"ALC_HRTF_REQUIRED_SOFT\":\n                        return 3;\n                    case \"ALC_HRTF_HEADPHONES_DETECTED_SOFT\":\n                        return 4;\n                    case \"ALC_HRTF_UNSUPPORTED_FORMAT_SOFT\":\n                        return 5;\n                    default:\n                        AL.alcErr = 40964;\n                        return 0\n                }\n            }\n            _alcGetEnumValue.sig = \"ipp\";\n\n            function _alcGetError(deviceId) {\n                deviceId >>>= 0;\n                var err = AL.alcErr;\n                AL.alcErr = 0;\n                return err\n            }\n            _alcGetError.sig = \"ip\";\n\n            function _alcGetIntegerv(deviceId, param, size, pValues) {\n                deviceId >>>= 0;\n                pValues >>>= 0;\n                if (size === 0 || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 4096:\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 4097:\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 4098:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = AL.currentCtx.attrs.length;\n                        break;\n                    case 4099:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        for (var i = 0; i < AL.currentCtx.attrs.length; i++) {\n                            HEAP32[pValues + i * 4 >>> 2 >>> 0] = AL.currentCtx.attrs[i]\n                        }\n                        break;\n                    case 4103:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = AL.currentCtx.audioCtx.sampleRate;\n                        break;\n                    case 4112:\n                    case 4113:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 2147483647;\n                        break;\n                    case 6546:\n                    case 6547:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        var hrtfStatus = 0;\n                        for (var ctxId in AL.contexts) {\n                            var ctx = AL.contexts[ctxId];\n                            if (ctx.deviceId === deviceId) {\n                                hrtfStatus = ctx.hrtf ? 1 : 0\n                            }\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = hrtfStatus;\n                        break;\n                    case 6548:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 131075:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                    case 786:\n                        var c = AL.requireValidCaptureDevice(deviceId, \"alcGetIntegerv\");\n                        if (!c) {\n                            return\n                        }\n                        var n = c.capturedFrameCount;\n                        var dstfreq = c.requestedSampleRate;\n                        var srcfreq = c.audioCtx.sampleRate;\n                        var nsamples = Math.floor(n * (dstfreq / srcfreq));\n                        HEAP32[pValues >>> 2 >>> 0] = nsamples;\n                        break;\n                    default:\n                        AL.alcErr = 40963;\n                        return\n                }\n            }\n            _alcGetIntegerv.sig = \"vpiip\";\n\n            function _alcGetString(deviceId, param) {\n                deviceId >>>= 0;\n                if (AL.alcStringCache[param]) {\n                    return AL.alcStringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 0:\n                        ret = \"No Error\";\n                        break;\n                    case 40961:\n                        ret = \"Invalid Device\";\n                        break;\n                    case 40962:\n                        ret = \"Invalid Context\";\n                        break;\n                    case 40963:\n                        ret = \"Invalid Enum\";\n                        break;\n                    case 40964:\n                        ret = \"Invalid Value\";\n                        break;\n                    case 40965:\n                        ret = \"Out of Memory\";\n                        break;\n                    case 4100:\n                        if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                            ret = AL.DEVICE_NAME\n                        } else {\n                            return 0\n                        }\n                        break;\n                    case 4101:\n                        if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                            ret = AL.DEVICE_NAME + \"\\0\"\n                        } else {\n                            ret = \"\\0\"\n                        }\n                        break;\n                    case 785:\n                        ret = AL.CAPTURE_DEVICE_NAME;\n                        break;\n                    case 784:\n                        if (deviceId === 0) {\n                            ret = AL.CAPTURE_DEVICE_NAME + \"\\0\"\n                        } else {\n                            var c = AL.requireValidCaptureDevice(deviceId, \"alcGetString\");\n                            if (!c) {\n                                return 0\n                            }\n                            ret = c.deviceName\n                        }\n                        break;\n                    case 4102:\n                        if (!deviceId) {\n                            AL.alcErr = 40961;\n                            return 0\n                        }\n                        ret = Object.keys(AL.ALC_EXTENSIONS).join(\" \");\n                        break;\n                    default:\n                        AL.alcErr = 40963;\n                        return 0\n                }\n                ret = stringToNewUTF8(ret);\n                AL.alcStringCache[param] = ret;\n                return ret\n            }\n            _alcGetString.sig = \"ppi\";\n\n            function _alcIsExtensionPresent(deviceId, pExtName) {\n                deviceId >>>= 0;\n                pExtName >>>= 0;\n                var name = UTF8ToString(pExtName);\n                return AL.ALC_EXTENSIONS[name] ? 1 : 0\n            }\n            _alcIsExtensionPresent.sig = \"ipp\";\n\n            function _alcMakeContextCurrent(contextId) {\n                contextId >>>= 0;\n                if (contextId === 0) {\n                    AL.currentCtx = null\n                } else {\n                    AL.currentCtx = AL.contexts[contextId]\n                }\n                return 1\n            }\n            _alcMakeContextCurrent.sig = \"ip\";\n\n            function _alcOpenDevice(pDeviceName) {\n                pDeviceName >>>= 0;\n                if (pDeviceName) {\n                    var name = UTF8ToString(pDeviceName);\n                    if (name !== AL.DEVICE_NAME) {\n                        return 0\n                    }\n                }\n                if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                    var deviceId = AL.newId();\n                    AL.deviceRefCounts[deviceId] = 0;\n                    return deviceId\n                }\n                return 0\n            }\n            _alcOpenDevice.sig = \"pp\";\n\n            function _alcProcessContext(contextId) {\n                contextId >>>= 0\n            }\n            _alcProcessContext.sig = \"vp\";\n\n            function _alcSuspendContext(contextId) {\n                contextId >>>= 0\n            }\n            _alcSuspendContext.sig = \"vp\";\n\n            function _duckdb_web_fs_directory_create(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.createDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_create.sig = \"vpi\";\n\n            function _duckdb_web_fs_directory_exists(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.checkDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_exists.sig = \"ipi\";\n\n            function _duckdb_web_fs_directory_list_files(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.listDirectoryEntries(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_list_files.sig = \"ipi\";\n\n            function _duckdb_web_fs_directory_remove(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.removeDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_remove.sig = \"vpi\";\n\n            function _duckdb_web_fs_file_close(fileId) {\n                return globalThis.DUCKDB_RUNTIME.closeFile(Module, fileId)\n            }\n            _duckdb_web_fs_file_close.sig = \"vi\";\n\n            function _duckdb_web_fs_file_drop_file(fileName, fileNameLen) {\n                fileName >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.dropFile(Module, fileName, fileNameLen)\n            }\n            _duckdb_web_fs_file_drop_file.sig = \"vpi\";\n\n            function _duckdb_web_fs_file_exists(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.checkFile(Module, path, pathLen)\n            }\n            _duckdb_web_fs_file_exists.sig = \"ipi\";\n\n            function _duckdb_web_fs_file_move(from, fromLen, to, toLen) {\n                from >>>= 0;\n                to >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.moveFile(Module, from, fromLen, to, toLen)\n            }\n            _duckdb_web_fs_file_move.sig = \"vpipi\";\n\n            function _duckdb_web_fs_file_open(fileId, flags) {\n                return globalThis.DUCKDB_RUNTIME.openFile(Module, fileId, flags)\n            }\n            _duckdb_web_fs_file_open.sig = \"pii\";\n\n            function _duckdb_web_fs_file_read(fileId, buf, size, location) {\n                buf >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.readFile(Module, fileId, buf, size, location)\n            }\n            _duckdb_web_fs_file_read.sig = \"iipid\";\n\n            function _duckdb_web_fs_file_truncate(fileId, newSize) {\n                return globalThis.DUCKDB_RUNTIME.truncateFile(Module, fileId, newSize)\n            }\n            _duckdb_web_fs_file_truncate.sig = \"vid\";\n\n            function _duckdb_web_fs_file_write(fileId, buf, size, location) {\n                buf >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.writeFile(Module, fileId, buf, size, location)\n            }\n            _duckdb_web_fs_file_write.sig = \"iipid\";\n\n            function _duckdb_web_fs_get_default_data_protocol(Module) {\n                return globalThis.DUCKDB_RUNTIME.getDefaultDataProtocol(Module)\n            }\n            _duckdb_web_fs_get_default_data_protocol.sig = \"i\";\n\n            function _duckdb_web_fs_glob(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.glob(Module, path, pathLen)\n            }\n            _duckdb_web_fs_glob.sig = \"vpi\";\n\n            function _duckdb_web_test_platform_feature(feature) {\n                return globalThis.DUCKDB_RUNTIME.testPlatformFeature(Module, feature)\n            }\n            _duckdb_web_test_platform_feature.sig = \"ii\";\n\n            function _duckdb_web_udf_scalar_call(funcId, descPtr, descSize, ptrsPtr, ptrsSize, response) {\n                funcId >>>= 0;\n                descSize >>>= 0;\n                ptrsSize >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.callScalarUDF(Module, funcId, descPtr, descSize, ptrsPtr, ptrsSize, response)\n            }\n            _duckdb_web_udf_scalar_call.sig = \"vpipipi\";\n            var _emscripten_alcDevicePauseSOFT = deviceId => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return\n                }\n                if (AL.paused) {\n                    return\n                }\n                AL.paused = true;\n                for (var ctxId in AL.contexts) {\n                    var ctx = AL.contexts[ctxId];\n                    if (ctx.deviceId !== deviceId) {\n                        continue\n                    }\n                    ctx.audioCtx.suspend();\n                    clearInterval(ctx.interval);\n                    ctx.interval = null\n                }\n            };\n            _emscripten_alcDevicePauseSOFT.sig = \"vi\";\n            var _emscripten_alcDeviceResumeSOFT = deviceId => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return\n                }\n                if (!AL.paused) {\n                    return\n                }\n                AL.paused = false;\n                for (var ctxId in AL.contexts) {\n                    var ctx = AL.contexts[ctxId];\n                    if (ctx.deviceId !== deviceId) {\n                        continue\n                    }\n                    ctx.interval = setInterval(() => AL.scheduleContextAudio(ctx), AL.QUEUE_INTERVAL);\n                    ctx.audioCtx.resume()\n                }\n            };\n            _emscripten_alcDeviceResumeSOFT.sig = \"vi\";\n            var _emscripten_alcGetStringiSOFT = (deviceId, param, index) => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                if (AL.alcStringCache[param]) {\n                    return AL.alcStringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 6549:\n                        if (index === 0) {\n                            ret = \"Web Audio HRTF\"\n                        } else {\n                            AL.alcErr = 40964;\n                            return 0\n                        }\n                        break;\n                    default:\n                        if (index !== 0) {\n                            AL.alcErr = 40963;\n                            return 0\n                        }\n                        return _alcGetString(deviceId, param)\n                }\n                ret = stringToNewUTF8(ret);\n                AL.alcStringCache[param] = ret;\n                return ret\n            };\n            _emscripten_alcGetStringiSOFT.sig = \"iiii\";\n            var _emscripten_alcResetDeviceSOFT = (deviceId, pAttrList) => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                var hrtf = null;\n                pAttrList >>= 2;\n                if (pAttrList) {\n                    var attr = 0;\n                    var val = 0;\n                    while (true) {\n                        attr = HEAP32[pAttrList++ >>> 0];\n                        if (attr === 0) {\n                            break\n                        }\n                        val = HEAP32[pAttrList++ >>> 0];\n                        switch (attr) {\n                            case 6546:\n                                if (val === 1) {\n                                    hrtf = true\n                                } else if (val === 0) {\n                                    hrtf = false\n                                }\n                                break\n                        }\n                    }\n                }\n                if (hrtf !== null) {\n                    for (var ctxId in AL.contexts) {\n                        var ctx = AL.contexts[ctxId];\n                        if (ctx.deviceId === deviceId) {\n                            ctx.hrtf = hrtf;\n                            AL.updateContextGlobal(ctx)\n                        }\n                    }\n                }\n                return 1\n            };\n            _emscripten_alcResetDeviceSOFT.sig = \"iii\";\n            var readEmAsmArgsArray = [];\n            var readEmAsmArgs = (sigPtr, buf) => {\n                readEmAsmArgsArray.length = 0;\n                var ch;\n                while (ch = HEAPU8[sigPtr++ >>> 0]) {\n                    var wide = ch != 105;\n                    wide &= ch != 112;\n                    buf += wide && buf % 8 ? 4 : 0;\n                    readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >>> 2 >>> 0] : ch == 105 ? HEAP32[buf >>> 2 >>> 0] : HEAPF64[buf >>> 3 >>> 0]);\n                    buf += wide ? 8 : 4\n                }\n                return readEmAsmArgsArray\n            };\n            var runEmAsmFunction = (code, sigPtr, argbuf) => {\n                var args = readEmAsmArgs(sigPtr, argbuf);\n                return ASM_CONSTS[code](...args)\n            };\n\n            function _emscripten_asm_const_int(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_int.sig = \"ippp\";\n\n            function _emscripten_asm_const_ptr(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_ptr.sig = \"pppp\";\n\n            function _emscripten_console_error(str) {\n                str >>>= 0;\n                console.error(UTF8ToString(str))\n            }\n            _emscripten_console_error.sig = \"vp\";\n\n            function _emscripten_console_log(str) {\n                str >>>= 0;\n                console.log(UTF8ToString(str))\n            }\n            _emscripten_console_log.sig = \"vp\";\n\n            function _emscripten_console_trace(str) {\n                str >>>= 0;\n                console.trace(UTF8ToString(str))\n            }\n            _emscripten_console_trace.sig = \"vp\";\n\n            function _emscripten_console_warn(str) {\n                str >>>= 0;\n                console.warn(UTF8ToString(str))\n            }\n            _emscripten_console_warn.sig = \"vp\";\n            var _emscripten_date_now = () => Date.now();\n            _emscripten_date_now.sig = \"d\";\n\n            function _emscripten_err(str) {\n                str >>>= 0;\n                return err(UTF8ToString(str))\n            }\n            _emscripten_err.sig = \"vp\";\n            var getHeapMax = () => 4294901760;\n\n            function _emscripten_get_heap_max() {\n                return getHeapMax()\n            }\n            _emscripten_get_heap_max.sig = \"p\";\n            var _emscripten_get_now_res = () => {\n                if (ENVIRONMENT_IS_NODE) {\n                    return 1\n                }\n                return 1e3\n            };\n            _emscripten_get_now_res.sig = \"d\";\n            var GLctx;\n            var webgl_enable_ANGLE_instanced_arrays = ctx => {\n                var ext = ctx.getExtension(\"ANGLE_instanced_arrays\");\n                if (ext) {\n                    ctx[\"vertexAttribDivisor\"] = (index, divisor) => ext[\"vertexAttribDivisorANGLE\"](index, divisor);\n                    ctx[\"drawArraysInstanced\"] = (mode, first, count, primcount) => ext[\"drawArraysInstancedANGLE\"](mode, first, count, primcount);\n                    ctx[\"drawElementsInstanced\"] = (mode, count, type, indices, primcount) => ext[\"drawElementsInstancedANGLE\"](mode, count, type, indices, primcount);\n                    return 1\n                }\n            };\n            var webgl_enable_OES_vertex_array_object = ctx => {\n                var ext = ctx.getExtension(\"OES_vertex_array_object\");\n                if (ext) {\n                    ctx[\"createVertexArray\"] = () => ext[\"createVertexArrayOES\"]();\n                    ctx[\"deleteVertexArray\"] = vao => ext[\"deleteVertexArrayOES\"](vao);\n                    ctx[\"bindVertexArray\"] = vao => ext[\"bindVertexArrayOES\"](vao);\n                    ctx[\"isVertexArray\"] = vao => ext[\"isVertexArrayOES\"](vao);\n                    return 1\n                }\n            };\n            var webgl_enable_WEBGL_draw_buffers = ctx => {\n                var ext = ctx.getExtension(\"WEBGL_draw_buffers\");\n                if (ext) {\n                    ctx[\"drawBuffers\"] = (n, bufs) => ext[\"drawBuffersWEBGL\"](n, bufs);\n                    return 1\n                }\n            };\n            var webgl_enable_EXT_polygon_offset_clamp = ctx => !!(ctx.extPolygonOffsetClamp = ctx.getExtension(\"EXT_polygon_offset_clamp\"));\n            var webgl_enable_EXT_clip_control = ctx => !!(ctx.extClipControl = ctx.getExtension(\"EXT_clip_control\"));\n            var webgl_enable_WEBGL_polygon_mode = ctx => !!(ctx.webglPolygonMode = ctx.getExtension(\"WEBGL_polygon_mode\"));\n            var webgl_enable_WEBGL_multi_draw = ctx => !!(ctx.multiDrawWebgl = ctx.getExtension(\"WEBGL_multi_draw\"));\n            var getEmscriptenSupportedExtensions = ctx => {\n                var supportedExtensions = [\"ANGLE_instanced_arrays\", \"EXT_blend_minmax\", \"EXT_disjoint_timer_query\", \"EXT_frag_depth\", \"EXT_shader_texture_lod\", \"EXT_sRGB\", \"OES_element_index_uint\", \"OES_fbo_render_mipmap\", \"OES_standard_derivatives\", \"OES_texture_float\", \"OES_texture_half_float\", \"OES_texture_half_float_linear\", \"OES_vertex_array_object\", \"WEBGL_color_buffer_float\", \"WEBGL_depth_texture\", \"WEBGL_draw_buffers\", \"EXT_clip_control\", \"EXT_color_buffer_half_float\", \"EXT_depth_clamp\", \"EXT_float_blend\", \"EXT_polygon_offset_clamp\", \"EXT_texture_compression_bptc\", \"EXT_texture_compression_rgtc\", \"EXT_texture_filter_anisotropic\", \"KHR_parallel_shader_compile\", \"OES_texture_float_linear\", \"WEBGL_blend_func_extended\", \"WEBGL_compressed_texture_astc\", \"WEBGL_compressed_texture_etc\", \"WEBGL_compressed_texture_etc1\", \"WEBGL_compressed_texture_s3tc\", \"WEBGL_compressed_texture_s3tc_srgb\", \"WEBGL_debug_renderer_info\", \"WEBGL_debug_shaders\", \"WEBGL_lose_context\", \"WEBGL_multi_draw\", \"WEBGL_polygon_mode\"];\n                return (ctx.getSupportedExtensions() || []).filter(ext => supportedExtensions.includes(ext))\n            };\n            var GL = {\n                counter: 1,\n                buffers: [],\n                programs: [],\n                framebuffers: [],\n                renderbuffers: [],\n                textures: [],\n                shaders: [],\n                vaos: [],\n                contexts: [],\n                offscreenCanvases: {},\n                queries: [],\n                stringCache: {},\n                unpackAlignment: 4,\n                unpackRowLength: 0,\n                recordError: errorCode => {\n                    if (!GL.lastError) {\n                        GL.lastError = errorCode\n                    }\n                },\n                getNewId: table => {\n                    var ret = GL.counter++;\n                    for (var i = table.length; i < ret; i++) {\n                        table[i] = null\n                    }\n                    return ret\n                },\n                genObject: (n, buffers, createFunction, objectTable) => {\n                    for (var i = 0; i < n; i++) {\n                        var buffer = GLctx[createFunction]();\n                        var id = buffer && GL.getNewId(objectTable);\n                        if (buffer) {\n                            buffer.name = id;\n                            objectTable[id] = buffer\n                        } else {\n                            GL.recordError(1282)\n                        }\n                        HEAP32[buffers + i * 4 >>> 2 >>> 0] = id\n                    }\n                },\n                getSource: (shader, count, string, length) => {\n                    var source = \"\";\n                    for (var i = 0; i < count; ++i) {\n                        var len = length ? HEAPU32[length + i * 4 >>> 2 >>> 0] : undefined;\n                        source += UTF8ToString(HEAPU32[string + i * 4 >>> 2 >>> 0], len)\n                    }\n                    return source\n                },\n                createContext: (canvas, webGLContextAttributes) => {\n                    if (!canvas.getContextSafariWebGL2Fixed) {\n                        canvas.getContextSafariWebGL2Fixed = canvas.getContext;\n\n                        function fixedGetContext(ver, attrs) {\n                            var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs);\n                            return ver == \"webgl\" == gl instanceof WebGLRenderingContext ? gl : null\n                        }\n                        canvas.getContext = fixedGetContext\n                    }\n                    var ctx = canvas.getContext(\"webgl\", webGLContextAttributes);\n                    if (!ctx) return 0;\n                    var handle = GL.registerContext(ctx, webGLContextAttributes);\n                    return handle\n                },\n                registerContext: (ctx, webGLContextAttributes) => {\n                    var handle = GL.getNewId(GL.contexts);\n                    var context = {\n                        handle,\n                        attributes: webGLContextAttributes,\n                        version: webGLContextAttributes.majorVersion,\n                        GLctx: ctx\n                    };\n                    if (ctx.canvas) ctx.canvas.GLctxObject = context;\n                    GL.contexts[handle] = context;\n                    if (typeof webGLContextAttributes.enableExtensionsByDefault == \"undefined\" || webGLContextAttributes.enableExtensionsByDefault) {\n                        GL.initExtensions(context)\n                    }\n                    return handle\n                },\n                makeContextCurrent: contextHandle => {\n                    GL.currentContext = GL.contexts[contextHandle];\n                    Module.ctx = GLctx = GL.currentContext?.GLctx;\n                    return !(contextHandle && !GLctx)\n                },\n                getContext: contextHandle => GL.contexts[contextHandle],\n                deleteContext: contextHandle => {\n                    if (GL.currentContext === GL.contexts[contextHandle]) {\n                        GL.currentContext = null\n                    }\n                    if (typeof JSEvents == \"object\") {\n                        JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)\n                    }\n                    if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) {\n                        GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined\n                    }\n                    GL.contexts[contextHandle] = null\n                },\n                initExtensions: context => {\n                    context ||= GL.currentContext;\n                    if (context.initExtensionsDone) return;\n                    context.initExtensionsDone = true;\n                    var GLctx = context.GLctx;\n                    webgl_enable_WEBGL_multi_draw(GLctx);\n                    webgl_enable_EXT_polygon_offset_clamp(GLctx);\n                    webgl_enable_EXT_clip_control(GLctx);\n                    webgl_enable_WEBGL_polygon_mode(GLctx);\n                    webgl_enable_ANGLE_instanced_arrays(GLctx);\n                    webgl_enable_OES_vertex_array_object(GLctx);\n                    webgl_enable_WEBGL_draw_buffers(GLctx);\n                    {\n                        GLctx.disjointTimerQueryExt = GLctx.getExtension(\"EXT_disjoint_timer_query\")\n                    }\n                    getEmscriptenSupportedExtensions(GLctx).forEach(ext => {\n                        if (!ext.includes(\"lose_context\") && !ext.includes(\"debug\")) {\n                            GLctx.getExtension(ext)\n                        }\n                    })\n                }\n            };\n            var _glActiveTexture = x0 => GLctx.activeTexture(x0);\n            _glActiveTexture.sig = \"vi\";\n            var _emscripten_glActiveTexture = _glActiveTexture;\n            _emscripten_glActiveTexture.sig = \"vi\";\n            var _glAttachShader = (program, shader) => {\n                GLctx.attachShader(GL.programs[program], GL.shaders[shader])\n            };\n            _glAttachShader.sig = \"vii\";\n            var _emscripten_glAttachShader = _glAttachShader;\n            _emscripten_glAttachShader.sig = \"vii\";\n            var _glBeginQueryEXT = (target, id) => {\n                GLctx.disjointTimerQueryExt[\"beginQueryEXT\"](target, GL.queries[id])\n            };\n            _glBeginQueryEXT.sig = \"vii\";\n            var _emscripten_glBeginQueryEXT = _glBeginQueryEXT;\n\n            function _glBindAttribLocation(program, index, name) {\n                name >>>= 0;\n                GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name))\n            }\n            _glBindAttribLocation.sig = \"viip\";\n            var _emscripten_glBindAttribLocation = _glBindAttribLocation;\n            _emscripten_glBindAttribLocation.sig = \"viip\";\n            var _glBindBuffer = (target, buffer) => {\n                GLctx.bindBuffer(target, GL.buffers[buffer])\n            };\n            _glBindBuffer.sig = \"vii\";\n            var _emscripten_glBindBuffer = _glBindBuffer;\n            _emscripten_glBindBuffer.sig = \"vii\";\n            var _glBindFramebuffer = (target, framebuffer) => {\n                GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer])\n            };\n            _glBindFramebuffer.sig = \"vii\";\n            var _emscripten_glBindFramebuffer = _glBindFramebuffer;\n            _emscripten_glBindFramebuffer.sig = \"vii\";\n            var _glBindRenderbuffer = (target, renderbuffer) => {\n                GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer])\n            };\n            _glBindRenderbuffer.sig = \"vii\";\n            var _emscripten_glBindRenderbuffer = _glBindRenderbuffer;\n            _emscripten_glBindRenderbuffer.sig = \"vii\";\n            var _glBindTexture = (target, texture) => {\n                GLctx.bindTexture(target, GL.textures[texture])\n            };\n            _glBindTexture.sig = \"vii\";\n            var _emscripten_glBindTexture = _glBindTexture;\n            _emscripten_glBindTexture.sig = \"vii\";\n            var _glBindVertexArray = vao => {\n                GLctx.bindVertexArray(GL.vaos[vao])\n            };\n            _glBindVertexArray.sig = \"vi\";\n            var _glBindVertexArrayOES = _glBindVertexArray;\n            _glBindVertexArrayOES.sig = \"vi\";\n            var _emscripten_glBindVertexArrayOES = _glBindVertexArrayOES;\n            _emscripten_glBindVertexArrayOES.sig = \"vi\";\n            var _glBlendColor = (x0, x1, x2, x3) => GLctx.blendColor(x0, x1, x2, x3);\n            _glBlendColor.sig = \"vffff\";\n            var _emscripten_glBlendColor = _glBlendColor;\n            _emscripten_glBlendColor.sig = \"vffff\";\n            var _glBlendEquation = x0 => GLctx.blendEquation(x0);\n            _glBlendEquation.sig = \"vi\";\n            var _emscripten_glBlendEquation = _glBlendEquation;\n            _emscripten_glBlendEquation.sig = \"vi\";\n            var _glBlendEquationSeparate = (x0, x1) => GLctx.blendEquationSeparate(x0, x1);\n            _glBlendEquationSeparate.sig = \"vii\";\n            var _emscripten_glBlendEquationSeparate = _glBlendEquationSeparate;\n            _emscripten_glBlendEquationSeparate.sig = \"vii\";\n            var _glBlendFunc = (x0, x1) => GLctx.blendFunc(x0, x1);\n            _glBlendFunc.sig = \"vii\";\n            var _emscripten_glBlendFunc = _glBlendFunc;\n            _emscripten_glBlendFunc.sig = \"vii\";\n            var _glBlendFuncSeparate = (x0, x1, x2, x3) => GLctx.blendFuncSeparate(x0, x1, x2, x3);\n            _glBlendFuncSeparate.sig = \"viiii\";\n            var _emscripten_glBlendFuncSeparate = _glBlendFuncSeparate;\n            _emscripten_glBlendFuncSeparate.sig = \"viiii\";\n\n            function _glBufferData(target, size, data, usage) {\n                size >>>= 0;\n                data >>>= 0;\n                GLctx.bufferData(target, data ? HEAPU8.subarray(data >>> 0, data + size >>> 0) : size, usage)\n            }\n            _glBufferData.sig = \"vippi\";\n            var _emscripten_glBufferData = _glBufferData;\n            _emscripten_glBufferData.sig = \"vippi\";\n\n            function _glBufferSubData(target, offset, size, data) {\n                offset >>>= 0;\n                size >>>= 0;\n                data >>>= 0;\n                GLctx.bufferSubData(target, offset, HEAPU8.subarray(data >>> 0, data + size >>> 0))\n            }\n            _glBufferSubData.sig = \"vippp\";\n            var _emscripten_glBufferSubData = _glBufferSubData;\n            _emscripten_glBufferSubData.sig = \"vippp\";\n            var _glCheckFramebufferStatus = x0 => GLctx.checkFramebufferStatus(x0);\n            _glCheckFramebufferStatus.sig = \"ii\";\n            var _emscripten_glCheckFramebufferStatus = _glCheckFramebufferStatus;\n            _emscripten_glCheckFramebufferStatus.sig = \"ii\";\n            var _glClear = x0 => GLctx.clear(x0);\n            _glClear.sig = \"vi\";\n            var _emscripten_glClear = _glClear;\n            _emscripten_glClear.sig = \"vi\";\n            var _glClearColor = (x0, x1, x2, x3) => GLctx.clearColor(x0, x1, x2, x3);\n            _glClearColor.sig = \"vffff\";\n            var _emscripten_glClearColor = _glClearColor;\n            _emscripten_glClearColor.sig = \"vffff\";\n            var _glClearDepthf = x0 => GLctx.clearDepth(x0);\n            _glClearDepthf.sig = \"vf\";\n            var _emscripten_glClearDepthf = _glClearDepthf;\n            _emscripten_glClearDepthf.sig = \"vf\";\n            var _glClearStencil = x0 => GLctx.clearStencil(x0);\n            _glClearStencil.sig = \"vi\";\n            var _emscripten_glClearStencil = _glClearStencil;\n            _emscripten_glClearStencil.sig = \"vi\";\n            var _glClipControlEXT = (origin, depth) => {\n                GLctx.extClipControl[\"clipControlEXT\"](origin, depth)\n            };\n            _glClipControlEXT.sig = \"vii\";\n            var _emscripten_glClipControlEXT = _glClipControlEXT;\n            var _glColorMask = (red, green, blue, alpha) => {\n                GLctx.colorMask(!!red, !!green, !!blue, !!alpha)\n            };\n            _glColorMask.sig = \"viiii\";\n            var _emscripten_glColorMask = _glColorMask;\n            _emscripten_glColorMask.sig = \"viiii\";\n            var _glCompileShader = shader => {\n                GLctx.compileShader(GL.shaders[shader])\n            };\n            _glCompileShader.sig = \"vi\";\n            var _emscripten_glCompileShader = _glCompileShader;\n            _emscripten_glCompileShader.sig = \"vi\";\n\n            function _glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) {\n                data >>>= 0;\n                GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8.subarray(data >>> 0, data + imageSize >>> 0))\n            }\n            _glCompressedTexImage2D.sig = \"viiiiiiip\";\n            var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D;\n            _emscripten_glCompressedTexImage2D.sig = \"viiiiiiip\";\n\n            function _glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) {\n                data >>>= 0;\n                GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8.subarray(data >>> 0, data + imageSize >>> 0))\n            }\n            _glCompressedTexSubImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D;\n            _emscripten_glCompressedTexSubImage2D.sig = \"viiiiiiiip\";\n            var _glCopyTexImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n            _glCopyTexImage2D.sig = \"viiiiiiii\";\n            var _emscripten_glCopyTexImage2D = _glCopyTexImage2D;\n            _emscripten_glCopyTexImage2D.sig = \"viiiiiiii\";\n            var _glCopyTexSubImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n            _glCopyTexSubImage2D.sig = \"viiiiiiii\";\n            var _emscripten_glCopyTexSubImage2D = _glCopyTexSubImage2D;\n            _emscripten_glCopyTexSubImage2D.sig = \"viiiiiiii\";\n            var _glCreateProgram = () => {\n                var id = GL.getNewId(GL.programs);\n                var program = GLctx.createProgram();\n                program.name = id;\n                program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;\n                program.uniformIdCounter = 1;\n                GL.programs[id] = program;\n                return id\n            };\n            _glCreateProgram.sig = \"i\";\n            var _emscripten_glCreateProgram = _glCreateProgram;\n            _emscripten_glCreateProgram.sig = \"i\";\n            var _glCreateShader = shaderType => {\n                var id = GL.getNewId(GL.shaders);\n                GL.shaders[id] = GLctx.createShader(shaderType);\n                return id\n            };\n            _glCreateShader.sig = \"ii\";\n            var _emscripten_glCreateShader = _glCreateShader;\n            _emscripten_glCreateShader.sig = \"ii\";\n            var _glCullFace = x0 => GLctx.cullFace(x0);\n            _glCullFace.sig = \"vi\";\n            var _emscripten_glCullFace = _glCullFace;\n            _emscripten_glCullFace.sig = \"vi\";\n\n            function _glDeleteBuffers(n, buffers) {\n                buffers >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[buffers + i * 4 >>> 2 >>> 0];\n                    var buffer = GL.buffers[id];\n                    if (!buffer) continue;\n                    GLctx.deleteBuffer(buffer);\n                    buffer.name = 0;\n                    GL.buffers[id] = null\n                }\n            }\n            _glDeleteBuffers.sig = \"vip\";\n            var _emscripten_glDeleteBuffers = _glDeleteBuffers;\n            _emscripten_glDeleteBuffers.sig = \"vip\";\n\n            function _glDeleteFramebuffers(n, framebuffers) {\n                framebuffers >>>= 0;\n                for (var i = 0; i < n; ++i) {\n                    var id = HEAP32[framebuffers + i * 4 >>> 2 >>> 0];\n                    var framebuffer = GL.framebuffers[id];\n                    if (!framebuffer) continue;\n                    GLctx.deleteFramebuffer(framebuffer);\n                    framebuffer.name = 0;\n                    GL.framebuffers[id] = null\n                }\n            }\n            _glDeleteFramebuffers.sig = \"vip\";\n            var _emscripten_glDeleteFramebuffers = _glDeleteFramebuffers;\n            _emscripten_glDeleteFramebuffers.sig = \"vip\";\n            var _glDeleteProgram = id => {\n                if (!id) return;\n                var program = GL.programs[id];\n                if (!program) {\n                    GL.recordError(1281);\n                    return\n                }\n                GLctx.deleteProgram(program);\n                program.name = 0;\n                GL.programs[id] = null\n            };\n            _glDeleteProgram.sig = \"vi\";\n            var _emscripten_glDeleteProgram = _glDeleteProgram;\n            _emscripten_glDeleteProgram.sig = \"vi\";\n\n            function _glDeleteQueriesEXT(n, ids) {\n                ids >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[ids + i * 4 >>> 2 >>> 0];\n                    var query = GL.queries[id];\n                    if (!query) continue;\n                    GLctx.disjointTimerQueryExt[\"deleteQueryEXT\"](query);\n                    GL.queries[id] = null\n                }\n            }\n            _glDeleteQueriesEXT.sig = \"vip\";\n            var _emscripten_glDeleteQueriesEXT = _glDeleteQueriesEXT;\n\n            function _glDeleteRenderbuffers(n, renderbuffers) {\n                renderbuffers >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[renderbuffers + i * 4 >>> 2 >>> 0];\n                    var renderbuffer = GL.renderbuffers[id];\n                    if (!renderbuffer) continue;\n                    GLctx.deleteRenderbuffer(renderbuffer);\n                    renderbuffer.name = 0;\n                    GL.renderbuffers[id] = null\n                }\n            }\n            _glDeleteRenderbuffers.sig = \"vip\";\n            var _emscripten_glDeleteRenderbuffers = _glDeleteRenderbuffers;\n            _emscripten_glDeleteRenderbuffers.sig = \"vip\";\n            var _glDeleteShader = id => {\n                if (!id) return;\n                var shader = GL.shaders[id];\n                if (!shader) {\n                    GL.recordError(1281);\n                    return\n                }\n                GLctx.deleteShader(shader);\n                GL.shaders[id] = null\n            };\n            _glDeleteShader.sig = \"vi\";\n            var _emscripten_glDeleteShader = _glDeleteShader;\n            _emscripten_glDeleteShader.sig = \"vi\";\n\n            function _glDeleteTextures(n, textures) {\n                textures >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[textures + i * 4 >>> 2 >>> 0];\n                    var texture = GL.textures[id];\n                    if (!texture) continue;\n                    GLctx.deleteTexture(texture);\n                    texture.name = 0;\n                    GL.textures[id] = null\n                }\n            }\n            _glDeleteTextures.sig = \"vip\";\n            var _emscripten_glDeleteTextures = _glDeleteTextures;\n            _emscripten_glDeleteTextures.sig = \"vip\";\n\n            function _glDeleteVertexArrays(n, vaos) {\n                vaos >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[vaos + i * 4 >>> 2 >>> 0];\n                    GLctx.deleteVertexArray(GL.vaos[id]);\n                    GL.vaos[id] = null\n                }\n            }\n            _glDeleteVertexArrays.sig = \"vip\";\n            var _glDeleteVertexArraysOES = _glDeleteVertexArrays;\n            _glDeleteVertexArraysOES.sig = \"vip\";\n            var _emscripten_glDeleteVertexArraysOES = _glDeleteVertexArraysOES;\n            _emscripten_glDeleteVertexArraysOES.sig = \"vip\";\n            var _glDepthFunc = x0 => GLctx.depthFunc(x0);\n            _glDepthFunc.sig = \"vi\";\n            var _emscripten_glDepthFunc = _glDepthFunc;\n            _emscripten_glDepthFunc.sig = \"vi\";\n            var _glDepthMask = flag => {\n                GLctx.depthMask(!!flag)\n            };\n            _glDepthMask.sig = \"vi\";\n            var _emscripten_glDepthMask = _glDepthMask;\n            _emscripten_glDepthMask.sig = \"vi\";\n            var _glDepthRangef = (x0, x1) => GLctx.depthRange(x0, x1);\n            _glDepthRangef.sig = \"vff\";\n            var _emscripten_glDepthRangef = _glDepthRangef;\n            _emscripten_glDepthRangef.sig = \"vff\";\n            var _glDetachShader = (program, shader) => {\n                GLctx.detachShader(GL.programs[program], GL.shaders[shader])\n            };\n            _glDetachShader.sig = \"vii\";\n            var _emscripten_glDetachShader = _glDetachShader;\n            _emscripten_glDetachShader.sig = \"vii\";\n            var _glDisable = x0 => GLctx.disable(x0);\n            _glDisable.sig = \"vi\";\n            var _emscripten_glDisable = _glDisable;\n            _emscripten_glDisable.sig = \"vi\";\n            var _glDisableVertexAttribArray = index => {\n                GLctx.disableVertexAttribArray(index)\n            };\n            _glDisableVertexAttribArray.sig = \"vi\";\n            var _emscripten_glDisableVertexAttribArray = _glDisableVertexAttribArray;\n            _emscripten_glDisableVertexAttribArray.sig = \"vi\";\n            var _glDrawArrays = (mode, first, count) => {\n                GLctx.drawArrays(mode, first, count)\n            };\n            _glDrawArrays.sig = \"viii\";\n            var _emscripten_glDrawArrays = _glDrawArrays;\n            _emscripten_glDrawArrays.sig = \"viii\";\n            var _glDrawArraysInstanced = (mode, first, count, primcount) => {\n                GLctx.drawArraysInstanced(mode, first, count, primcount)\n            };\n            _glDrawArraysInstanced.sig = \"viiii\";\n            var _glDrawArraysInstancedANGLE = _glDrawArraysInstanced;\n            var _emscripten_glDrawArraysInstancedANGLE = _glDrawArraysInstancedANGLE;\n            var tempFixedLengthArray = [];\n\n            function _glDrawBuffers(n, bufs) {\n                bufs >>>= 0;\n                var bufArray = tempFixedLengthArray[n];\n                for (var i = 0; i < n; i++) {\n                    bufArray[i] = HEAP32[bufs + i * 4 >>> 2 >>> 0]\n                }\n                GLctx.drawBuffers(bufArray)\n            }\n            _glDrawBuffers.sig = \"vip\";\n            var _glDrawBuffersWEBGL = _glDrawBuffers;\n            var _emscripten_glDrawBuffersWEBGL = _glDrawBuffersWEBGL;\n\n            function _glDrawElements(mode, count, type, indices) {\n                indices >>>= 0;\n                GLctx.drawElements(mode, count, type, indices)\n            }\n            _glDrawElements.sig = \"viiip\";\n            var _emscripten_glDrawElements = _glDrawElements;\n            _emscripten_glDrawElements.sig = \"viiip\";\n\n            function _glDrawElementsInstanced(mode, count, type, indices, primcount) {\n                indices >>>= 0;\n                GLctx.drawElementsInstanced(mode, count, type, indices, primcount)\n            }\n            _glDrawElementsInstanced.sig = \"viiipi\";\n            var _glDrawElementsInstancedANGLE = _glDrawElementsInstanced;\n            var _emscripten_glDrawElementsInstancedANGLE = _glDrawElementsInstancedANGLE;\n            var _glEnable = x0 => GLctx.enable(x0);\n            _glEnable.sig = \"vi\";\n            var _emscripten_glEnable = _glEnable;\n            _emscripten_glEnable.sig = \"vi\";\n            var _glEnableVertexAttribArray = index => {\n                GLctx.enableVertexAttribArray(index)\n            };\n            _glEnableVertexAttribArray.sig = \"vi\";\n            var _emscripten_glEnableVertexAttribArray = _glEnableVertexAttribArray;\n            _emscripten_glEnableVertexAttribArray.sig = \"vi\";\n            var _glEndQueryEXT = target => {\n                GLctx.disjointTimerQueryExt[\"endQueryEXT\"](target)\n            };\n            _glEndQueryEXT.sig = \"vi\";\n            var _emscripten_glEndQueryEXT = _glEndQueryEXT;\n            var _glFinish = () => GLctx.finish();\n            _glFinish.sig = \"v\";\n            var _emscripten_glFinish = _glFinish;\n            _emscripten_glFinish.sig = \"v\";\n            var _glFlush = () => GLctx.flush();\n            _glFlush.sig = \"v\";\n            var _emscripten_glFlush = _glFlush;\n            _emscripten_glFlush.sig = \"v\";\n            var _glFramebufferRenderbuffer = (target, attachment, renderbuffertarget, renderbuffer) => {\n                GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer])\n            };\n            _glFramebufferRenderbuffer.sig = \"viiii\";\n            var _emscripten_glFramebufferRenderbuffer = _glFramebufferRenderbuffer;\n            _emscripten_glFramebufferRenderbuffer.sig = \"viiii\";\n            var _glFramebufferTexture2D = (target, attachment, textarget, texture, level) => {\n                GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level)\n            };\n            _glFramebufferTexture2D.sig = \"viiiii\";\n            var _emscripten_glFramebufferTexture2D = _glFramebufferTexture2D;\n            _emscripten_glFramebufferTexture2D.sig = \"viiiii\";\n            var _glFrontFace = x0 => GLctx.frontFace(x0);\n            _glFrontFace.sig = \"vi\";\n            var _emscripten_glFrontFace = _glFrontFace;\n            _emscripten_glFrontFace.sig = \"vi\";\n\n            function _glGenBuffers(n, buffers) {\n                buffers >>>= 0;\n                GL.genObject(n, buffers, \"createBuffer\", GL.buffers)\n            }\n            _glGenBuffers.sig = \"vip\";\n            var _emscripten_glGenBuffers = _glGenBuffers;\n            _emscripten_glGenBuffers.sig = \"vip\";\n\n            function _glGenFramebuffers(n, ids) {\n                ids >>>= 0;\n                GL.genObject(n, ids, \"createFramebuffer\", GL.framebuffers)\n            }\n            _glGenFramebuffers.sig = \"vip\";\n            var _emscripten_glGenFramebuffers = _glGenFramebuffers;\n            _emscripten_glGenFramebuffers.sig = \"vip\";\n\n            function _glGenQueriesEXT(n, ids) {\n                ids >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var query = GLctx.disjointTimerQueryExt[\"createQueryEXT\"]();\n                    if (!query) {\n                        GL.recordError(1282);\n                        while (i < n) HEAP32[ids + i++ * 4 >>> 2 >>> 0] = 0;\n                        return\n                    }\n                    var id = GL.getNewId(GL.queries);\n                    query.name = id;\n                    GL.queries[id] = query;\n                    HEAP32[ids + i * 4 >>> 2 >>> 0] = id\n                }\n            }\n            _glGenQueriesEXT.sig = \"vip\";\n            var _emscripten_glGenQueriesEXT = _glGenQueriesEXT;\n\n            function _glGenRenderbuffers(n, renderbuffers) {\n                renderbuffers >>>= 0;\n                GL.genObject(n, renderbuffers, \"createRenderbuffer\", GL.renderbuffers)\n            }\n            _glGenRenderbuffers.sig = \"vip\";\n            var _emscripten_glGenRenderbuffers = _glGenRenderbuffers;\n            _emscripten_glGenRenderbuffers.sig = \"vip\";\n\n            function _glGenTextures(n, textures) {\n                textures >>>= 0;\n                GL.genObject(n, textures, \"createTexture\", GL.textures)\n            }\n            _glGenTextures.sig = \"vip\";\n            var _emscripten_glGenTextures = _glGenTextures;\n            _emscripten_glGenTextures.sig = \"vip\";\n\n            function _glGenVertexArrays(n, arrays) {\n                arrays >>>= 0;\n                GL.genObject(n, arrays, \"createVertexArray\", GL.vaos)\n            }\n            _glGenVertexArrays.sig = \"vip\";\n            var _glGenVertexArraysOES = _glGenVertexArrays;\n            _glGenVertexArraysOES.sig = \"vip\";\n            var _emscripten_glGenVertexArraysOES = _glGenVertexArraysOES;\n            _emscripten_glGenVertexArraysOES.sig = \"vip\";\n            var _glGenerateMipmap = x0 => GLctx.generateMipmap(x0);\n            _glGenerateMipmap.sig = \"vi\";\n            var _emscripten_glGenerateMipmap = _glGenerateMipmap;\n            _emscripten_glGenerateMipmap.sig = \"vi\";\n            var __glGetActiveAttribOrUniform = (funcName, program, index, bufSize, length, size, type, name) => {\n                program = GL.programs[program];\n                var info = GLctx[funcName](program, index);\n                if (info) {\n                    var numBytesWrittenExclNull = name && stringToUTF8(info.name, name, bufSize);\n                    if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n                    if (size) HEAP32[size >>> 2 >>> 0] = info.size;\n                    if (type) HEAP32[type >>> 2 >>> 0] = info.type\n                }\n            };\n\n            function _glGetActiveAttrib(program, index, bufSize, length, size, type, name) {\n                length >>>= 0;\n                size >>>= 0;\n                type >>>= 0;\n                name >>>= 0;\n                __glGetActiveAttribOrUniform(\"getActiveAttrib\", program, index, bufSize, length, size, type, name)\n            }\n            _glGetActiveAttrib.sig = \"viiipppp\";\n            var _emscripten_glGetActiveAttrib = _glGetActiveAttrib;\n            _emscripten_glGetActiveAttrib.sig = \"viiipppp\";\n\n            function _glGetActiveUniform(program, index, bufSize, length, size, type, name) {\n                length >>>= 0;\n                size >>>= 0;\n                type >>>= 0;\n                name >>>= 0;\n                __glGetActiveAttribOrUniform(\"getActiveUniform\", program, index, bufSize, length, size, type, name)\n            }\n            _glGetActiveUniform.sig = \"viiipppp\";\n            var _emscripten_glGetActiveUniform = _glGetActiveUniform;\n            _emscripten_glGetActiveUniform.sig = \"viiipppp\";\n\n            function _glGetAttachedShaders(program, maxCount, count, shaders) {\n                count >>>= 0;\n                shaders >>>= 0;\n                var result = GLctx.getAttachedShaders(GL.programs[program]);\n                var len = result.length;\n                if (len > maxCount) {\n                    len = maxCount\n                }\n                HEAP32[count >>> 2 >>> 0] = len;\n                for (var i = 0; i < len; ++i) {\n                    var id = GL.shaders.indexOf(result[i]);\n                    HEAP32[shaders + i * 4 >>> 2 >>> 0] = id\n                }\n            }\n            _glGetAttachedShaders.sig = \"viipp\";\n            var _emscripten_glGetAttachedShaders = _glGetAttachedShaders;\n            _emscripten_glGetAttachedShaders.sig = \"viipp\";\n\n            function _glGetAttribLocation(program, name) {\n                name >>>= 0;\n                return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name))\n            }\n            _glGetAttribLocation.sig = \"iip\";\n            var _emscripten_glGetAttribLocation = _glGetAttribLocation;\n            _emscripten_glGetAttribLocation.sig = \"iip\";\n            var writeI53ToI64 = (ptr, num) => {\n                HEAPU32[ptr >>> 2 >>> 0] = num;\n                var lower = HEAPU32[ptr >>> 2 >>> 0];\n                HEAPU32[ptr + 4 >>> 2 >>> 0] = (num - lower) / 4294967296\n            };\n            var emscriptenWebGLGet = (name_, p, type) => {\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                var ret = undefined;\n                switch (name_) {\n                    case 36346:\n                        ret = 1;\n                        break;\n                    case 36344:\n                        if (type != 0 && type != 1) {\n                            GL.recordError(1280)\n                        }\n                        return;\n                    case 36345:\n                        ret = 0;\n                        break;\n                    case 34466:\n                        var formats = GLctx.getParameter(34467);\n                        ret = formats ? formats.length : 0;\n                        break\n                }\n                if (ret === undefined) {\n                    var result = GLctx.getParameter(name_);\n                    switch (typeof result) {\n                        case \"number\":\n                            ret = result;\n                            break;\n                        case \"boolean\":\n                            ret = result ? 1 : 0;\n                            break;\n                        case \"string\":\n                            GL.recordError(1280);\n                            return;\n                        case \"object\":\n                            if (result === null) {\n                                switch (name_) {\n                                    case 34964:\n                                    case 35725:\n                                    case 34965:\n                                    case 36006:\n                                    case 36007:\n                                    case 32873:\n                                    case 34229:\n                                    case 34068: {\n                                        ret = 0;\n                                        break\n                                    }\n                                    default: {\n                                        GL.recordError(1280);\n                                        return\n                                    }\n                                }\n                            } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {\n                                for (var i = 0; i < result.length; ++i) {\n                                    switch (type) {\n                                        case 0:\n                                            HEAP32[p + i * 4 >>> 2 >>> 0] = result[i];\n                                            break;\n                                        case 2:\n                                            HEAPF32[p + i * 4 >>> 2 >>> 0] = result[i];\n                                            break;\n                                        case 4:\n                                            HEAP8[p + i >>> 0] = result[i] ? 1 : 0;\n                                            break\n                                    }\n                                }\n                                return\n                            } else {\n                                try {\n                                    ret = result.name | 0\n                                } catch (e) {\n                                    GL.recordError(1280);\n                                    err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);\n                                    return\n                                }\n                            }\n                            break;\n                        default:\n                            GL.recordError(1280);\n                            err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);\n                            return\n                    }\n                }\n                switch (type) {\n                    case 1:\n                        writeI53ToI64(p, ret);\n                        break;\n                    case 0:\n                        HEAP32[p >>> 2 >>> 0] = ret;\n                        break;\n                    case 2:\n                        HEAPF32[p >>> 2 >>> 0] = ret;\n                        break;\n                    case 4:\n                        HEAP8[p >>> 0] = ret ? 1 : 0;\n                        break\n                }\n            };\n\n            function _glGetBooleanv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 4)\n            }\n            _glGetBooleanv.sig = \"vip\";\n            var _emscripten_glGetBooleanv = _glGetBooleanv;\n            _emscripten_glGetBooleanv.sig = \"vip\";\n\n            function _glGetBufferParameteriv(target, value, data) {\n                data >>>= 0;\n                if (!data) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[data >>> 2 >>> 0] = GLctx.getBufferParameter(target, value)\n            }\n            _glGetBufferParameteriv.sig = \"viip\";\n            var _emscripten_glGetBufferParameteriv = _glGetBufferParameteriv;\n            _emscripten_glGetBufferParameteriv.sig = \"viip\";\n            var _glGetError = () => {\n                var error = GLctx.getError() || GL.lastError;\n                GL.lastError = 0;\n                return error\n            };\n            _glGetError.sig = \"i\";\n            var _emscripten_glGetError = _glGetError;\n            _emscripten_glGetError.sig = \"i\";\n\n            function _glGetFloatv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 2)\n            }\n            _glGetFloatv.sig = \"vip\";\n            var _emscripten_glGetFloatv = _glGetFloatv;\n            _emscripten_glGetFloatv.sig = \"vip\";\n\n            function _glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) {\n                params >>>= 0;\n                var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);\n                if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) {\n                    result = result.name | 0\n                }\n                HEAP32[params >>> 2 >>> 0] = result\n            }\n            _glGetFramebufferAttachmentParameteriv.sig = \"viiip\";\n            var _emscripten_glGetFramebufferAttachmentParameteriv = _glGetFramebufferAttachmentParameteriv;\n            _emscripten_glGetFramebufferAttachmentParameteriv.sig = \"viiip\";\n\n            function _glGetIntegerv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 0)\n            }\n            _glGetIntegerv.sig = \"vip\";\n            var _emscripten_glGetIntegerv = _glGetIntegerv;\n            _emscripten_glGetIntegerv.sig = \"vip\";\n\n            function _glGetProgramInfoLog(program, maxLength, length, infoLog) {\n                length >>>= 0;\n                infoLog >>>= 0;\n                var log = GLctx.getProgramInfoLog(GL.programs[program]);\n                if (log === null) log = \"(unknown error)\";\n                var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetProgramInfoLog.sig = \"viipp\";\n            var _emscripten_glGetProgramInfoLog = _glGetProgramInfoLog;\n            _emscripten_glGetProgramInfoLog.sig = \"viipp\";\n\n            function _glGetProgramiv(program, pname, p) {\n                p >>>= 0;\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                if (program >= GL.counter) {\n                    GL.recordError(1281);\n                    return\n                }\n                program = GL.programs[program];\n                if (pname == 35716) {\n                    var log = GLctx.getProgramInfoLog(program);\n                    if (log === null) log = \"(unknown error)\";\n                    HEAP32[p >>> 2 >>> 0] = log.length + 1\n                } else if (pname == 35719) {\n                    if (!program.maxUniformLength) {\n                        var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n                        for (var i = 0; i < numActiveUniforms; ++i) {\n                            program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i).name.length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxUniformLength\n                } else if (pname == 35722) {\n                    if (!program.maxAttributeLength) {\n                        var numActiveAttributes = GLctx.getProgramParameter(program, 35721);\n                        for (var i = 0; i < numActiveAttributes; ++i) {\n                            program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i).name.length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxAttributeLength\n                } else if (pname == 35381) {\n                    if (!program.maxUniformBlockNameLength) {\n                        var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);\n                        for (var i = 0; i < numActiveUniformBlocks; ++i) {\n                            program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i).length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxUniformBlockNameLength\n                } else {\n                    HEAP32[p >>> 2 >>> 0] = GLctx.getProgramParameter(program, pname)\n                }\n            }\n            _glGetProgramiv.sig = \"viip\";\n            var _emscripten_glGetProgramiv = _glGetProgramiv;\n            _emscripten_glGetProgramiv.sig = \"viip\";\n\n            function _glGetQueryObjecti64vEXT(id, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var query = GL.queries[id];\n                var param;\n                {\n                    param = GLctx.disjointTimerQueryExt[\"getQueryObjectEXT\"](query, pname)\n                }\n                var ret;\n                if (typeof param == \"boolean\") {\n                    ret = param ? 1 : 0\n                } else {\n                    ret = param\n                }\n                writeI53ToI64(params, ret)\n            }\n            _glGetQueryObjecti64vEXT.sig = \"viip\";\n            var _emscripten_glGetQueryObjecti64vEXT = _glGetQueryObjecti64vEXT;\n\n            function _glGetQueryObjectivEXT(id, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var query = GL.queries[id];\n                var param = GLctx.disjointTimerQueryExt[\"getQueryObjectEXT\"](query, pname);\n                var ret;\n                if (typeof param == \"boolean\") {\n                    ret = param ? 1 : 0\n                } else {\n                    ret = param\n                }\n                HEAP32[params >>> 2 >>> 0] = ret\n            }\n            _glGetQueryObjectivEXT.sig = \"viip\";\n            var _emscripten_glGetQueryObjectivEXT = _glGetQueryObjectivEXT;\n            var _glGetQueryObjectui64vEXT = _glGetQueryObjecti64vEXT;\n            var _emscripten_glGetQueryObjectui64vEXT = _glGetQueryObjectui64vEXT;\n            var _glGetQueryObjectuivEXT = _glGetQueryObjectivEXT;\n            var _emscripten_glGetQueryObjectuivEXT = _glGetQueryObjectuivEXT;\n\n            function _glGetQueryivEXT(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.disjointTimerQueryExt[\"getQueryEXT\"](target, pname)\n            }\n            _glGetQueryivEXT.sig = \"viip\";\n            var _emscripten_glGetQueryivEXT = _glGetQueryivEXT;\n\n            function _glGetRenderbufferParameteriv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.getRenderbufferParameter(target, pname)\n            }\n            _glGetRenderbufferParameteriv.sig = \"viip\";\n            var _emscripten_glGetRenderbufferParameteriv = _glGetRenderbufferParameteriv;\n            _emscripten_glGetRenderbufferParameteriv.sig = \"viip\";\n\n            function _glGetShaderInfoLog(shader, maxLength, length, infoLog) {\n                length >>>= 0;\n                infoLog >>>= 0;\n                var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n                if (log === null) log = \"(unknown error)\";\n                var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetShaderInfoLog.sig = \"viipp\";\n            var _emscripten_glGetShaderInfoLog = _glGetShaderInfoLog;\n            _emscripten_glGetShaderInfoLog.sig = \"viipp\";\n\n            function _glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) {\n                range >>>= 0;\n                precision >>>= 0;\n                var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);\n                HEAP32[range >>> 2 >>> 0] = result.rangeMin;\n                HEAP32[range + 4 >>> 2 >>> 0] = result.rangeMax;\n                HEAP32[precision >>> 2 >>> 0] = result.precision\n            }\n            _glGetShaderPrecisionFormat.sig = \"viipp\";\n            var _emscripten_glGetShaderPrecisionFormat = _glGetShaderPrecisionFormat;\n            _emscripten_glGetShaderPrecisionFormat.sig = \"viipp\";\n\n            function _glGetShaderSource(shader, bufSize, length, source) {\n                length >>>= 0;\n                source >>>= 0;\n                var result = GLctx.getShaderSource(GL.shaders[shader]);\n                if (!result) return;\n                var numBytesWrittenExclNull = bufSize > 0 && source ? stringToUTF8(result, source, bufSize) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetShaderSource.sig = \"viipp\";\n            var _emscripten_glGetShaderSource = _glGetShaderSource;\n            _emscripten_glGetShaderSource.sig = \"viipp\";\n\n            function _glGetShaderiv(shader, pname, p) {\n                p >>>= 0;\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                if (pname == 35716) {\n                    var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n                    if (log === null) log = \"(unknown error)\";\n                    var logLength = log ? log.length + 1 : 0;\n                    HEAP32[p >>> 2 >>> 0] = logLength\n                } else if (pname == 35720) {\n                    var source = GLctx.getShaderSource(GL.shaders[shader]);\n                    var sourceLength = source ? source.length + 1 : 0;\n                    HEAP32[p >>> 2 >>> 0] = sourceLength\n                } else {\n                    HEAP32[p >>> 2 >>> 0] = GLctx.getShaderParameter(GL.shaders[shader], pname)\n                }\n            }\n            _glGetShaderiv.sig = \"viip\";\n            var _emscripten_glGetShaderiv = _glGetShaderiv;\n            _emscripten_glGetShaderiv.sig = \"viip\";\n            var webglGetExtensions = function $webglGetExtensions() {\n                var exts = getEmscriptenSupportedExtensions(GLctx);\n                exts = exts.concat(exts.map(e => \"GL_\" + e));\n                return exts\n            };\n\n            function _glGetString(name_) {\n                var ret = GL.stringCache[name_];\n                if (!ret) {\n                    switch (name_) {\n                        case 7939:\n                            ret = stringToNewUTF8(webglGetExtensions().join(\" \"));\n                            break;\n                        case 7936:\n                        case 7937:\n                        case 37445:\n                        case 37446:\n                            var s = GLctx.getParameter(name_);\n                            if (!s) {\n                                GL.recordError(1280)\n                            }\n                            ret = s ? stringToNewUTF8(s) : 0;\n                            break;\n                        case 7938:\n                            var webGLVersion = GLctx.getParameter(7938);\n                            var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;\n                            ret = stringToNewUTF8(glVersion);\n                            break;\n                        case 35724:\n                            var glslVersion = GLctx.getParameter(35724);\n                            var ver_re = /^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;\n                            var ver_num = glslVersion.match(ver_re);\n                            if (ver_num !== null) {\n                                if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + \"0\";\n                                glslVersion = `OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`\n                            }\n                            ret = stringToNewUTF8(glslVersion);\n                            break;\n                        default:\n                            GL.recordError(1280)\n                    }\n                    GL.stringCache[name_] = ret\n                }\n                return ret\n            }\n            _glGetString.sig = \"pi\";\n            var _emscripten_glGetString = _glGetString;\n            _emscripten_glGetString.sig = \"pi\";\n\n            function _glGetTexParameterfv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAPF32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname)\n            }\n            _glGetTexParameterfv.sig = \"viip\";\n            var _emscripten_glGetTexParameterfv = _glGetTexParameterfv;\n            _emscripten_glGetTexParameterfv.sig = \"viip\";\n\n            function _glGetTexParameteriv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname)\n            }\n            _glGetTexParameteriv.sig = \"viip\";\n            var _emscripten_glGetTexParameteriv = _glGetTexParameteriv;\n            _emscripten_glGetTexParameteriv.sig = \"viip\";\n            var webglGetLeftBracePos = name => name.slice(-1) == \"]\" && name.lastIndexOf(\"[\");\n            var webglPrepareUniformLocationsBeforeFirstUse = program => {\n                var uniformLocsById = program.uniformLocsById,\n                    uniformSizeAndIdsByName = program.uniformSizeAndIdsByName,\n                    i, j;\n                if (!uniformLocsById) {\n                    program.uniformLocsById = uniformLocsById = {};\n                    program.uniformArrayNamesById = {};\n                    var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n                    for (i = 0; i < numActiveUniforms; ++i) {\n                        var u = GLctx.getActiveUniform(program, i);\n                        var nm = u.name;\n                        var sz = u.size;\n                        var lb = webglGetLeftBracePos(nm);\n                        var arrayName = lb > 0 ? nm.slice(0, lb) : nm;\n                        var id = program.uniformIdCounter;\n                        program.uniformIdCounter += sz;\n                        uniformSizeAndIdsByName[arrayName] = [sz, id];\n                        for (j = 0; j < sz; ++j) {\n                            uniformLocsById[id] = j;\n                            program.uniformArrayNamesById[id++] = arrayName\n                        }\n                    }\n                }\n            };\n\n            function _glGetUniformLocation(program, name) {\n                name >>>= 0;\n                name = UTF8ToString(name);\n                if (program = GL.programs[program]) {\n                    webglPrepareUniformLocationsBeforeFirstUse(program);\n                    var uniformLocsById = program.uniformLocsById;\n                    var arrayIndex = 0;\n                    var uniformBaseName = name;\n                    var leftBrace = webglGetLeftBracePos(name);\n                    if (leftBrace > 0) {\n                        arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0;\n                        uniformBaseName = name.slice(0, leftBrace)\n                    }\n                    var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];\n                    if (sizeAndId && arrayIndex < sizeAndId[0]) {\n                        arrayIndex += sizeAndId[1];\n                        if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) {\n                            return arrayIndex\n                        }\n                    }\n                } else {\n                    GL.recordError(1281)\n                }\n                return -1\n            }\n            _glGetUniformLocation.sig = \"iip\";\n            var _emscripten_glGetUniformLocation = _glGetUniformLocation;\n            _emscripten_glGetUniformLocation.sig = \"iip\";\n            var webglGetUniformLocation = location => {\n                var p = GLctx.currentProgram;\n                if (p) {\n                    var webglLoc = p.uniformLocsById[location];\n                    if (typeof webglLoc == \"number\") {\n                        p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(p, p.uniformArrayNamesById[location] + (webglLoc > 0 ? `[${webglLoc}]` : \"\"))\n                    }\n                    return webglLoc\n                } else {\n                    GL.recordError(1282)\n                }\n            };\n            var emscriptenWebGLGetUniform = (program, location, params, type) => {\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                program = GL.programs[program];\n                webglPrepareUniformLocationsBeforeFirstUse(program);\n                var data = GLctx.getUniform(program, webglGetUniformLocation(location));\n                if (typeof data == \"number\" || typeof data == \"boolean\") {\n                    switch (type) {\n                        case 0:\n                            HEAP32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 2:\n                            HEAPF32[params >>> 2 >>> 0] = data;\n                            break\n                    }\n                } else {\n                    for (var i = 0; i < data.length; i++) {\n                        switch (type) {\n                            case 0:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 2:\n                                HEAPF32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break\n                        }\n                    }\n                }\n            };\n\n            function _glGetUniformfv(program, location, params) {\n                params >>>= 0;\n                emscriptenWebGLGetUniform(program, location, params, 2)\n            }\n            _glGetUniformfv.sig = \"viip\";\n            var _emscripten_glGetUniformfv = _glGetUniformfv;\n            _emscripten_glGetUniformfv.sig = \"viip\";\n\n            function _glGetUniformiv(program, location, params) {\n                params >>>= 0;\n                emscriptenWebGLGetUniform(program, location, params, 0)\n            }\n            _glGetUniformiv.sig = \"viip\";\n            var _emscripten_glGetUniformiv = _glGetUniformiv;\n            _emscripten_glGetUniformiv.sig = \"viip\";\n\n            function _glGetVertexAttribPointerv(index, pname, pointer) {\n                pointer >>>= 0;\n                if (!pointer) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[pointer >>> 2 >>> 0] = GLctx.getVertexAttribOffset(index, pname)\n            }\n            _glGetVertexAttribPointerv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribPointerv = _glGetVertexAttribPointerv;\n            _emscripten_glGetVertexAttribPointerv.sig = \"viip\";\n            var emscriptenWebGLGetVertexAttrib = (index, pname, params, type) => {\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var data = GLctx.getVertexAttrib(index, pname);\n                if (pname == 34975) {\n                    HEAP32[params >>> 2 >>> 0] = data && data[\"name\"]\n                } else if (typeof data == \"number\" || typeof data == \"boolean\") {\n                    switch (type) {\n                        case 0:\n                            HEAP32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 2:\n                            HEAPF32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 5:\n                            HEAP32[params >>> 2 >>> 0] = Math.fround(data);\n                            break\n                    }\n                } else {\n                    for (var i = 0; i < data.length; i++) {\n                        switch (type) {\n                            case 0:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 2:\n                                HEAPF32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 5:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = Math.fround(data[i]);\n                                break\n                        }\n                    }\n                }\n            };\n\n            function _glGetVertexAttribfv(index, pname, params) {\n                params >>>= 0;\n                emscriptenWebGLGetVertexAttrib(index, pname, params, 2)\n            }\n            _glGetVertexAttribfv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribfv = _glGetVertexAttribfv;\n            _emscripten_glGetVertexAttribfv.sig = \"viip\";\n\n            function _glGetVertexAttribiv(index, pname, params) {\n                params >>>= 0;\n                emscriptenWebGLGetVertexAttrib(index, pname, params, 5)\n            }\n            _glGetVertexAttribiv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribiv = _glGetVertexAttribiv;\n            _emscripten_glGetVertexAttribiv.sig = \"viip\";\n            var _glHint = (x0, x1) => GLctx.hint(x0, x1);\n            _glHint.sig = \"vii\";\n            var _emscripten_glHint = _glHint;\n            _emscripten_glHint.sig = \"vii\";\n            var _glIsBuffer = buffer => {\n                var b = GL.buffers[buffer];\n                if (!b) return 0;\n                return GLctx.isBuffer(b)\n            };\n            _glIsBuffer.sig = \"ii\";\n            var _emscripten_glIsBuffer = _glIsBuffer;\n            _emscripten_glIsBuffer.sig = \"ii\";\n            var _glIsEnabled = x0 => GLctx.isEnabled(x0);\n            _glIsEnabled.sig = \"ii\";\n            var _emscripten_glIsEnabled = _glIsEnabled;\n            _emscripten_glIsEnabled.sig = \"ii\";\n            var _glIsFramebuffer = framebuffer => {\n                var fb = GL.framebuffers[framebuffer];\n                if (!fb) return 0;\n                return GLctx.isFramebuffer(fb)\n            };\n            _glIsFramebuffer.sig = \"ii\";\n            var _emscripten_glIsFramebuffer = _glIsFramebuffer;\n            _emscripten_glIsFramebuffer.sig = \"ii\";\n            var _glIsProgram = program => {\n                program = GL.programs[program];\n                if (!program) return 0;\n                return GLctx.isProgram(program)\n            };\n            _glIsProgram.sig = \"ii\";\n            var _emscripten_glIsProgram = _glIsProgram;\n            _emscripten_glIsProgram.sig = \"ii\";\n            var _glIsQueryEXT = id => {\n                var query = GL.queries[id];\n                if (!query) return 0;\n                return GLctx.disjointTimerQueryExt[\"isQueryEXT\"](query)\n            };\n            _glIsQueryEXT.sig = \"ii\";\n            var _emscripten_glIsQueryEXT = _glIsQueryEXT;\n            var _glIsRenderbuffer = renderbuffer => {\n                var rb = GL.renderbuffers[renderbuffer];\n                if (!rb) return 0;\n                return GLctx.isRenderbuffer(rb)\n            };\n            _glIsRenderbuffer.sig = \"ii\";\n            var _emscripten_glIsRenderbuffer = _glIsRenderbuffer;\n            _emscripten_glIsRenderbuffer.sig = \"ii\";\n            var _glIsShader = shader => {\n                var s = GL.shaders[shader];\n                if (!s) return 0;\n                return GLctx.isShader(s)\n            };\n            _glIsShader.sig = \"ii\";\n            var _emscripten_glIsShader = _glIsShader;\n            _emscripten_glIsShader.sig = \"ii\";\n            var _glIsTexture = id => {\n                var texture = GL.textures[id];\n                if (!texture) return 0;\n                return GLctx.isTexture(texture)\n            };\n            _glIsTexture.sig = \"ii\";\n            var _emscripten_glIsTexture = _glIsTexture;\n            _emscripten_glIsTexture.sig = \"ii\";\n            var _glIsVertexArray = array => {\n                var vao = GL.vaos[array];\n                if (!vao) return 0;\n                return GLctx.isVertexArray(vao)\n            };\n            _glIsVertexArray.sig = \"ii\";\n            var _glIsVertexArrayOES = _glIsVertexArray;\n            _glIsVertexArrayOES.sig = \"ii\";\n            var _emscripten_glIsVertexArrayOES = _glIsVertexArrayOES;\n            _emscripten_glIsVertexArrayOES.sig = \"ii\";\n            var _glLineWidth = x0 => GLctx.lineWidth(x0);\n            _glLineWidth.sig = \"vf\";\n            var _emscripten_glLineWidth = _glLineWidth;\n            _emscripten_glLineWidth.sig = \"vf\";\n            var _glLinkProgram = program => {\n                program = GL.programs[program];\n                GLctx.linkProgram(program);\n                program.uniformLocsById = 0;\n                program.uniformSizeAndIdsByName = {}\n            };\n            _glLinkProgram.sig = \"vi\";\n            var _emscripten_glLinkProgram = _glLinkProgram;\n            _emscripten_glLinkProgram.sig = \"vi\";\n            var _glPixelStorei = (pname, param) => {\n                if (pname == 3317) {\n                    GL.unpackAlignment = param\n                } else if (pname == 3314) {\n                    GL.unpackRowLength = param\n                }\n                GLctx.pixelStorei(pname, param)\n            };\n            _glPixelStorei.sig = \"vii\";\n            var _emscripten_glPixelStorei = _glPixelStorei;\n            _emscripten_glPixelStorei.sig = \"vii\";\n            var _glPolygonModeWEBGL = (face, mode) => {\n                GLctx.webglPolygonMode[\"polygonModeWEBGL\"](face, mode)\n            };\n            _glPolygonModeWEBGL.sig = \"vii\";\n            var _emscripten_glPolygonModeWEBGL = _glPolygonModeWEBGL;\n            var _glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);\n            _glPolygonOffset.sig = \"vff\";\n            var _emscripten_glPolygonOffset = _glPolygonOffset;\n            _emscripten_glPolygonOffset.sig = \"vff\";\n            var _glPolygonOffsetClampEXT = (factor, units, clamp) => {\n                GLctx.extPolygonOffsetClamp[\"polygonOffsetClampEXT\"](factor, units, clamp)\n            };\n            _glPolygonOffsetClampEXT.sig = \"vfff\";\n            var _emscripten_glPolygonOffsetClampEXT = _glPolygonOffsetClampEXT;\n            var _glQueryCounterEXT = (id, target) => {\n                GLctx.disjointTimerQueryExt[\"queryCounterEXT\"](GL.queries[id], target)\n            };\n            _glQueryCounterEXT.sig = \"vii\";\n            var _emscripten_glQueryCounterEXT = _glQueryCounterEXT;\n            var computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {\n                function roundedToNextMultipleOf(x, y) {\n                    return x + y - 1 & -y\n                }\n                var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;\n                var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);\n                return height * alignedRowSize\n            };\n            var colorChannelsInGlTextureFormat = format => {\n                var colorChannels = {\n                    5: 3,\n                    6: 4,\n                    8: 2,\n                    29502: 3,\n                    29504: 4\n                };\n                return colorChannels[format - 6402] || 1\n            };\n            var heapObjectForWebGLType = type => {\n                type -= 5120;\n                if (type == 1) return HEAPU8;\n                if (type == 4) return HEAP32;\n                if (type == 6) return HEAPF32;\n                if (type == 5 || type == 28922) return HEAPU32;\n                return HEAPU16\n            };\n            var toTypedArrayIndex = (pointer, heap) => pointer >>> 31 - Math.clz32(heap.BYTES_PER_ELEMENT);\n            var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {\n                var heap = heapObjectForWebGLType(type);\n                var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;\n                var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);\n                return heap.subarray(toTypedArrayIndex(pixels, heap) >>> 0, toTypedArrayIndex(pixels + bytes, heap) >>> 0)\n            };\n\n            function _glReadPixels(x, y, width, height, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format);\n                if (!pixelData) {\n                    GL.recordError(1280);\n                    return\n                }\n                GLctx.readPixels(x, y, width, height, format, type, pixelData)\n            }\n            _glReadPixels.sig = \"viiiiiip\";\n            var _emscripten_glReadPixels = _glReadPixels;\n            _emscripten_glReadPixels.sig = \"viiiiiip\";\n            var _glReleaseShaderCompiler = () => {};\n            _glReleaseShaderCompiler.sig = \"v\";\n            var _emscripten_glReleaseShaderCompiler = _glReleaseShaderCompiler;\n            _emscripten_glReleaseShaderCompiler.sig = \"v\";\n            var _glRenderbufferStorage = (x0, x1, x2, x3) => GLctx.renderbufferStorage(x0, x1, x2, x3);\n            _glRenderbufferStorage.sig = \"viiii\";\n            var _emscripten_glRenderbufferStorage = _glRenderbufferStorage;\n            _emscripten_glRenderbufferStorage.sig = \"viiii\";\n            var _glSampleCoverage = (value, invert) => {\n                GLctx.sampleCoverage(value, !!invert)\n            };\n            _glSampleCoverage.sig = \"vfi\";\n            var _emscripten_glSampleCoverage = _glSampleCoverage;\n            _emscripten_glSampleCoverage.sig = \"vfi\";\n            var _glScissor = (x0, x1, x2, x3) => GLctx.scissor(x0, x1, x2, x3);\n            _glScissor.sig = \"viiii\";\n            var _emscripten_glScissor = _glScissor;\n            _emscripten_glScissor.sig = \"viiii\";\n\n            function _glShaderBinary(count, shaders, binaryformat, binary, length) {\n                shaders >>>= 0;\n                binary >>>= 0;\n                GL.recordError(1280)\n            }\n            _glShaderBinary.sig = \"vipipi\";\n            var _emscripten_glShaderBinary = _glShaderBinary;\n            _emscripten_glShaderBinary.sig = \"vipipi\";\n\n            function _glShaderSource(shader, count, string, length) {\n                string >>>= 0;\n                length >>>= 0;\n                var source = GL.getSource(shader, count, string, length);\n                GLctx.shaderSource(GL.shaders[shader], source)\n            }\n            _glShaderSource.sig = \"viipp\";\n            var _emscripten_glShaderSource = _glShaderSource;\n            _emscripten_glShaderSource.sig = \"viipp\";\n            var _glStencilFunc = (x0, x1, x2) => GLctx.stencilFunc(x0, x1, x2);\n            _glStencilFunc.sig = \"viii\";\n            var _emscripten_glStencilFunc = _glStencilFunc;\n            _emscripten_glStencilFunc.sig = \"viii\";\n            var _glStencilFuncSeparate = (x0, x1, x2, x3) => GLctx.stencilFuncSeparate(x0, x1, x2, x3);\n            _glStencilFuncSeparate.sig = \"viiii\";\n            var _emscripten_glStencilFuncSeparate = _glStencilFuncSeparate;\n            _emscripten_glStencilFuncSeparate.sig = \"viiii\";\n            var _glStencilMask = x0 => GLctx.stencilMask(x0);\n            _glStencilMask.sig = \"vi\";\n            var _emscripten_glStencilMask = _glStencilMask;\n            _emscripten_glStencilMask.sig = \"vi\";\n            var _glStencilMaskSeparate = (x0, x1) => GLctx.stencilMaskSeparate(x0, x1);\n            _glStencilMaskSeparate.sig = \"vii\";\n            var _emscripten_glStencilMaskSeparate = _glStencilMaskSeparate;\n            _emscripten_glStencilMaskSeparate.sig = \"vii\";\n            var _glStencilOp = (x0, x1, x2) => GLctx.stencilOp(x0, x1, x2);\n            _glStencilOp.sig = \"viii\";\n            var _emscripten_glStencilOp = _glStencilOp;\n            _emscripten_glStencilOp.sig = \"viii\";\n            var _glStencilOpSeparate = (x0, x1, x2, x3) => GLctx.stencilOpSeparate(x0, x1, x2, x3);\n            _glStencilOpSeparate.sig = \"viiii\";\n            var _emscripten_glStencilOpSeparate = _glStencilOpSeparate;\n            _emscripten_glStencilOpSeparate.sig = \"viiii\";\n\n            function _glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) : null;\n                GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData)\n            }\n            _glTexImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glTexImage2D = _glTexImage2D;\n            _emscripten_glTexImage2D.sig = \"viiiiiiiip\";\n            var _glTexParameterf = (x0, x1, x2) => GLctx.texParameterf(x0, x1, x2);\n            _glTexParameterf.sig = \"viif\";\n            var _emscripten_glTexParameterf = _glTexParameterf;\n            _emscripten_glTexParameterf.sig = \"viif\";\n\n            function _glTexParameterfv(target, pname, params) {\n                params >>>= 0;\n                var param = HEAPF32[params >>> 2 >>> 0];\n                GLctx.texParameterf(target, pname, param)\n            }\n            _glTexParameterfv.sig = \"viip\";\n            var _emscripten_glTexParameterfv = _glTexParameterfv;\n            _emscripten_glTexParameterfv.sig = \"viip\";\n            var _glTexParameteri = (x0, x1, x2) => GLctx.texParameteri(x0, x1, x2);\n            _glTexParameteri.sig = \"viii\";\n            var _emscripten_glTexParameteri = _glTexParameteri;\n            _emscripten_glTexParameteri.sig = \"viii\";\n\n            function _glTexParameteriv(target, pname, params) {\n                params >>>= 0;\n                var param = HEAP32[params >>> 2 >>> 0];\n                GLctx.texParameteri(target, pname, param)\n            }\n            _glTexParameteriv.sig = \"viip\";\n            var _emscripten_glTexParameteriv = _glTexParameteriv;\n            _emscripten_glTexParameteriv.sig = \"viip\";\n\n            function _glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0) : null;\n                GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData)\n            }\n            _glTexSubImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glTexSubImage2D = _glTexSubImage2D;\n            _emscripten_glTexSubImage2D.sig = \"viiiiiiiip\";\n            var _glUniform1f = (location, v0) => {\n                GLctx.uniform1f(webglGetUniformLocation(location), v0)\n            };\n            _glUniform1f.sig = \"vif\";\n            var _emscripten_glUniform1f = _glUniform1f;\n            _emscripten_glUniform1f.sig = \"vif\";\n            var miniTempWebGLFloatBuffers = [];\n\n            function _glUniform1fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 288) {\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; ++i) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 4 >>> 2 >>> 0)\n                }\n                GLctx.uniform1fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform1fv.sig = \"viip\";\n            var _emscripten_glUniform1fv = _glUniform1fv;\n            _emscripten_glUniform1fv.sig = \"viip\";\n            var _glUniform1i = (location, v0) => {\n                GLctx.uniform1i(webglGetUniformLocation(location), v0)\n            };\n            _glUniform1i.sig = \"vii\";\n            var _emscripten_glUniform1i = _glUniform1i;\n            _emscripten_glUniform1i.sig = \"vii\";\n            var miniTempWebGLIntBuffers = [];\n\n            function _glUniform1iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 288) {\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; ++i) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 4 >>> 2 >>> 0)\n                }\n                GLctx.uniform1iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform1iv.sig = \"viip\";\n            var _emscripten_glUniform1iv = _glUniform1iv;\n            _emscripten_glUniform1iv.sig = \"viip\";\n            var _glUniform2f = (location, v0, v1) => {\n                GLctx.uniform2f(webglGetUniformLocation(location), v0, v1)\n            };\n            _glUniform2f.sig = \"viff\";\n            var _emscripten_glUniform2f = _glUniform2f;\n            _emscripten_glUniform2f.sig = \"viff\";\n\n            function _glUniform2fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 144) {\n                    count *= 2;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 2) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 8 >>> 2 >>> 0)\n                }\n                GLctx.uniform2fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform2fv.sig = \"viip\";\n            var _emscripten_glUniform2fv = _glUniform2fv;\n            _emscripten_glUniform2fv.sig = \"viip\";\n            var _glUniform2i = (location, v0, v1) => {\n                GLctx.uniform2i(webglGetUniformLocation(location), v0, v1)\n            };\n            _glUniform2i.sig = \"viii\";\n            var _emscripten_glUniform2i = _glUniform2i;\n            _emscripten_glUniform2i.sig = \"viii\";\n\n            function _glUniform2iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 144) {\n                    count *= 2;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 2) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 8 >>> 2 >>> 0)\n                }\n                GLctx.uniform2iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform2iv.sig = \"viip\";\n            var _emscripten_glUniform2iv = _glUniform2iv;\n            _emscripten_glUniform2iv.sig = \"viip\";\n            var _glUniform3f = (location, v0, v1, v2) => {\n                GLctx.uniform3f(webglGetUniformLocation(location), v0, v1, v2)\n            };\n            _glUniform3f.sig = \"vifff\";\n            var _emscripten_glUniform3f = _glUniform3f;\n            _emscripten_glUniform3f.sig = \"vifff\";\n\n            function _glUniform3fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 96) {\n                    count *= 3;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 3) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 12 >>> 2 >>> 0)\n                }\n                GLctx.uniform3fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform3fv.sig = \"viip\";\n            var _emscripten_glUniform3fv = _glUniform3fv;\n            _emscripten_glUniform3fv.sig = \"viip\";\n            var _glUniform3i = (location, v0, v1, v2) => {\n                GLctx.uniform3i(webglGetUniformLocation(location), v0, v1, v2)\n            };\n            _glUniform3i.sig = \"viiii\";\n            var _emscripten_glUniform3i = _glUniform3i;\n            _emscripten_glUniform3i.sig = \"viiii\";\n\n            function _glUniform3iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 96) {\n                    count *= 3;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 3) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAP32[value + (4 * i + 8) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 12 >>> 2 >>> 0)\n                }\n                GLctx.uniform3iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform3iv.sig = \"viip\";\n            var _emscripten_glUniform3iv = _glUniform3iv;\n            _emscripten_glUniform3iv.sig = \"viip\";\n            var _glUniform4f = (location, v0, v1, v2, v3) => {\n                GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3)\n            };\n            _glUniform4f.sig = \"viffff\";\n            var _emscripten_glUniform4f = _glUniform4f;\n            _emscripten_glUniform4f.sig = \"viffff\";\n\n            function _glUniform4fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    var view = miniTempWebGLFloatBuffers[4 * count];\n                    var heap = HEAPF32;\n                    value = value >>> 2;\n                    count *= 4;\n                    for (var i = 0; i < count; i += 4) {\n                        var dst = value + i;\n                        view[i] = heap[dst >>> 0];\n                        view[i + 1] = heap[dst + 1 >>> 0];\n                        view[i + 2] = heap[dst + 2 >>> 0];\n                        view[i + 3] = heap[dst + 3 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniform4fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform4fv.sig = \"viip\";\n            var _emscripten_glUniform4fv = _glUniform4fv;\n            _emscripten_glUniform4fv.sig = \"viip\";\n            var _glUniform4i = (location, v0, v1, v2, v3) => {\n                GLctx.uniform4i(webglGetUniformLocation(location), v0, v1, v2, v3)\n            };\n            _glUniform4i.sig = \"viiiii\";\n            var _emscripten_glUniform4i = _glUniform4i;\n            _emscripten_glUniform4i.sig = \"viiiii\";\n\n            function _glUniform4iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    count *= 4;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 4) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAP32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAP32[value + (4 * i + 12) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniform4iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform4iv.sig = \"viip\";\n            var _emscripten_glUniform4iv = _glUniform4iv;\n            _emscripten_glUniform4iv.sig = \"viip\";\n\n            function _glUniformMatrix2fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    count *= 4;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 4) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAPF32[value + (4 * i + 12) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix2fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix2fv = _glUniformMatrix2fv;\n            _emscripten_glUniformMatrix2fv.sig = \"viiip\";\n\n            function _glUniformMatrix3fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 32) {\n                    count *= 9;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 9) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAPF32[value + (4 * i + 12) >>> 2 >>> 0];\n                        view[i + 4] = HEAPF32[value + (4 * i + 16) >>> 2 >>> 0];\n                        view[i + 5] = HEAPF32[value + (4 * i + 20) >>> 2 >>> 0];\n                        view[i + 6] = HEAPF32[value + (4 * i + 24) >>> 2 >>> 0];\n                        view[i + 7] = HEAPF32[value + (4 * i + 28) >>> 2 >>> 0];\n                        view[i + 8] = HEAPF32[value + (4 * i + 32) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 36 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix3fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix3fv = _glUniformMatrix3fv;\n            _emscripten_glUniformMatrix3fv.sig = \"viiip\";\n\n            function _glUniformMatrix4fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 18) {\n                    var view = miniTempWebGLFloatBuffers[16 * count];\n                    var heap = HEAPF32;\n                    value = value >>> 2;\n                    count *= 16;\n                    for (var i = 0; i < count; i += 16) {\n                        var dst = value + i;\n                        view[i] = heap[dst >>> 0];\n                        view[i + 1] = heap[dst + 1 >>> 0];\n                        view[i + 2] = heap[dst + 2 >>> 0];\n                        view[i + 3] = heap[dst + 3 >>> 0];\n                        view[i + 4] = heap[dst + 4 >>> 0];\n                        view[i + 5] = heap[dst + 5 >>> 0];\n                        view[i + 6] = heap[dst + 6 >>> 0];\n                        view[i + 7] = heap[dst + 7 >>> 0];\n                        view[i + 8] = heap[dst + 8 >>> 0];\n                        view[i + 9] = heap[dst + 9 >>> 0];\n                        view[i + 10] = heap[dst + 10 >>> 0];\n                        view[i + 11] = heap[dst + 11 >>> 0];\n                        view[i + 12] = heap[dst + 12 >>> 0];\n                        view[i + 13] = heap[dst + 13 >>> 0];\n                        view[i + 14] = heap[dst + 14 >>> 0];\n                        view[i + 15] = heap[dst + 15 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 64 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix4fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix4fv = _glUniformMatrix4fv;\n            _emscripten_glUniformMatrix4fv.sig = \"viiip\";\n            var _glUseProgram = program => {\n                program = GL.programs[program];\n                GLctx.useProgram(program);\n                GLctx.currentProgram = program\n            };\n            _glUseProgram.sig = \"vi\";\n            var _emscripten_glUseProgram = _glUseProgram;\n            _emscripten_glUseProgram.sig = \"vi\";\n            var _glValidateProgram = program => {\n                GLctx.validateProgram(GL.programs[program])\n            };\n            _glValidateProgram.sig = \"vi\";\n            var _emscripten_glValidateProgram = _glValidateProgram;\n            _emscripten_glValidateProgram.sig = \"vi\";\n            var _glVertexAttrib1f = (x0, x1) => GLctx.vertexAttrib1f(x0, x1);\n            _glVertexAttrib1f.sig = \"vif\";\n            var _emscripten_glVertexAttrib1f = _glVertexAttrib1f;\n            _emscripten_glVertexAttrib1f.sig = \"vif\";\n\n            function _glVertexAttrib1fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib1f(index, HEAPF32[v >>> 2])\n            }\n            _glVertexAttrib1fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib1fv = _glVertexAttrib1fv;\n            _emscripten_glVertexAttrib1fv.sig = \"vip\";\n            var _glVertexAttrib2f = (x0, x1, x2) => GLctx.vertexAttrib2f(x0, x1, x2);\n            _glVertexAttrib2f.sig = \"viff\";\n            var _emscripten_glVertexAttrib2f = _glVertexAttrib2f;\n            _emscripten_glVertexAttrib2f.sig = \"viff\";\n\n            function _glVertexAttrib2fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib2f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2])\n            }\n            _glVertexAttrib2fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib2fv = _glVertexAttrib2fv;\n            _emscripten_glVertexAttrib2fv.sig = \"vip\";\n            var _glVertexAttrib3f = (x0, x1, x2, x3) => GLctx.vertexAttrib3f(x0, x1, x2, x3);\n            _glVertexAttrib3f.sig = \"vifff\";\n            var _emscripten_glVertexAttrib3f = _glVertexAttrib3f;\n            _emscripten_glVertexAttrib3f.sig = \"vifff\";\n\n            function _glVertexAttrib3fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib3f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2], HEAPF32[v + 8 >>> 2])\n            }\n            _glVertexAttrib3fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib3fv = _glVertexAttrib3fv;\n            _emscripten_glVertexAttrib3fv.sig = \"vip\";\n            var _glVertexAttrib4f = (x0, x1, x2, x3, x4) => GLctx.vertexAttrib4f(x0, x1, x2, x3, x4);\n            _glVertexAttrib4f.sig = \"viffff\";\n            var _emscripten_glVertexAttrib4f = _glVertexAttrib4f;\n            _emscripten_glVertexAttrib4f.sig = \"viffff\";\n\n            function _glVertexAttrib4fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib4f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2], HEAPF32[v + 8 >>> 2], HEAPF32[v + 12 >>> 2])\n            }\n            _glVertexAttrib4fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib4fv = _glVertexAttrib4fv;\n            _emscripten_glVertexAttrib4fv.sig = \"vip\";\n            var _glVertexAttribDivisor = (index, divisor) => {\n                GLctx.vertexAttribDivisor(index, divisor)\n            };\n            _glVertexAttribDivisor.sig = \"vii\";\n            var _glVertexAttribDivisorANGLE = _glVertexAttribDivisor;\n            var _emscripten_glVertexAttribDivisorANGLE = _glVertexAttribDivisorANGLE;\n\n            function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) {\n                ptr >>>= 0;\n                GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr)\n            }\n            _glVertexAttribPointer.sig = \"viiiiip\";\n            var _emscripten_glVertexAttribPointer = _glVertexAttribPointer;\n            _emscripten_glVertexAttribPointer.sig = \"viiiiip\";\n            var _glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);\n            _glViewport.sig = \"viiii\";\n            var _emscripten_glViewport = _glViewport;\n            _emscripten_glViewport.sig = \"viiii\";\n\n            function _emscripten_out(str) {\n                str >>>= 0;\n                return out(UTF8ToString(str))\n            }\n            _emscripten_out.sig = \"vp\";\n            class HandleAllocator {\n                allocated = [undefined];\n                freelist = [];\n                get(id) {\n                    return this.allocated[id]\n                }\n                has(id) {\n                    return this.allocated[id] !== undefined\n                }\n                allocate(handle) {\n                    var id = this.freelist.pop() || this.allocated.length;\n                    this.allocated[id] = handle;\n                    return id\n                }\n                free(id) {\n                    this.allocated[id] = undefined;\n                    this.freelist.push(id)\n                }\n            }\n            var promiseMap = new HandleAllocator;\n            var makePromise = () => {\n                var promiseInfo = {};\n                promiseInfo.promise = new Promise((resolve, reject) => {\n                    promiseInfo.reject = reject;\n                    promiseInfo.resolve = resolve\n                });\n                promiseInfo.id = promiseMap.allocate(promiseInfo);\n                return promiseInfo\n            };\n\n            function _emscripten_promise_create() {\n                return makePromise().id\n            }\n            _emscripten_promise_create.sig = \"p\";\n\n            function _emscripten_promise_destroy(id) {\n                id >>>= 0;\n                promiseMap.free(id)\n            }\n            _emscripten_promise_destroy.sig = \"vp\";\n            var getPromise = id => promiseMap.get(id).promise;\n\n            function _emscripten_promise_resolve(id, result, value) {\n                id >>>= 0;\n                value >>>= 0;\n                var info = promiseMap.get(id);\n                switch (result) {\n                    case 0:\n                        info.resolve(value);\n                        return;\n                    case 1:\n                        info.resolve(getPromise(value));\n                        return;\n                    case 2:\n                        info.resolve(getPromise(value));\n                        _emscripten_promise_destroy(value);\n                        return;\n                    case 3:\n                        info.reject(value);\n                        return\n                }\n            }\n            _emscripten_promise_resolve.sig = \"vpip\";\n            var growMemory = size => {\n                var b = wasmMemory.buffer;\n                var pages = (size - b.byteLength + 65535) / 65536 | 0;\n                try {\n                    wasmMemory.grow(pages);\n                    updateMemoryViews();\n                    return 1\n                } catch (e) {}\n            };\n\n            function _emscripten_resize_heap(requestedSize) {\n                requestedSize >>>= 0;\n                var oldSize = HEAPU8.length;\n                var maxHeapSize = getHeapMax();\n                if (requestedSize > maxHeapSize) {\n                    return false\n                }\n                for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n                    var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n                    overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n                    var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n                    var replacement = growMemory(newSize);\n                    if (replacement) {\n                        return true\n                    }\n                }\n                return false\n            }\n            _emscripten_resize_heap.sig = \"ip\";\n\n            function _emscripten_wget_data(url, pbuffer, pnum, perror) {\n                url >>>= 0;\n                pbuffer >>>= 0;\n                pnum >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_wget_data\"\n            }\n            _emscripten_wget_data.sig = \"vpppp\";\n            var getEnvStrings = () => {\n                if (!getEnvStrings.strings) {\n                    var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n                    var env = {\n                        USER: \"web_user\",\n                        LOGNAME: \"web_user\",\n                        PATH: \"/\",\n                        PWD: \"/\",\n                        HOME: \"/home/web_user\",\n                        LANG: lang,\n                        _: getExecutableName()\n                    };\n                    for (var x in ENV) {\n                        if (ENV[x] === undefined) delete env[x];\n                        else env[x] = ENV[x]\n                    }\n                    var strings = [];\n                    for (var x in env) {\n                        strings.push(`${x}=${env[x]}`)\n                    }\n                    getEnvStrings.strings = strings\n                }\n                return getEnvStrings.strings\n            };\n            var stringToAscii = (str, buffer) => {\n                for (var i = 0; i < str.length; ++i) {\n                    HEAP8[buffer++ >>> 0] = str.charCodeAt(i)\n                }\n                HEAP8[buffer >>> 0] = 0\n            };\n            var _environ_get = function(__environ, environ_buf) {\n                __environ >>>= 0;\n                environ_buf >>>= 0;\n                var bufSize = 0;\n                getEnvStrings().forEach((string, i) => {\n                    var ptr = environ_buf + bufSize;\n                    HEAPU32[__environ + i * 4 >>> 2 >>> 0] = ptr;\n                    stringToAscii(string, ptr);\n                    bufSize += string.length + 1\n                });\n                return 0\n            };\n            _environ_get.sig = \"ipp\";\n            var _environ_sizes_get = function(penviron_count, penviron_buf_size) {\n                penviron_count >>>= 0;\n                penviron_buf_size >>>= 0;\n                var strings = getEnvStrings();\n                HEAPU32[penviron_count >>> 2 >>> 0] = strings.length;\n                var bufSize = 0;\n                strings.forEach(string => bufSize += string.length + 1);\n                HEAPU32[penviron_buf_size >>> 2 >>> 0] = bufSize;\n                return 0\n            };\n            _environ_sizes_get.sig = \"ipp\";\n\n            function _fd_close(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.close(stream);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_close.sig = \"ii\";\n\n            function _fd_fdstat_get(fd, pbuf) {\n                pbuf >>>= 0;\n                try {\n                    var rightsBase = 0;\n                    var rightsInheriting = 0;\n                    var flags = 0;\n                    {\n                        var stream = SYSCALLS.getStreamFromFD(fd);\n                        var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4\n                    }\n                    HEAP8[pbuf >>> 0] = type;\n                    HEAP16[pbuf + 2 >>> 1 >>> 0] = flags;\n                    tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[pbuf + 12 >>> 2 >>> 0] = tempI64[1];\n                    tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 16 >>> 2 >>> 0] = tempI64[0], HEAP32[pbuf + 20 >>> 2 >>> 0] = tempI64[1];\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_fdstat_get.sig = \"iip\";\n            var doReadv = (stream, iov, iovcnt, offset) => {\n                var ret = 0;\n                for (var i = 0; i < iovcnt; i++) {\n                    var ptr = HEAPU32[iov >>> 2 >>> 0];\n                    var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n                    iov += 8;\n                    var curr = FS.read(stream, HEAP8, ptr, len, offset);\n                    if (curr < 0) return -1;\n                    ret += curr;\n                    if (curr < len) break;\n                    if (typeof offset != \"undefined\") {\n                        offset += curr\n                    }\n                }\n                return ret\n            };\n\n            function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                pnum >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doReadv(stream, iov, iovcnt, offset);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_pread.sig = \"iippiip\";\n            var doWritev = (stream, iov, iovcnt, offset) => {\n                var ret = 0;\n                for (var i = 0; i < iovcnt; i++) {\n                    var ptr = HEAPU32[iov >>> 2 >>> 0];\n                    var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n                    iov += 8;\n                    var curr = FS.write(stream, HEAP8, ptr, len, offset);\n                    if (curr < 0) return -1;\n                    ret += curr;\n                    if (curr < len) {\n                        break\n                    }\n                    if (typeof offset != \"undefined\") {\n                        offset += curr\n                    }\n                }\n                return ret\n            };\n\n            function _fd_pwrite(fd, iov, iovcnt, offset_low, offset_high, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                pnum >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doWritev(stream, iov, iovcnt, offset);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_pwrite.sig = \"iippiip\";\n\n            function _fd_read(fd, iov, iovcnt, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                pnum >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doReadv(stream, iov, iovcnt);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_read.sig = \"iippp\";\n\n            function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                newOffset >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.llseek(stream, offset, whence);\n                    tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >>> 2 >>> 0] = tempI64[0], HEAP32[newOffset + 4 >>> 2 >>> 0] = tempI64[1];\n                    if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_seek.sig = \"iiiiip\";\n\n            function _fd_sync(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    if (stream.stream_ops?.fsync) {\n                        return stream.stream_ops.fsync(stream)\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_sync.sig = \"ii\";\n\n            function _fd_write(fd, iov, iovcnt, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                pnum >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doWritev(stream, iov, iovcnt);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_write.sig = \"iippp\";\n\n            function _getaddrinfo(node, service, hint, out) {\n                node >>>= 0;\n                service >>>= 0;\n                hint >>>= 0;\n                out >>>= 0;\n                var addrs = [];\n                var canon = null;\n                var addr = 0;\n                var port = 0;\n                var flags = 0;\n                var family = 0;\n                var type = 0;\n                var proto = 0;\n                var ai, last;\n\n                function allocaddrinfo(family, type, proto, canon, addr, port) {\n                    var sa, salen, ai;\n                    var errno;\n                    salen = family === 10 ? 28 : 16;\n                    addr = family === 10 ? inetNtop6(addr) : inetNtop4(addr);\n                    sa = _malloc(salen);\n                    errno = writeSockaddr(sa, family, addr, port);\n                    assert(!errno);\n                    ai = _malloc(32);\n                    HEAP32[ai + 4 >>> 2 >>> 0] = family;\n                    HEAP32[ai + 8 >>> 2 >>> 0] = type;\n                    HEAP32[ai + 12 >>> 2 >>> 0] = proto;\n                    HEAPU32[ai + 24 >>> 2 >>> 0] = canon;\n                    HEAPU32[ai + 20 >>> 2 >>> 0] = sa;\n                    if (family === 10) {\n                        HEAP32[ai + 16 >>> 2 >>> 0] = 28\n                    } else {\n                        HEAP32[ai + 16 >>> 2 >>> 0] = 16\n                    }\n                    HEAP32[ai + 28 >>> 2 >>> 0] = 0;\n                    return ai\n                }\n                if (hint) {\n                    flags = HEAP32[hint >>> 2 >>> 0];\n                    family = HEAP32[hint + 4 >>> 2 >>> 0];\n                    type = HEAP32[hint + 8 >>> 2 >>> 0];\n                    proto = HEAP32[hint + 12 >>> 2 >>> 0]\n                }\n                if (type && !proto) {\n                    proto = type === 2 ? 17 : 6\n                }\n                if (!type && proto) {\n                    type = proto === 17 ? 2 : 1\n                }\n                if (proto === 0) {\n                    proto = 6\n                }\n                if (type === 0) {\n                    type = 1\n                }\n                if (!node && !service) {\n                    return -2\n                }\n                if (flags & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) {\n                    return -1\n                }\n                if (hint !== 0 && HEAP32[hint >>> 2 >>> 0] & 2 && !node) {\n                    return -1\n                }\n                if (flags & 32) {\n                    return -2\n                }\n                if (type !== 0 && type !== 1 && type !== 2) {\n                    return -7\n                }\n                if (family !== 0 && family !== 2 && family !== 10) {\n                    return -6\n                }\n                if (service) {\n                    service = UTF8ToString(service);\n                    port = parseInt(service, 10);\n                    if (isNaN(port)) {\n                        if (flags & 1024) {\n                            return -2\n                        }\n                        return -8\n                    }\n                }\n                if (!node) {\n                    if (family === 0) {\n                        family = 2\n                    }\n                    if ((flags & 1) === 0) {\n                        if (family === 2) {\n                            addr = _htonl(2130706433)\n                        } else {\n                            addr = [0, 0, 0, _htonl(1)]\n                        }\n                    }\n                    ai = allocaddrinfo(family, type, proto, null, addr, port);\n                    HEAPU32[out >>> 2 >>> 0] = ai;\n                    return 0\n                }\n                node = UTF8ToString(node);\n                addr = inetPton4(node);\n                if (addr !== null) {\n                    if (family === 0 || family === 2) {\n                        family = 2\n                    } else if (family === 10 && flags & 8) {\n                        addr = [0, 0, _htonl(65535), addr];\n                        family = 10\n                    } else {\n                        return -2\n                    }\n                } else {\n                    addr = inetPton6(node);\n                    if (addr !== null) {\n                        if (family === 0 || family === 10) {\n                            family = 10\n                        } else {\n                            return -2\n                        }\n                    }\n                }\n                if (addr != null) {\n                    ai = allocaddrinfo(family, type, proto, node, addr, port);\n                    HEAPU32[out >>> 2 >>> 0] = ai;\n                    return 0\n                }\n                if (flags & 4) {\n                    return -2\n                }\n                node = DNS.lookup_name(node);\n                addr = inetPton4(node);\n                if (family === 0) {\n                    family = 2\n                } else if (family === 10) {\n                    addr = [0, 0, _htonl(65535), addr]\n                }\n                ai = allocaddrinfo(family, type, proto, null, addr, port);\n                HEAPU32[out >>> 2 >>> 0] = ai;\n                return 0\n            }\n            _getaddrinfo.sig = \"ipppp\";\n\n            function _getnameinfo(sa, salen, node, nodelen, serv, servlen, flags) {\n                sa >>>= 0;\n                node >>>= 0;\n                serv >>>= 0;\n                var info = readSockaddr(sa, salen);\n                if (info.errno) {\n                    return -6\n                }\n                var port = info.port;\n                var addr = info.addr;\n                var overflowed = false;\n                if (node && nodelen) {\n                    var lookup;\n                    if (flags & 1 || !(lookup = DNS.lookup_addr(addr))) {\n                        if (flags & 8) {\n                            return -2\n                        }\n                    } else {\n                        addr = lookup\n                    }\n                    var numBytesWrittenExclNull = stringToUTF8(addr, node, nodelen);\n                    if (numBytesWrittenExclNull + 1 >= nodelen) {\n                        overflowed = true\n                    }\n                }\n                if (serv && servlen) {\n                    port = \"\" + port;\n                    var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen);\n                    if (numBytesWrittenExclNull + 1 >= servlen) {\n                        overflowed = true\n                    }\n                }\n                if (overflowed) {\n                    return -12\n                }\n                return 0\n            }\n            _getnameinfo.sig = \"ipipipii\";\n\n            function _llvm_eh_typeid_for(type) {\n                type >>>= 0;\n                return type\n            }\n            _llvm_eh_typeid_for.sig = \"vp\";\n\n            function _pthread_kill(...args) {\n                return wasmImports[\"pthread_kill\"](...args)\n            }\n            _pthread_kill.stub = true;\n\n            function _random_get(buffer, size) {\n                buffer >>>= 0;\n                size >>>= 0;\n                try {\n                    randomFill(HEAPU8.subarray(buffer >>> 0, buffer + size >>> 0));\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _random_get.sig = \"ipp\";\n            var arraySum = (array, index) => {\n                var sum = 0;\n                for (var i = 0; i <= index; sum += array[i++]) {}\n                return sum\n            };\n            var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n            var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n            var addDays = (date, days) => {\n                var newDate = new Date(date.getTime());\n                while (days > 0) {\n                    var leap = isLeapYear(newDate.getFullYear());\n                    var currentMonth = newDate.getMonth();\n                    var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];\n                    if (days > daysInCurrentMonth - newDate.getDate()) {\n                        days -= daysInCurrentMonth - newDate.getDate() + 1;\n                        newDate.setDate(1);\n                        if (currentMonth < 11) {\n                            newDate.setMonth(currentMonth + 1)\n                        } else {\n                            newDate.setMonth(0);\n                            newDate.setFullYear(newDate.getFullYear() + 1)\n                        }\n                    } else {\n                        newDate.setDate(newDate.getDate() + days);\n                        return newDate\n                    }\n                }\n                return newDate\n            };\n\n            function _strptime(buf, format, tm) {\n                buf >>>= 0;\n                format >>>= 0;\n                tm >>>= 0;\n                var pattern = UTF8ToString(format);\n                var SPECIAL_CHARS = \"\\\\!@#$^&*()+=-[]/{}|:<>?,.\";\n                for (var i = 0, ii = SPECIAL_CHARS.length; i < ii; ++i) {\n                    pattern = pattern.replace(new RegExp(\"\\\\\" + SPECIAL_CHARS[i], \"g\"), \"\\\\\" + SPECIAL_CHARS[i])\n                }\n                var EQUIVALENT_MATCHERS = {\n                    A: \"%a\",\n                    B: \"%b\",\n                    c: \"%a %b %d %H:%M:%S %Y\",\n                    D: \"%m\\\\/%d\\\\/%y\",\n                    e: \"%d\",\n                    F: \"%Y-%m-%d\",\n                    h: \"%b\",\n                    R: \"%H\\\\:%M\",\n                    r: \"%I\\\\:%M\\\\:%S\\\\s%p\",\n                    T: \"%H\\\\:%M\\\\:%S\",\n                    x: \"%m\\\\/%d\\\\/(?:%y|%Y)\",\n                    X: \"%H\\\\:%M\\\\:%S\"\n                };\n                var DATE_PATTERNS = {\n                    a: \"(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)\",\n                    b: \"(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)\",\n                    C: \"\\\\d\\\\d\",\n                    d: \"0[1-9]|[1-9](?!\\\\d)|1\\\\d|2\\\\d|30|31\",\n                    H: \"\\\\d(?!\\\\d)|[0,1]\\\\d|20|21|22|23\",\n                    I: \"\\\\d(?!\\\\d)|0\\\\d|10|11|12\",\n                    j: \"00[1-9]|0?[1-9](?!\\\\d)|0?[1-9]\\\\d(?!\\\\d)|[1,2]\\\\d\\\\d|3[0-6]\\\\d\",\n                    m: \"0[1-9]|[1-9](?!\\\\d)|10|11|12\",\n                    M: \"0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d\",\n                    n: \" \",\n                    p: \"AM|am|PM|pm|A\\\\.M\\\\.|a\\\\.m\\\\.|P\\\\.M\\\\.|p\\\\.m\\\\.\",\n                    S: \"0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d|60\",\n                    U: \"0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53\",\n                    W: \"0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53\",\n                    w: \"[0-6]\",\n                    y: \"\\\\d\\\\d\",\n                    Y: \"\\\\d\\\\d\\\\d\\\\d\",\n                    t: \" \",\n                    z: \"Z|(?:[\\\\+\\\\-]\\\\d\\\\d:?(?:\\\\d\\\\d)?)\"\n                };\n                var MONTH_NUMBERS = {\n                    JAN: 0,\n                    FEB: 1,\n                    MAR: 2,\n                    APR: 3,\n                    MAY: 4,\n                    JUN: 5,\n                    JUL: 6,\n                    AUG: 7,\n                    SEP: 8,\n                    OCT: 9,\n                    NOV: 10,\n                    DEC: 11\n                };\n                var DAY_NUMBERS_SUN_FIRST = {\n                    SUN: 0,\n                    MON: 1,\n                    TUE: 2,\n                    WED: 3,\n                    THU: 4,\n                    FRI: 5,\n                    SAT: 6\n                };\n                var DAY_NUMBERS_MON_FIRST = {\n                    MON: 0,\n                    TUE: 1,\n                    WED: 2,\n                    THU: 3,\n                    FRI: 4,\n                    SAT: 5,\n                    SUN: 6\n                };\n                var capture = [];\n                var pattern_out = pattern.replace(/%(.)/g, (m, c) => EQUIVALENT_MATCHERS[c] || m).replace(/%(.)/g, (_, c) => {\n                    let pat = DATE_PATTERNS[c];\n                    if (pat) {\n                        capture.push(c);\n                        return `(${pat})`\n                    } else {\n                        return c\n                    }\n                }).replace(/\\s+/g, \"\\\\s*\");\n                var matches = new RegExp(\"^\" + pattern_out, \"i\").exec(UTF8ToString(buf));\n\n                function initDate() {\n                    function fixup(value, min, max) {\n                        return typeof value != \"number\" || isNaN(value) ? min : value >= min ? value <= max ? value : max : min\n                    }\n                    return {\n                        year: fixup(HEAP32[tm + 20 >>> 2 >>> 0] + 1900, 1970, 9999),\n                        month: fixup(HEAP32[tm + 16 >>> 2 >>> 0], 0, 11),\n                        day: fixup(HEAP32[tm + 12 >>> 2 >>> 0], 1, 31),\n                        hour: fixup(HEAP32[tm + 8 >>> 2 >>> 0], 0, 23),\n                        min: fixup(HEAP32[tm + 4 >>> 2 >>> 0], 0, 59),\n                        sec: fixup(HEAP32[tm >>> 2 >>> 0], 0, 59),\n                        gmtoff: 0\n                    }\n                }\n                if (matches) {\n                    var date = initDate();\n                    var value;\n                    var getMatch = symbol => {\n                        var pos = capture.indexOf(symbol);\n                        if (pos >= 0) {\n                            return matches[pos + 1]\n                        }\n                        return\n                    };\n                    if (value = getMatch(\"S\")) {\n                        date.sec = jstoi_q(value)\n                    }\n                    if (value = getMatch(\"M\")) {\n                        date.min = jstoi_q(value)\n                    }\n                    if (value = getMatch(\"H\")) {\n                        date.hour = jstoi_q(value)\n                    } else if (value = getMatch(\"I\")) {\n                        var hour = jstoi_q(value);\n                        if (value = getMatch(\"p\")) {\n                            hour += value.toUpperCase()[0] === \"P\" ? 12 : 0\n                        }\n                        date.hour = hour\n                    }\n                    if (value = getMatch(\"Y\")) {\n                        date.year = jstoi_q(value)\n                    } else if (value = getMatch(\"y\")) {\n                        var year = jstoi_q(value);\n                        if (value = getMatch(\"C\")) {\n                            year += jstoi_q(value) * 100\n                        } else {\n                            year += year < 69 ? 2e3 : 1900\n                        }\n                        date.year = year\n                    }\n                    if (value = getMatch(\"m\")) {\n                        date.month = jstoi_q(value) - 1\n                    } else if (value = getMatch(\"b\")) {\n                        date.month = MONTH_NUMBERS[value.substring(0, 3).toUpperCase()] || 0\n                    }\n                    if (value = getMatch(\"d\")) {\n                        date.day = jstoi_q(value)\n                    } else if (value = getMatch(\"j\")) {\n                        var day = jstoi_q(value);\n                        var leapYear = isLeapYear(date.year);\n                        for (var month = 0; month < 12; ++month) {\n                            var daysUntilMonth = arraySum(leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, month - 1);\n                            if (day <= daysUntilMonth + (leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[month]) {\n                                date.day = day - daysUntilMonth\n                            }\n                        }\n                    } else if (value = getMatch(\"a\")) {\n                        var weekDay = value.substring(0, 3).toUpperCase();\n                        if (value = getMatch(\"U\")) {\n                            var weekDayNumber = DAY_NUMBERS_SUN_FIRST[weekDay];\n                            var weekNumber = jstoi_q(value);\n                            var janFirst = new Date(date.year, 0, 1);\n                            var endDate;\n                            if (janFirst.getDay() === 0) {\n                                endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1))\n                            } else {\n                                endDate = addDays(janFirst, 7 - janFirst.getDay() + weekDayNumber + 7 * (weekNumber - 1))\n                            }\n                            date.day = endDate.getDate();\n                            date.month = endDate.getMonth()\n                        } else if (value = getMatch(\"W\")) {\n                            var weekDayNumber = DAY_NUMBERS_MON_FIRST[weekDay];\n                            var weekNumber = jstoi_q(value);\n                            var janFirst = new Date(date.year, 0, 1);\n                            var endDate;\n                            if (janFirst.getDay() === 1) {\n                                endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1))\n                            } else {\n                                endDate = addDays(janFirst, 7 - janFirst.getDay() + 1 + weekDayNumber + 7 * (weekNumber - 1))\n                            }\n                            date.day = endDate.getDate();\n                            date.month = endDate.getMonth()\n                        }\n                    }\n                    if (value = getMatch(\"z\")) {\n                        if (value.toLowerCase() === \"z\") {\n                            date.gmtoff = 0\n                        } else {\n                            var match = value.match(/^((?:\\-|\\+)\\d\\d):?(\\d\\d)?/);\n                            date.gmtoff = match[1] * 3600;\n                            if (match[2]) {\n                                date.gmtoff += date.gmtoff > 0 ? match[2] * 60 : -match[2] * 60\n                            }\n                        }\n                    }\n                    var fullDate = new Date(date.year, date.month, date.day, date.hour, date.min, date.sec, 0);\n                    HEAP32[tm >>> 2 >>> 0] = fullDate.getSeconds();\n                    HEAP32[tm + 4 >>> 2 >>> 0] = fullDate.getMinutes();\n                    HEAP32[tm + 8 >>> 2 >>> 0] = fullDate.getHours();\n                    HEAP32[tm + 12 >>> 2 >>> 0] = fullDate.getDate();\n                    HEAP32[tm + 16 >>> 2 >>> 0] = fullDate.getMonth();\n                    HEAP32[tm + 20 >>> 2 >>> 0] = fullDate.getFullYear() - 1900;\n                    HEAP32[tm + 24 >>> 2 >>> 0] = fullDate.getDay();\n                    HEAP32[tm + 28 >>> 2 >>> 0] = arraySum(isLeapYear(fullDate.getFullYear()) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, fullDate.getMonth() - 1) + fullDate.getDate() - 1;\n                    HEAP32[tm + 32 >>> 2 >>> 0] = 0;\n                    HEAP32[tm + 36 >>> 2 >>> 0] = date.gmtoff;\n                    return buf + intArrayFromString(matches[0]).length - 1\n                }\n                return 0\n            }\n            _strptime.sig = \"pppp\";\n            var getCFunc = ident => {\n                var func = Module[\"_\" + ident];\n                return func\n            };\n            var writeArrayToMemory = (array, buffer) => {\n                HEAP8.set(array, buffer >>> 0)\n            };\n            var ccall = (ident, returnType, argTypes, args, opts) => {\n                var toC = {\n                    string: str => {\n                        var ret = 0;\n                        if (str !== null && str !== undefined && str !== 0) {\n                            ret = stringToUTF8OnStack(str)\n                        }\n                        return ret\n                    },\n                    array: arr => {\n                        var ret = stackAlloc(arr.length);\n                        writeArrayToMemory(arr, ret);\n                        return ret\n                    }\n                };\n\n                function convertReturnValue(ret) {\n                    if (returnType === \"string\") {\n                        return UTF8ToString(ret)\n                    }\n                    if (returnType === \"boolean\") return Boolean(ret);\n                    return ret\n                }\n                var func = getCFunc(ident);\n                var cArgs = [];\n                var stack = 0;\n                if (args) {\n                    for (var i = 0; i < args.length; i++) {\n                        var converter = toC[argTypes[i]];\n                        if (converter) {\n                            if (stack === 0) stack = stackSave();\n                            cArgs[i] = converter(args[i])\n                        } else {\n                            cArgs[i] = args[i]\n                        }\n                    }\n                }\n                var ret = func(...cArgs);\n\n                function onDone(ret) {\n                    if (stack !== 0) stackRestore(stack);\n                    return convertReturnValue(ret)\n                }\n                ret = onDone(ret);\n                return ret\n            };\n            var getTempRet0 = val => __emscripten_tempret_get();\n            var writeI53ToI64Clamped = (ptr, num) => {\n                if (num > 0x8000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 4294967295;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 2147483647\n                } else if (num < -0x8000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 0;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 2147483648\n                } else {\n                    writeI53ToI64(ptr, num)\n                }\n            };\n            var writeI53ToI64Signaling = (ptr, num) => {\n                if (num > 0x8000000000000000 || num < -0x8000000000000000) {\n                    throw `RangeError: ${num}`\n                }\n                writeI53ToI64(ptr, num)\n            };\n            var writeI53ToU64Clamped = (ptr, num) => {\n                if (num > 0x10000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 4294967295;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 4294967295\n                } else if (num < 0) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 0;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 0\n                } else {\n                    writeI53ToI64(ptr, num)\n                }\n            };\n            var writeI53ToU64Signaling = (ptr, num) => {\n                if (num < 0 || num > 0x10000000000000000) {\n                    throw `RangeError: ${num}`\n                }\n                writeI53ToI64(ptr, num)\n            };\n            var readI53FromU64 = ptr => HEAPU32[ptr >>> 2 >>> 0] + HEAPU32[ptr + 4 >>> 2 >>> 0] * 4294967296;\n            var convertI32PairToI53 = (lo, hi) => (lo >>> 0) + hi * 4294967296;\n            var convertU32PairToI53 = (lo, hi) => (lo >>> 0) + (hi >>> 0) * 4294967296;\n            var _stackAlloc = stackAlloc;\n            var _stackSave = stackSave;\n            var _stackRestore = stackSave;\n            var _getTempRet0 = getTempRet0;\n            Module[\"_getTempRet0\"] = _getTempRet0;\n            var ptrToString = ptr => \"0x\" + ptr.toString(16).padStart(8, \"0\");\n\n            function _emscripten_notify_memory_growth(memoryIndex) {\n                memoryIndex >>>= 0;\n                updateMemoryViews()\n            }\n            _emscripten_notify_memory_growth.sig = \"vp\";\n            var withStackSave = f => {\n                var stack = stackSave();\n                var ret = f();\n                stackRestore(stack);\n                return ret\n            };\n            var ERRNO_CODES = {\n                EPERM: 63,\n                ENOENT: 44,\n                ESRCH: 71,\n                EINTR: 27,\n                EIO: 29,\n                ENXIO: 60,\n                E2BIG: 1,\n                ENOEXEC: 45,\n                EBADF: 8,\n                ECHILD: 12,\n                EAGAIN: 6,\n                EWOULDBLOCK: 6,\n                ENOMEM: 48,\n                EACCES: 2,\n                EFAULT: 21,\n                ENOTBLK: 105,\n                EBUSY: 10,\n                EEXIST: 20,\n                EXDEV: 75,\n                ENODEV: 43,\n                ENOTDIR: 54,\n                EISDIR: 31,\n                EINVAL: 28,\n                ENFILE: 41,\n                EMFILE: 33,\n                ENOTTY: 59,\n                ETXTBSY: 74,\n                EFBIG: 22,\n                ENOSPC: 51,\n                ESPIPE: 70,\n                EROFS: 69,\n                EMLINK: 34,\n                EPIPE: 64,\n                EDOM: 18,\n                ERANGE: 68,\n                ENOMSG: 49,\n                EIDRM: 24,\n                ECHRNG: 106,\n                EL2NSYNC: 156,\n                EL3HLT: 107,\n                EL3RST: 108,\n                ELNRNG: 109,\n                EUNATCH: 110,\n                ENOCSI: 111,\n                EL2HLT: 112,\n                EDEADLK: 16,\n                ENOLCK: 46,\n                EBADE: 113,\n                EBADR: 114,\n                EXFULL: 115,\n                ENOANO: 104,\n                EBADRQC: 103,\n                EBADSLT: 102,\n                EDEADLOCK: 16,\n                EBFONT: 101,\n                ENOSTR: 100,\n                ENODATA: 116,\n                ETIME: 117,\n                ENOSR: 118,\n                ENONET: 119,\n                ENOPKG: 120,\n                EREMOTE: 121,\n                ENOLINK: 47,\n                EADV: 122,\n                ESRMNT: 123,\n                ECOMM: 124,\n                EPROTO: 65,\n                EMULTIHOP: 36,\n                EDOTDOT: 125,\n                EBADMSG: 9,\n                ENOTUNIQ: 126,\n                EBADFD: 127,\n                EREMCHG: 128,\n                ELIBACC: 129,\n                ELIBBAD: 130,\n                ELIBSCN: 131,\n                ELIBMAX: 132,\n                ELIBEXEC: 133,\n                ENOSYS: 52,\n                ENOTEMPTY: 55,\n                ENAMETOOLONG: 37,\n                ELOOP: 32,\n                EOPNOTSUPP: 138,\n                EPFNOSUPPORT: 139,\n                ECONNRESET: 15,\n                ENOBUFS: 42,\n                EAFNOSUPPORT: 5,\n                EPROTOTYPE: 67,\n                ENOTSOCK: 57,\n                ENOPROTOOPT: 50,\n                ESHUTDOWN: 140,\n                ECONNREFUSED: 14,\n                EADDRINUSE: 3,\n                ECONNABORTED: 13,\n                ENETUNREACH: 40,\n                ENETDOWN: 38,\n                ETIMEDOUT: 73,\n                EHOSTDOWN: 142,\n                EHOSTUNREACH: 23,\n                EINPROGRESS: 26,\n                EALREADY: 7,\n                EDESTADDRREQ: 17,\n                EMSGSIZE: 35,\n                EPROTONOSUPPORT: 66,\n                ESOCKTNOSUPPORT: 137,\n                EADDRNOTAVAIL: 4,\n                ENETRESET: 39,\n                EISCONN: 30,\n                ENOTCONN: 53,\n                ETOOMANYREFS: 141,\n                EUSERS: 136,\n                EDQUOT: 19,\n                ESTALE: 72,\n                ENOTSUP: 138,\n                ENOMEDIUM: 148,\n                EILSEQ: 25,\n                EOVERFLOW: 61,\n                ECANCELED: 11,\n                ENOTRECOVERABLE: 56,\n                EOWNERDEAD: 62,\n                ESTRPIPE: 135\n            };\n            var strError = errno => UTF8ToString(_strerror(errno));\n            var Protocols = {\n                list: [],\n                map: {}\n            };\n            var _setprotoent = stayopen => {\n                function allocprotoent(name, proto, aliases) {\n                    var nameBuf = _malloc(name.length + 1);\n                    stringToAscii(name, nameBuf);\n                    var j = 0;\n                    var length = aliases.length;\n                    var aliasListBuf = _malloc((length + 1) * 4);\n                    for (var i = 0; i < length; i++, j += 4) {\n                        var alias = aliases[i];\n                        var aliasBuf = _malloc(alias.length + 1);\n                        stringToAscii(alias, aliasBuf);\n                        HEAPU32[aliasListBuf + j >>> 2 >>> 0] = aliasBuf\n                    }\n                    HEAPU32[aliasListBuf + j >>> 2 >>> 0] = 0;\n                    var pe = _malloc(12);\n                    HEAPU32[pe >>> 2 >>> 0] = nameBuf;\n                    HEAPU32[pe + 4 >>> 2 >>> 0] = aliasListBuf;\n                    HEAP32[pe + 8 >>> 2 >>> 0] = proto;\n                    return pe\n                }\n                var list = Protocols.list;\n                var map = Protocols.map;\n                if (list.length === 0) {\n                    var entry = allocprotoent(\"tcp\", 6, [\"TCP\"]);\n                    list.push(entry);\n                    map[\"tcp\"] = map[\"6\"] = entry;\n                    entry = allocprotoent(\"udp\", 17, [\"UDP\"]);\n                    list.push(entry);\n                    map[\"udp\"] = map[\"17\"] = entry\n                }\n                _setprotoent.index = 0\n            };\n            _setprotoent.sig = \"vi\";\n            var _endprotoent = () => {};\n            _endprotoent.sig = \"v\";\n\n            function _getprotoent(number) {\n                if (_setprotoent.index === Protocols.list.length) {\n                    return 0\n                }\n                var result = Protocols.list[_setprotoent.index++];\n                return result\n            }\n            _getprotoent.sig = \"p\";\n\n            function _getprotobyname(name) {\n                name >>>= 0;\n                name = UTF8ToString(name);\n                _setprotoent(true);\n                var result = Protocols.map[name];\n                return result\n            }\n            _getprotobyname.sig = \"pp\";\n\n            function _getprotobynumber(number) {\n                _setprotoent(true);\n                var result = Protocols.map[number];\n                return result\n            }\n            _getprotobynumber.sig = \"pi\";\n\n            function _emscripten_run_script(ptr) {\n                ptr >>>= 0;\n                eval(UTF8ToString(ptr))\n            }\n            _emscripten_run_script.sig = \"vp\";\n\n            function _emscripten_run_script_int(ptr) {\n                ptr >>>= 0;\n                return eval(UTF8ToString(ptr)) | 0\n            }\n            _emscripten_run_script_int.sig = \"ip\";\n\n            function _emscripten_run_script_string(ptr) {\n                ptr >>>= 0;\n                var s = eval(UTF8ToString(ptr));\n                if (s == null) {\n                    return 0\n                }\n                s += \"\";\n                var me = _emscripten_run_script_string;\n                var len = lengthBytesUTF8(s);\n                if (!me.bufferSize || me.bufferSize < len + 1) {\n                    if (me.bufferSize) _free(me.buffer);\n                    me.bufferSize = len + 1;\n                    me.buffer = _malloc(me.bufferSize)\n                }\n                stringToUTF8(s, me.buffer, me.bufferSize);\n                return me.buffer\n            }\n            _emscripten_run_script_string.sig = \"pp\";\n            var _emscripten_random = () => Math.random();\n            _emscripten_random.sig = \"f\";\n            var warnOnce = text => {\n                warnOnce.shown ||= {};\n                if (!warnOnce.shown[text]) {\n                    warnOnce.shown[text] = 1;\n                    if (ENVIRONMENT_IS_NODE) text = \"warning: \" + text;\n                    err(text)\n                }\n            };\n            var jsStackTrace = () => (new Error).stack.toString();\n            var getCallstack = flags => {\n                var callstack = jsStackTrace();\n                var iThisFunc = callstack.lastIndexOf(\"_emscripten_log\");\n                var iThisFunc2 = callstack.lastIndexOf(\"_emscripten_get_callstack\");\n                var iNextLine = callstack.indexOf(\"\\n\", Math.max(iThisFunc, iThisFunc2)) + 1;\n                callstack = callstack.slice(iNextLine);\n                if (flags & 8 && typeof emscripten_source_map == \"undefined\") {\n                    warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');\n                    flags ^= 8;\n                    flags |= 16\n                }\n                var lines = callstack.split(\"\\n\");\n                callstack = \"\";\n                var newFirefoxRe = new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");\n                var firefoxRe = new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");\n                var chromeRe = new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");\n                for (var l in lines) {\n                    var line = lines[l];\n                    var symbolName = \"\";\n                    var file = \"\";\n                    var lineno = 0;\n                    var column = 0;\n                    var parts = chromeRe.exec(line);\n                    if (parts && parts.length == 5) {\n                        symbolName = parts[1];\n                        file = parts[2];\n                        lineno = parts[3];\n                        column = parts[4]\n                    } else {\n                        parts = newFirefoxRe.exec(line) || firefoxRe.exec(line);\n                        if (parts && parts.length >= 4) {\n                            symbolName = parts[1];\n                            file = parts[2];\n                            lineno = parts[3];\n                            column = parts[4] | 0\n                        } else {\n                            callstack += line + \"\\n\";\n                            continue\n                        }\n                    }\n                    var haveSourceMap = false;\n                    if (flags & 8) {\n                        var orig = emscripten_source_map.originalPositionFor({\n                            line: lineno,\n                            column\n                        });\n                        haveSourceMap = orig?.source;\n                        if (haveSourceMap) {\n                            if (flags & 64) {\n                                orig.source = orig.source.substring(orig.source.replace(/\\\\/g, \"/\").lastIndexOf(\"/\") + 1)\n                            }\n                            callstack += `    at ${symbolName} (${orig.source}:${orig.line}:${orig.column})\\n`\n                        }\n                    }\n                    if (flags & 16 || !haveSourceMap) {\n                        if (flags & 64) {\n                            file = file.substring(file.replace(/\\\\/g, \"/\").lastIndexOf(\"/\") + 1)\n                        }\n                        callstack += (haveSourceMap ? `     = ${symbolName}` : `    at ${symbolName}`) + ` (${file}:${lineno}:${column})\\n`\n                    }\n                }\n                callstack = callstack.replace(/\\s+$/, \"\");\n                return callstack\n            };\n            var emscriptenLog = (flags, str) => {\n                if (flags & 24) {\n                    str = str.replace(/\\s+$/, \"\");\n                    str += (str.length > 0 ? \"\\n\" : \"\") + getCallstack(flags)\n                }\n                if (flags & 1) {\n                    if (flags & 4) {\n                        console.error(str)\n                    } else if (flags & 2) {\n                        console.warn(str)\n                    } else if (flags & 512) {\n                        console.info(str)\n                    } else if (flags & 256) {\n                        console.debug(str)\n                    } else {\n                        console.log(str)\n                    }\n                } else if (flags & 6) {\n                    err(str)\n                } else {\n                    out(str)\n                }\n            };\n            var reallyNegative = x => x < 0 || x === 0 && 1 / x === -Infinity;\n            var reSign = (value, bits) => {\n                if (value <= 0) {\n                    return value\n                }\n                var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);\n                if (value >= half && (bits <= 32 || value > half)) {\n                    value = -2 * half + value\n                }\n                return value\n            };\n            var unSign = (value, bits) => {\n                if (value >= 0) {\n                    return value\n                }\n                return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value\n            };\n            var strLen = ptr => {\n                var end = ptr;\n                while (HEAPU8[end >>> 0]) ++end;\n                return end - ptr\n            };\n            var formatString = (format, varargs) => {\n                var textIndex = format;\n                var argIndex = varargs;\n\n                function prepVararg(ptr, type) {\n                    if (type === \"double\" || type === \"i64\") {\n                        if (ptr & 7) {\n                            ptr += 4\n                        }\n                    } else {}\n                    return ptr\n                }\n\n                function getNextArg(type) {\n                    var ret;\n                    argIndex = prepVararg(argIndex, type);\n                    if (type === \"double\") {\n                        ret = HEAPF64[argIndex >>> 3 >>> 0];\n                        argIndex += 8\n                    } else if (type == \"i64\") {\n                        ret = [HEAP32[argIndex >>> 2 >>> 0], HEAP32[argIndex + 4 >>> 2 >>> 0]];\n                        argIndex += 8\n                    } else {\n                        type = \"i32\";\n                        ret = HEAP32[argIndex >>> 2 >>> 0];\n                        argIndex += 4\n                    }\n                    return ret\n                }\n                var ret = [];\n                var curr, next, currArg;\n                while (1) {\n                    var startTextIndex = textIndex;\n                    curr = HEAP8[textIndex >>> 0];\n                    if (curr === 0) break;\n                    next = HEAP8[textIndex + 1 >>> 0];\n                    if (curr == 37) {\n                        var flagAlwaysSigned = false;\n                        var flagLeftAlign = false;\n                        var flagAlternative = false;\n                        var flagZeroPad = false;\n                        var flagPadSign = false;\n                        flagsLoop: while (1) {\n                            switch (next) {\n                                case 43:\n                                    flagAlwaysSigned = true;\n                                    break;\n                                case 45:\n                                    flagLeftAlign = true;\n                                    break;\n                                case 35:\n                                    flagAlternative = true;\n                                    break;\n                                case 48:\n                                    if (flagZeroPad) {\n                                        break flagsLoop\n                                    } else {\n                                        flagZeroPad = true;\n                                        break\n                                    }\n                                case 32:\n                                    flagPadSign = true;\n                                    break;\n                                default:\n                                    break flagsLoop\n                            }\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        }\n                        var width = 0;\n                        if (next == 42) {\n                            width = getNextArg(\"i32\");\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        } else {\n                            while (next >= 48 && next <= 57) {\n                                width = width * 10 + (next - 48);\n                                textIndex++;\n                                next = HEAP8[textIndex + 1 >>> 0]\n                            }\n                        }\n                        var precisionSet = false,\n                            precision = -1;\n                        if (next == 46) {\n                            precision = 0;\n                            precisionSet = true;\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0];\n                            if (next == 42) {\n                                precision = getNextArg(\"i32\");\n                                textIndex++\n                            } else {\n                                while (1) {\n                                    var precisionChr = HEAP8[textIndex + 1 >>> 0];\n                                    if (precisionChr < 48 || precisionChr > 57) break;\n                                    precision = precision * 10 + (precisionChr - 48);\n                                    textIndex++\n                                }\n                            }\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        }\n                        if (precision < 0) {\n                            precision = 6;\n                            precisionSet = false\n                        }\n                        var argSize;\n                        switch (String.fromCharCode(next)) {\n                            case \"h\":\n                                var nextNext = HEAP8[textIndex + 2 >>> 0];\n                                if (nextNext == 104) {\n                                    textIndex++;\n                                    argSize = 1\n                                } else {\n                                    argSize = 2\n                                }\n                                break;\n                            case \"l\":\n                                var nextNext = HEAP8[textIndex + 2 >>> 0];\n                                if (nextNext == 108) {\n                                    textIndex++;\n                                    argSize = 8\n                                } else {\n                                    argSize = 4\n                                }\n                                break;\n                            case \"L\":\n                            case \"q\":\n                            case \"j\":\n                                argSize = 8;\n                                break;\n                            case \"z\":\n                            case \"t\":\n                            case \"I\":\n                                argSize = 4;\n                                break;\n                            default:\n                                argSize = null\n                        }\n                        if (argSize) textIndex++;\n                        next = HEAP8[textIndex + 1 >>> 0];\n                        switch (String.fromCharCode(next)) {\n                            case \"d\":\n                            case \"i\":\n                            case \"u\":\n                            case \"o\":\n                            case \"x\":\n                            case \"X\":\n                            case \"p\": {\n                                var signed = next == 100 || next == 105;\n                                argSize = argSize || 4;\n                                currArg = getNextArg(\"i\" + argSize * 8);\n                                var argText;\n                                if (argSize == 8) {\n                                    currArg = next == 117 ? convertU32PairToI53(currArg[0], currArg[1]) : convertI32PairToI53(currArg[0], currArg[1])\n                                }\n                                if (argSize <= 4) {\n                                    var limit = Math.pow(256, argSize) - 1;\n                                    currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8)\n                                }\n                                var currAbsArg = Math.abs(currArg);\n                                var prefix = \"\";\n                                if (next == 100 || next == 105) {\n                                    argText = reSign(currArg, 8 * argSize).toString(10)\n                                } else if (next == 117) {\n                                    argText = unSign(currArg, 8 * argSize).toString(10);\n                                    currArg = Math.abs(currArg)\n                                } else if (next == 111) {\n                                    argText = (flagAlternative ? \"0\" : \"\") + currAbsArg.toString(8)\n                                } else if (next == 120 || next == 88) {\n                                    prefix = flagAlternative && currArg != 0 ? \"0x\" : \"\";\n                                    if (currArg < 0) {\n                                        currArg = -currArg;\n                                        argText = (currAbsArg - 1).toString(16);\n                                        var buffer = [];\n                                        for (var i = 0; i < argText.length; i++) {\n                                            buffer.push((15 - parseInt(argText[i], 16)).toString(16))\n                                        }\n                                        argText = buffer.join(\"\");\n                                        while (argText.length < argSize * 2) argText = \"f\" + argText\n                                    } else {\n                                        argText = currAbsArg.toString(16)\n                                    }\n                                    if (next == 88) {\n                                        prefix = prefix.toUpperCase();\n                                        argText = argText.toUpperCase()\n                                    }\n                                } else if (next == 112) {\n                                    if (currAbsArg === 0) {\n                                        argText = \"(nil)\"\n                                    } else {\n                                        prefix = \"0x\";\n                                        argText = currAbsArg.toString(16)\n                                    }\n                                }\n                                if (precisionSet) {\n                                    while (argText.length < precision) {\n                                        argText = \"0\" + argText\n                                    }\n                                }\n                                if (currArg >= 0) {\n                                    if (flagAlwaysSigned) {\n                                        prefix = \"+\" + prefix\n                                    } else if (flagPadSign) {\n                                        prefix = \" \" + prefix\n                                    }\n                                }\n                                if (argText.charAt(0) == \"-\") {\n                                    prefix = \"-\" + prefix;\n                                    argText = argText.substr(1)\n                                }\n                                while (prefix.length + argText.length < width) {\n                                    if (flagLeftAlign) {\n                                        argText += \" \"\n                                    } else {\n                                        if (flagZeroPad) {\n                                            argText = \"0\" + argText\n                                        } else {\n                                            prefix = \" \" + prefix\n                                        }\n                                    }\n                                }\n                                argText = prefix + argText;\n                                argText.split(\"\").forEach(chr => ret.push(chr.charCodeAt(0)));\n                                break\n                            }\n                            case \"f\":\n                            case \"F\":\n                            case \"e\":\n                            case \"E\":\n                            case \"g\":\n                            case \"G\": {\n                                currArg = getNextArg(\"double\");\n                                var argText;\n                                if (isNaN(currArg)) {\n                                    argText = \"nan\";\n                                    flagZeroPad = false\n                                } else if (!isFinite(currArg)) {\n                                    argText = (currArg < 0 ? \"-\" : \"\") + \"inf\";\n                                    flagZeroPad = false\n                                } else {\n                                    var isGeneral = false;\n                                    var effectivePrecision = Math.min(precision, 20);\n                                    if (next == 103 || next == 71) {\n                                        isGeneral = true;\n                                        precision = precision || 1;\n                                        var exponent = parseInt(currArg.toExponential(effectivePrecision).split(\"e\")[1], 10);\n                                        if (precision > exponent && exponent >= -4) {\n                                            next = (next == 103 ? \"f\" : \"F\").charCodeAt(0);\n                                            precision -= exponent + 1\n                                        } else {\n                                            next = (next == 103 ? \"e\" : \"E\").charCodeAt(0);\n                                            precision--\n                                        }\n                                        effectivePrecision = Math.min(precision, 20)\n                                    }\n                                    if (next == 101 || next == 69) {\n                                        argText = currArg.toExponential(effectivePrecision);\n                                        if (/[eE][-+]\\d$/.test(argText)) {\n                                            argText = argText.slice(0, -1) + \"0\" + argText.slice(-1)\n                                        }\n                                    } else if (next == 102 || next == 70) {\n                                        argText = currArg.toFixed(effectivePrecision);\n                                        if (currArg === 0 && reallyNegative(currArg)) {\n                                            argText = \"-\" + argText\n                                        }\n                                    }\n                                    var parts = argText.split(\"e\");\n                                    if (isGeneral && !flagAlternative) {\n                                        while (parts[0].length > 1 && parts[0].includes(\".\") && (parts[0].slice(-1) == \"0\" || parts[0].slice(-1) == \".\")) {\n                                            parts[0] = parts[0].slice(0, -1)\n                                        }\n                                    } else {\n                                        if (flagAlternative && argText.indexOf(\".\") == -1) parts[0] += \".\";\n                                        while (precision > effectivePrecision++) parts[0] += \"0\"\n                                    }\n                                    argText = parts[0] + (parts.length > 1 ? \"e\" + parts[1] : \"\");\n                                    if (next == 69) argText = argText.toUpperCase();\n                                    if (currArg >= 0) {\n                                        if (flagAlwaysSigned) {\n                                            argText = \"+\" + argText\n                                        } else if (flagPadSign) {\n                                            argText = \" \" + argText\n                                        }\n                                    }\n                                }\n                                while (argText.length < width) {\n                                    if (flagLeftAlign) {\n                                        argText += \" \"\n                                    } else {\n                                        if (flagZeroPad && (argText[0] == \"-\" || argText[0] == \"+\")) {\n                                            argText = argText[0] + \"0\" + argText.slice(1)\n                                        } else {\n                                            argText = (flagZeroPad ? \"0\" : \" \") + argText\n                                        }\n                                    }\n                                }\n                                if (next < 97) argText = argText.toUpperCase();\n                                argText.split(\"\").forEach(chr => ret.push(chr.charCodeAt(0)));\n                                break\n                            }\n                            case \"s\": {\n                                var arg = getNextArg(\"i8*\");\n                                var argLength = arg ? strLen(arg) : \"(null)\".length;\n                                if (precisionSet) argLength = Math.min(argLength, precision);\n                                if (!flagLeftAlign) {\n                                    while (argLength < width--) {\n                                        ret.push(32)\n                                    }\n                                }\n                                if (arg) {\n                                    for (var i = 0; i < argLength; i++) {\n                                        ret.push(HEAPU8[arg++ >>> 0])\n                                    }\n                                } else {\n                                    ret = ret.concat(intArrayFromString(\"(null)\".substr(0, argLength), true))\n                                }\n                                if (flagLeftAlign) {\n                                    while (argLength < width--) {\n                                        ret.push(32)\n                                    }\n                                }\n                                break\n                            }\n                            case \"c\": {\n                                if (flagLeftAlign) ret.push(getNextArg(\"i8\"));\n                                while (--width > 0) {\n                                    ret.push(32)\n                                }\n                                if (!flagLeftAlign) ret.push(getNextArg(\"i8\"));\n                                break\n                            }\n                            case \"n\": {\n                                var ptr = getNextArg(\"i32*\");\n                                HEAP32[ptr >>> 2 >>> 0] = ret.length;\n                                break\n                            }\n                            case \"%\": {\n                                ret.push(curr);\n                                break\n                            }\n                            default: {\n                                for (var i = startTextIndex; i < textIndex + 2; i++) {\n                                    ret.push(HEAP8[i >>> 0])\n                                }\n                            }\n                        }\n                        textIndex += 2\n                    } else {\n                        ret.push(curr);\n                        textIndex += 1\n                    }\n                }\n                return ret\n            };\n\n            function _emscripten_log(flags, format, varargs) {\n                format >>>= 0;\n                varargs >>>= 0;\n                var result = formatString(format, varargs);\n                var str = UTF8ArrayToString(result);\n                emscriptenLog(flags, str)\n            }\n            _emscripten_log.sig = \"vipp\";\n\n            function _emscripten_get_compiler_setting(name) {\n                name >>>= 0;\n                throw \"You must build with -sRETAIN_COMPILER_SETTINGS for getCompilerSetting or emscripten_get_compiler_setting to work\"\n            }\n            _emscripten_get_compiler_setting.sig = \"pp\";\n            var _emscripten_has_asyncify = () => 0;\n            _emscripten_has_asyncify.sig = \"i\";\n            var _emscripten_debugger = () => {\n                debugger\n            };\n            _emscripten_debugger.sig = \"v\";\n\n            function _emscripten_print_double(x, to, max) {\n                to >>>= 0;\n                var str = x + \"\";\n                if (to) return stringToUTF8(str, to, max);\n                else return lengthBytesUTF8(str)\n            }\n            _emscripten_print_double.sig = \"idpi\";\n\n            function _emscripten_asm_const_double(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_double.sig = \"dppp\";\n            var runMainThreadEmAsm = (emAsmAddr, sigPtr, argbuf, sync) => {\n                var args = readEmAsmArgs(sigPtr, argbuf);\n                return ASM_CONSTS[emAsmAddr](...args)\n            };\n\n            function _emscripten_asm_const_int_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1)\n            }\n            _emscripten_asm_const_int_sync_on_main_thread.sig = \"ippp\";\n\n            function _emscripten_asm_const_ptr_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1)\n            }\n            _emscripten_asm_const_ptr_sync_on_main_thread.sig = \"pppp\";\n            var _emscripten_asm_const_double_sync_on_main_thread = _emscripten_asm_const_int_sync_on_main_thread;\n            _emscripten_asm_const_double_sync_on_main_thread.sig = \"dppp\";\n\n            function _emscripten_asm_const_async_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 0)\n            }\n            _emscripten_asm_const_async_on_main_thread.sig = \"vppp\";\n            var jstoi_s = Number;\n\n            function __Unwind_Backtrace(func, arg) {\n                func >>>= 0;\n                arg >>>= 0;\n                var trace = getCallstack();\n                var parts = trace.split(\"\\n\");\n                for (var i = 0; i < parts.length; i++) {\n                    var ret = getWasmTableEntry(func)(0, arg);\n                    if (ret !== 0) return\n                }\n            }\n            __Unwind_Backtrace.sig = \"ipp\";\n\n            function __Unwind_GetIPInfo(context, ipBefore) {\n                context >>>= 0;\n                ipBefore >>>= 0;\n                return abort(\"Unwind_GetIPInfo\")\n            }\n            __Unwind_GetIPInfo.sig = \"ppp\";\n\n            function __Unwind_FindEnclosingFunction(ip) {\n                ip >>>= 0;\n                return 0\n            }\n            __Unwind_FindEnclosingFunction.sig = \"pp\";\n\n            function __Unwind_RaiseException(ex) {\n                ex >>>= 0;\n                err(\"Warning: _Unwind_RaiseException is not correctly implemented\");\n                return ___cxa_throw(ex, 0, 0)\n            }\n            __Unwind_RaiseException.sig = \"ip\";\n\n            function __Unwind_DeleteException(ex) {\n                ex >>>= 0;\n                err(\"TODO: Unwind_DeleteException\")\n            }\n            __Unwind_DeleteException.sig = \"vp\";\n            var getDynCaller = (sig, ptr) => (...args) => dynCall(sig, ptr, args);\n            var _emscripten_exit_with_live_runtime = () => {\n                throw \"unwind\"\n            };\n            _emscripten_exit_with_live_runtime.sig = \"v\";\n            var _emscripten_force_exit = status => {\n                __emscripten_runtime_keepalive_clear();\n                _exit(status)\n            };\n            _emscripten_force_exit.sig = \"vi\";\n\n            function _emscripten_outn(str, len) {\n                str >>>= 0;\n                len >>>= 0;\n                return out(UTF8ToString(str, len))\n            }\n            _emscripten_outn.sig = \"vpp\";\n\n            function _emscripten_errn(str, len) {\n                str >>>= 0;\n                len >>>= 0;\n                return err(UTF8ToString(str, len))\n            }\n            _emscripten_errn.sig = \"vpp\";\n            var _emscripten_throw_number = number => {\n                throw number\n            };\n            _emscripten_throw_number.sig = \"vd\";\n\n            function _emscripten_throw_string(str) {\n                str >>>= 0;\n                throw UTF8ToString(str)\n            }\n            _emscripten_throw_string.sig = \"vp\";\n            var runtimeKeepalivePush = () => {\n                runtimeKeepaliveCounter += 1\n            };\n            runtimeKeepalivePush.sig = \"v\";\n            var runtimeKeepalivePop = () => {\n                runtimeKeepaliveCounter -= 1\n            };\n            runtimeKeepalivePop.sig = \"v\";\n            var _emscripten_runtime_keepalive_push = runtimeKeepalivePush;\n            _emscripten_runtime_keepalive_push.sig = \"v\";\n            var _emscripten_runtime_keepalive_pop = runtimeKeepalivePop;\n            _emscripten_runtime_keepalive_pop.sig = \"v\";\n            var _emscripten_runtime_keepalive_check = keepRuntimeAlive;\n            _emscripten_runtime_keepalive_check.sig = \"i\";\n            var asmjsMangle = x => {\n                if (x == \"__main_argc_argv\") {\n                    x = \"main\"\n                }\n                return x.startsWith(\"dynCall_\") ? x : \"_\" + x\n            };\n            var ___global_base = 1024;\n\n            function __emscripten_fs_load_embedded_files(ptr) {\n                ptr >>>= 0;\n                do {\n                    var name_addr = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var len = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var content = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var name = UTF8ToString(name_addr);\n                    FS.createPath(\"/\", PATH.dirname(name), true, true);\n                    FS.createDataFile(name, null, HEAP8.subarray(content >>> 0, content + len >>> 0), true, true, true)\n                } while (HEAPU32[ptr >>> 2 >>> 0])\n            }\n            __emscripten_fs_load_embedded_files.sig = \"vp\";\n            var POINTER_SIZE = 4;\n\n            function getNativeTypeSize(type) {\n                switch (type) {\n                    case \"i1\":\n                    case \"i8\":\n                    case \"u8\":\n                        return 1;\n                    case \"i16\":\n                    case \"u16\":\n                        return 2;\n                    case \"i32\":\n                    case \"u32\":\n                        return 4;\n                    case \"i64\":\n                    case \"u64\":\n                        return 8;\n                    case \"float\":\n                        return 4;\n                    case \"double\":\n                        return 8;\n                    default: {\n                        if (type[type.length - 1] === \"*\") {\n                            return POINTER_SIZE\n                        }\n                        if (type[0] === \"i\") {\n                            const bits = Number(type.substr(1));\n                            assert(bits % 8 === 0, `getNativeTypeSize invalid bits ${bits}, ${type} type`);\n                            return bits / 8\n                        }\n                        return 0\n                    }\n                }\n            }\n            var STACK_SIZE = 1048576;\n            var STACK_ALIGN = 16;\n            var ASSERTIONS = 0;\n            var cwrap = (ident, returnType, argTypes, opts) => {\n                var numericArgs = !argTypes || argTypes.every(type => type === \"number\" || type === \"boolean\");\n                var numericRet = returnType !== \"string\";\n                if (numericRet && numericArgs && !opts) {\n                    return getCFunc(ident)\n                }\n                return (...args) => ccall(ident, returnType, argTypes, args, opts)\n            };\n            var removeFunction = index => {\n                functionsInTableMap.delete(getWasmTableEntry(index));\n                setWasmTableEntry(index, null);\n                freeTableIndexes.push(index)\n            };\n            var _emscripten_math_cbrt = Math.cbrt;\n            _emscripten_math_cbrt.sig = \"dd\";\n            var _emscripten_math_pow = Math.pow;\n            _emscripten_math_pow.sig = \"ddd\";\n            var _emscripten_math_random = Math.random;\n            _emscripten_math_random.sig = \"d\";\n            var _emscripten_math_sign = Math.sign;\n            _emscripten_math_sign.sig = \"dd\";\n            var _emscripten_math_sqrt = Math.sqrt;\n            _emscripten_math_sqrt.sig = \"dd\";\n            var _emscripten_math_exp = Math.exp;\n            _emscripten_math_exp.sig = \"dd\";\n            var _emscripten_math_expm1 = Math.expm1;\n            _emscripten_math_expm1.sig = \"dd\";\n            var _emscripten_math_fmod = (x, y) => x % y;\n            _emscripten_math_fmod.sig = \"ddd\";\n            var _emscripten_math_log = Math.log;\n            _emscripten_math_log.sig = \"dd\";\n            var _emscripten_math_log1p = Math.log1p;\n            _emscripten_math_log1p.sig = \"dd\";\n            var _emscripten_math_log10 = Math.log10;\n            _emscripten_math_log10.sig = \"dd\";\n            var _emscripten_math_log2 = Math.log2;\n            _emscripten_math_log2.sig = \"dd\";\n            var _emscripten_math_round = Math.round;\n            _emscripten_math_round.sig = \"dd\";\n            var _emscripten_math_acos = Math.acos;\n            _emscripten_math_acos.sig = \"dd\";\n            var _emscripten_math_acosh = Math.acosh;\n            _emscripten_math_acosh.sig = \"dd\";\n            var _emscripten_math_asin = Math.asin;\n            _emscripten_math_asin.sig = \"dd\";\n            var _emscripten_math_asinh = Math.asinh;\n            _emscripten_math_asinh.sig = \"dd\";\n            var _emscripten_math_atan = Math.atan;\n            _emscripten_math_atan.sig = \"dd\";\n            var _emscripten_math_atanh = Math.atanh;\n            _emscripten_math_atanh.sig = \"dd\";\n            var _emscripten_math_atan2 = Math.atan2;\n            _emscripten_math_atan2.sig = \"ddd\";\n            var _emscripten_math_cos = Math.cos;\n            _emscripten_math_cos.sig = \"dd\";\n            var _emscripten_math_cosh = Math.cosh;\n            _emscripten_math_cosh.sig = \"dd\";\n\n            function _emscripten_math_hypot(count, varargs) {\n                varargs >>>= 0;\n                var args = [];\n                for (var i = 0; i < count; ++i) {\n                    args.push(HEAPF64[varargs + i * 8 >>> 3 >>> 0])\n                }\n                return Math.hypot(...args)\n            }\n            _emscripten_math_hypot.sig = \"dip\";\n            var _emscripten_math_sin = Math.sin;\n            _emscripten_math_sin.sig = \"dd\";\n            var _emscripten_math_sinh = Math.sinh;\n            _emscripten_math_sinh.sig = \"dd\";\n            var _emscripten_math_tan = Math.tan;\n            _emscripten_math_tan.sig = \"dd\";\n            var _emscripten_math_tanh = Math.tanh;\n            _emscripten_math_tanh.sig = \"dd\";\n\n            function intArrayToString(array) {\n                var ret = [];\n                for (var i = 0; i < array.length; i++) {\n                    var chr = array[i];\n                    if (chr > 255) {\n                        chr &= 255\n                    }\n                    ret.push(String.fromCharCode(chr))\n                }\n                return ret.join(\"\")\n            }\n            var AsciiToString = ptr => {\n                ptr >>>= 0;\n                var str = \"\";\n                while (1) {\n                    var ch = HEAPU8[ptr++ >>> 0];\n                    if (!ch) return str;\n                    str += String.fromCharCode(ch)\n                }\n            };\n            var JSEvents = {\n                removeAllEventListeners() {\n                    while (JSEvents.eventHandlers.length) {\n                        JSEvents._removeHandler(JSEvents.eventHandlers.length - 1)\n                    }\n                    JSEvents.deferredCalls = []\n                },\n                inEventHandler: 0,\n                deferredCalls: [],\n                deferCall(targetFunction, precedence, argsList) {\n                    function arraysHaveEqualContent(arrA, arrB) {\n                        if (arrA.length != arrB.length) return false;\n                        for (var i in arrA) {\n                            if (arrA[i] != arrB[i]) return false\n                        }\n                        return true\n                    }\n                    for (var call of JSEvents.deferredCalls) {\n                        if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {\n                            return\n                        }\n                    }\n                    JSEvents.deferredCalls.push({\n                        targetFunction,\n                        precedence,\n                        argsList\n                    });\n                    JSEvents.deferredCalls.sort((x, y) => x.precedence < y.precedence)\n                },\n                removeDeferredCalls(targetFunction) {\n                    JSEvents.deferredCalls = JSEvents.deferredCalls.filter(call => call.targetFunction != targetFunction)\n                },\n                canPerformEventHandlerRequests() {\n                    if (navigator.userActivation) {\n                        return navigator.userActivation.isActive\n                    }\n                    return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls\n                },\n                runDeferredCalls() {\n                    if (!JSEvents.canPerformEventHandlerRequests()) {\n                        return\n                    }\n                    var deferredCalls = JSEvents.deferredCalls;\n                    JSEvents.deferredCalls = [];\n                    for (var call of deferredCalls) {\n                        call.targetFunction(...call.argsList)\n                    }\n                },\n                eventHandlers: [],\n                removeAllHandlersOnTarget: (target, eventTypeString) => {\n                    for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n                        if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) {\n                            JSEvents._removeHandler(i--)\n                        }\n                    }\n                },\n                _removeHandler(i) {\n                    var h = JSEvents.eventHandlers[i];\n                    h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);\n                    JSEvents.eventHandlers.splice(i, 1)\n                },\n                registerOrRemoveHandler(eventHandler) {\n                    if (!eventHandler.target) {\n                        return -4\n                    }\n                    if (eventHandler.callbackfunc) {\n                        eventHandler.eventListenerFunc = function(event) {\n                            ++JSEvents.inEventHandler;\n                            JSEvents.currentEventHandler = eventHandler;\n                            JSEvents.runDeferredCalls();\n                            eventHandler.handlerFunc(event);\n                            JSEvents.runDeferredCalls();\n                            --JSEvents.inEventHandler\n                        };\n                        eventHandler.target.addEventListener(eventHandler.eventTypeString, eventHandler.eventListenerFunc, eventHandler.useCapture);\n                        JSEvents.eventHandlers.push(eventHandler)\n                    } else {\n                        for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n                            if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) {\n                                JSEvents._removeHandler(i--)\n                            }\n                        }\n                    }\n                    return 0\n                },\n                getNodeNameForTarget(target) {\n                    if (!target) return \"\";\n                    if (target == window) return \"#window\";\n                    if (target == screen) return \"#screen\";\n                    return target?.nodeName || \"\"\n                },\n                fullscreenEnabled() {\n                    return document.fullscreenEnabled || document.webkitFullscreenEnabled\n                }\n            };\n            var maybeCStringToJsString = cString => cString > 2 ? UTF8ToString(cString) : cString;\n            var specialHTMLTargets = [0, typeof document != \"undefined\" ? document : 0, typeof window != \"undefined\" ? window : 0];\n            var findEventTarget = target => {\n                target = maybeCStringToJsString(target);\n                var domElement = specialHTMLTargets[target] || (typeof document != \"undefined\" ? document.querySelector(target) : undefined);\n                return domElement\n            };\n            var registerKeyEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.keyEvent ||= _malloc(160);\n                var keyEventHandlerFunc = e => {\n                    var keyEventData = JSEvents.keyEvent;\n                    HEAPF64[keyEventData >>> 3 >>> 0] = e.timeStamp;\n                    var idx = keyEventData >>> 2;\n                    HEAP32[idx + 2 >>> 0] = e.location;\n                    HEAP8[keyEventData + 12 >>> 0] = e.ctrlKey;\n                    HEAP8[keyEventData + 13 >>> 0] = e.shiftKey;\n                    HEAP8[keyEventData + 14 >>> 0] = e.altKey;\n                    HEAP8[keyEventData + 15 >>> 0] = e.metaKey;\n                    HEAP8[keyEventData + 16 >>> 0] = e.repeat;\n                    HEAP32[idx + 5 >>> 0] = e.charCode;\n                    HEAP32[idx + 6 >>> 0] = e.keyCode;\n                    HEAP32[idx + 7 >>> 0] = e.which;\n                    stringToUTF8(e.key || \"\", keyEventData + 32, 32);\n                    stringToUTF8(e.code || \"\", keyEventData + 64, 32);\n                    stringToUTF8(e.char || \"\", keyEventData + 96, 32);\n                    stringToUTF8(e.locale || \"\", keyEventData + 128, 32);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, keyEventData, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: keyEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n            var findCanvasEventTarget = findEventTarget;\n\n            function _emscripten_set_keypress_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 1, \"keypress\", targetThread)\n            }\n            _emscripten_set_keypress_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, \"keydown\", targetThread)\n            }\n            _emscripten_set_keydown_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, \"keyup\", targetThread)\n            }\n            _emscripten_set_keyup_callback_on_thread.sig = \"ippipp\";\n            var getBoundingClientRect = e => specialHTMLTargets.indexOf(e) < 0 ? e.getBoundingClientRect() : {\n                left: 0,\n                top: 0\n            };\n            var fillMouseEventData = (eventStruct, e, target) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.timeStamp;\n                var idx = eventStruct >>> 2;\n                HEAP32[idx + 2 >>> 0] = e.screenX;\n                HEAP32[idx + 3 >>> 0] = e.screenY;\n                HEAP32[idx + 4 >>> 0] = e.clientX;\n                HEAP32[idx + 5 >>> 0] = e.clientY;\n                HEAP8[eventStruct + 24 >>> 0] = e.ctrlKey;\n                HEAP8[eventStruct + 25 >>> 0] = e.shiftKey;\n                HEAP8[eventStruct + 26 >>> 0] = e.altKey;\n                HEAP8[eventStruct + 27 >>> 0] = e.metaKey;\n                HEAP16[idx * 2 + 14 >>> 0] = e.button;\n                HEAP16[idx * 2 + 15 >>> 0] = e.buttons;\n                HEAP32[idx + 8 >>> 0] = e[\"movementX\"];\n                HEAP32[idx + 9 >>> 0] = e[\"movementY\"];\n                var rect = getBoundingClientRect(target);\n                HEAP32[idx + 10 >>> 0] = e.clientX - (rect.left | 0);\n                HEAP32[idx + 11 >>> 0] = e.clientY - (rect.top | 0)\n            };\n            var registerMouseEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.mouseEvent ||= _malloc(64);\n                target = findEventTarget(target);\n                var mouseEventHandlerFunc = (e = event) => {\n                    fillMouseEventData(JSEvents.mouseEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.mouseEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: eventTypeString != \"mousemove\" && eventTypeString != \"mouseenter\" && eventTypeString != \"mouseleave\",\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: mouseEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_click_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 4, \"click\", targetThread)\n            }\n            _emscripten_set_click_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mousedown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 5, \"mousedown\", targetThread)\n            }\n            _emscripten_set_mousedown_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 6, \"mouseup\", targetThread)\n            }\n            _emscripten_set_mouseup_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_dblclick_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 7, \"dblclick\", targetThread)\n            }\n            _emscripten_set_dblclick_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mousemove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 8, \"mousemove\", targetThread)\n            }\n            _emscripten_set_mousemove_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseenter_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 33, \"mouseenter\", targetThread)\n            }\n            _emscripten_set_mouseenter_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseleave_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 34, \"mouseleave\", targetThread)\n            }\n            _emscripten_set_mouseleave_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseover_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 35, \"mouseover\", targetThread)\n            }\n            _emscripten_set_mouseover_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 36, \"mouseout\", targetThread)\n            }\n            _emscripten_set_mouseout_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_mouse_status(mouseState) {\n                mouseState >>>= 0;\n                if (!JSEvents.mouseEvent) return -7;\n                HEAP8.set(HEAP8.subarray(JSEvents.mouseEvent >>> 0, JSEvents.mouseEvent + 64 >>> 0), mouseState >>> 0);\n                return 0\n            }\n            _emscripten_get_mouse_status.sig = \"ip\";\n            var registerWheelEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.wheelEvent ||= _malloc(96);\n                var wheelHandlerFunc = (e = event) => {\n                    var wheelEvent = JSEvents.wheelEvent;\n                    fillMouseEventData(wheelEvent, e, target);\n                    HEAPF64[wheelEvent + 64 >>> 3 >>> 0] = e[\"deltaX\"];\n                    HEAPF64[wheelEvent + 72 >>> 3 >>> 0] = e[\"deltaY\"];\n                    HEAPF64[wheelEvent + 80 >>> 3 >>> 0] = e[\"deltaZ\"];\n                    HEAP32[wheelEvent + 88 >>> 2 >>> 0] = e[\"deltaMode\"];\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, wheelEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: true,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: wheelHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_wheel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (typeof target.onwheel != \"undefined\") {\n                    return registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, \"wheel\", targetThread)\n                } else {\n                    return -1\n                }\n            }\n            _emscripten_set_wheel_callback_on_thread.sig = \"ippipp\";\n            var registerUiEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.uiEvent ||= _malloc(36);\n                target = findEventTarget(target);\n                var uiEventHandlerFunc = (e = event) => {\n                    if (e.target != target) {\n                        return\n                    }\n                    var b = document.body;\n                    if (!b) {\n                        return\n                    }\n                    var uiEvent = JSEvents.uiEvent;\n                    HEAP32[uiEvent >>> 2 >>> 0] = 0;\n                    HEAP32[uiEvent + 4 >>> 2 >>> 0] = b.clientWidth;\n                    HEAP32[uiEvent + 8 >>> 2 >>> 0] = b.clientHeight;\n                    HEAP32[uiEvent + 12 >>> 2 >>> 0] = innerWidth;\n                    HEAP32[uiEvent + 16 >>> 2 >>> 0] = innerHeight;\n                    HEAP32[uiEvent + 20 >>> 2 >>> 0] = outerWidth;\n                    HEAP32[uiEvent + 24 >>> 2 >>> 0] = outerHeight;\n                    HEAP32[uiEvent + 28 >>> 2 >>> 0] = pageXOffset | 0;\n                    HEAP32[uiEvent + 32 >>> 2 >>> 0] = pageYOffset | 0;\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, uiEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: uiEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_resize_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerUiEventCallback(target, userData, useCapture, callbackfunc, 10, \"resize\", targetThread)\n            }\n            _emscripten_set_resize_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_scroll_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerUiEventCallback(target, userData, useCapture, callbackfunc, 11, \"scroll\", targetThread)\n            }\n            _emscripten_set_scroll_callback_on_thread.sig = \"ippipp\";\n            var registerFocusEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.focusEvent ||= _malloc(256);\n                var focusEventHandlerFunc = (e = event) => {\n                    var nodeName = JSEvents.getNodeNameForTarget(e.target);\n                    var id = e.target.id ? e.target.id : \"\";\n                    var focusEvent = JSEvents.focusEvent;\n                    stringToUTF8(nodeName, focusEvent + 0, 128);\n                    stringToUTF8(id, focusEvent + 128, 128);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, focusEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: focusEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_blur_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 12, \"blur\", targetThread)\n            }\n            _emscripten_set_blur_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focus_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 13, \"focus\", targetThread)\n            }\n            _emscripten_set_focus_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focusin_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 14, \"focusin\", targetThread)\n            }\n            _emscripten_set_focusin_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focusout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 15, \"focusout\", targetThread)\n            }\n            _emscripten_set_focusout_callback_on_thread.sig = \"ippipp\";\n            var fillDeviceOrientationEventData = (eventStruct, e, target) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.alpha;\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = e.beta;\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = e.gamma;\n                HEAP8[eventStruct + 24 >>> 0] = e.absolute\n            };\n            var registerDeviceOrientationEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.deviceOrientationEvent ||= _malloc(32);\n                var deviceOrientationEventHandlerFunc = (e = event) => {\n                    fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceOrientationEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: deviceOrientationEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_deviceorientation_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerDeviceOrientationEventCallback(2, userData, useCapture, callbackfunc, 16, \"deviceorientation\", targetThread)\n            }\n            _emscripten_set_deviceorientation_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_deviceorientation_status(orientationState) {\n                orientationState >>>= 0;\n                if (!JSEvents.deviceOrientationEvent) return -7;\n                HEAP32.set(HEAP32.subarray(JSEvents.deviceOrientationEvent >>> 0, 32 >>> 0), orientationState >>> 0);\n                return 0\n            }\n            _emscripten_get_deviceorientation_status.sig = \"ip\";\n            var fillDeviceMotionEventData = (eventStruct, e, target) => {\n                var supportedFields = 0;\n                var a = e[\"acceleration\"];\n                supportedFields |= a && 1;\n                var ag = e[\"accelerationIncludingGravity\"];\n                supportedFields |= ag && 2;\n                var rr = e[\"rotationRate\"];\n                supportedFields |= rr && 4;\n                a = a || {};\n                ag = ag || {};\n                rr = rr || {};\n                HEAPF64[eventStruct >>> 3 >>> 0] = a[\"x\"];\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = a[\"y\"];\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = a[\"z\"];\n                HEAPF64[eventStruct + 24 >>> 3 >>> 0] = ag[\"x\"];\n                HEAPF64[eventStruct + 32 >>> 3 >>> 0] = ag[\"y\"];\n                HEAPF64[eventStruct + 40 >>> 3 >>> 0] = ag[\"z\"];\n                HEAPF64[eventStruct + 48 >>> 3 >>> 0] = rr[\"alpha\"];\n                HEAPF64[eventStruct + 56 >>> 3 >>> 0] = rr[\"beta\"];\n                HEAPF64[eventStruct + 64 >>> 3 >>> 0] = rr[\"gamma\"]\n            };\n            var registerDeviceMotionEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.deviceMotionEvent ||= _malloc(80);\n                var deviceMotionEventHandlerFunc = (e = event) => {\n                    fillDeviceMotionEventData(JSEvents.deviceMotionEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceMotionEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: deviceMotionEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_devicemotion_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerDeviceMotionEventCallback(2, userData, useCapture, callbackfunc, 17, \"devicemotion\", targetThread)\n            }\n            _emscripten_set_devicemotion_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_devicemotion_status(motionState) {\n                motionState >>>= 0;\n                if (!JSEvents.deviceMotionEvent) return -7;\n                HEAP32.set(HEAP32.subarray(JSEvents.deviceMotionEvent >>> 0, 80 >>> 0), motionState >>> 0);\n                return 0\n            }\n            _emscripten_get_devicemotion_status.sig = \"ip\";\n            var screenOrientation = () => {\n                if (!window.screen) return undefined;\n                return screen.orientation || screen[\"mozOrientation\"] || screen[\"webkitOrientation\"]\n            };\n            var fillOrientationChangeEventData = eventStruct => {\n                var orientationsType1 = [\"portrait-primary\", \"portrait-secondary\", \"landscape-primary\", \"landscape-secondary\"];\n                var orientationsType2 = [\"portrait\", \"portrait\", \"landscape\", \"landscape\"];\n                var orientationIndex = 0;\n                var orientationAngle = 0;\n                var screenOrientObj = screenOrientation();\n                if (typeof screenOrientObj === \"object\") {\n                    orientationIndex = orientationsType1.indexOf(screenOrientObj.type);\n                    if (orientationIndex < 0) {\n                        orientationIndex = orientationsType2.indexOf(screenOrientObj.type)\n                    }\n                    if (orientationIndex >= 0) {\n                        orientationIndex = 1 << orientationIndex\n                    }\n                    orientationAngle = screenOrientObj.angle\n                } else {\n                    orientationAngle = window.orientation\n                }\n                HEAP32[eventStruct >>> 2 >>> 0] = orientationIndex;\n                HEAP32[eventStruct + 4 >>> 2 >>> 0] = orientationAngle\n            };\n            var registerOrientationChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.orientationChangeEvent ||= _malloc(8);\n                var orientationChangeEventHandlerFunc = (e = event) => {\n                    var orientationChangeEvent = JSEvents.orientationChangeEvent;\n                    fillOrientationChangeEventData(orientationChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, orientationChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: orientationChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_orientationchange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!window.screen || !screen.orientation) return -1;\n                return registerOrientationChangeEventCallback(screen.orientation, userData, useCapture, callbackfunc, 18, \"change\", targetThread)\n            }\n            _emscripten_set_orientationchange_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_orientation_status(orientationChangeEvent) {\n                orientationChangeEvent >>>= 0;\n                if (!screenOrientation() && typeof orientation == \"undefined\") return -1;\n                fillOrientationChangeEventData(orientationChangeEvent);\n                return 0\n            }\n            _emscripten_get_orientation_status.sig = \"ip\";\n            var _emscripten_lock_orientation = allowedOrientations => {\n                var orientations = [];\n                if (allowedOrientations & 1) orientations.push(\"portrait-primary\");\n                if (allowedOrientations & 2) orientations.push(\"portrait-secondary\");\n                if (allowedOrientations & 4) orientations.push(\"landscape-primary\");\n                if (allowedOrientations & 8) orientations.push(\"landscape-secondary\");\n                var succeeded;\n                if (screen.lockOrientation) {\n                    succeeded = screen.lockOrientation(orientations)\n                } else if (screen.mozLockOrientation) {\n                    succeeded = screen.mozLockOrientation(orientations)\n                } else if (screen.webkitLockOrientation) {\n                    succeeded = screen.webkitLockOrientation(orientations)\n                } else {\n                    return -1\n                }\n                if (succeeded) {\n                    return 0\n                }\n                return -6\n            };\n            _emscripten_lock_orientation.sig = \"ii\";\n            var _emscripten_unlock_orientation = () => {\n                if (screen.unlockOrientation) {\n                    screen.unlockOrientation()\n                } else if (screen.mozUnlockOrientation) {\n                    screen.mozUnlockOrientation()\n                } else if (screen.webkitUnlockOrientation) {\n                    screen.webkitUnlockOrientation()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_unlock_orientation.sig = \"i\";\n            var fillFullscreenChangeEventData = eventStruct => {\n                var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n                var isFullscreen = !!fullscreenElement;\n                HEAP8[eventStruct >>> 0] = isFullscreen;\n                HEAP8[eventStruct + 1 >>> 0] = JSEvents.fullscreenEnabled();\n                var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement;\n                var nodeName = JSEvents.getNodeNameForTarget(reportedElement);\n                var id = reportedElement?.id || \"\";\n                stringToUTF8(nodeName, eventStruct + 2, 128);\n                stringToUTF8(id, eventStruct + 130, 128);\n                HEAP32[eventStruct + 260 >>> 2 >>> 0] = reportedElement ? reportedElement.clientWidth : 0;\n                HEAP32[eventStruct + 264 >>> 2 >>> 0] = reportedElement ? reportedElement.clientHeight : 0;\n                HEAP32[eventStruct + 268 >>> 2 >>> 0] = screen.width;\n                HEAP32[eventStruct + 272 >>> 2 >>> 0] = screen.height;\n                if (isFullscreen) {\n                    JSEvents.previousFullscreenElement = fullscreenElement\n                }\n            };\n            var registerFullscreenChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.fullscreenChangeEvent ||= _malloc(276);\n                var fullscreenChangeEventhandlerFunc = (e = event) => {\n                    var fullscreenChangeEvent = JSEvents.fullscreenChangeEvent;\n                    fillFullscreenChangeEventData(fullscreenChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, fullscreenChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: fullscreenChangeEventhandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_fullscreenchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, \"webkitfullscreenchange\", targetThread);\n                return registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, \"fullscreenchange\", targetThread)\n            }\n            _emscripten_set_fullscreenchange_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_fullscreen_status(fullscreenStatus) {\n                fullscreenStatus >>>= 0;\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                fillFullscreenChangeEventData(fullscreenStatus);\n                return 0\n            }\n            _emscripten_get_fullscreen_status.sig = \"ip\";\n\n            function _emscripten_get_canvas_element_size(target, width, height) {\n                target >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) return -4;\n                HEAP32[width >>> 2 >>> 0] = canvas.width;\n                HEAP32[height >>> 2 >>> 0] = canvas.height\n            }\n            _emscripten_get_canvas_element_size.sig = \"ippp\";\n            var getCanvasElementSize = target => {\n                var sp = stackSave();\n                var w = stackAlloc(8);\n                var h = w + 4;\n                var targetInt = stringToUTF8OnStack(target.id);\n                var ret = _emscripten_get_canvas_element_size(targetInt, w, h);\n                var size = [HEAP32[w >>> 2 >>> 0], HEAP32[h >>> 2 >>> 0]];\n                stackRestore(sp);\n                return size\n            };\n\n            function _emscripten_set_canvas_element_size(target, width, height) {\n                target >>>= 0;\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) return -4;\n                canvas.width = width;\n                canvas.height = height;\n                return 0\n            }\n            _emscripten_set_canvas_element_size.sig = \"ipii\";\n            var setCanvasElementSize = (target, width, height) => {\n                if (!target.controlTransferredOffscreen) {\n                    target.width = width;\n                    target.height = height\n                } else {\n                    var sp = stackSave();\n                    var targetInt = stringToUTF8OnStack(target.id);\n                    _emscripten_set_canvas_element_size(targetInt, width, height);\n                    stackRestore(sp)\n                }\n            };\n            var registerRestoreOldStyle = canvas => {\n                var canvasSize = getCanvasElementSize(canvas);\n                var oldWidth = canvasSize[0];\n                var oldHeight = canvasSize[1];\n                var oldCssWidth = canvas.style.width;\n                var oldCssHeight = canvas.style.height;\n                var oldBackgroundColor = canvas.style.backgroundColor;\n                var oldDocumentBackgroundColor = document.body.style.backgroundColor;\n                var oldPaddingLeft = canvas.style.paddingLeft;\n                var oldPaddingRight = canvas.style.paddingRight;\n                var oldPaddingTop = canvas.style.paddingTop;\n                var oldPaddingBottom = canvas.style.paddingBottom;\n                var oldMarginLeft = canvas.style.marginLeft;\n                var oldMarginRight = canvas.style.marginRight;\n                var oldMarginTop = canvas.style.marginTop;\n                var oldMarginBottom = canvas.style.marginBottom;\n                var oldDocumentBodyMargin = document.body.style.margin;\n                var oldDocumentOverflow = document.documentElement.style.overflow;\n                var oldDocumentScroll = document.body.scroll;\n                var oldImageRendering = canvas.style.imageRendering;\n\n                function restoreOldStyle() {\n                    var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;\n                    if (!fullscreenElement) {\n                        document.removeEventListener(\"fullscreenchange\", restoreOldStyle);\n                        document.removeEventListener(\"webkitfullscreenchange\", restoreOldStyle);\n                        setCanvasElementSize(canvas, oldWidth, oldHeight);\n                        canvas.style.width = oldCssWidth;\n                        canvas.style.height = oldCssHeight;\n                        canvas.style.backgroundColor = oldBackgroundColor;\n                        if (!oldDocumentBackgroundColor) document.body.style.backgroundColor = \"white\";\n                        document.body.style.backgroundColor = oldDocumentBackgroundColor;\n                        canvas.style.paddingLeft = oldPaddingLeft;\n                        canvas.style.paddingRight = oldPaddingRight;\n                        canvas.style.paddingTop = oldPaddingTop;\n                        canvas.style.paddingBottom = oldPaddingBottom;\n                        canvas.style.marginLeft = oldMarginLeft;\n                        canvas.style.marginRight = oldMarginRight;\n                        canvas.style.marginTop = oldMarginTop;\n                        canvas.style.marginBottom = oldMarginBottom;\n                        document.body.style.margin = oldDocumentBodyMargin;\n                        document.documentElement.style.overflow = oldDocumentOverflow;\n                        document.body.scroll = oldDocumentScroll;\n                        canvas.style.imageRendering = oldImageRendering;\n                        if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, oldWidth, oldHeight);\n                        if (currentFullscreenStrategy.canvasResizedCallback) {\n                            getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData)\n                        }\n                    }\n                }\n                document.addEventListener(\"fullscreenchange\", restoreOldStyle);\n                document.addEventListener(\"webkitfullscreenchange\", restoreOldStyle);\n                return restoreOldStyle\n            };\n            var setLetterbox = (element, topBottom, leftRight) => {\n                element.style.paddingLeft = element.style.paddingRight = leftRight + \"px\";\n                element.style.paddingTop = element.style.paddingBottom = topBottom + \"px\"\n            };\n            var JSEvents_resizeCanvasForFullscreen = (target, strategy) => {\n                var restoreOldStyle = registerRestoreOldStyle(target);\n                var cssWidth = strategy.softFullscreen ? innerWidth : screen.width;\n                var cssHeight = strategy.softFullscreen ? innerHeight : screen.height;\n                var rect = getBoundingClientRect(target);\n                var windowedCssWidth = rect.width;\n                var windowedCssHeight = rect.height;\n                var canvasSize = getCanvasElementSize(target);\n                var windowedRttWidth = canvasSize[0];\n                var windowedRttHeight = canvasSize[1];\n                if (strategy.scaleMode == 3) {\n                    setLetterbox(target, (cssHeight - windowedCssHeight) / 2, (cssWidth - windowedCssWidth) / 2);\n                    cssWidth = windowedCssWidth;\n                    cssHeight = windowedCssHeight\n                } else if (strategy.scaleMode == 2) {\n                    if (cssWidth * windowedRttHeight < windowedRttWidth * cssHeight) {\n                        var desiredCssHeight = windowedRttHeight * cssWidth / windowedRttWidth;\n                        setLetterbox(target, (cssHeight - desiredCssHeight) / 2, 0);\n                        cssHeight = desiredCssHeight\n                    } else {\n                        var desiredCssWidth = windowedRttWidth * cssHeight / windowedRttHeight;\n                        setLetterbox(target, 0, (cssWidth - desiredCssWidth) / 2);\n                        cssWidth = desiredCssWidth\n                    }\n                }\n                target.style.backgroundColor ||= \"black\";\n                document.body.style.backgroundColor ||= \"black\";\n                target.style.width = cssWidth + \"px\";\n                target.style.height = cssHeight + \"px\";\n                if (strategy.filteringMode == 1) {\n                    target.style.imageRendering = \"optimizeSpeed\";\n                    target.style.imageRendering = \"-moz-crisp-edges\";\n                    target.style.imageRendering = \"-o-crisp-edges\";\n                    target.style.imageRendering = \"-webkit-optimize-contrast\";\n                    target.style.imageRendering = \"optimize-contrast\";\n                    target.style.imageRendering = \"crisp-edges\";\n                    target.style.imageRendering = \"pixelated\"\n                }\n                var dpiScale = strategy.canvasResolutionScaleMode == 2 ? devicePixelRatio : 1;\n                if (strategy.canvasResolutionScaleMode != 0) {\n                    var newWidth = cssWidth * dpiScale | 0;\n                    var newHeight = cssHeight * dpiScale | 0;\n                    setCanvasElementSize(target, newWidth, newHeight);\n                    if (target.GLctxObject) target.GLctxObject.GLctx.viewport(0, 0, newWidth, newHeight)\n                }\n                return restoreOldStyle\n            };\n            var JSEvents_requestFullscreen = (target, strategy) => {\n                if (strategy.scaleMode != 0 || strategy.canvasResolutionScaleMode != 0) {\n                    JSEvents_resizeCanvasForFullscreen(target, strategy)\n                }\n                if (target.requestFullscreen) {\n                    target.requestFullscreen()\n                } else if (target.webkitRequestFullscreen) {\n                    target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)\n                } else {\n                    return JSEvents.fullscreenEnabled() ? -3 : -1\n                }\n                currentFullscreenStrategy = strategy;\n                if (strategy.canvasResizedCallback) {\n                    getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                }\n                return 0\n            };\n            var hideEverythingExceptGivenElement = onlyVisibleElement => {\n                var child = onlyVisibleElement;\n                var parent = child.parentNode;\n                var hiddenElements = [];\n                while (child != document.body) {\n                    var children = parent.children;\n                    for (var i = 0; i < children.length; ++i) {\n                        if (children[i] != child) {\n                            hiddenElements.push({\n                                node: children[i],\n                                displayState: children[i].style.display\n                            });\n                            children[i].style.display = \"none\"\n                        }\n                    }\n                    child = parent;\n                    parent = parent.parentNode\n                }\n                return hiddenElements\n            };\n            var restoreHiddenElements = hiddenElements => {\n                for (var elem of hiddenElements) {\n                    elem.node.style.display = elem.displayState\n                }\n            };\n            var currentFullscreenStrategy = {};\n            var restoreOldWindowedStyle = null;\n            var softFullscreenResizeWebGLRenderTarget = () => {\n                var dpr = devicePixelRatio;\n                var inHiDPIFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode == 2;\n                var inAspectRatioFixedFullscreenMode = currentFullscreenStrategy.scaleMode == 2;\n                var inPixelPerfectFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode != 0;\n                var inCenteredWithoutScalingFullscreenMode = currentFullscreenStrategy.scaleMode == 3;\n                var screenWidth = inHiDPIFullscreenMode ? Math.round(innerWidth * dpr) : innerWidth;\n                var screenHeight = inHiDPIFullscreenMode ? Math.round(innerHeight * dpr) : innerHeight;\n                var w = screenWidth;\n                var h = screenHeight;\n                var canvas = currentFullscreenStrategy.target;\n                var canvasSize = getCanvasElementSize(canvas);\n                var x = canvasSize[0];\n                var y = canvasSize[1];\n                var topMargin;\n                if (inAspectRatioFixedFullscreenMode) {\n                    if (w * y < x * h) h = w * y / x | 0;\n                    else if (w * y > x * h) w = h * x / y | 0;\n                    topMargin = (screenHeight - h) / 2 | 0\n                }\n                if (inPixelPerfectFullscreenMode) {\n                    setCanvasElementSize(canvas, w, h);\n                    if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, w, h)\n                }\n                if (inHiDPIFullscreenMode) {\n                    topMargin /= dpr;\n                    w /= dpr;\n                    h /= dpr;\n                    w = Math.round(w * 1e4) / 1e4;\n                    h = Math.round(h * 1e4) / 1e4;\n                    topMargin = Math.round(topMargin * 1e4) / 1e4\n                }\n                if (inCenteredWithoutScalingFullscreenMode) {\n                    var t = (innerHeight - jstoi_q(canvas.style.height)) / 2;\n                    var b = (innerWidth - jstoi_q(canvas.style.width)) / 2;\n                    setLetterbox(canvas, t, b)\n                } else {\n                    canvas.style.width = w + \"px\";\n                    canvas.style.height = h + \"px\";\n                    var b = (innerWidth - w) / 2;\n                    setLetterbox(canvas, topMargin, b)\n                }\n                if (!inCenteredWithoutScalingFullscreenMode && currentFullscreenStrategy.canvasResizedCallback) {\n                    getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData)\n                }\n            };\n            var doRequestFullscreen = (target, strategy) => {\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (!target.requestFullscreen && !target.webkitRequestFullscreen) {\n                    return -3\n                }\n                if (!JSEvents.canPerformEventHandlerRequests()) {\n                    if (strategy.deferUntilInEventHandler) {\n                        JSEvents.deferCall(JSEvents_requestFullscreen, 1, [target, strategy]);\n                        return 1\n                    }\n                    return -2\n                }\n                return JSEvents_requestFullscreen(target, strategy)\n            };\n\n            function _emscripten_request_fullscreen(target, deferUntilInEventHandler) {\n                target >>>= 0;\n                var strategy = {\n                    scaleMode: 0,\n                    canvasResolutionScaleMode: 0,\n                    filteringMode: 0,\n                    deferUntilInEventHandler,\n                    canvasResizedCallbackTargetThread: 2\n                };\n                return doRequestFullscreen(target, strategy)\n            }\n            _emscripten_request_fullscreen.sig = \"ipi\";\n\n            function _emscripten_request_fullscreen_strategy(target, deferUntilInEventHandler, fullscreenStrategy) {\n                target >>>= 0;\n                fullscreenStrategy >>>= 0;\n                var strategy = {\n                    scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0],\n                    canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0],\n                    filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0],\n                    deferUntilInEventHandler,\n                    canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0],\n                    canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0]\n                };\n                return doRequestFullscreen(target, strategy)\n            }\n            _emscripten_request_fullscreen_strategy.sig = \"ipip\";\n\n            function _emscripten_enter_soft_fullscreen(target, fullscreenStrategy) {\n                target >>>= 0;\n                fullscreenStrategy >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                var strategy = {\n                    scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0],\n                    canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0],\n                    filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0],\n                    canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0],\n                    canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0],\n                    target,\n                    softFullscreen: true\n                };\n                var restoreOldStyle = JSEvents_resizeCanvasForFullscreen(target, strategy);\n                document.documentElement.style.overflow = \"hidden\";\n                document.body.scroll = \"no\";\n                document.body.style.margin = \"0px\";\n                var hiddenElements = hideEverythingExceptGivenElement(target);\n\n                function restoreWindowedState() {\n                    restoreOldStyle();\n                    restoreHiddenElements(hiddenElements);\n                    removeEventListener(\"resize\", softFullscreenResizeWebGLRenderTarget);\n                    if (strategy.canvasResizedCallback) {\n                        getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                    }\n                    currentFullscreenStrategy = 0\n                }\n                restoreOldWindowedStyle = restoreWindowedState;\n                currentFullscreenStrategy = strategy;\n                addEventListener(\"resize\", softFullscreenResizeWebGLRenderTarget);\n                if (strategy.canvasResizedCallback) {\n                    getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                }\n                return 0\n            }\n            _emscripten_enter_soft_fullscreen.sig = \"ipp\";\n            var _emscripten_exit_soft_fullscreen = () => {\n                restoreOldWindowedStyle?.();\n                restoreOldWindowedStyle = null;\n                return 0\n            };\n            _emscripten_exit_soft_fullscreen.sig = \"i\";\n            var _emscripten_exit_fullscreen = () => {\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);\n                var d = specialHTMLTargets[1];\n                if (d.exitFullscreen) {\n                    d.fullscreenElement && d.exitFullscreen()\n                } else if (d.webkitExitFullscreen) {\n                    d.webkitFullscreenElement && d.webkitExitFullscreen()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_exit_fullscreen.sig = \"i\";\n            var fillPointerlockChangeEventData = eventStruct => {\n                var pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement;\n                var isPointerlocked = !!pointerLockElement;\n                HEAP8[eventStruct >>> 0] = isPointerlocked;\n                var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement);\n                var id = pointerLockElement?.id || \"\";\n                stringToUTF8(nodeName, eventStruct + 1, 128);\n                stringToUTF8(id, eventStruct + 129, 128)\n            };\n            var registerPointerlockChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.pointerlockChangeEvent ||= _malloc(257);\n                var pointerlockChangeEventHandlerFunc = (e = event) => {\n                    var pointerlockChangeEvent = JSEvents.pointerlockChangeEvent;\n                    fillPointerlockChangeEventData(pointerlockChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, pointerlockChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: pointerlockChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_pointerlockchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!document || !document.body || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"mozpointerlockchange\", targetThread);\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"webkitpointerlockchange\", targetThread);\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"mspointerlockchange\", targetThread);\n                return registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"pointerlockchange\", targetThread)\n            }\n            _emscripten_set_pointerlockchange_callback_on_thread.sig = \"ippipp\";\n            var registerPointerlockErrorEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                var pointerlockErrorEventHandlerFunc = (e = event) => {\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: pointerlockErrorEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_pointerlockerror_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!document || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"mozpointerlockerror\", targetThread);\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"webkitpointerlockerror\", targetThread);\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"mspointerlockerror\", targetThread);\n                return registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"pointerlockerror\", targetThread)\n            }\n            _emscripten_set_pointerlockerror_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_pointerlock_status(pointerlockStatus) {\n                pointerlockStatus >>>= 0;\n                if (pointerlockStatus) fillPointerlockChangeEventData(pointerlockStatus);\n                if (!document.body || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                return 0\n            }\n            _emscripten_get_pointerlock_status.sig = \"ip\";\n            var requestPointerLock = target => {\n                if (target.requestPointerLock) {\n                    target.requestPointerLock()\n                } else {\n                    if (document.body.requestPointerLock) {\n                        return -3\n                    }\n                    return -1\n                }\n                return 0\n            };\n\n            function _emscripten_request_pointerlock(target, deferUntilInEventHandler) {\n                target >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (!target.requestPointerLock) {\n                    return -1\n                }\n                if (!JSEvents.canPerformEventHandlerRequests()) {\n                    if (deferUntilInEventHandler) {\n                        JSEvents.deferCall(requestPointerLock, 2, [target]);\n                        return 1\n                    }\n                    return -2\n                }\n                return requestPointerLock(target)\n            }\n            _emscripten_request_pointerlock.sig = \"ipi\";\n            var _emscripten_exit_pointerlock = () => {\n                JSEvents.removeDeferredCalls(requestPointerLock);\n                if (document.exitPointerLock) {\n                    document.exitPointerLock()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_exit_pointerlock.sig = \"i\";\n            var _emscripten_vibrate = msecs => {\n                if (!navigator.vibrate) return -1;\n                navigator.vibrate(msecs);\n                return 0\n            };\n            _emscripten_vibrate.sig = \"ii\";\n\n            function _emscripten_vibrate_pattern(msecsArray, numEntries) {\n                msecsArray >>>= 0;\n                if (!navigator.vibrate) return -1;\n                var vibrateList = [];\n                for (var i = 0; i < numEntries; ++i) {\n                    var msecs = HEAP32[msecsArray + i * 4 >>> 2 >>> 0];\n                    vibrateList.push(msecs)\n                }\n                navigator.vibrate(vibrateList);\n                return 0\n            }\n            _emscripten_vibrate_pattern.sig = \"ipi\";\n            var fillVisibilityChangeEventData = eventStruct => {\n                var visibilityStates = [\"hidden\", \"visible\", \"prerender\", \"unloaded\"];\n                var visibilityState = visibilityStates.indexOf(document.visibilityState);\n                HEAP8[eventStruct >>> 0] = document.hidden;\n                HEAP32[eventStruct + 4 >>> 2 >>> 0] = visibilityState\n            };\n            var registerVisibilityChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.visibilityChangeEvent ||= _malloc(8);\n                var visibilityChangeEventHandlerFunc = (e = event) => {\n                    var visibilityChangeEvent = JSEvents.visibilityChangeEvent;\n                    fillVisibilityChangeEventData(visibilityChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, visibilityChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: visibilityChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_visibilitychange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!specialHTMLTargets[1]) {\n                    return -4\n                }\n                return registerVisibilityChangeEventCallback(specialHTMLTargets[1], userData, useCapture, callbackfunc, 21, \"visibilitychange\", targetThread)\n            }\n            _emscripten_set_visibilitychange_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_visibility_status(visibilityStatus) {\n                visibilityStatus >>>= 0;\n                if (typeof document.visibilityState == \"undefined\" && typeof document.hidden == \"undefined\") {\n                    return -1\n                }\n                fillVisibilityChangeEventData(visibilityStatus);\n                return 0\n            }\n            _emscripten_get_visibility_status.sig = \"ip\";\n            var registerTouchEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.touchEvent ||= _malloc(1552);\n                target = findEventTarget(target);\n                var touchEventHandlerFunc = e => {\n                    var t, touches = {},\n                        et = e.touches;\n                    for (let t of et) {\n                        t.isChanged = t.onTarget = 0;\n                        touches[t.identifier] = t\n                    }\n                    for (let t of e.changedTouches) {\n                        t.isChanged = 1;\n                        touches[t.identifier] = t\n                    }\n                    for (let t of e.targetTouches) {\n                        touches[t.identifier].onTarget = 1\n                    }\n                    var touchEvent = JSEvents.touchEvent;\n                    HEAPF64[touchEvent >>> 3 >>> 0] = e.timeStamp;\n                    HEAP8[touchEvent + 12 >>> 0] = e.ctrlKey;\n                    HEAP8[touchEvent + 13 >>> 0] = e.shiftKey;\n                    HEAP8[touchEvent + 14 >>> 0] = e.altKey;\n                    HEAP8[touchEvent + 15 >>> 0] = e.metaKey;\n                    var idx = touchEvent + 16;\n                    var targetRect = getBoundingClientRect(target);\n                    var numTouches = 0;\n                    for (let t of Object.values(touches)) {\n                        var idx32 = idx >>> 2;\n                        HEAP32[idx32 + 0 >>> 0] = t.identifier;\n                        HEAP32[idx32 + 1 >>> 0] = t.screenX;\n                        HEAP32[idx32 + 2 >>> 0] = t.screenY;\n                        HEAP32[idx32 + 3 >>> 0] = t.clientX;\n                        HEAP32[idx32 + 4 >>> 0] = t.clientY;\n                        HEAP32[idx32 + 5 >>> 0] = t.pageX;\n                        HEAP32[idx32 + 6 >>> 0] = t.pageY;\n                        HEAP8[idx + 28 >>> 0] = t.isChanged;\n                        HEAP8[idx + 29 >>> 0] = t.onTarget;\n                        HEAP32[idx32 + 8 >>> 0] = t.clientX - (targetRect.left | 0);\n                        HEAP32[idx32 + 9 >>> 0] = t.clientY - (targetRect.top | 0);\n                        idx += 48;\n                        if (++numTouches > 31) {\n                            break\n                        }\n                    }\n                    HEAP32[touchEvent + 8 >>> 2 >>> 0] = numTouches;\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, touchEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: eventTypeString == \"touchstart\" || eventTypeString == \"touchend\",\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: touchEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_touchstart_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, \"touchstart\", targetThread)\n            }\n            _emscripten_set_touchstart_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchend_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, \"touchend\", targetThread)\n            }\n            _emscripten_set_touchend_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchmove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, \"touchmove\", targetThread)\n            }\n            _emscripten_set_touchmove_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchcancel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 25, \"touchcancel\", targetThread)\n            }\n            _emscripten_set_touchcancel_callback_on_thread.sig = \"ippipp\";\n            var fillGamepadEventData = (eventStruct, e) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.timestamp;\n                for (var i = 0; i < e.axes.length; ++i) {\n                    HEAPF64[eventStruct + i * 8 + 16 >>> 3 >>> 0] = e.axes[i]\n                }\n                for (var i = 0; i < e.buttons.length; ++i) {\n                    if (typeof e.buttons[i] == \"object\") {\n                        HEAPF64[eventStruct + i * 8 + 528 >>> 3 >>> 0] = e.buttons[i].value\n                    } else {\n                        HEAPF64[eventStruct + i * 8 + 528 >>> 3 >>> 0] = e.buttons[i]\n                    }\n                }\n                for (var i = 0; i < e.buttons.length; ++i) {\n                    if (typeof e.buttons[i] == \"object\") {\n                        HEAP8[eventStruct + i + 1040 >>> 0] = e.buttons[i].pressed\n                    } else {\n                        HEAP8[eventStruct + i + 1040 >>> 0] = e.buttons[i] == 1\n                    }\n                }\n                HEAP8[eventStruct + 1104 >>> 0] = e.connected;\n                HEAP32[eventStruct + 1108 >>> 2 >>> 0] = e.index;\n                HEAP32[eventStruct + 8 >>> 2 >>> 0] = e.axes.length;\n                HEAP32[eventStruct + 12 >>> 2 >>> 0] = e.buttons.length;\n                stringToUTF8(e.id, eventStruct + 1112, 64);\n                stringToUTF8(e.mapping, eventStruct + 1176, 64)\n            };\n            var registerGamepadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.gamepadEvent ||= _malloc(1240);\n                var gamepadEventHandlerFunc = (e = event) => {\n                    var gamepadEvent = JSEvents.gamepadEvent;\n                    fillGamepadEventData(gamepadEvent, e[\"gamepad\"]);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, gamepadEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    allowsDeferredCalls: true,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: gamepadEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n            var _emscripten_sample_gamepad_data = () => {\n                try {\n                    if (navigator.getGamepads) return (JSEvents.lastGamepadState = navigator.getGamepads()) ? 0 : -1\n                } catch (e) {\n                    navigator.getGamepads = null\n                }\n                return -1\n            };\n            _emscripten_sample_gamepad_data.sig = \"i\";\n\n            function _emscripten_set_gamepadconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (_emscripten_sample_gamepad_data()) return -1;\n                return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 26, \"gamepadconnected\", targetThread)\n            }\n            _emscripten_set_gamepadconnected_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_set_gamepaddisconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (_emscripten_sample_gamepad_data()) return -1;\n                return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 27, \"gamepaddisconnected\", targetThread)\n            }\n            _emscripten_set_gamepaddisconnected_callback_on_thread.sig = \"ipipp\";\n            var _emscripten_get_num_gamepads = () => JSEvents.lastGamepadState.length;\n            _emscripten_get_num_gamepads.sig = \"i\";\n\n            function _emscripten_get_gamepad_status(index, gamepadState) {\n                gamepadState >>>= 0;\n                if (index < 0 || index >= JSEvents.lastGamepadState.length) return -5;\n                if (!JSEvents.lastGamepadState[index]) return -7;\n                fillGamepadEventData(gamepadState, JSEvents.lastGamepadState[index]);\n                return 0\n            }\n            _emscripten_get_gamepad_status.sig = \"iip\";\n            var registerBeforeUnloadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) => {\n                var beforeUnloadEventHandlerFunc = (e = event) => {\n                    var confirmationMessage = getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData);\n                    if (confirmationMessage) {\n                        confirmationMessage = UTF8ToString(confirmationMessage)\n                    }\n                    if (confirmationMessage) {\n                        e.preventDefault();\n                        e.returnValue = confirmationMessage;\n                        return confirmationMessage\n                    }\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: beforeUnloadEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_beforeunload_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (typeof onbeforeunload == \"undefined\") return -1;\n                if (targetThread !== 1) return -5;\n                return registerBeforeUnloadEventCallback(2, userData, true, callbackfunc, 28, \"beforeunload\")\n            }\n            _emscripten_set_beforeunload_callback_on_thread.sig = \"ippp\";\n            var fillBatteryEventData = (eventStruct, e) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.chargingTime;\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = e.dischargingTime;\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = e.level;\n                HEAP8[eventStruct + 24 >>> 0] = e.charging\n            };\n            var battery = () => navigator.battery || navigator.mozBattery || navigator.webkitBattery;\n            var registerBatteryEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.batteryEvent ||= _malloc(32);\n                var batteryEventHandlerFunc = (e = event) => {\n                    var batteryEvent = JSEvents.batteryEvent;\n                    fillBatteryEventData(batteryEvent, battery());\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, batteryEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: batteryEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_batterychargingchange_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!battery()) return -1;\n                return registerBatteryEventCallback(battery(), userData, true, callbackfunc, 29, \"chargingchange\", targetThread)\n            }\n            _emscripten_set_batterychargingchange_callback_on_thread.sig = \"ippp\";\n\n            function _emscripten_set_batterylevelchange_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!battery()) return -1;\n                return registerBatteryEventCallback(battery(), userData, true, callbackfunc, 30, \"levelchange\", targetThread)\n            }\n            _emscripten_set_batterylevelchange_callback_on_thread.sig = \"ippp\";\n\n            function _emscripten_get_battery_status(batteryState) {\n                batteryState >>>= 0;\n                if (!battery()) return -1;\n                fillBatteryEventData(batteryState, battery());\n                return 0\n            }\n            _emscripten_get_battery_status.sig = \"ip\";\n\n            function _emscripten_set_element_css_size(target, width, height) {\n                target >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                target.style.width = width + \"px\";\n                target.style.height = height + \"px\";\n                return 0\n            }\n            _emscripten_set_element_css_size.sig = \"ipdd\";\n\n            function _emscripten_get_element_css_size(target, width, height) {\n                target >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                var rect = getBoundingClientRect(target);\n                HEAPF64[width >>> 3 >>> 0] = rect.width;\n                HEAPF64[height >>> 3 >>> 0] = rect.height;\n                return 0\n            }\n            _emscripten_get_element_css_size.sig = \"ippp\";\n            var _emscripten_html5_remove_all_event_listeners = () => JSEvents.removeAllEventListeners();\n            _emscripten_html5_remove_all_event_listeners.sig = \"v\";\n            var _emscripten_request_animation_frame = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return requestAnimationFrame(timeStamp => getWasmTableEntry(cb)(timeStamp, userData))\n            };\n            _emscripten_request_animation_frame.sig = \"ipp\";\n            var _emscripten_cancel_animation_frame = id => cancelAnimationFrame(id);\n            _emscripten_cancel_animation_frame.sig = \"vi\";\n\n            function _emscripten_request_animation_frame_loop(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick(timeStamp) {\n                    if (getWasmTableEntry(cb)(timeStamp, userData)) {\n                        requestAnimationFrame(tick)\n                    }\n                }\n                return requestAnimationFrame(tick)\n            }\n            _emscripten_request_animation_frame_loop.sig = \"vpp\";\n            var _emscripten_performance_now = () => performance.now();\n            _emscripten_performance_now.sig = \"d\";\n            var _emscripten_get_device_pixel_ratio = () => typeof devicePixelRatio == \"number\" && devicePixelRatio || 1;\n            _emscripten_get_device_pixel_ratio.sig = \"d\";\n\n            function _emscripten_get_callstack(flags, str, maxbytes) {\n                str >>>= 0;\n                var callstack = getCallstack(flags);\n                if (!str || maxbytes <= 0) {\n                    return lengthBytesUTF8(callstack) + 1\n                }\n                var bytesWrittenExcludingNull = stringToUTF8(callstack, str, maxbytes);\n                return bytesWrittenExcludingNull + 1\n            }\n            _emscripten_get_callstack.sig = \"iipi\";\n            var convertFrameToPC = frame => {\n                abort(\"Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER\");\n                return 0\n            };\n\n            function _emscripten_return_address(level) {\n                var callstack = jsStackTrace().split(\"\\n\");\n                if (callstack[0] == \"Error\") {\n                    callstack.shift()\n                }\n                var caller = callstack[level + 3];\n                return convertFrameToPC(caller)\n            }\n            _emscripten_return_address.sig = \"pi\";\n            var UNWIND_CACHE = {};\n            var saveInUnwindCache = callstack => {\n                callstack.forEach(frame => {\n                    var pc = convertFrameToPC(frame);\n                    if (pc) {\n                        UNWIND_CACHE[pc] = frame\n                    }\n                })\n            };\n\n            function _emscripten_stack_snapshot() {\n                var callstack = jsStackTrace().split(\"\\n\");\n                if (callstack[0] == \"Error\") {\n                    callstack.shift()\n                }\n                saveInUnwindCache(callstack);\n                UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]);\n                UNWIND_CACHE.last_stack = callstack;\n                return UNWIND_CACHE.last_addr\n            }\n            _emscripten_stack_snapshot.sig = \"p\";\n\n            function _emscripten_stack_unwind_buffer(addr, buffer, count) {\n                addr >>>= 0;\n                buffer >>>= 0;\n                var stack;\n                if (UNWIND_CACHE.last_addr == addr) {\n                    stack = UNWIND_CACHE.last_stack\n                } else {\n                    stack = jsStackTrace().split(\"\\n\");\n                    if (stack[0] == \"Error\") {\n                        stack.shift()\n                    }\n                    saveInUnwindCache(stack)\n                }\n                var offset = 3;\n                while (stack[offset] && convertFrameToPC(stack[offset]) != addr) {\n                    ++offset\n                }\n                for (var i = 0; i < count && stack[i + offset]; ++i) {\n                    HEAP32[buffer + i * 4 >>> 2 >>> 0] = convertFrameToPC(stack[i + offset])\n                }\n                return i\n            }\n            _emscripten_stack_unwind_buffer.sig = \"ippi\";\n\n            function _emscripten_pc_get_function(pc) {\n                pc >>>= 0;\n                abort(\"Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER\");\n                return 0\n            }\n            _emscripten_pc_get_function.sig = \"pp\";\n            var convertPCtoSourceLocation = pc => {\n                if (UNWIND_CACHE.last_get_source_pc == pc) return UNWIND_CACHE.last_source;\n                var match;\n                var source;\n                if (!source) {\n                    var frame = UNWIND_CACHE[pc];\n                    if (!frame) return null;\n                    if (match = /\\((.*):(\\d+):(\\d+)\\)$/.exec(frame)) {\n                        source = {\n                            file: match[1],\n                            line: match[2],\n                            column: match[3]\n                        }\n                    } else if (match = /@(.*):(\\d+):(\\d+)/.exec(frame)) {\n                        source = {\n                            file: match[1],\n                            line: match[2],\n                            column: match[3]\n                        }\n                    }\n                }\n                UNWIND_CACHE.last_get_source_pc = pc;\n                UNWIND_CACHE.last_source = source;\n                return source\n            };\n\n            function _emscripten_pc_get_file(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                if (!result) return 0;\n                if (_emscripten_pc_get_file.ret) _free(_emscripten_pc_get_file.ret);\n                _emscripten_pc_get_file.ret = stringToNewUTF8(result.file);\n                return _emscripten_pc_get_file.ret\n            }\n            _emscripten_pc_get_file.sig = \"pp\";\n\n            function _emscripten_pc_get_line(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                return result ? result.line : 0\n            }\n            _emscripten_pc_get_line.sig = \"ip\";\n\n            function _emscripten_pc_get_column(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                return result ? result.column || 0 : 0\n            }\n            _emscripten_pc_get_column.sig = \"ip\";\n            var _sched_yield = () => 0;\n            Module[\"_sched_yield\"] = _sched_yield;\n            _sched_yield.sig = \"i\";\n            var checkWasiClock = clock_id => clock_id == 0 || clock_id == 1 || clock_id == 2 || clock_id == 3;\n\n            function _clock_time_get(clk_id, ignored_precision_low, ignored_precision_high, ptime) {\n                var ignored_precision = convertI32PairToI53Checked(ignored_precision_low, ignored_precision_high);\n                ptime >>>= 0;\n                if (!checkWasiClock(clk_id)) {\n                    return 28\n                }\n                var now;\n                if (clk_id === 0) {\n                    now = Date.now()\n                } else if (nowIsMonotonic) {\n                    now = _emscripten_get_now()\n                } else {\n                    return 52\n                }\n                var nsec = Math.round(now * 1e3 * 1e3);\n                HEAP32[ptime >>> 2 >>> 0] = nsec >>> 0;\n                HEAP32[ptime + 4 >>> 2 >>> 0] = nsec / Math.pow(2, 32) >>> 0;\n                return 0\n            }\n            _clock_time_get.sig = \"iiiip\";\n\n            function _clock_res_get(clk_id, pres) {\n                pres >>>= 0;\n                if (!checkWasiClock(clk_id)) {\n                    return 28\n                }\n                var nsec;\n                if (clk_id === 0) {\n                    nsec = 1e3 * 1e3\n                } else if (nowIsMonotonic) {\n                    nsec = _emscripten_get_now_res()\n                } else {\n                    return 52\n                }\n                HEAP32[pres >>> 2 >>> 0] = nsec >>> 0;\n                HEAP32[pres + 4 >>> 2 >>> 0] = nsec / Math.pow(2, 32) >>> 0;\n                return 0\n            }\n            _clock_res_get.sig = \"iip\";\n            var wasiRightsToMuslOFlags = rights => {\n                if (rights & 2 && rights & 64) {\n                    return 2\n                }\n                if (rights & 2) {\n                    return 0\n                }\n                if (rights & 64) {\n                    return 1\n                }\n                throw new FS.ErrnoError(28)\n            };\n            var wasiOFlagsToMuslOFlags = oflags => {\n                var musl_oflags = 0;\n                if (oflags & 1) {\n                    musl_oflags |= 64\n                }\n                if (oflags & 8) {\n                    musl_oflags |= 512\n                }\n                if (oflags & 2) {\n                    musl_oflags |= 65536\n                }\n                if (oflags & 4) {\n                    musl_oflags |= 128\n                }\n                return musl_oflags\n            };\n            var _emscripten_unwind_to_js_event_loop = () => {\n                throw \"unwind\"\n            };\n            _emscripten_unwind_to_js_event_loop.sig = \"v\";\n            var safeSetTimeout = (func, timeout) => setTimeout(() => {\n                callUserCallback(func)\n            }, timeout);\n            var setImmediateWrapped = func => {\n                setImmediateWrapped.mapping ||= [];\n                var id = setImmediateWrapped.mapping.length;\n                setImmediateWrapped.mapping[id] = setImmediate(() => {\n                    setImmediateWrapped.mapping[id] = undefined;\n                    func()\n                });\n                return id\n            };\n            var clearImmediateWrapped = id => {\n                clearImmediate(setImmediateWrapped.mapping[id]);\n                setImmediateWrapped.mapping[id] = undefined\n            };\n            var polyfillSetImmediate = () => {};\n            var _emscripten_set_immediate = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return emSetImmediate(() => {\n                    callUserCallback(() => getWasmTableEntry(cb)(userData))\n                })\n            };\n            _emscripten_set_immediate.sig = \"ipp\";\n            var _emscripten_clear_immediate = id => {\n                emClearImmediate(id)\n            };\n            _emscripten_clear_immediate.sig = \"vi\";\n            var _emscripten_set_immediate_loop = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick() {\n                    callUserCallback(() => {\n                        if (getWasmTableEntry(cb)(userData)) {\n                            emSetImmediate(tick)\n                        } else {}\n                    })\n                }\n                emSetImmediate(tick)\n            };\n            _emscripten_set_immediate_loop.sig = \"vpp\";\n            var _emscripten_set_timeout = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(cb)(userData), msecs)\n            };\n            _emscripten_set_timeout.sig = \"ipdp\";\n            var _emscripten_clear_timeout = clearTimeout;\n            _emscripten_clear_timeout.sig = \"vi\";\n            var _emscripten_set_timeout_loop = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick() {\n                    var t = _emscripten_get_now();\n                    var n = t + msecs;\n                    callUserCallback(() => {\n                        if (getWasmTableEntry(cb)(t, userData)) {\n                            setTimeout(tick, n - _emscripten_get_now())\n                        }\n                    })\n                }\n                return setTimeout(tick, 0)\n            };\n            _emscripten_set_timeout_loop.sig = \"vpdp\";\n            var _emscripten_set_interval = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return setInterval(() => {\n                    callUserCallback(() => getWasmTableEntry(cb)(userData))\n                }, msecs)\n            };\n            _emscripten_set_interval.sig = \"ipdp\";\n            var _emscripten_clear_interval = id => {\n                clearInterval(id)\n            };\n            _emscripten_clear_interval.sig = \"vi\";\n            var registerPostMainLoop = f => {\n                typeof MainLoop != \"undefined\" && MainLoop.postMainLoop.push(f)\n            };\n            var registerPreMainLoop = f => {\n                typeof MainLoop != \"undefined\" && MainLoop.preMainLoop.push(f)\n            };\n\n            function _emscripten_get_main_loop_timing(mode, value) {\n                mode >>>= 0;\n                value >>>= 0;\n                if (mode) HEAP32[mode >>> 2 >>> 0] = MainLoop.timingMode;\n                if (value) HEAP32[value >>> 2 >>> 0] = MainLoop.timingValue\n            }\n            _emscripten_get_main_loop_timing.sig = \"vpp\";\n\n            function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop) {\n                func >>>= 0;\n                var iterFunc = getWasmTableEntry(func);\n                setMainLoop(iterFunc, fps, simulateInfiniteLoop)\n            }\n            _emscripten_set_main_loop.sig = \"vpii\";\n            var _emscripten_set_main_loop_arg = function(func, arg, fps, simulateInfiniteLoop) {\n                func >>>= 0;\n                arg >>>= 0;\n                var iterFunc = () => getWasmTableEntry(func)(arg);\n                setMainLoop(iterFunc, fps, simulateInfiniteLoop, arg)\n            };\n            _emscripten_set_main_loop_arg.sig = \"vppii\";\n            var _emscripten_cancel_main_loop = () => {\n                MainLoop.pause();\n                MainLoop.func = null\n            };\n            _emscripten_cancel_main_loop.sig = \"v\";\n            var _emscripten_pause_main_loop = () => {\n                MainLoop.pause()\n            };\n            _emscripten_pause_main_loop.sig = \"v\";\n            var _emscripten_resume_main_loop = () => {\n                MainLoop.resume()\n            };\n            _emscripten_resume_main_loop.sig = \"v\";\n            var __emscripten_push_main_loop_blocker = function(func, arg, name) {\n                func >>>= 0;\n                arg >>>= 0;\n                name >>>= 0;\n                MainLoop.queue.push({\n                    func: () => {\n                        getWasmTableEntry(func)(arg)\n                    },\n                    name: UTF8ToString(name),\n                    counted: true\n                });\n                MainLoop.updateStatus()\n            };\n            __emscripten_push_main_loop_blocker.sig = \"vppp\";\n            var __emscripten_push_uncounted_main_loop_blocker = function(func, arg, name) {\n                func >>>= 0;\n                arg >>>= 0;\n                name >>>= 0;\n                MainLoop.queue.push({\n                    func: () => {\n                        getWasmTableEntry(func)(arg)\n                    },\n                    name: UTF8ToString(name),\n                    counted: false\n                });\n                MainLoop.updateStatus()\n            };\n            __emscripten_push_uncounted_main_loop_blocker.sig = \"vppp\";\n            var _emscripten_set_main_loop_expected_blockers = num => {\n                MainLoop.expectedBlockers = num;\n                MainLoop.remainingBlockers = num;\n                MainLoop.updateStatus()\n            };\n            _emscripten_set_main_loop_expected_blockers.sig = \"vi\";\n            var idsToPromises = (idBuf, size) => {\n                var promises = [];\n                for (var i = 0; i < size; i++) {\n                    var id = HEAP32[idBuf + i * 4 >>> 2 >>> 0];\n                    promises[i] = getPromise(id)\n                }\n                return promises\n            };\n            var makePromiseCallback = (callback, userData) => value => {\n                var stack = stackSave();\n                var resultPtr = stackAlloc(POINTER_SIZE);\n                HEAPU32[resultPtr >>> 2 >>> 0] = 0;\n                try {\n                    var result = getWasmTableEntry(callback)(resultPtr, userData, value);\n                    var resultVal = HEAPU32[resultPtr >>> 2 >>> 0]\n                } catch (e) {\n                    if (typeof e != \"number\") {\n                        throw 0\n                    }\n                    throw e\n                } finally {\n                    stackRestore(stack)\n                }\n                switch (result) {\n                    case 0:\n                        return resultVal;\n                    case 1:\n                        return getPromise(resultVal);\n                    case 2:\n                        var ret = getPromise(resultVal);\n                        _emscripten_promise_destroy(resultVal);\n                        return ret;\n                    case 3:\n                        throw resultVal\n                }\n            };\n\n            function _emscripten_promise_then(id, onFulfilled, onRejected, userData) {\n                id >>>= 0;\n                onFulfilled >>>= 0;\n                onRejected >>>= 0;\n                userData >>>= 0;\n                var promise = getPromise(id);\n                var newId = promiseMap.allocate({\n                    promise: promise.then(makePromiseCallback(onFulfilled, userData), makePromiseCallback(onRejected, userData))\n                });\n                return newId\n            }\n            _emscripten_promise_then.sig = \"ppppp\";\n            var _emscripten_promise_all = function(idBuf, resultBuf, size) {\n                idBuf >>>= 0;\n                resultBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.all(promises).then(results => {\n                        if (resultBuf) {\n                            for (var i = 0; i < size; i++) {\n                                var result = results[i];\n                                HEAPU32[resultBuf + i * 4 >>> 2 >>> 0] = result\n                            }\n                        }\n                        return resultBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_all.sig = \"pppp\";\n            var setPromiseResult = (ptr, fulfill, value) => {\n                var result = fulfill ? 0 : 3;\n                HEAP32[ptr >>> 2 >>> 0] = result;\n                HEAPU32[ptr + 4 >>> 2 >>> 0] = value\n            };\n            var _emscripten_promise_all_settled = function(idBuf, resultBuf, size) {\n                idBuf >>>= 0;\n                resultBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.allSettled(promises).then(results => {\n                        if (resultBuf) {\n                            var offset = resultBuf;\n                            for (var i = 0; i < size; i++, offset += 8) {\n                                if (results[i].status === \"fulfilled\") {\n                                    setPromiseResult(offset, true, results[i].value)\n                                } else {\n                                    setPromiseResult(offset, false, results[i].reason)\n                                }\n                            }\n                        }\n                        return resultBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_all_settled.sig = \"pppp\";\n            var _emscripten_promise_any = function(idBuf, errorBuf, size) {\n                idBuf >>>= 0;\n                errorBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.any(promises).catch(err => {\n                        if (errorBuf) {\n                            for (var i = 0; i < size; i++) {\n                                HEAPU32[errorBuf + i * 4 >>> 2 >>> 0] = err.errors[i]\n                            }\n                        }\n                        throw errorBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_any.sig = \"pppp\";\n\n            function _emscripten_promise_race(idBuf, size) {\n                idBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.race(promises)\n                });\n                return id\n            }\n            _emscripten_promise_race.sig = \"ppp\";\n\n            function _emscripten_promise_await(returnValuePtr, id) {\n                returnValuePtr >>>= 0;\n                id >>>= 0;\n                abort(\"emscripten_promise_await is only available with ASYNCIFY\")\n            }\n            _emscripten_promise_await.sig = \"vpp\";\n\n            function ___cxa_call_unexpected(exception) {\n                exception >>>= 0;\n                return abort(\"Unexpected exception thrown, this is not properly supported - aborting\")\n            }\n            ___cxa_call_unexpected.sig = \"vp\";\n            var getExceptionMessageCommon = ptr => {\n                var sp = stackSave();\n                var type_addr_addr = stackAlloc(4);\n                var message_addr_addr = stackAlloc(4);\n                ___get_exception_message(ptr, type_addr_addr, message_addr_addr);\n                var type_addr = HEAPU32[type_addr_addr >>> 2 >>> 0];\n                var message_addr = HEAPU32[message_addr_addr >>> 2 >>> 0];\n                var type = UTF8ToString(type_addr);\n                _free(type_addr);\n                var message;\n                if (message_addr) {\n                    message = UTF8ToString(message_addr);\n                    _free(message_addr)\n                }\n                stackRestore(sp);\n                return [type, message]\n            };\n            var incrementExceptionRefcount = ptr => ___cxa_increment_exception_refcount(ptr);\n            var decrementExceptionRefcount = ptr => ___cxa_decrement_exception_refcount(ptr);\n            var getExceptionMessage = ptr => getExceptionMessageCommon(ptr);\n            var Browser = {\n                useWebGL: false,\n                isFullscreen: false,\n                pointerLock: false,\n                moduleContextCreatedCallbacks: [],\n                workers: [],\n                init() {\n                    if (Browser.initted) return;\n                    Browser.initted = true;\n                    var imagePlugin = {};\n                    imagePlugin[\"canHandle\"] = function imagePlugin_canHandle(name) {\n                        return !Module[\"noImageDecoding\"] && /\\.(jpg|jpeg|png|bmp|webp)$/i.test(name)\n                    };\n                    imagePlugin[\"handle\"] = function imagePlugin_handle(byteArray, name, onload, onerror) {\n                        var b = new Blob([byteArray], {\n                            type: Browser.getMimetype(name)\n                        });\n                        if (b.size !== byteArray.length) {\n                            b = new Blob([new Uint8Array(byteArray).buffer], {\n                                type: Browser.getMimetype(name)\n                            })\n                        }\n                        var url = URL.createObjectURL(b);\n                        var img = new Image;\n                        img.onload = () => {\n                            var canvas = document.createElement(\"canvas\");\n                            canvas.width = img.width;\n                            canvas.height = img.height;\n                            var ctx = canvas.getContext(\"2d\");\n                            ctx.drawImage(img, 0, 0);\n                            preloadedImages[name] = canvas;\n                            URL.revokeObjectURL(url);\n                            onload?.(byteArray)\n                        };\n                        img.onerror = event => {\n                            err(`Image ${url} could not be decoded`);\n                            onerror?.()\n                        };\n                        img.src = url\n                    };\n                    preloadPlugins.push(imagePlugin);\n                    var audioPlugin = {};\n                    audioPlugin[\"canHandle\"] = function audioPlugin_canHandle(name) {\n                        return !Module[\"noAudioDecoding\"] && name.substr(-4) in {\n                            \".ogg\": 1,\n                            \".wav\": 1,\n                            \".mp3\": 1\n                        }\n                    };\n                    audioPlugin[\"handle\"] = function audioPlugin_handle(byteArray, name, onload, onerror) {\n                        var done = false;\n\n                        function finish(audio) {\n                            if (done) return;\n                            done = true;\n                            preloadedAudios[name] = audio;\n                            onload?.(byteArray)\n                        }\n\n                        function fail() {\n                            if (done) return;\n                            done = true;\n                            preloadedAudios[name] = new Audio;\n                            onerror?.()\n                        }\n                        var b = new Blob([byteArray], {\n                            type: Browser.getMimetype(name)\n                        });\n                        var url = URL.createObjectURL(b);\n                        var audio = new Audio;\n                        audio.addEventListener(\"canplaythrough\", () => finish(audio), false);\n                        audio.onerror = function audio_onerror(event) {\n                            if (done) return;\n                            err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);\n\n                            function encode64(data) {\n                                var BASE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n                                var PAD = \"=\";\n                                var ret = \"\";\n                                var leftchar = 0;\n                                var leftbits = 0;\n                                for (var i = 0; i < data.length; i++) {\n                                    leftchar = leftchar << 8 | data[i];\n                                    leftbits += 8;\n                                    while (leftbits >= 6) {\n                                        var curr = leftchar >> leftbits - 6 & 63;\n                                        leftbits -= 6;\n                                        ret += BASE[curr]\n                                    }\n                                }\n                                if (leftbits == 2) {\n                                    ret += BASE[(leftchar & 3) << 4];\n                                    ret += PAD + PAD\n                                } else if (leftbits == 4) {\n                                    ret += BASE[(leftchar & 15) << 2];\n                                    ret += PAD\n                                }\n                                return ret\n                            }\n                            audio.src = \"data:audio/x-\" + name.substr(-3) + \";base64,\" + encode64(byteArray);\n                            finish(audio)\n                        };\n                        audio.src = url;\n                        safeSetTimeout(() => {\n                            finish(audio)\n                        }, 1e4)\n                    };\n                    preloadPlugins.push(audioPlugin);\n\n                    function pointerLockChange() {\n                        Browser.pointerLock = document[\"pointerLockElement\"] === Module[\"canvas\"] || document[\"mozPointerLockElement\"] === Module[\"canvas\"] || document[\"webkitPointerLockElement\"] === Module[\"canvas\"] || document[\"msPointerLockElement\"] === Module[\"canvas\"]\n                    }\n                    var canvas = Module[\"canvas\"];\n                    if (canvas) {\n                        canvas.requestPointerLock = canvas[\"requestPointerLock\"] || canvas[\"mozRequestPointerLock\"] || canvas[\"webkitRequestPointerLock\"] || canvas[\"msRequestPointerLock\"] || (() => {});\n                        canvas.exitPointerLock = document[\"exitPointerLock\"] || document[\"mozExitPointerLock\"] || document[\"webkitExitPointerLock\"] || document[\"msExitPointerLock\"] || (() => {});\n                        canvas.exitPointerLock = canvas.exitPointerLock.bind(document);\n                        document.addEventListener(\"pointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"mozpointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"webkitpointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"mspointerlockchange\", pointerLockChange, false);\n                        if (Module[\"elementPointerLock\"]) {\n                            canvas.addEventListener(\"click\", ev => {\n                                if (!Browser.pointerLock && Module[\"canvas\"].requestPointerLock) {\n                                    Module[\"canvas\"].requestPointerLock();\n                                    ev.preventDefault()\n                                }\n                            }, false)\n                        }\n                    }\n                },\n                createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {\n                    if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;\n                    var ctx;\n                    var contextHandle;\n                    if (useWebGL) {\n                        var contextAttributes = {\n                            antialias: false,\n                            alpha: false,\n                            majorVersion: 1\n                        };\n                        if (webGLContextAttributes) {\n                            for (var attribute in webGLContextAttributes) {\n                                contextAttributes[attribute] = webGLContextAttributes[attribute]\n                            }\n                        }\n                        if (typeof GL != \"undefined\") {\n                            contextHandle = GL.createContext(canvas, contextAttributes);\n                            if (contextHandle) {\n                                ctx = GL.getContext(contextHandle).GLctx\n                            }\n                        }\n                    } else {\n                        ctx = canvas.getContext(\"2d\")\n                    }\n                    if (!ctx) return null;\n                    if (setInModule) {\n                        Module.ctx = ctx;\n                        if (useWebGL) GL.makeContextCurrent(contextHandle);\n                        Browser.useWebGL = useWebGL;\n                        Browser.moduleContextCreatedCallbacks.forEach(callback => callback());\n                        Browser.init()\n                    }\n                    return ctx\n                },\n                fullscreenHandlersInstalled: false,\n                lockPointer: undefined,\n                resizeCanvas: undefined,\n                requestFullscreen(lockPointer, resizeCanvas) {\n                    Browser.lockPointer = lockPointer;\n                    Browser.resizeCanvas = resizeCanvas;\n                    if (typeof Browser.lockPointer == \"undefined\") Browser.lockPointer = true;\n                    if (typeof Browser.resizeCanvas == \"undefined\") Browser.resizeCanvas = false;\n                    var canvas = Module[\"canvas\"];\n\n                    function fullscreenChange() {\n                        Browser.isFullscreen = false;\n                        var canvasContainer = canvas.parentNode;\n                        if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvasContainer) {\n                            canvas.exitFullscreen = Browser.exitFullscreen;\n                            if (Browser.lockPointer) canvas.requestPointerLock();\n                            Browser.isFullscreen = true;\n                            if (Browser.resizeCanvas) {\n                                Browser.setFullscreenCanvasSize()\n                            } else {\n                                Browser.updateCanvasDimensions(canvas)\n                            }\n                        } else {\n                            canvasContainer.parentNode.insertBefore(canvas, canvasContainer);\n                            canvasContainer.parentNode.removeChild(canvasContainer);\n                            if (Browser.resizeCanvas) {\n                                Browser.setWindowedCanvasSize()\n                            } else {\n                                Browser.updateCanvasDimensions(canvas)\n                            }\n                        }\n                        Module[\"onFullScreen\"]?.(Browser.isFullscreen);\n                        Module[\"onFullscreen\"]?.(Browser.isFullscreen)\n                    }\n                    if (!Browser.fullscreenHandlersInstalled) {\n                        Browser.fullscreenHandlersInstalled = true;\n                        document.addEventListener(\"fullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"mozfullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"webkitfullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"MSFullscreenChange\", fullscreenChange, false)\n                    }\n                    var canvasContainer = document.createElement(\"div\");\n                    canvas.parentNode.insertBefore(canvasContainer, canvas);\n                    canvasContainer.appendChild(canvas);\n                    canvasContainer.requestFullscreen = canvasContainer[\"requestFullscreen\"] || canvasContainer[\"mozRequestFullScreen\"] || canvasContainer[\"msRequestFullscreen\"] || (canvasContainer[\"webkitRequestFullscreen\"] ? () => canvasContainer[\"webkitRequestFullscreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]) : null) || (canvasContainer[\"webkitRequestFullScreen\"] ? () => canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]) : null);\n                    canvasContainer.requestFullscreen()\n                },\n                exitFullscreen() {\n                    if (!Browser.isFullscreen) {\n                        return false\n                    }\n                    var CFS = document[\"exitFullscreen\"] || document[\"cancelFullScreen\"] || document[\"mozCancelFullScreen\"] || document[\"msExitFullscreen\"] || document[\"webkitCancelFullScreen\"] || (() => {});\n                    CFS.apply(document, []);\n                    return true\n                },\n                safeSetTimeout(func, timeout) {\n                    return safeSetTimeout(func, timeout)\n                },\n                getMimetype(name) {\n                    return {\n                        jpg: \"image/jpeg\",\n                        jpeg: \"image/jpeg\",\n                        png: \"image/png\",\n                        bmp: \"image/bmp\",\n                        ogg: \"audio/ogg\",\n                        wav: \"audio/wav\",\n                        mp3: \"audio/mpeg\"\n                    } [name.substr(name.lastIndexOf(\".\") + 1)]\n                },\n                getUserMedia(func) {\n                    window.getUserMedia ||= navigator[\"getUserMedia\"] || navigator[\"mozGetUserMedia\"];\n                    window.getUserMedia(func)\n                },\n                getMovementX(event) {\n                    return event[\"movementX\"] || event[\"mozMovementX\"] || event[\"webkitMovementX\"] || 0\n                },\n                getMovementY(event) {\n                    return event[\"movementY\"] || event[\"mozMovementY\"] || event[\"webkitMovementY\"] || 0\n                },\n                getMouseWheelDelta(event) {\n                    var delta = 0;\n                    switch (event.type) {\n                        case \"DOMMouseScroll\":\n                            delta = event.detail / 3;\n                            break;\n                        case \"mousewheel\":\n                            delta = event.wheelDelta / 120;\n                            break;\n                        case \"wheel\":\n                            delta = event.deltaY;\n                            switch (event.deltaMode) {\n                                case 0:\n                                    delta /= 100;\n                                    break;\n                                case 1:\n                                    delta /= 3;\n                                    break;\n                                case 2:\n                                    delta *= 80;\n                                    break;\n                                default:\n                                    throw \"unrecognized mouse wheel delta mode: \" + event.deltaMode\n                            }\n                            break;\n                        default:\n                            throw \"unrecognized mouse wheel event: \" + event.type\n                    }\n                    return delta\n                },\n                mouseX: 0,\n                mouseY: 0,\n                mouseMovementX: 0,\n                mouseMovementY: 0,\n                touches: {},\n                lastTouches: {},\n                calculateMouseCoords(pageX, pageY) {\n                    var rect = Module[\"canvas\"].getBoundingClientRect();\n                    var cw = Module[\"canvas\"].width;\n                    var ch = Module[\"canvas\"].height;\n                    var scrollX = typeof window.scrollX != \"undefined\" ? window.scrollX : window.pageXOffset;\n                    var scrollY = typeof window.scrollY != \"undefined\" ? window.scrollY : window.pageYOffset;\n                    var adjustedX = pageX - (scrollX + rect.left);\n                    var adjustedY = pageY - (scrollY + rect.top);\n                    adjustedX = adjustedX * (cw / rect.width);\n                    adjustedY = adjustedY * (ch / rect.height);\n                    return {\n                        x: adjustedX,\n                        y: adjustedY\n                    }\n                },\n                setMouseCoords(pageX, pageY) {\n                    const {\n                        x,\n                        y\n                    } = Browser.calculateMouseCoords(pageX, pageY);\n                    Browser.mouseMovementX = x - Browser.mouseX;\n                    Browser.mouseMovementY = y - Browser.mouseY;\n                    Browser.mouseX = x;\n                    Browser.mouseY = y\n                },\n                calculateMouseEvent(event) {\n                    if (Browser.pointerLock) {\n                        if (event.type != \"mousemove\" && \"mozMovementX\" in event) {\n                            Browser.mouseMovementX = Browser.mouseMovementY = 0\n                        } else {\n                            Browser.mouseMovementX = Browser.getMovementX(event);\n                            Browser.mouseMovementY = Browser.getMovementY(event)\n                        }\n                        Browser.mouseX += Browser.mouseMovementX;\n                        Browser.mouseY += Browser.mouseMovementY\n                    } else {\n                        if (event.type === \"touchstart\" || event.type === \"touchend\" || event.type === \"touchmove\") {\n                            var touch = event.touch;\n                            if (touch === undefined) {\n                                return\n                            }\n                            var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY);\n                            if (event.type === \"touchstart\") {\n                                Browser.lastTouches[touch.identifier] = coords;\n                                Browser.touches[touch.identifier] = coords\n                            } else if (event.type === \"touchend\" || event.type === \"touchmove\") {\n                                var last = Browser.touches[touch.identifier];\n                                last ||= coords;\n                                Browser.lastTouches[touch.identifier] = last;\n                                Browser.touches[touch.identifier] = coords\n                            }\n                            return\n                        }\n                        Browser.setMouseCoords(event.pageX, event.pageY)\n                    }\n                },\n                resizeListeners: [],\n                updateResizeListeners() {\n                    var canvas = Module[\"canvas\"];\n                    Browser.resizeListeners.forEach(listener => listener(canvas.width, canvas.height))\n                },\n                setCanvasSize(width, height, noUpdates) {\n                    var canvas = Module[\"canvas\"];\n                    Browser.updateCanvasDimensions(canvas, width, height);\n                    if (!noUpdates) Browser.updateResizeListeners()\n                },\n                windowedWidth: 0,\n                windowedHeight: 0,\n                setFullscreenCanvasSize() {\n                    if (typeof SDL != \"undefined\") {\n                        var flags = HEAPU32[SDL.screen >>> 2 >>> 0];\n                        flags = flags | 8388608;\n                        HEAP32[SDL.screen >>> 2 >>> 0] = flags\n                    }\n                    Browser.updateCanvasDimensions(Module[\"canvas\"]);\n                    Browser.updateResizeListeners()\n                },\n                setWindowedCanvasSize() {\n                    if (typeof SDL != \"undefined\") {\n                        var flags = HEAPU32[SDL.screen >>> 2 >>> 0];\n                        flags = flags & ~8388608;\n                        HEAP32[SDL.screen >>> 2 >>> 0] = flags\n                    }\n                    Browser.updateCanvasDimensions(Module[\"canvas\"]);\n                    Browser.updateResizeListeners()\n                },\n                updateCanvasDimensions(canvas, wNative, hNative) {\n                    if (wNative && hNative) {\n                        canvas.widthNative = wNative;\n                        canvas.heightNative = hNative\n                    } else {\n                        wNative = canvas.widthNative;\n                        hNative = canvas.heightNative\n                    }\n                    var w = wNative;\n                    var h = hNative;\n                    if (Module[\"forcedAspectRatio\"] && Module[\"forcedAspectRatio\"] > 0) {\n                        if (w / h < Module[\"forcedAspectRatio\"]) {\n                            w = Math.round(h * Module[\"forcedAspectRatio\"])\n                        } else {\n                            h = Math.round(w / Module[\"forcedAspectRatio\"])\n                        }\n                    }\n                    if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvas.parentNode && typeof screen != \"undefined\") {\n                        var factor = Math.min(screen.width / w, screen.height / h);\n                        w = Math.round(w * factor);\n                        h = Math.round(h * factor)\n                    }\n                    if (Browser.resizeCanvas) {\n                        if (canvas.width != w) canvas.width = w;\n                        if (canvas.height != h) canvas.height = h;\n                        if (typeof canvas.style != \"undefined\") {\n                            canvas.style.removeProperty(\"width\");\n                            canvas.style.removeProperty(\"height\")\n                        }\n                    } else {\n                        if (canvas.width != wNative) canvas.width = wNative;\n                        if (canvas.height != hNative) canvas.height = hNative;\n                        if (typeof canvas.style != \"undefined\") {\n                            if (w != wNative || h != hNative) {\n                                canvas.style.setProperty(\"width\", w + \"px\", \"important\");\n                                canvas.style.setProperty(\"height\", h + \"px\", \"important\")\n                            } else {\n                                canvas.style.removeProperty(\"width\");\n                                canvas.style.removeProperty(\"height\")\n                            }\n                        }\n                    }\n                }\n            };\n            var _emscripten_run_preload_plugins = function(file, onload, onerror) {\n                file >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _file = UTF8ToString(file);\n                var data = FS.analyzePath(_file);\n                if (!data.exists) return -1;\n                FS.createPreloadedFile(PATH.dirname(_file), PATH.basename(_file), new Uint8Array(data.object.contents), true, true, () => {\n                    if (onload) getWasmTableEntry(onload)(file)\n                }, () => {\n                    if (onerror) getWasmTableEntry(onerror)(file)\n                }, true);\n                return 0\n            };\n            _emscripten_run_preload_plugins.sig = \"ippp\";\n            var Browser_asyncPrepareDataCounter = 0;\n            var _emscripten_run_preload_plugins_data = function(data, size, suffix, arg, onload, onerror) {\n                data >>>= 0;\n                suffix >>>= 0;\n                arg >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _suffix = UTF8ToString(suffix);\n                var name = \"prepare_data_\" + Browser_asyncPrepareDataCounter++ + \".\" + _suffix;\n                var cname = stringToNewUTF8(name);\n                FS.createPreloadedFile(\"/\", name, HEAPU8.subarray(data >>> 0, data + size >>> 0), true, true, () => {\n                    if (onload) getWasmTableEntry(onload)(arg, cname)\n                }, () => {\n                    if (onerror) getWasmTableEntry(onerror)(arg)\n                }, true)\n            };\n            _emscripten_run_preload_plugins_data.sig = \"vpipppp\";\n            var _emscripten_async_run_script = function(script, millis) {\n                script >>>= 0;\n                safeSetTimeout(() => _emscripten_run_script(script), millis)\n            };\n            _emscripten_async_run_script.sig = \"vpi\";\n            var _emscripten_async_load_script = function(url, onload, onerror) {\n                url >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                url = UTF8ToString(url);\n                var loadDone = () => {\n                    if (onload) {\n                        var onloadCallback = () => callUserCallback(getWasmTableEntry(onload));\n                        if (runDependencies > 0) {\n                            dependenciesFulfilled = onloadCallback\n                        } else {\n                            onloadCallback()\n                        }\n                    }\n                };\n                var loadError = () => {\n                    if (onerror) {\n                        callUserCallback(getWasmTableEntry(onerror))\n                    }\n                };\n                if (ENVIRONMENT_IS_NODE) {\n                    readAsync(url, false).then(data => {\n                        eval(data);\n                        loadDone()\n                    }, loadError);\n                    return\n                }\n                var script = document.createElement(\"script\");\n                script.onload = loadDone;\n                script.onerror = loadError;\n                script.src = url;\n                document.body.appendChild(script)\n            };\n            _emscripten_async_load_script.sig = \"vppp\";\n            var safeRequestAnimationFrame = func => MainLoop.requestAnimationFrame(() => {\n                callUserCallback(func)\n            });\n\n            function _emscripten_async_call(func, arg, millis) {\n                func >>>= 0;\n                arg >>>= 0;\n\n                function wrapper() {\n                    getWasmTableEntry(func)(arg)\n                }\n                if (millis >= 0 || ENVIRONMENT_IS_NODE) {\n                    safeSetTimeout(wrapper, millis)\n                } else {\n                    safeRequestAnimationFrame(wrapper)\n                }\n            }\n            _emscripten_async_call.sig = \"vppi\";\n\n            function _emscripten_get_window_title() {\n                var buflen = 256;\n                if (!_emscripten_get_window_title.buffer) {\n                    _emscripten_get_window_title.buffer = _malloc(buflen)\n                }\n                stringToUTF8(document.title, _emscripten_get_window_title.buffer, buflen);\n                return _emscripten_get_window_title.buffer\n            }\n            _emscripten_get_window_title.sig = \"p\";\n\n            function _emscripten_set_window_title(title) {\n                title >>>= 0;\n                return document.title = UTF8ToString(title)\n            }\n            _emscripten_set_window_title.sig = \"vp\";\n\n            function _emscripten_get_screen_size(width, height) {\n                width >>>= 0;\n                height >>>= 0;\n                HEAP32[width >>> 2 >>> 0] = screen.width;\n                HEAP32[height >>> 2 >>> 0] = screen.height\n            }\n            _emscripten_get_screen_size.sig = \"vpp\";\n            var _emscripten_hide_mouse = () => {\n                var styleSheet = document.styleSheets[0];\n                var rules = styleSheet.cssRules;\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i].cssText.substr(0, 6) == \"canvas\") {\n                        styleSheet.deleteRule(i);\n                        i--\n                    }\n                }\n                styleSheet.insertRule(\"canvas.emscripten { border: 1px solid black; cursor: none; }\", 0)\n            };\n            _emscripten_hide_mouse.sig = \"v\";\n            var _emscripten_set_canvas_size = (width, height) => {\n                Browser.setCanvasSize(width, height)\n            };\n            _emscripten_set_canvas_size.sig = \"vii\";\n\n            function _emscripten_get_canvas_size(width, height, isFullscreen) {\n                width >>>= 0;\n                height >>>= 0;\n                isFullscreen >>>= 0;\n                var canvas = Module[\"canvas\"];\n                HEAP32[width >>> 2 >>> 0] = canvas.width;\n                HEAP32[height >>> 2 >>> 0] = canvas.height;\n                HEAP32[isFullscreen >>> 2 >>> 0] = Browser.isFullscreen ? 1 : 0\n            }\n            _emscripten_get_canvas_size.sig = \"vppp\";\n\n            function _emscripten_create_worker(url) {\n                url >>>= 0;\n                url = UTF8ToString(url);\n                var id = Browser.workers.length;\n                var info = {\n                    worker: new Worker(url),\n                    callbacks: [],\n                    awaited: 0,\n                    buffer: 0,\n                    bufferSize: 0\n                };\n                info.worker.onmessage = function info_worker_onmessage(msg) {\n                    if (ABORT) return;\n                    var info = Browser.workers[id];\n                    if (!info) return;\n                    var callbackId = msg.data[\"callbackId\"];\n                    var callbackInfo = info.callbacks[callbackId];\n                    if (!callbackInfo) return;\n                    if (msg.data[\"finalResponse\"]) {\n                        info.awaited--;\n                        info.callbacks[callbackId] = null\n                    }\n                    var data = msg.data[\"data\"];\n                    if (data) {\n                        if (!data.byteLength) data = new Uint8Array(data);\n                        if (!info.buffer || info.bufferSize < data.length) {\n                            if (info.buffer) _free(info.buffer);\n                            info.bufferSize = data.length;\n                            info.buffer = _malloc(data.length)\n                        }\n                        HEAPU8.set(data, info.buffer >>> 0);\n                        callbackInfo.func(info.buffer, data.length, callbackInfo.arg)\n                    } else {\n                        callbackInfo.func(0, 0, callbackInfo.arg)\n                    }\n                };\n                Browser.workers.push(info);\n                return id\n            }\n            _emscripten_create_worker.sig = \"ip\";\n            var _emscripten_destroy_worker = id => {\n                var info = Browser.workers[id];\n                info.worker.terminate();\n                if (info.buffer) _free(info.buffer);\n                Browser.workers[id] = null\n            };\n            _emscripten_destroy_worker.sig = \"vi\";\n\n            function _emscripten_call_worker(id, funcName, data, size, callback, arg) {\n                funcName >>>= 0;\n                data >>>= 0;\n                callback >>>= 0;\n                arg >>>= 0;\n                funcName = UTF8ToString(funcName);\n                var info = Browser.workers[id];\n                var callbackId = -1;\n                if (callback) {\n                    callbackId = info.callbacks.length;\n                    info.callbacks.push({\n                        func: getWasmTableEntry(callback),\n                        arg\n                    });\n                    info.awaited++\n                }\n                var transferObject = {\n                    funcName,\n                    callbackId,\n                    data: data ? new Uint8Array(HEAPU8.subarray(data >>> 0, data + size >>> 0)) : 0\n                };\n                if (data) {\n                    info.worker.postMessage(transferObject, [transferObject.data.buffer])\n                } else {\n                    info.worker.postMessage(transferObject)\n                }\n            }\n            _emscripten_call_worker.sig = \"vippipp\";\n            var _emscripten_get_worker_queue_size = id => {\n                var info = Browser.workers[id];\n                if (!info) return -1;\n                return info.awaited\n            };\n            _emscripten_get_worker_queue_size.sig = \"ii\";\n            var getPreloadedImageData = (path, w, h) => {\n                path = PATH_FS.resolve(path);\n                var canvas = preloadedImages[path];\n                if (!canvas) return 0;\n                var ctx = canvas.getContext(\"2d\");\n                var image = ctx.getImageData(0, 0, canvas.width, canvas.height);\n                var buf = _malloc(canvas.width * canvas.height * 4);\n                HEAPU8.set(image.data, buf >>> 0);\n                HEAP32[w >>> 2 >>> 0] = canvas.width;\n                HEAP32[h >>> 2 >>> 0] = canvas.height;\n                return buf\n            };\n\n            function _emscripten_get_preloaded_image_data(path, w, h) {\n                path >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                return getPreloadedImageData(UTF8ToString(path), w, h)\n            }\n            _emscripten_get_preloaded_image_data.sig = \"pppp\";\n            var getPreloadedImageData__data = [\"$PATH_FS\", \"malloc\"];\n\n            function _emscripten_get_preloaded_image_data_from_FILE(file, w, h) {\n                file >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                var fd = _fileno(file);\n                var stream = FS.getStream(fd);\n                if (stream) {\n                    return getPreloadedImageData(stream.path, w, h)\n                }\n                return 0\n            }\n            _emscripten_get_preloaded_image_data_from_FILE.sig = \"pppp\";\n            var wget = {\n                wgetRequests: {},\n                nextWgetRequestHandle: 0,\n                getNextWgetRequestHandle() {\n                    var handle = wget.nextWgetRequestHandle;\n                    wget.nextWgetRequestHandle++;\n                    return handle\n                }\n            };\n            var FS_mkdirTree = (path, mode) => FS.mkdirTree(path, mode);\n            var FS_unlink = path => FS.unlink(path);\n            var _emscripten_async_wget = function(url, file, onload, onerror) {\n                url >>>= 0;\n                file >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _url = UTF8ToString(url);\n                var _file = UTF8ToString(file);\n                _file = PATH_FS.resolve(_file);\n\n                function doCallback(callback) {\n                    if (callback) {\n                        callUserCallback(() => {\n                            var sp = stackSave();\n                            getWasmTableEntry(callback)(stringToUTF8OnStack(_file));\n                            stackRestore(sp)\n                        })\n                    }\n                }\n                var destinationDirectory = PATH.dirname(_file);\n                FS_createPreloadedFile(destinationDirectory, PATH.basename(_file), _url, true, true, () => doCallback(onload), () => doCallback(onerror), false, false, () => {\n                    try {\n                        FS_unlink(_file)\n                    } catch (e) {}\n                    FS_mkdirTree(destinationDirectory)\n                })\n            };\n            _emscripten_async_wget.sig = \"vpppp\";\n            var _emscripten_async_wget_data = function(url, userdata, onload, onerror) {\n                url >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                asyncLoad(UTF8ToString(url), byteArray => {\n                    callUserCallback(() => {\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        getWasmTableEntry(onload)(userdata, buffer, byteArray.length);\n                        _free(buffer)\n                    })\n                }, () => {\n                    if (onerror) {\n                        callUserCallback(() => {\n                            getWasmTableEntry(onerror)(userdata)\n                        })\n                    }\n                }, true)\n            };\n            _emscripten_async_wget_data.sig = \"vpppp\";\n            var _emscripten_async_wget2 = function(url, file, request, param, userdata, onload, onerror, onprogress) {\n                url >>>= 0;\n                file >>>= 0;\n                request >>>= 0;\n                param >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                onprogress >>>= 0;\n                var _url = UTF8ToString(url);\n                var _file = UTF8ToString(file);\n                _file = PATH_FS.resolve(_file);\n                var _request = UTF8ToString(request);\n                var _param = UTF8ToString(param);\n                var index = _file.lastIndexOf(\"/\");\n                var http = new XMLHttpRequest;\n                http.open(_request, _url, true);\n                http.responseType = \"arraybuffer\";\n                var handle = wget.getNextWgetRequestHandle();\n                var destinationDirectory = PATH.dirname(_file);\n                http.onload = e => {\n                    if (http.status >= 200 && http.status < 300) {\n                        try {\n                            FS.unlink(_file)\n                        } catch (e) {}\n                        FS.mkdirTree(destinationDirectory);\n                        FS.createDataFile(_file.substr(0, index), _file.substr(index + 1), new Uint8Array(http.response), true, true, false);\n                        if (onload) {\n                            var sp = stackSave();\n                            getWasmTableEntry(onload)(handle, userdata, stringToUTF8OnStack(_file));\n                            stackRestore(sp)\n                        }\n                    } else {\n                        if (onerror) getWasmTableEntry(onerror)(handle, userdata, http.status)\n                    }\n                    delete wget.wgetRequests[handle]\n                };\n                http.onerror = e => {\n                    if (onerror) getWasmTableEntry(onerror)(handle, userdata, http.status);\n                    delete wget.wgetRequests[handle]\n                };\n                http.onprogress = e => {\n                    if (e.lengthComputable || e.lengthComputable === undefined && e.total != 0) {\n                        var percentComplete = e.loaded / e.total * 100;\n                        if (onprogress) getWasmTableEntry(onprogress)(handle, userdata, percentComplete)\n                    }\n                };\n                http.onabort = e => {\n                    delete wget.wgetRequests[handle]\n                };\n                if (_request == \"POST\") {\n                    http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n                    http.send(_param)\n                } else {\n                    http.send(null)\n                }\n                wget.wgetRequests[handle] = http;\n                return handle\n            };\n            _emscripten_async_wget2.sig = \"ipppppppp\";\n\n            function _emscripten_async_wget2_data(url, request, param, userdata, free, onload, onerror, onprogress) {\n                url >>>= 0;\n                request >>>= 0;\n                param >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                onprogress >>>= 0;\n                var _url = UTF8ToString(url);\n                var _request = UTF8ToString(request);\n                var _param = UTF8ToString(param);\n                var http = new XMLHttpRequest;\n                http.open(_request, _url, true);\n                http.responseType = \"arraybuffer\";\n                var handle = wget.getNextWgetRequestHandle();\n\n                function onerrorjs() {\n                    if (onerror) {\n                        var sp = stackSave();\n                        var statusText = 0;\n                        if (http.statusText) {\n                            statusText = stringToUTF8OnStack(http.statusText)\n                        }\n                        getWasmTableEntry(onerror)(handle, userdata, http.status, statusText);\n                        stackRestore(sp)\n                    }\n                }\n                http.onload = e => {\n                    if (http.status >= 200 && http.status < 300 || http.status === 0 && _url.substr(0, 4).toLowerCase() != \"http\") {\n                        var byteArray = new Uint8Array(http.response);\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        if (onload) getWasmTableEntry(onload)(handle, userdata, buffer, byteArray.length);\n                        if (free) _free(buffer)\n                    } else {\n                        onerrorjs()\n                    }\n                    delete wget.wgetRequests[handle]\n                };\n                http.onerror = e => {\n                    onerrorjs();\n                    delete wget.wgetRequests[handle]\n                };\n                http.onprogress = e => {\n                    if (onprogress) getWasmTableEntry(onprogress)(handle, userdata, e.loaded, e.lengthComputable || e.lengthComputable === undefined ? e.total : 0)\n                };\n                http.onabort = e => {\n                    delete wget.wgetRequests[handle]\n                };\n                if (_request == \"POST\") {\n                    http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n                    http.send(_param)\n                } else {\n                    http.send(null)\n                }\n                wget.wgetRequests[handle] = http;\n                return handle\n            }\n            _emscripten_async_wget2_data.sig = \"ippppippp\";\n            var _emscripten_async_wget2_abort = handle => {\n                var http = wget.wgetRequests[handle];\n                http?.abort()\n            };\n            _emscripten_async_wget2_abort.sig = \"vi\";\n\n            function ___asctime_r(tmPtr, buf) {\n                tmPtr >>>= 0;\n                buf >>>= 0;\n                var date = {\n                    tm_sec: HEAP32[tmPtr >>> 2 >>> 0],\n                    tm_min: HEAP32[tmPtr + 4 >>> 2 >>> 0],\n                    tm_hour: HEAP32[tmPtr + 8 >>> 2 >>> 0],\n                    tm_mday: HEAP32[tmPtr + 12 >>> 2 >>> 0],\n                    tm_mon: HEAP32[tmPtr + 16 >>> 2 >>> 0],\n                    tm_year: HEAP32[tmPtr + 20 >>> 2 >>> 0],\n                    tm_wday: HEAP32[tmPtr + 24 >>> 2 >>> 0]\n                };\n                var days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n                var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n                var s = days[date.tm_wday] + \" \" + months[date.tm_mon] + (date.tm_mday < 10 ? \"  \" : \" \") + date.tm_mday + (date.tm_hour < 10 ? \" 0\" : \" \") + date.tm_hour + (date.tm_min < 10 ? \":0\" : \":\") + date.tm_min + (date.tm_sec < 10 ? \":0\" : \":\") + date.tm_sec + \" \" + (1900 + date.tm_year) + \"\\n\";\n                stringToUTF8(s, buf, 26);\n                return buf\n            }\n            ___asctime_r.sig = \"ppp\";\n\n            function _strptime_l(buf, format, tm, locale) {\n                buf >>>= 0;\n                format >>>= 0;\n                tm >>>= 0;\n                locale >>>= 0;\n                return _strptime(buf, format, tm)\n            }\n            _strptime_l.sig = \"ppppp\";\n\n            function ___syscall_shutdown(fd, how) {\n                try {\n                    getSocketFromFD(fd);\n                    return -52\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            Module[\"___syscall_shutdown\"] = ___syscall_shutdown;\n            ___syscall_shutdown.sig = \"iiiiiii\";\n\n            function __dlsym_catchup_js(handle, symbolIndex) {\n                handle >>>= 0;\n                var lib = LDSO.loadedLibsByHandle[handle];\n                var symDict = lib.exports;\n                var symName = Object.keys(symDict)[symbolIndex];\n                var sym = symDict[symName];\n                var result = addFunction(sym, sym.sig);\n                return result\n            }\n            __dlsym_catchup_js.sig = \"ppi\";\n            var FS_createPath = FS.createPath;\n            var FS_createDevice = FS.createDevice;\n            var FS_readFile = FS.readFile;\n            var FS_createLazyFile = FS.createLazyFile;\n            var _setNetworkCallback = (event, userData, callback) => {\n                function _callback(data) {\n                    try {\n                        if (event === \"error\") {\n                            var sp = stackSave();\n                            var msg = stringToUTF8OnStack(data[2]);\n                            getWasmTableEntry(callback)(data[0], data[1], msg, userData);\n                            stackRestore(sp)\n                        } else {\n                            getWasmTableEntry(callback)(data, userData)\n                        }\n                    } catch (e) {\n                        if (!(e instanceof ExitStatus)) {\n                            if (e && typeof e == \"object\" && e.stack) err(\"exception thrown: \" + [e, e.stack]);\n                            throw e\n                        }\n                    }\n                }\n                SOCKFS.on(event, callback ? _callback : null)\n            };\n\n            function _emscripten_set_socket_error_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"error\", userData, callback)\n            }\n            _emscripten_set_socket_error_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_open_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"open\", userData, callback)\n            }\n            _emscripten_set_socket_open_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_listen_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"listen\", userData, callback)\n            }\n            _emscripten_set_socket_listen_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_connection_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"connection\", userData, callback)\n            }\n            _emscripten_set_socket_connection_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_message_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"message\", userData, callback)\n            }\n            _emscripten_set_socket_message_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_close_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"close\", userData, callback)\n            }\n            _emscripten_set_socket_close_callback.sig = \"vpp\";\n\n            function _emscripten_webgl_enable_ANGLE_instanced_arrays(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_ANGLE_instanced_arrays(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_ANGLE_instanced_arrays.sig = \"ip\";\n\n            function _emscripten_webgl_enable_OES_vertex_array_object(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_OES_vertex_array_object(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_OES_vertex_array_object.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_draw_buffers(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_draw_buffers(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_draw_buffers.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_multi_draw(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_multi_draw(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_multi_draw.sig = \"ip\";\n\n            function _emscripten_webgl_enable_EXT_polygon_offset_clamp(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_EXT_polygon_offset_clamp(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_EXT_polygon_offset_clamp.sig = \"ip\";\n\n            function _emscripten_webgl_enable_EXT_clip_control(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_EXT_clip_control(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_EXT_clip_control.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_polygon_mode(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_polygon_mode(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_polygon_mode.sig = \"ip\";\n\n            function _glVertexPointer(size, type, stride, ptr) {\n                ptr >>>= 0;\n                throw \"Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            }\n            _glVertexPointer.sig = \"viiip\";\n            var _glMatrixMode = () => {\n                throw \"Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glMatrixMode.sig = \"vi\";\n            var _glBegin = () => {\n                throw \"Legacy GL function (glBegin) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glBegin.sig = \"vi\";\n            var _glLoadIdentity = () => {\n                throw \"Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glLoadIdentity.sig = \"v\";\n            var _glVertexAttribDivisorNV = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedNV = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedNV = _glDrawElementsInstanced;\n            var _glVertexAttribDivisorEXT = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedEXT = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedEXT = _glDrawElementsInstanced;\n            var _glVertexAttribDivisorARB = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedARB = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedARB = _glDrawElementsInstanced;\n            var _glDrawBuffersEXT = _glDrawBuffers;\n\n            function _glMultiDrawArraysWEBGL(mode, firsts, counts, drawcount) {\n                firsts >>>= 0;\n                counts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawArraysWEBGL\"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, drawcount)\n            }\n            _glMultiDrawArraysWEBGL.sig = \"vippi\";\n            var _glMultiDrawArrays = _glMultiDrawArraysWEBGL;\n            _glMultiDrawArrays.sig = \"vippi\";\n            var _glMultiDrawArraysANGLE = _glMultiDrawArraysWEBGL;\n\n            function _glMultiDrawArraysInstancedWEBGL(mode, firsts, counts, instanceCounts, drawcount) {\n                firsts >>>= 0;\n                counts >>>= 0;\n                instanceCounts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawArraysInstancedWEBGL\"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, HEAP32, instanceCounts >>> 2, drawcount)\n            }\n            _glMultiDrawArraysInstancedWEBGL.sig = \"vipppi\";\n            var _glMultiDrawArraysInstancedANGLE = _glMultiDrawArraysInstancedWEBGL;\n\n            function _glMultiDrawElementsWEBGL(mode, counts, type, offsets, drawcount) {\n                counts >>>= 0;\n                offsets >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawElementsWEBGL\"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, drawcount)\n            }\n            _glMultiDrawElementsWEBGL.sig = \"vipipi\";\n            var _glMultiDrawElements = _glMultiDrawElementsWEBGL;\n            _glMultiDrawElements.sig = \"vipipi\";\n            var _glMultiDrawElementsANGLE = _glMultiDrawElementsWEBGL;\n\n            function _glMultiDrawElementsInstancedWEBGL(mode, counts, type, offsets, instanceCounts, drawcount) {\n                counts >>>= 0;\n                offsets >>>= 0;\n                instanceCounts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawElementsInstancedWEBGL\"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, HEAP32, instanceCounts >>> 2, drawcount)\n            }\n            _glMultiDrawElementsInstancedWEBGL.sig = \"vipippi\";\n            var _glMultiDrawElementsInstancedANGLE = _glMultiDrawElementsInstancedWEBGL;\n            var _glClearDepth = x0 => GLctx.clearDepth(x0);\n            _glClearDepth.sig = \"vd\";\n            var _glDepthRange = (x0, x1) => GLctx.depthRange(x0, x1);\n            _glDepthRange.sig = \"vdd\";\n            var _emscripten_glGenVertexArrays = _glGenVertexArrays;\n            _emscripten_glGenVertexArrays.sig = \"vip\";\n            var _emscripten_glDeleteVertexArrays = _glDeleteVertexArrays;\n            _emscripten_glDeleteVertexArrays.sig = \"vip\";\n            var _emscripten_glBindVertexArray = _glBindVertexArray;\n            _emscripten_glBindVertexArray.sig = \"vi\";\n            var _emscripten_glIsVertexArray = _glIsVertexArray;\n            _emscripten_glIsVertexArray.sig = \"ii\";\n            var _emscripten_glVertexPointer = _glVertexPointer;\n            _emscripten_glVertexPointer.sig = \"viiip\";\n            var _emscripten_glMatrixMode = _glMatrixMode;\n            _emscripten_glMatrixMode.sig = \"vi\";\n            var _emscripten_glBegin = _glBegin;\n            _emscripten_glBegin.sig = \"vi\";\n            var _emscripten_glLoadIdentity = _glLoadIdentity;\n            _emscripten_glLoadIdentity.sig = \"v\";\n            var _emscripten_glVertexAttribDivisor = _glVertexAttribDivisor;\n            _emscripten_glVertexAttribDivisor.sig = \"vii\";\n            var _emscripten_glDrawArraysInstanced = _glDrawArraysInstanced;\n            _emscripten_glDrawArraysInstanced.sig = \"viiii\";\n            var _emscripten_glDrawElementsInstanced = _glDrawElementsInstanced;\n            _emscripten_glDrawElementsInstanced.sig = \"viiipi\";\n            var _emscripten_glVertexAttribDivisorNV = _glVertexAttribDivisorNV;\n            var _emscripten_glDrawArraysInstancedNV = _glDrawArraysInstancedNV;\n            var _emscripten_glDrawElementsInstancedNV = _glDrawElementsInstancedNV;\n            var _emscripten_glVertexAttribDivisorEXT = _glVertexAttribDivisorEXT;\n            var _emscripten_glDrawArraysInstancedEXT = _glDrawArraysInstancedEXT;\n            var _emscripten_glDrawElementsInstancedEXT = _glDrawElementsInstancedEXT;\n            var _emscripten_glVertexAttribDivisorARB = _glVertexAttribDivisorARB;\n            var _emscripten_glDrawArraysInstancedARB = _glDrawArraysInstancedARB;\n            var _emscripten_glDrawElementsInstancedARB = _glDrawElementsInstancedARB;\n            var _emscripten_glDrawBuffers = _glDrawBuffers;\n            _emscripten_glDrawBuffers.sig = \"vip\";\n            var _emscripten_glDrawBuffersEXT = _glDrawBuffersEXT;\n            var _emscripten_glMultiDrawArrays = _glMultiDrawArrays;\n            _emscripten_glMultiDrawArrays.sig = \"vippi\";\n            var _emscripten_glMultiDrawArraysANGLE = _glMultiDrawArraysANGLE;\n            var _emscripten_glMultiDrawArraysWEBGL = _glMultiDrawArraysWEBGL;\n            var _emscripten_glMultiDrawArraysInstancedANGLE = _glMultiDrawArraysInstancedANGLE;\n            var _emscripten_glMultiDrawArraysInstancedWEBGL = _glMultiDrawArraysInstancedWEBGL;\n            var _emscripten_glMultiDrawElements = _glMultiDrawElements;\n            _emscripten_glMultiDrawElements.sig = \"vipipi\";\n            var _emscripten_glMultiDrawElementsANGLE = _glMultiDrawElementsANGLE;\n            var _emscripten_glMultiDrawElementsWEBGL = _glMultiDrawElementsWEBGL;\n            var _emscripten_glMultiDrawElementsInstancedANGLE = _glMultiDrawElementsInstancedANGLE;\n            var _emscripten_glMultiDrawElementsInstancedWEBGL = _glMultiDrawElementsInstancedWEBGL;\n            var _emscripten_glClearDepth = _glClearDepth;\n            _emscripten_glClearDepth.sig = \"vd\";\n            var _emscripten_glDepthRange = _glDepthRange;\n            _emscripten_glDepthRange.sig = \"vdd\";\n            var writeGLArray = (arr, dst, dstLength, heapType) => {\n                var len = arr.length;\n                var writeLength = dstLength < len ? dstLength : len;\n                var heap = heapType ? HEAPF32 : HEAP32;\n                dst = dst >>> 2;\n                for (var i = 0; i < writeLength; ++i) {\n                    heap[dst + i >>> 0] = arr[i]\n                }\n                return len\n            };\n            var webglPowerPreferences = [\"default\", \"low-power\", \"high-performance\"];\n\n            function _emscripten_webgl_do_create_context(target, attributes) {\n                target >>>= 0;\n                attributes >>>= 0;\n                var attr32 = attributes >>> 2;\n                var powerPreference = HEAP32[attr32 + (8 >> 2) >>> 0];\n                var contextAttributes = {\n                    alpha: !!HEAP8[attributes + 0 >>> 0],\n                    depth: !!HEAP8[attributes + 1 >>> 0],\n                    stencil: !!HEAP8[attributes + 2 >>> 0],\n                    antialias: !!HEAP8[attributes + 3 >>> 0],\n                    premultipliedAlpha: !!HEAP8[attributes + 4 >>> 0],\n                    preserveDrawingBuffer: !!HEAP8[attributes + 5 >>> 0],\n                    powerPreference: webglPowerPreferences[powerPreference],\n                    failIfMajorPerformanceCaveat: !!HEAP8[attributes + 12 >>> 0],\n                    majorVersion: HEAP32[attr32 + (16 >> 2) >>> 0],\n                    minorVersion: HEAP32[attr32 + (20 >> 2) >>> 0],\n                    enableExtensionsByDefault: HEAP8[attributes + 24 >>> 0],\n                    explicitSwapControl: HEAP8[attributes + 25 >>> 0],\n                    proxyContextToMainThread: HEAP32[attr32 + (28 >> 2) >>> 0],\n                    renderViaOffscreenBackBuffer: HEAP8[attributes + 32 >>> 0]\n                };\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) {\n                    return 0\n                }\n                if (contextAttributes.explicitSwapControl) {\n                    return 0\n                }\n                var contextHandle = GL.createContext(canvas, contextAttributes);\n                return contextHandle\n            }\n            _emscripten_webgl_do_create_context.sig = \"ppp\";\n            var _emscripten_webgl_create_context = _emscripten_webgl_do_create_context;\n            _emscripten_webgl_create_context.sig = \"ppp\";\n\n            function _emscripten_webgl_do_get_current_context() {\n                return GL.currentContext ? GL.currentContext.handle : 0\n            }\n            _emscripten_webgl_do_get_current_context.sig = \"p\";\n            var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context;\n            _emscripten_webgl_get_current_context.sig = \"p\";\n            var _emscripten_webgl_do_commit_frame = () => {\n                if (!GL.currentContext || !GL.currentContext.GLctx) {\n                    return -3\n                }\n                if (!GL.currentContext.attributes.explicitSwapControl) {\n                    return -3\n                }\n                return 0\n            };\n            _emscripten_webgl_do_commit_frame.sig = \"i\";\n            var _emscripten_webgl_commit_frame = _emscripten_webgl_do_commit_frame;\n            _emscripten_webgl_commit_frame.sig = \"i\";\n\n            function _emscripten_webgl_make_context_current(contextHandle) {\n                contextHandle >>>= 0;\n                var success = GL.makeContextCurrent(contextHandle);\n                return success ? 0 : -5\n            }\n            _emscripten_webgl_make_context_current.sig = \"ip\";\n\n            function _emscripten_webgl_get_drawing_buffer_size(contextHandle, width, height) {\n                contextHandle >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var GLContext = GL.getContext(contextHandle);\n                if (!GLContext || !GLContext.GLctx || !width || !height) {\n                    return -5\n                }\n                HEAP32[width >>> 2 >>> 0] = GLContext.GLctx.drawingBufferWidth;\n                HEAP32[height >>> 2 >>> 0] = GLContext.GLctx.drawingBufferHeight;\n                return 0\n            }\n            _emscripten_webgl_get_drawing_buffer_size.sig = \"ippp\";\n\n            function _emscripten_webgl_get_context_attributes(c, a) {\n                c >>>= 0;\n                a >>>= 0;\n                if (!a) return -5;\n                c = GL.contexts[c];\n                if (!c) return -3;\n                var t = c.GLctx;\n                if (!t) return -3;\n                t = t.getContextAttributes();\n                HEAP8[a >>> 0] = t.alpha;\n                HEAP8[a + 1 >>> 0] = t.depth;\n                HEAP8[a + 2 >>> 0] = t.stencil;\n                HEAP8[a + 3 >>> 0] = t.antialias;\n                HEAP8[a + 4 >>> 0] = t.premultipliedAlpha;\n                HEAP8[a + 5 >>> 0] = t.preserveDrawingBuffer;\n                var power = t[\"powerPreference\"] && webglPowerPreferences.indexOf(t[\"powerPreference\"]);\n                HEAP32[a + 8 >>> 2 >>> 0] = power;\n                HEAP8[a + 12 >>> 0] = t.failIfMajorPerformanceCaveat;\n                HEAP32[a + 16 >>> 2 >>> 0] = c.version;\n                HEAP32[a + 20 >>> 2 >>> 0] = 0;\n                HEAP8[a + 24 >>> 0] = c.attributes.enableExtensionsByDefault;\n                return 0\n            }\n            _emscripten_webgl_get_context_attributes.sig = \"ipp\";\n\n            function _emscripten_webgl_destroy_context(contextHandle) {\n                contextHandle >>>= 0;\n                if (GL.currentContext == contextHandle) GL.currentContext = 0;\n                GL.deleteContext(contextHandle)\n            }\n            _emscripten_webgl_destroy_context.sig = \"ip\";\n\n            function _emscripten_webgl_enable_extension(contextHandle, extension) {\n                contextHandle >>>= 0;\n                extension >>>= 0;\n                var context = GL.getContext(contextHandle);\n                var extString = UTF8ToString(extension);\n                if (extString.startsWith(\"GL_\")) extString = extString.substr(3);\n                if (extString == \"ANGLE_instanced_arrays\") webgl_enable_ANGLE_instanced_arrays(GLctx);\n                if (extString == \"OES_vertex_array_object\") webgl_enable_OES_vertex_array_object(GLctx);\n                if (extString == \"WEBGL_draw_buffers\") webgl_enable_WEBGL_draw_buffers(GLctx);\n                if (extString == \"WEBGL_multi_draw\") webgl_enable_WEBGL_multi_draw(GLctx);\n                if (extString == \"EXT_polygon_offset_clamp\") webgl_enable_EXT_polygon_offset_clamp(GLctx);\n                if (extString == \"EXT_clip_control\") webgl_enable_EXT_clip_control(GLctx);\n                if (extString == \"WEBGL_polygon_mode\") webgl_enable_WEBGL_polygon_mode(GLctx);\n                var ext = context.GLctx.getExtension(extString);\n                return !!ext\n            }\n            _emscripten_webgl_enable_extension.sig = \"ipp\";\n            var _emscripten_supports_offscreencanvas = () => 0;\n            _emscripten_supports_offscreencanvas.sig = \"i\";\n            var registerWebGlEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                var webGlEventHandlerFunc = (e = event) => {\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: webGlEventHandlerFunc,\n                    useCapture\n                };\n                JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_webglcontextlost_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 31, \"webglcontextlost\", targetThread);\n                return 0\n            }\n            _emscripten_set_webglcontextlost_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_webglcontextrestored_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 32, \"webglcontextrestored\", targetThread);\n                return 0\n            }\n            _emscripten_set_webglcontextrestored_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_is_webgl_context_lost(contextHandle) {\n                contextHandle >>>= 0;\n                return !GL.contexts[contextHandle] || GL.contexts[contextHandle].GLctx.isContextLost()\n            }\n            _emscripten_is_webgl_context_lost.sig = \"ip\";\n\n            function _emscripten_webgl_get_supported_extensions() {\n                return stringToNewUTF8(GLctx.getSupportedExtensions().join(\" \"))\n            }\n            _emscripten_webgl_get_supported_extensions.sig = \"p\";\n            var _emscripten_webgl_get_program_parameter_d = (program, param) => GLctx.getProgramParameter(GL.programs[program], param);\n            _emscripten_webgl_get_program_parameter_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_program_info_log_utf8(program) {\n                return stringToNewUTF8(GLctx.getProgramInfoLog(GL.programs[program]))\n            }\n            _emscripten_webgl_get_program_info_log_utf8.sig = \"pi\";\n            var _emscripten_webgl_get_shader_parameter_d = (shader, param) => GLctx.getShaderParameter(GL.shaders[shader], param);\n            _emscripten_webgl_get_shader_parameter_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_shader_info_log_utf8(shader) {\n                return stringToNewUTF8(GLctx.getShaderInfoLog(GL.shaders[shader]))\n            }\n            _emscripten_webgl_get_shader_info_log_utf8.sig = \"pi\";\n\n            function _emscripten_webgl_get_shader_source_utf8(shader) {\n                return stringToNewUTF8(GLctx.getShaderSource(GL.shaders[shader]))\n            }\n            _emscripten_webgl_get_shader_source_utf8.sig = \"pi\";\n            var _emscripten_webgl_get_vertex_attrib_d = (index, param) => GLctx.getVertexAttrib(index, param);\n            _emscripten_webgl_get_vertex_attrib_d.sig = \"dii\";\n            var _emscripten_webgl_get_vertex_attrib_o = (index, param) => {\n                var obj = GLctx.getVertexAttrib(index, param);\n                return obj?.name\n            };\n            _emscripten_webgl_get_vertex_attrib_o.sig = \"iii\";\n\n            function _emscripten_webgl_get_vertex_attrib_v(index, param, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getVertexAttrib(index, param), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_vertex_attrib_v.sig = \"iiipii\";\n            var _emscripten_webgl_get_uniform_d = (program, location) => GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location));\n            _emscripten_webgl_get_uniform_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_uniform_v(program, location, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location)), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_uniform_v.sig = \"iiipii\";\n\n            function _emscripten_webgl_get_parameter_v(param, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getParameter(param), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_parameter_v.sig = \"iipii\";\n            var _emscripten_webgl_get_parameter_d = param => GLctx.getParameter(param);\n            _emscripten_webgl_get_parameter_d.sig = \"di\";\n            var _emscripten_webgl_get_parameter_o = param => {\n                var obj = GLctx.getParameter(param);\n                return obj?.name\n            };\n            _emscripten_webgl_get_parameter_o.sig = \"ii\";\n\n            function _emscripten_webgl_get_parameter_utf8(param) {\n                return stringToNewUTF8(GLctx.getParameter(param))\n            }\n            _emscripten_webgl_get_parameter_utf8.sig = \"pi\";\n\n            function _emscripten_webgl_get_parameter_i64v(param, dst) {\n                dst >>>= 0;\n                return writeI53ToI64(dst, GLctx.getParameter(param))\n            }\n            _emscripten_webgl_get_parameter_i64v.sig = \"vip\";\n            var _glutPostRedisplay = () => {\n                if (GLUT.displayFunc && !GLUT.requestedAnimationFrame) {\n                    GLUT.requestedAnimationFrame = true;\n                    MainLoop.requestAnimationFrame(() => {\n                        GLUT.requestedAnimationFrame = false;\n                        MainLoop.runIter(() => getWasmTableEntry(GLUT.displayFunc)())\n                    })\n                }\n            };\n            _glutPostRedisplay.sig = \"v\";\n            var GLUT = {\n                initTime: null,\n                idleFunc: null,\n                displayFunc: null,\n                keyboardFunc: null,\n                keyboardUpFunc: null,\n                specialFunc: null,\n                specialUpFunc: null,\n                reshapeFunc: null,\n                motionFunc: null,\n                passiveMotionFunc: null,\n                mouseFunc: null,\n                buttons: 0,\n                modifiers: 0,\n                initWindowWidth: 256,\n                initWindowHeight: 256,\n                initDisplayMode: 18,\n                windowX: 0,\n                windowY: 0,\n                windowWidth: 0,\n                windowHeight: 0,\n                requestedAnimationFrame: false,\n                saveModifiers: event => {\n                    GLUT.modifiers = 0;\n                    if (event[\"shiftKey\"]) GLUT.modifiers += 1;\n                    if (event[\"ctrlKey\"]) GLUT.modifiers += 2;\n                    if (event[\"altKey\"]) GLUT.modifiers += 4\n                },\n                onMousemove: event => {\n                    var lastX = Browser.mouseX;\n                    var lastY = Browser.mouseY;\n                    Browser.calculateMouseEvent(event);\n                    var newX = Browser.mouseX;\n                    var newY = Browser.mouseY;\n                    if (newX == lastX && newY == lastY) return;\n                    if (GLUT.buttons == 0 && event.target == Module[\"canvas\"] && GLUT.passiveMotionFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.passiveMotionFunc)(lastX, lastY)\n                    } else if (GLUT.buttons != 0 && GLUT.motionFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.motionFunc)(lastX, lastY)\n                    }\n                },\n                getSpecialKey: keycode => {\n                    var key = null;\n                    switch (keycode) {\n                        case 8:\n                            key = 120;\n                            break;\n                        case 46:\n                            key = 111;\n                            break;\n                        case 112:\n                            key = 1;\n                            break;\n                        case 113:\n                            key = 2;\n                            break;\n                        case 114:\n                            key = 3;\n                            break;\n                        case 115:\n                            key = 4;\n                            break;\n                        case 116:\n                            key = 5;\n                            break;\n                        case 117:\n                            key = 6;\n                            break;\n                        case 118:\n                            key = 7;\n                            break;\n                        case 119:\n                            key = 8;\n                            break;\n                        case 120:\n                            key = 9;\n                            break;\n                        case 121:\n                            key = 10;\n                            break;\n                        case 122:\n                            key = 11;\n                            break;\n                        case 123:\n                            key = 12;\n                            break;\n                        case 37:\n                            key = 100;\n                            break;\n                        case 38:\n                            key = 101;\n                            break;\n                        case 39:\n                            key = 102;\n                            break;\n                        case 40:\n                            key = 103;\n                            break;\n                        case 33:\n                            key = 104;\n                            break;\n                        case 34:\n                            key = 105;\n                            break;\n                        case 36:\n                            key = 106;\n                            break;\n                        case 35:\n                            key = 107;\n                            break;\n                        case 45:\n                            key = 108;\n                            break;\n                        case 16:\n                        case 5:\n                            key = 112;\n                            break;\n                        case 6:\n                            key = 113;\n                            break;\n                        case 17:\n                        case 3:\n                            key = 114;\n                            break;\n                        case 4:\n                            key = 115;\n                            break;\n                        case 18:\n                        case 2:\n                            key = 116;\n                            break;\n                        case 1:\n                            key = 117;\n                            break\n                    }\n                    return key\n                },\n                getASCIIKey: event => {\n                    if (event[\"ctrlKey\"] || event[\"altKey\"] || event[\"metaKey\"]) return null;\n                    var keycode = event[\"keyCode\"];\n                    if (48 <= keycode && keycode <= 57) return keycode;\n                    if (65 <= keycode && keycode <= 90) return event[\"shiftKey\"] ? keycode : keycode + 32;\n                    if (96 <= keycode && keycode <= 105) return keycode - 48;\n                    if (106 <= keycode && keycode <= 111) return keycode - 106 + 42;\n                    switch (keycode) {\n                        case 9:\n                        case 13:\n                        case 27:\n                        case 32:\n                        case 61:\n                            return keycode\n                    }\n                    var s = event[\"shiftKey\"];\n                    switch (keycode) {\n                        case 186:\n                            return s ? 58 : 59;\n                        case 187:\n                            return s ? 43 : 61;\n                        case 188:\n                            return s ? 60 : 44;\n                        case 189:\n                            return s ? 95 : 45;\n                        case 190:\n                            return s ? 62 : 46;\n                        case 191:\n                            return s ? 63 : 47;\n                        case 219:\n                            return s ? 123 : 91;\n                        case 220:\n                            return s ? 124 : 47;\n                        case 221:\n                            return s ? 125 : 93;\n                        case 222:\n                            return s ? 34 : 39\n                    }\n                    return null\n                },\n                onKeydown: event => {\n                    if (GLUT.specialFunc || GLUT.keyboardFunc) {\n                        var key = GLUT.getSpecialKey(event[\"keyCode\"]);\n                        if (key !== null) {\n                            if (GLUT.specialFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.specialFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        } else {\n                            key = GLUT.getASCIIKey(event);\n                            if (key !== null && GLUT.keyboardFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.keyboardFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        }\n                    }\n                },\n                onKeyup: event => {\n                    if (GLUT.specialUpFunc || GLUT.keyboardUpFunc) {\n                        var key = GLUT.getSpecialKey(event[\"keyCode\"]);\n                        if (key !== null) {\n                            if (GLUT.specialUpFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.specialUpFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        } else {\n                            key = GLUT.getASCIIKey(event);\n                            if (key !== null && GLUT.keyboardUpFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.keyboardUpFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        }\n                    }\n                },\n                touchHandler: event => {\n                    if (event.target != Module[\"canvas\"]) {\n                        return\n                    }\n                    var touches = event.changedTouches,\n                        main = touches[0],\n                        type = \"\";\n                    switch (event.type) {\n                        case \"touchstart\":\n                            type = \"mousedown\";\n                            break;\n                        case \"touchmove\":\n                            type = \"mousemove\";\n                            break;\n                        case \"touchend\":\n                            type = \"mouseup\";\n                            break;\n                        default:\n                            return\n                    }\n                    var simulatedEvent = document.createEvent(\"MouseEvent\");\n                    simulatedEvent.initMouseEvent(type, true, true, window, 1, main.screenX, main.screenY, main.clientX, main.clientY, false, false, false, false, 0, null);\n                    main.target.dispatchEvent(simulatedEvent);\n                    event.preventDefault()\n                },\n                onMouseButtonDown: event => {\n                    Browser.calculateMouseEvent(event);\n                    GLUT.buttons |= 1 << event[\"button\"];\n                    if (event.target == Module[\"canvas\"] && GLUT.mouseFunc) {\n                        try {\n                            event.target.setCapture()\n                        } catch (e) {}\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(event[\"button\"], 0, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onMouseButtonUp: event => {\n                    Browser.calculateMouseEvent(event);\n                    GLUT.buttons &= ~(1 << event[\"button\"]);\n                    if (GLUT.mouseFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(event[\"button\"], 1, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onMouseWheel: event => {\n                    Browser.calculateMouseEvent(event);\n                    var e = window.event || event;\n                    var delta = -Browser.getMouseWheelDelta(event);\n                    delta = delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n                    var button = 3;\n                    if (delta < 0) {\n                        button = 4\n                    }\n                    if (GLUT.mouseFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(button, 0, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onFullscreenEventChange: event => {\n                    var width;\n                    var height;\n                    if (document[\"fullscreen\"] || document[\"fullScreen\"] || document[\"mozFullScreen\"] || document[\"webkitIsFullScreen\"]) {\n                        width = screen[\"width\"];\n                        height = screen[\"height\"]\n                    } else {\n                        width = GLUT.windowWidth;\n                        height = GLUT.windowHeight;\n                        document.removeEventListener(\"fullscreenchange\", GLUT.onFullscreenEventChange, true);\n                        document.removeEventListener(\"mozfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                        document.removeEventListener(\"webkitfullscreenchange\", GLUT.onFullscreenEventChange, true)\n                    }\n                    Browser.setCanvasSize(width, height, true);\n                    if (GLUT.reshapeFunc) {\n                        getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                    }\n                    _glutPostRedisplay()\n                }\n            };\n            var _glutGetModifiers = () => GLUT.modifiers;\n            _glutGetModifiers.sig = \"i\";\n\n            function _glutInit(argcp, argv) {\n                argcp >>>= 0;\n                argv >>>= 0;\n                GLUT.initTime = Date.now();\n                var isTouchDevice = \"ontouchstart\" in document.documentElement;\n                if (isTouchDevice) {\n                    window.addEventListener(\"touchmove\", GLUT.touchHandler, true);\n                    window.addEventListener(\"touchstart\", GLUT.touchHandler, true);\n                    window.addEventListener(\"touchend\", GLUT.touchHandler, true)\n                }\n                window.addEventListener(\"keydown\", GLUT.onKeydown, true);\n                window.addEventListener(\"keyup\", GLUT.onKeyup, true);\n                window.addEventListener(\"mousemove\", GLUT.onMousemove, true);\n                window.addEventListener(\"mousedown\", GLUT.onMouseButtonDown, true);\n                window.addEventListener(\"mouseup\", GLUT.onMouseButtonUp, true);\n                window.addEventListener(\"mousewheel\", GLUT.onMouseWheel, true);\n                window.addEventListener(\"DOMMouseScroll\", GLUT.onMouseWheel, true);\n                Browser.resizeListeners.push((width, height) => {\n                    if (GLUT.reshapeFunc) {\n                        getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                    }\n                });\n                __ATEXIT__.push(() => {\n                    if (isTouchDevice) {\n                        window.removeEventListener(\"touchmove\", GLUT.touchHandler, true);\n                        window.removeEventListener(\"touchstart\", GLUT.touchHandler, true);\n                        window.removeEventListener(\"touchend\", GLUT.touchHandler, true)\n                    }\n                    window.removeEventListener(\"keydown\", GLUT.onKeydown, true);\n                    window.removeEventListener(\"keyup\", GLUT.onKeyup, true);\n                    window.removeEventListener(\"mousemove\", GLUT.onMousemove, true);\n                    window.removeEventListener(\"mousedown\", GLUT.onMouseButtonDown, true);\n                    window.removeEventListener(\"mouseup\", GLUT.onMouseButtonUp, true);\n                    window.removeEventListener(\"mousewheel\", GLUT.onMouseWheel, true);\n                    window.removeEventListener(\"DOMMouseScroll\", GLUT.onMouseWheel, true);\n                    Module[\"canvas\"].width = Module[\"canvas\"].height = 1\n                })\n            }\n            _glutInit.sig = \"vpp\";\n            var _glutInitWindowSize = (width, height) => {\n                Browser.setCanvasSize(GLUT.initWindowWidth = width, GLUT.initWindowHeight = height)\n            };\n            _glutInitWindowSize.sig = \"vii\";\n            var _glutInitWindowPosition = (x, y) => {};\n            _glutInitWindowPosition.sig = \"vii\";\n            var _glutGet = type => {\n                switch (type) {\n                    case 100:\n                        return 0;\n                    case 101:\n                        return 0;\n                    case 102:\n                        return Module[\"canvas\"].width;\n                    case 103:\n                        return Module[\"canvas\"].height;\n                    case 200:\n                        return Module[\"canvas\"].width;\n                    case 201:\n                        return Module[\"canvas\"].height;\n                    case 500:\n                        return 0;\n                    case 501:\n                        return 0;\n                    case 502:\n                        return GLUT.initWindowWidth;\n                    case 503:\n                        return GLUT.initWindowHeight;\n                    case 700:\n                        var now = Date.now();\n                        return now - GLUT.initTime;\n                    case 105:\n                        return Module.ctx.getContextAttributes().stencil ? 8 : 0;\n                    case 106:\n                        return Module.ctx.getContextAttributes().depth ? 8 : 0;\n                    case 110:\n                        return Module.ctx.getContextAttributes().alpha ? 8 : 0;\n                    case 120:\n                        return Module.ctx.getContextAttributes().antialias ? 1 : 0;\n                    default:\n                        throw \"glutGet(\" + type + \") not implemented yet\"\n                }\n            };\n            _glutGet.sig = \"ii\";\n\n            function _glutIdleFunc(func) {\n                func >>>= 0;\n\n                function callback() {\n                    if (GLUT.idleFunc) {\n                        getWasmTableEntry(GLUT.idleFunc)();\n                        safeSetTimeout(callback, 4)\n                    }\n                }\n                if (!GLUT.idleFunc) {\n                    safeSetTimeout(callback, 0)\n                }\n                GLUT.idleFunc = func\n            }\n            _glutIdleFunc.sig = \"vp\";\n            var _glutTimerFunc = function(msec, func, value) {\n                func >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(func)(value), msec)\n            };\n            _glutTimerFunc.sig = \"vipi\";\n\n            function _glutDisplayFunc(func) {\n                func >>>= 0;\n                GLUT.displayFunc = func\n            }\n            _glutDisplayFunc.sig = \"vp\";\n\n            function _glutKeyboardFunc(func) {\n                func >>>= 0;\n                GLUT.keyboardFunc = func\n            }\n            _glutKeyboardFunc.sig = \"vp\";\n\n            function _glutKeyboardUpFunc(func) {\n                func >>>= 0;\n                GLUT.keyboardUpFunc = func\n            }\n            _glutKeyboardUpFunc.sig = \"vp\";\n\n            function _glutSpecialFunc(func) {\n                func >>>= 0;\n                GLUT.specialFunc = func\n            }\n            _glutSpecialFunc.sig = \"vp\";\n\n            function _glutSpecialUpFunc(func) {\n                func >>>= 0;\n                GLUT.specialUpFunc = func\n            }\n            _glutSpecialUpFunc.sig = \"vp\";\n\n            function _glutReshapeFunc(func) {\n                func >>>= 0;\n                GLUT.reshapeFunc = func\n            }\n            _glutReshapeFunc.sig = \"vp\";\n\n            function _glutMotionFunc(func) {\n                func >>>= 0;\n                GLUT.motionFunc = func\n            }\n            _glutMotionFunc.sig = \"vp\";\n\n            function _glutPassiveMotionFunc(func) {\n                func >>>= 0;\n                GLUT.passiveMotionFunc = func\n            }\n            _glutPassiveMotionFunc.sig = \"vp\";\n\n            function _glutMouseFunc(func) {\n                func >>>= 0;\n                GLUT.mouseFunc = func\n            }\n            _glutMouseFunc.sig = \"vp\";\n            var _glutSetCursor = cursor => {\n                var cursorStyle = \"auto\";\n                switch (cursor) {\n                    case 0:\n                        break;\n                    case 1:\n                        break;\n                    case 2:\n                        cursorStyle = \"pointer\";\n                        break;\n                    case 3:\n                        break;\n                    case 4:\n                        cursorStyle = \"help\";\n                        break;\n                    case 5:\n                        break;\n                    case 6:\n                        break;\n                    case 7:\n                        cursorStyle = \"wait\";\n                        break;\n                    case 8:\n                        cursorStyle = \"text\";\n                        break;\n                    case 9:\n                    case 102:\n                        cursorStyle = \"crosshair\";\n                        break;\n                    case 10:\n                        cursorStyle = \"ns-resize\";\n                        break;\n                    case 11:\n                        cursorStyle = \"ew-resize\";\n                        break;\n                    case 12:\n                        cursorStyle = \"n-resize\";\n                        break;\n                    case 13:\n                        cursorStyle = \"s-resize\";\n                        break;\n                    case 14:\n                        cursorStyle = \"w-resize\";\n                        break;\n                    case 15:\n                        cursorStyle = \"e-resize\";\n                        break;\n                    case 16:\n                        cursorStyle = \"nw-resize\";\n                        break;\n                    case 17:\n                        cursorStyle = \"ne-resize\";\n                        break;\n                    case 18:\n                        cursorStyle = \"se-resize\";\n                        break;\n                    case 19:\n                        cursorStyle = \"sw-resize\";\n                        break;\n                    case 100:\n                        break;\n                    case 101:\n                        cursorStyle = \"none\";\n                        break;\n                    default:\n                        throw \"glutSetCursor: Unknown cursor type: \" + cursor\n                }\n                Module[\"canvas\"].style.cursor = cursorStyle\n            };\n            _glutSetCursor.sig = \"vi\";\n\n            function _glutCreateWindow(name) {\n                name >>>= 0;\n                var contextAttributes = {\n                    antialias: (GLUT.initDisplayMode & 128) != 0,\n                    depth: (GLUT.initDisplayMode & 16) != 0,\n                    stencil: (GLUT.initDisplayMode & 32) != 0,\n                    alpha: (GLUT.initDisplayMode & 8) != 0\n                };\n                Module.ctx = Browser.createContext(Module[\"canvas\"], true, true, contextAttributes);\n                return Module.ctx ? 1 : 0\n            }\n            _glutCreateWindow.sig = \"ip\";\n            var _glutDestroyWindow = name => {\n                delete Module.ctx;\n                return 1\n            };\n            _glutDestroyWindow.sig = \"vi\";\n            var _glutReshapeWindow = (width, height) => {\n                Browser.exitFullscreen();\n                Browser.setCanvasSize(width, height, true);\n                if (GLUT.reshapeFunc) {\n                    getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                }\n                _glutPostRedisplay()\n            };\n            _glutReshapeWindow.sig = \"vii\";\n            var _glutPositionWindow = (x, y) => {\n                Browser.exitFullscreen();\n                _glutPostRedisplay()\n            };\n            _glutPositionWindow.sig = \"vii\";\n            var _glutFullScreen = () => {\n                GLUT.windowX = 0;\n                GLUT.windowY = 0;\n                GLUT.windowWidth = Module[\"canvas\"].width;\n                GLUT.windowHeight = Module[\"canvas\"].height;\n                document.addEventListener(\"fullscreenchange\", GLUT.onFullscreenEventChange, true);\n                document.addEventListener(\"mozfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                document.addEventListener(\"webkitfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                Browser.requestFullscreen(false, false)\n            };\n            _glutFullScreen.sig = \"v\";\n            var _glutInitDisplayMode = mode => GLUT.initDisplayMode = mode;\n            _glutInitDisplayMode.sig = \"vi\";\n            var _glutSwapBuffers = () => {};\n            _glutSwapBuffers.sig = \"v\";\n            var _glutMainLoop = () => {\n                _glutReshapeWindow(Module[\"canvas\"].width, Module[\"canvas\"].height);\n                _glutPostRedisplay();\n                throw \"unwind\"\n            };\n            _glutMainLoop.sig = \"v\";\n\n            function _XOpenDisplay(name) {\n                name >>>= 0;\n                return 1\n            }\n            _XOpenDisplay.sig = \"pp\";\n\n            function _XCreateWindow(display, parent, x, y, width, height, border_width, depth, class_, visual, valuemask, attributes) {\n                display >>>= 0;\n                parent >>>= 0;\n                visual >>>= 0;\n                valuemask >>>= 0;\n                attributes >>>= 0;\n                Browser.setCanvasSize(width, height);\n                return 2\n            }\n            _XCreateWindow.sig = \"pppiiiiiiippp\";\n\n            function _XChangeWindowAttributes(display, window, valuemask, attributes) {\n                display >>>= 0;\n                window >>>= 0;\n                valuemask >>>= 0;\n                attributes >>>= 0\n            }\n            _XChangeWindowAttributes.sig = \"ipppp\";\n\n            function _XSetWMHints(display, win, hints) {\n                display >>>= 0;\n                win >>>= 0;\n                hints >>>= 0\n            }\n            _XSetWMHints.sig = \"ippp\";\n\n            function _XMapWindow(display, win) {\n                display >>>= 0;\n                win >>>= 0\n            }\n            _XMapWindow.sig = \"ipp\";\n\n            function _XStoreName(display, win, name) {\n                display >>>= 0;\n                win >>>= 0;\n                name >>>= 0\n            }\n            _XStoreName.sig = \"ippp\";\n\n            function _XInternAtom(display, name_, hmm) {\n                display >>>= 0;\n                name_ >>>= 0;\n                return 0\n            }\n            _XInternAtom.sig = \"pppi\";\n\n            function _XSendEvent(display, win, propagate, event_mask, even_send) {\n                display >>>= 0;\n                win >>>= 0;\n                event_mask >>>= 0;\n                even_send >>>= 0\n            }\n            _XSendEvent.sig = \"ippipp\";\n\n            function _XPending(display) {\n                display >>>= 0;\n                return 0\n            }\n            _XPending.sig = \"ip\";\n            var EGL = {\n                errorCode: 12288,\n                defaultDisplayInitialized: false,\n                currentContext: 0,\n                currentReadSurface: 0,\n                currentDrawSurface: 0,\n                contextAttributes: {\n                    alpha: false,\n                    depth: false,\n                    stencil: false,\n                    antialias: false\n                },\n                stringCache: {},\n                setErrorCode(code) {\n                    EGL.errorCode = code\n                },\n                chooseConfig(display, attribList, config, config_size, numConfigs) {\n                    if (display != 62e3) {\n                        EGL.setErrorCode(12296);\n                        return 0\n                    }\n                    if (attribList) {\n                        for (;;) {\n                            var param = HEAP32[attribList >>> 2 >>> 0];\n                            if (param == 12321) {\n                                var alphaSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.alpha = alphaSize > 0\n                            } else if (param == 12325) {\n                                var depthSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.depth = depthSize > 0\n                            } else if (param == 12326) {\n                                var stencilSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.stencil = stencilSize > 0\n                            } else if (param == 12337) {\n                                var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.antialias = samples > 0\n                            } else if (param == 12338) {\n                                var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.antialias = samples == 1\n                            } else if (param == 12544) {\n                                var requestedPriority = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.lowLatency = requestedPriority != 12547\n                            } else if (param == 12344) {\n                                break\n                            }\n                            attribList += 8\n                        }\n                    }\n                    if ((!config || !config_size) && !numConfigs) {\n                        EGL.setErrorCode(12300);\n                        return 0\n                    }\n                    if (numConfigs) {\n                        HEAP32[numConfigs >>> 2 >>> 0] = 1\n                    }\n                    if (config && config_size > 0) {\n                        HEAPU32[config >>> 2 >>> 0] = 62002\n                    }\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n            };\n\n            function _eglGetDisplay(nativeDisplayType) {\n                nativeDisplayType >>>= 0;\n                EGL.setErrorCode(12288);\n                if (nativeDisplayType != 0 && nativeDisplayType != 1) {\n                    return 0\n                }\n                return 62e3\n            }\n            _eglGetDisplay.sig = \"pp\";\n\n            function _eglInitialize(display, majorVersion, minorVersion) {\n                display >>>= 0;\n                majorVersion >>>= 0;\n                minorVersion >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (majorVersion) {\n                    HEAP32[majorVersion >>> 2 >>> 0] = 1\n                }\n                if (minorVersion) {\n                    HEAP32[minorVersion >>> 2 >>> 0] = 4\n                }\n                EGL.defaultDisplayInitialized = true;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglInitialize.sig = \"ippp\";\n\n            function _eglTerminate(display) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                EGL.currentContext = 0;\n                EGL.currentReadSurface = 0;\n                EGL.currentDrawSurface = 0;\n                EGL.defaultDisplayInitialized = false;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglTerminate.sig = \"ip\";\n\n            function _eglGetConfigs(display, configs, config_size, numConfigs) {\n                display >>>= 0;\n                configs >>>= 0;\n                numConfigs >>>= 0;\n                return EGL.chooseConfig(display, 0, configs, config_size, numConfigs)\n            }\n            _eglGetConfigs.sig = \"ippip\";\n\n            function _eglChooseConfig(display, attrib_list, configs, config_size, numConfigs) {\n                display >>>= 0;\n                attrib_list >>>= 0;\n                configs >>>= 0;\n                numConfigs >>>= 0;\n                return EGL.chooseConfig(display, attrib_list, configs, config_size, numConfigs)\n            }\n            _eglChooseConfig.sig = \"ipppip\";\n\n            function _eglGetConfigAttrib(display, config, attribute, value) {\n                display >>>= 0;\n                config >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (config != 62002) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12320:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 32 : 24;\n                        return 1;\n                    case 12321:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 8 : 0;\n                        return 1;\n                    case 12322:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12323:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12324:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12325:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.depth ? 24 : 0;\n                        return 1;\n                    case 12326:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.stencil ? 8 : 0;\n                        return 1;\n                    case 12327:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12329:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12330:\n                        HEAP32[value >>> 2 >>> 0] = 4096;\n                        return 1;\n                    case 12331:\n                        HEAP32[value >>> 2 >>> 0] = 16777216;\n                        return 1;\n                    case 12332:\n                        HEAP32[value >>> 2 >>> 0] = 4096;\n                        return 1;\n                    case 12333:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12334:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12335:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12337:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 4 : 0;\n                        return 1;\n                    case 12338:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 1 : 0;\n                        return 1;\n                    case 12339:\n                        HEAP32[value >>> 2 >>> 0] = 4;\n                        return 1;\n                    case 12340:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12341:\n                    case 12342:\n                    case 12343:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12345:\n                    case 12346:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12347:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12348:\n                        HEAP32[value >>> 2 >>> 0] = 1;\n                        return 1;\n                    case 12349:\n                    case 12350:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12351:\n                        HEAP32[value >>> 2 >>> 0] = 12430;\n                        return 1;\n                    case 12352:\n                        HEAP32[value >>> 2 >>> 0] = 4;\n                        return 1;\n                    case 12354:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglGetConfigAttrib.sig = \"ippip\";\n\n            function _eglCreateWindowSurface(display, config, win, attrib_list) {\n                display >>>= 0;\n                config >>>= 0;\n                attrib_list >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (config != 62002) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                return 62006\n            }\n            _eglCreateWindowSurface.sig = \"pppip\";\n\n            function _eglDestroySurface(display, surface) {\n                display >>>= 0;\n                surface >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (surface != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 1\n                }\n                if (EGL.currentReadSurface == surface) {\n                    EGL.currentReadSurface = 0\n                }\n                if (EGL.currentDrawSurface == surface) {\n                    EGL.currentDrawSurface = 0\n                }\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglDestroySurface.sig = \"ipp\";\n\n            function _eglCreateContext(display, config, hmm, contextAttribs) {\n                display >>>= 0;\n                config >>>= 0;\n                hmm >>>= 0;\n                contextAttribs >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                var glesContextVersion = 1;\n                for (;;) {\n                    var param = HEAP32[contextAttribs >>> 2 >>> 0];\n                    if (param == 12440) {\n                        glesContextVersion = HEAP32[contextAttribs + 4 >>> 2 >>> 0]\n                    } else if (param == 12344) {\n                        break\n                    } else {\n                        EGL.setErrorCode(12292);\n                        return 0\n                    }\n                    contextAttribs += 8\n                }\n                if (glesContextVersion != 2) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                EGL.contextAttributes.majorVersion = glesContextVersion - 1;\n                EGL.contextAttributes.minorVersion = 0;\n                EGL.context = GL.createContext(Module[\"canvas\"], EGL.contextAttributes);\n                if (EGL.context != 0) {\n                    EGL.setErrorCode(12288);\n                    GL.makeContextCurrent(EGL.context);\n                    Browser.useWebGL = true;\n                    Browser.moduleContextCreatedCallbacks.forEach(callback => callback());\n                    GL.makeContextCurrent(null);\n                    return 62004\n                } else {\n                    EGL.setErrorCode(12297);\n                    return 0\n                }\n            }\n            _eglCreateContext.sig = \"ppppp\";\n\n            function _eglDestroyContext(display, context) {\n                display >>>= 0;\n                context >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                GL.deleteContext(EGL.context);\n                EGL.setErrorCode(12288);\n                if (EGL.currentContext == context) {\n                    EGL.currentContext = 0\n                }\n                return 1\n            }\n            _eglDestroyContext.sig = \"ipp\";\n\n            function _eglQuerySurface(display, surface, attribute, value) {\n                display >>>= 0;\n                surface >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (surface != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12376:\n                        return 1;\n                    case 12375:\n                        HEAP32[value >>> 2 >>> 0] = Module[\"canvas\"].width;\n                        return 1;\n                    case 12374:\n                        HEAP32[value >>> 2 >>> 0] = Module[\"canvas\"].height;\n                        return 1;\n                    case 12432:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12433:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12434:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12422:\n                        HEAP32[value >>> 2 >>> 0] = 12420;\n                        return 1;\n                    case 12441:\n                        HEAP32[value >>> 2 >>> 0] = 12442;\n                        return 1;\n                    case 12435:\n                        HEAP32[value >>> 2 >>> 0] = 12437;\n                        return 1;\n                    case 12416:\n                    case 12417:\n                    case 12418:\n                    case 12419:\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglQuerySurface.sig = \"ippip\";\n\n            function _eglQueryContext(display, context, attribute, value) {\n                display >>>= 0;\n                context >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12439:\n                        HEAP32[value >>> 2 >>> 0] = 12448;\n                        return 1;\n                    case 12440:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.majorVersion + 1;\n                        return 1;\n                    case 12422:\n                        HEAP32[value >>> 2 >>> 0] = 12420;\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglQueryContext.sig = \"ippip\";\n            var _eglGetError = () => EGL.errorCode;\n            _eglGetError.sig = \"i\";\n\n            function _eglQueryString(display, name) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                if (EGL.stringCache[name]) return EGL.stringCache[name];\n                var ret;\n                switch (name) {\n                    case 12371:\n                        ret = stringToNewUTF8(\"Emscripten\");\n                        break;\n                    case 12372:\n                        ret = stringToNewUTF8(\"1.4 Emscripten EGL\");\n                        break;\n                    case 12373:\n                        ret = stringToNewUTF8(\"\");\n                        break;\n                    case 12429:\n                        ret = stringToNewUTF8(\"OpenGL_ES\");\n                        break;\n                    default:\n                        EGL.setErrorCode(12300);\n                        return 0\n                }\n                EGL.stringCache[name] = ret;\n                return ret\n            }\n            _eglQueryString.sig = \"ppi\";\n            var _eglBindAPI = api => {\n                if (api == 12448) {\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n                EGL.setErrorCode(12300);\n                return 0\n            };\n            _eglBindAPI.sig = \"ii\";\n            var _eglQueryAPI = () => {\n                EGL.setErrorCode(12288);\n                return 12448\n            };\n            _eglQueryAPI.sig = \"i\";\n            var _eglWaitClient = () => {\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglWaitClient.sig = \"i\";\n            var _eglWaitNative = nativeEngineId => {\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglWaitNative.sig = \"ii\";\n            var _eglWaitGL = _eglWaitClient;\n            _eglWaitGL.sig = \"i\";\n\n            function _eglSwapInterval(display, interval) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (interval == 0) _emscripten_set_main_loop_timing(0, 0);\n                else _emscripten_set_main_loop_timing(1, interval);\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglSwapInterval.sig = \"ipi\";\n\n            function _eglMakeCurrent(display, draw, read, context) {\n                display >>>= 0;\n                draw >>>= 0;\n                read >>>= 0;\n                context >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 0 && context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                if (read != 0 && read != 62006 || draw != 0 && draw != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 0\n                }\n                GL.makeContextCurrent(context ? EGL.context : null);\n                EGL.currentContext = context;\n                EGL.currentDrawSurface = draw;\n                EGL.currentReadSurface = read;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglMakeCurrent.sig = \"ipppp\";\n\n            function _eglGetCurrentContext() {\n                return EGL.currentContext\n            }\n            _eglGetCurrentContext.sig = \"p\";\n\n            function _eglGetCurrentSurface(readdraw) {\n                if (readdraw == 12378) {\n                    return EGL.currentReadSurface\n                } else if (readdraw == 12377) {\n                    return EGL.currentDrawSurface\n                } else {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n            }\n            _eglGetCurrentSurface.sig = \"pi\";\n\n            function _eglGetCurrentDisplay() {\n                return EGL.currentContext ? 62e3 : 0\n            }\n            _eglGetCurrentDisplay.sig = \"p\";\n\n            function _eglSwapBuffers(dpy, surface) {\n                dpy >>>= 0;\n                surface >>>= 0;\n                if (!EGL.defaultDisplayInitialized) {\n                    EGL.setErrorCode(12289)\n                } else if (!Module.ctx) {\n                    EGL.setErrorCode(12290)\n                } else if (Module.ctx.isContextLost()) {\n                    EGL.setErrorCode(12302)\n                } else {\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n                return 0\n            }\n            _eglSwapBuffers.sig = \"ipp\";\n            var _eglReleaseThread = () => {\n                EGL.currentContext = 0;\n                EGL.currentReadSurface = 0;\n                EGL.currentDrawSurface = 0;\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglReleaseThread.sig = \"i\";\n\n            function _uuid_clear(uu) {\n                uu >>>= 0;\n                return zeroMemory(uu, 16)\n            }\n            _uuid_clear.sig = \"vp\";\n\n            function _uuid_compare(uu1, uu2) {\n                uu1 >>>= 0;\n                uu2 >>>= 0;\n                return _memcmp(uu1, uu2, 16)\n            }\n            _uuid_compare.sig = \"ipp\";\n\n            function _uuid_copy(dst, src) {\n                dst >>>= 0;\n                src >>>= 0;\n                return _memcpy(dst, src, 16)\n            }\n            _uuid_copy.sig = \"vpp\";\n\n            function _uuid_generate(out) {\n                out >>>= 0;\n                var uuid = null;\n                if (ENVIRONMENT_IS_NODE) {\n                    try {\n                        var rb = require(\"crypto\")[\"randomBytes\"];\n                        uuid = rb(16)\n                    } catch (e) {}\n                } else if (ENVIRONMENT_IS_WEB && typeof window.crypto != \"undefined\" && typeof window.crypto.getRandomValues != \"undefined\") {\n                    uuid = new Uint8Array(16);\n                    window.crypto.getRandomValues(uuid)\n                }\n                if (!uuid) {\n                    uuid = new Array(16);\n                    var d = (new Date).getTime();\n                    for (var i = 0; i < 16; i++) {\n                        var r = (d + Math.random() * 256) % 256 | 0;\n                        d = d / 256 | 0;\n                        uuid[i] = r\n                    }\n                }\n                uuid[6] = uuid[6] & 15 | 64;\n                uuid[8] = uuid[8] & 63 | 128;\n                writeArrayToMemory(uuid, out)\n            }\n            _uuid_generate.sig = \"vp\";\n\n            function _uuid_is_null(uu) {\n                uu >>>= 0;\n                for (var i = 0; i < 4; i++, uu = uu + 4 | 0) {\n                    var val = HEAP32[uu >>> 2 >>> 0];\n                    if (val) {\n                        return 0\n                    }\n                }\n                return 1\n            }\n            _uuid_is_null.sig = \"ip\";\n\n            function _uuid_parse(inp, uu) {\n                inp >>>= 0;\n                uu >>>= 0;\n                inp = UTF8ToString(inp);\n                if (inp.length === 36) {\n                    var i = 0;\n                    var uuid = new Array(16);\n                    inp.toLowerCase().replace(/[0-9a-f]{2}/g, function(byte) {\n                        if (i < 16) {\n                            uuid[i++] = parseInt(byte, 16)\n                        }\n                    });\n                    if (i < 16) {\n                        return -1\n                    }\n                    writeArrayToMemory(uuid, uu);\n                    return 0\n                }\n                return -1\n            }\n            _uuid_parse.sig = \"ipp\";\n\n            function _uuid_unparse(uu, out, upper) {\n                uu >>>= 0;\n                out >>>= 0;\n                var i = 0;\n                var uuid = \"xxxx-xx-xx-xx-xxxxxx\".replace(/[x]/g, function(c) {\n                    var r = upper ? HEAPU8[uu + i >>> 0].toString(16).toUpperCase() : HEAPU8[uu + i >>> 0].toString(16);\n                    r = r.length === 1 ? \"0\" + r : r;\n                    i++;\n                    return r\n                });\n                stringToUTF8(uuid, out, 37)\n            }\n            _uuid_unparse.sig = \"vpp\";\n\n            function _uuid_unparse_lower(uu, out) {\n                uu >>>= 0;\n                out >>>= 0;\n                _uuid_unparse(uu, out)\n            }\n            _uuid_unparse_lower.sig = \"vpp\";\n\n            function _uuid_unparse_upper(uu, out) {\n                uu >>>= 0;\n                out >>>= 0;\n                _uuid_unparse(uu, out, true)\n            }\n            _uuid_unparse_upper.sig = \"vpp\";\n\n            function _uuid_type(uu) {\n                uu >>>= 0;\n                return 4\n            }\n            _uuid_type.sig = \"ip\";\n\n            function _uuid_variant(uu) {\n                uu >>>= 0;\n                return 1\n            }\n            _uuid_variant.sig = \"ip\";\n            var GLEW = {\n                isLinaroFork: 1,\n                extensions: null,\n                error: {\n                    0: null,\n                    1: null,\n                    2: null,\n                    3: null,\n                    4: null,\n                    5: null,\n                    6: null,\n                    7: null,\n                    8: null\n                },\n                version: {\n                    1: null,\n                    2: null,\n                    3: null,\n                    4: null\n                },\n                errorStringConstantFromCode(error) {\n                    if (GLEW.isLinaroFork) {\n                        switch (error) {\n                            case 4:\n                                return \"OpenGL ES lib expected, found OpenGL lib\";\n                            case 5:\n                                return \"OpenGL lib expected, found OpenGL ES lib\";\n                            case 6:\n                                return \"Missing EGL version\";\n                            case 7:\n                                return \"EGL 1.1 and up are supported\";\n                            default:\n                                break\n                        }\n                    }\n                    switch (error) {\n                        case 0:\n                            return \"No error\";\n                        case 1:\n                            return \"Missing GL version\";\n                        case 2:\n                            return \"GL 1.1 and up are supported\";\n                        case 3:\n                            return \"GLX 1.2 and up are supported\";\n                        default:\n                            return null\n                    }\n                },\n                errorString(error) {\n                    if (!GLEW.error[error]) {\n                        var string = GLEW.errorStringConstantFromCode(error);\n                        if (!string) {\n                            string = \"Unknown error\";\n                            error = 8\n                        }\n                        GLEW.error[error] = stringToNewUTF8(string)\n                    }\n                    return GLEW.error[error]\n                },\n                versionStringConstantFromCode(name) {\n                    switch (name) {\n                        case 1:\n                            return \"1.10.0\";\n                        case 2:\n                            return \"1\";\n                        case 3:\n                            return \"10\";\n                        case 4:\n                            return \"0\";\n                        default:\n                            return null\n                    }\n                },\n                versionString(name) {\n                    if (!GLEW.version[name]) {\n                        var string = GLEW.versionStringConstantFromCode(name);\n                        if (!string) return 0;\n                        GLEW.version[name] = stringToNewUTF8(string)\n                    }\n                    return GLEW.version[name]\n                },\n                extensionIsSupported(name) {\n                    GLEW.extensions ||= webglGetExtensions();\n                    if (GLEW.extensions.includes(name)) return 1;\n                    return GLEW.extensions.includes(\"GL_\" + name)\n                }\n            };\n            var _glewInit = () => 0;\n            _glewInit.sig = \"i\";\n\n            function _glewIsSupported(name) {\n                name >>>= 0;\n                var exts = UTF8ToString(name).split(\" \");\n                for (var i = 0; i < exts.length; ++i) {\n                    if (!GLEW.extensionIsSupported(exts[i])) return 0\n                }\n                return 1\n            }\n            _glewIsSupported.sig = \"ip\";\n\n            function _glewGetExtension(name) {\n                name >>>= 0;\n                return GLEW.extensionIsSupported(UTF8ToString(name))\n            }\n            _glewGetExtension.sig = \"ip\";\n\n            function _glewGetErrorString(error) {\n                return GLEW.errorString(error)\n            }\n            _glewGetErrorString.sig = \"pi\";\n\n            function _glewGetString(name) {\n                return GLEW.versionString(name)\n            }\n            _glewGetString.sig = \"pi\";\n            var IDBStore = {\n                indexedDB() {\n                    if (typeof indexedDB != \"undefined\") return indexedDB;\n                    var ret = null;\n                    if (typeof window == \"object\") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n                    assert(ret, \"IDBStore used, but indexedDB not supported\");\n                    return ret\n                },\n                DB_VERSION: 22,\n                DB_STORE_NAME: \"FILE_DATA\",\n                dbs: {},\n                blobs: [0],\n                getDB(name, callback) {\n                    var db = IDBStore.dbs[name];\n                    if (db) {\n                        return callback(null, db)\n                    }\n                    var req;\n                    try {\n                        req = IDBStore.indexedDB().open(name, IDBStore.DB_VERSION)\n                    } catch (e) {\n                        return callback(e)\n                    }\n                    req.onupgradeneeded = e => {\n                        var db = e.target.result;\n                        var transaction = e.target.transaction;\n                        var fileStore;\n                        if (db.objectStoreNames.contains(IDBStore.DB_STORE_NAME)) {\n                            fileStore = transaction.objectStore(IDBStore.DB_STORE_NAME)\n                        } else {\n                            fileStore = db.createObjectStore(IDBStore.DB_STORE_NAME)\n                        }\n                    };\n                    req.onsuccess = () => {\n                        db = req.result;\n                        IDBStore.dbs[name] = db;\n                        callback(null, db)\n                    };\n                    req.onerror = function(event) {\n                        callback(event.target.error || \"unknown error\");\n                        event.preventDefault()\n                    }\n                },\n                getStore(dbName, type, callback) {\n                    IDBStore.getDB(dbName, (error, db) => {\n                        if (error) return callback(error);\n                        var transaction = db.transaction([IDBStore.DB_STORE_NAME], type);\n                        transaction.onerror = event => {\n                            callback(event.target.error || \"unknown error\");\n                            event.preventDefault()\n                        };\n                        var store = transaction.objectStore(IDBStore.DB_STORE_NAME);\n                        callback(null, store)\n                    })\n                },\n                getFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readonly\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.get(id);\n                        req.onsuccess = event => {\n                            var result = event.target.result;\n                            if (!result) {\n                                return callback(`file ${id} not found`)\n                            }\n                            return callback(null, result)\n                        };\n                        req.onerror = callback\n                    })\n                },\n                setFile(dbName, id, data, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.put(data, id);\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                },\n                deleteFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.delete(id);\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                },\n                existsFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readonly\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.count(id);\n                        req.onsuccess = event => callback(null, event.target.result > 0);\n                        req.onerror = callback\n                    })\n                },\n                clearStore(dbName, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.clear();\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                }\n            };\n            var _emscripten_idb_async_load = function(db, id, arg, onload, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                IDBStore.getFile(UTF8ToString(db), UTF8ToString(id), (error, byteArray) => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        getWasmTableEntry(onload)(arg, buffer, byteArray.length);\n                        _free(buffer)\n                    })\n                })\n            };\n            _emscripten_idb_async_load.sig = \"vppppp\";\n            var _emscripten_idb_async_store = function(db, id, ptr, num, arg, onstore, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                ptr >>>= 0;\n                arg >>>= 0;\n                onstore >>>= 0;\n                onerror >>>= 0;\n                IDBStore.setFile(UTF8ToString(db), UTF8ToString(id), new Uint8Array(HEAPU8.subarray(ptr >>> 0, ptr + num >>> 0)), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (onstore) getWasmTableEntry(onstore)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_store.sig = \"vpppippp\";\n            var _emscripten_idb_async_delete = function(db, id, arg, ondelete, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                ondelete >>>= 0;\n                onerror >>>= 0;\n                IDBStore.deleteFile(UTF8ToString(db), UTF8ToString(id), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (ondelete) getWasmTableEntry(ondelete)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_delete.sig = \"vppppp\";\n            var _emscripten_idb_async_exists = function(db, id, arg, oncheck, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                oncheck >>>= 0;\n                onerror >>>= 0;\n                IDBStore.existsFile(UTF8ToString(db), UTF8ToString(id), (error, exists) => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (oncheck) getWasmTableEntry(oncheck)(arg, exists)\n                    })\n                })\n            };\n            _emscripten_idb_async_exists.sig = \"vppppp\";\n            var _emscripten_idb_async_clear = function(db, arg, onclear, onerror) {\n                db >>>= 0;\n                arg >>>= 0;\n                onclear >>>= 0;\n                onerror >>>= 0;\n                IDBStore.clearStore(UTF8ToString(db), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (onclear) getWasmTableEntry(onclear)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_clear.sig = \"vpppp\";\n\n            function _emscripten_idb_load(db, id, pbuffer, pnum, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                pbuffer >>>= 0;\n                pnum >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_load, etc.\"\n            }\n            _emscripten_idb_load.sig = \"vppppp\";\n\n            function _emscripten_idb_store(db, id, ptr, num, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                ptr >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_store, etc.\"\n            }\n            _emscripten_idb_store.sig = \"vpppip\";\n\n            function _emscripten_idb_delete(db, id, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_delete, etc.\"\n            }\n            _emscripten_idb_delete.sig = \"vppp\";\n\n            function _emscripten_idb_exists(db, id, pexists, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                pexists >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_exists, etc.\"\n            }\n            _emscripten_idb_exists.sig = \"vpppp\";\n\n            function _emscripten_idb_clear(db, perror) {\n                db >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_clear, etc.\"\n            }\n            _emscripten_idb_clear.sig = \"vpp\";\n            var runAndAbortIfError = func => {\n                try {\n                    return func()\n                } catch (e) {\n                    abort(e)\n                }\n            };\n            var _emscripten_sleep = () => {\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep\"\n            };\n            _emscripten_sleep.sig = \"vi\";\n\n            function _emscripten_wget(url, file) {\n                url >>>= 0;\n                file >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_wget\"\n            }\n            Module[\"_emscripten_wget\"] = _emscripten_wget;\n            _emscripten_wget.sig = \"ipp\";\n\n            function _emscripten_scan_registers(func) {\n                func >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_scan_registers\"\n            }\n            _emscripten_scan_registers.sig = \"vp\";\n\n            function _emscripten_fiber_swap(oldFiber, newFiber) {\n                oldFiber >>>= 0;\n                newFiber >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_fiber_swap\"\n            }\n            _emscripten_fiber_swap.sig = \"vpp\";\n            var _SDL_GetTicks = () => Date.now() - SDL.startTime | 0;\n            _SDL_GetTicks.sig = \"i\";\n\n            function _SDL_LockSurface(surf) {\n                surf >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                surfData.locked++;\n                if (surfData.locked > 1) return 0;\n                if (!surfData.buffer) {\n                    surfData.buffer = _malloc(surfData.width * surfData.height * 4);\n                    HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer\n                }\n                HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer;\n                if (surf == SDL.screen && Module.screenIsReadOnly && surfData.image) return 0;\n                if (SDL.defaults.discardOnLock) {\n                    if (!surfData.image) {\n                        surfData.image = surfData.ctx.createImageData(surfData.width, surfData.height)\n                    }\n                    if (!SDL.defaults.opaqueFrontBuffer) return\n                } else {\n                    surfData.image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height)\n                }\n                if (surf == SDL.screen && SDL.defaults.opaqueFrontBuffer) {\n                    var data = surfData.image.data;\n                    var num = data.length;\n                    for (var i = 0; i < num / 4; i++) {\n                        data[i * 4 + 3] = 255\n                    }\n                }\n                if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {\n                    if (surfData.isFlagSet(2097152)) {\n                        throw \"CopyOnLock is not supported for SDL_LockSurface with SDL_HWPALETTE flag set\" + (new Error).stack\n                    } else {\n                        HEAPU8.set(surfData.image.data, surfData.buffer >>> 0)\n                    }\n                }\n                return 0\n            }\n            _SDL_LockSurface.sig = \"ip\";\n            var SDL = {\n                defaults: {\n                    width: 320,\n                    height: 200,\n                    copyOnLock: true,\n                    discardOnLock: false,\n                    opaqueFrontBuffer: true\n                },\n                version: null,\n                surfaces: {},\n                canvasPool: [],\n                events: [],\n                fonts: [null],\n                audios: [null],\n                rwops: [null],\n                music: {\n                    audio: null,\n                    volume: 1\n                },\n                mixerFrequency: 22050,\n                mixerFormat: 32784,\n                mixerNumChannels: 2,\n                mixerChunkSize: 1024,\n                channelMinimumNumber: 0,\n                GL: false,\n                glAttributes: {\n                    0: 3,\n                    1: 3,\n                    2: 2,\n                    3: 0,\n                    4: 0,\n                    5: 1,\n                    6: 16,\n                    7: 0,\n                    8: 0,\n                    9: 0,\n                    10: 0,\n                    11: 0,\n                    12: 0,\n                    13: 0,\n                    14: 0,\n                    15: 1,\n                    16: 0,\n                    17: 0,\n                    18: 0\n                },\n                keyboardState: null,\n                keyboardMap: {},\n                canRequestFullscreen: false,\n                isRequestingFullscreen: false,\n                textInput: false,\n                unicode: false,\n                ttfContext: null,\n                audio: null,\n                startTime: null,\n                initFlags: 0,\n                buttonState: 0,\n                modState: 0,\n                DOMButtons: [0, 0, 0],\n                DOMEventToSDLEvent: {},\n                TOUCH_DEFAULT_ID: 0,\n                eventHandler: null,\n                eventHandlerContext: null,\n                eventHandlerTemp: 0,\n                keyCodes: {\n                    16: 1249,\n                    17: 1248,\n                    18: 1250,\n                    20: 1081,\n                    33: 1099,\n                    34: 1102,\n                    35: 1101,\n                    36: 1098,\n                    37: 1104,\n                    38: 1106,\n                    39: 1103,\n                    40: 1105,\n                    44: 316,\n                    45: 1097,\n                    46: 127,\n                    91: 1251,\n                    93: 1125,\n                    96: 1122,\n                    97: 1113,\n                    98: 1114,\n                    99: 1115,\n                    100: 1116,\n                    101: 1117,\n                    102: 1118,\n                    103: 1119,\n                    104: 1120,\n                    105: 1121,\n                    106: 1109,\n                    107: 1111,\n                    109: 1110,\n                    110: 1123,\n                    111: 1108,\n                    112: 1082,\n                    113: 1083,\n                    114: 1084,\n                    115: 1085,\n                    116: 1086,\n                    117: 1087,\n                    118: 1088,\n                    119: 1089,\n                    120: 1090,\n                    121: 1091,\n                    122: 1092,\n                    123: 1093,\n                    124: 1128,\n                    125: 1129,\n                    126: 1130,\n                    127: 1131,\n                    128: 1132,\n                    129: 1133,\n                    130: 1134,\n                    131: 1135,\n                    132: 1136,\n                    133: 1137,\n                    134: 1138,\n                    135: 1139,\n                    144: 1107,\n                    160: 94,\n                    161: 33,\n                    162: 34,\n                    163: 35,\n                    164: 36,\n                    165: 37,\n                    166: 38,\n                    167: 95,\n                    168: 40,\n                    169: 41,\n                    170: 42,\n                    171: 43,\n                    172: 124,\n                    173: 45,\n                    174: 123,\n                    175: 125,\n                    176: 126,\n                    181: 127,\n                    182: 129,\n                    183: 128,\n                    188: 44,\n                    190: 46,\n                    191: 47,\n                    192: 96,\n                    219: 91,\n                    220: 92,\n                    221: 93,\n                    222: 39,\n                    224: 1251\n                },\n                scanCodes: {\n                    8: 42,\n                    9: 43,\n                    13: 40,\n                    27: 41,\n                    32: 44,\n                    35: 204,\n                    39: 53,\n                    44: 54,\n                    46: 55,\n                    47: 56,\n                    48: 39,\n                    49: 30,\n                    50: 31,\n                    51: 32,\n                    52: 33,\n                    53: 34,\n                    54: 35,\n                    55: 36,\n                    56: 37,\n                    57: 38,\n                    58: 203,\n                    59: 51,\n                    61: 46,\n                    91: 47,\n                    92: 49,\n                    93: 48,\n                    96: 52,\n                    97: 4,\n                    98: 5,\n                    99: 6,\n                    100: 7,\n                    101: 8,\n                    102: 9,\n                    103: 10,\n                    104: 11,\n                    105: 12,\n                    106: 13,\n                    107: 14,\n                    108: 15,\n                    109: 16,\n                    110: 17,\n                    111: 18,\n                    112: 19,\n                    113: 20,\n                    114: 21,\n                    115: 22,\n                    116: 23,\n                    117: 24,\n                    118: 25,\n                    119: 26,\n                    120: 27,\n                    121: 28,\n                    122: 29,\n                    127: 76,\n                    305: 224,\n                    308: 226,\n                    316: 70\n                },\n                loadRect(rect) {\n                    return {\n                        x: HEAP32[rect >>> 2 >>> 0],\n                        y: HEAP32[rect + 4 >>> 2 >>> 0],\n                        w: HEAP32[rect + 8 >>> 2 >>> 0],\n                        h: HEAP32[rect + 12 >>> 2 >>> 0]\n                    }\n                },\n                updateRect(rect, r) {\n                    HEAP32[rect >>> 2 >>> 0] = r.x;\n                    HEAP32[rect + 4 >>> 2 >>> 0] = r.y;\n                    HEAP32[rect + 8 >>> 2 >>> 0] = r.w;\n                    HEAP32[rect + 12 >>> 2 >>> 0] = r.h\n                },\n                intersectionOfRects(first, second) {\n                    var leftX = Math.max(first.x, second.x);\n                    var leftY = Math.max(first.y, second.y);\n                    var rightX = Math.min(first.x + first.w, second.x + second.w);\n                    var rightY = Math.min(first.y + first.h, second.y + second.h);\n                    return {\n                        x: leftX,\n                        y: leftY,\n                        w: Math.max(leftX, rightX) - leftX,\n                        h: Math.max(leftY, rightY) - leftY\n                    }\n                },\n                checkPixelFormat(fmt) {},\n                loadColorToCSSRGB(color) {\n                    var rgba = HEAP32[color >>> 2 >>> 0];\n                    return \"rgb(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \")\"\n                },\n                loadColorToCSSRGBA(color) {\n                    var rgba = HEAP32[color >>> 2 >>> 0];\n                    return \"rgba(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \",\" + (rgba >> 24 & 255) / 255 + \")\"\n                },\n                translateColorToCSSRGBA: rgba => \"rgba(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \",\" + (rgba >>> 24) / 255 + \")\",\n                translateRGBAToCSSRGBA: (r, g, b, a) => \"rgba(\" + (r & 255) + \",\" + (g & 255) + \",\" + (b & 255) + \",\" + (a & 255) / 255 + \")\",\n                translateRGBAToColor: (r, g, b, a) => r | g << 8 | b << 16 | a << 24,\n                makeSurface(width, height, flags, usePageCanvas, source, rmask, gmask, bmask, amask) {\n                    var is_SDL_HWSURFACE = flags & 1;\n                    var is_SDL_HWPALETTE = flags & 2097152;\n                    var is_SDL_OPENGL = flags & 67108864;\n                    var surf = _malloc(60);\n                    var pixelFormat = _malloc(44);\n                    var bpp = is_SDL_HWPALETTE ? 1 : 4;\n                    var buffer = 0;\n                    if (!is_SDL_HWSURFACE && !is_SDL_OPENGL) {\n                        buffer = _malloc(width * height * 4)\n                    }\n                    HEAP32[surf >>> 2 >>> 0] = flags;\n                    HEAPU32[surf + 4 >>> 2 >>> 0] = pixelFormat;\n                    HEAP32[surf + 8 >>> 2 >>> 0] = width;\n                    HEAP32[surf + 12 >>> 2 >>> 0] = height;\n                    HEAP32[surf + 16 >>> 2 >>> 0] = width * bpp;\n                    HEAPU32[surf + 20 >>> 2 >>> 0] = buffer;\n                    HEAP32[surf + 36 >>> 2 >>> 0] = 0;\n                    HEAP32[surf + 40 >>> 2 >>> 0] = 0;\n                    HEAP32[surf + 44 >>> 2 >>> 0] = Module[\"canvas\"].width;\n                    HEAP32[surf + 48 >>> 2 >>> 0] = Module[\"canvas\"].height;\n                    HEAP32[surf + 56 >>> 2 >>> 0] = 1;\n                    HEAP32[pixelFormat >>> 2 >>> 0] = -2042224636;\n                    HEAP32[pixelFormat + 4 >>> 2 >>> 0] = 0;\n                    HEAP8[pixelFormat + 8 >>> 0] = bpp * 8;\n                    HEAP8[pixelFormat + 9 >>> 0] = bpp;\n                    HEAP32[pixelFormat + 12 >>> 2 >>> 0] = rmask || 255;\n                    HEAP32[pixelFormat + 16 >>> 2 >>> 0] = gmask || 65280;\n                    HEAP32[pixelFormat + 20 >>> 2 >>> 0] = bmask || 16711680;\n                    HEAP32[pixelFormat + 24 >>> 2 >>> 0] = amask || 4278190080;\n                    SDL.GL = SDL.GL || is_SDL_OPENGL;\n                    var canvas;\n                    if (!usePageCanvas) {\n                        if (SDL.canvasPool.length > 0) {\n                            canvas = SDL.canvasPool.pop()\n                        } else {\n                            canvas = document.createElement(\"canvas\")\n                        }\n                        canvas.width = width;\n                        canvas.height = height\n                    } else {\n                        canvas = Module[\"canvas\"]\n                    }\n                    var webGLContextAttributes = {\n                        antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n                        depth: SDL.glAttributes[6] > 0,\n                        stencil: SDL.glAttributes[7] > 0,\n                        alpha: SDL.glAttributes[3] > 0\n                    };\n                    var ctx = Browser.createContext(canvas, is_SDL_OPENGL, usePageCanvas, webGLContextAttributes);\n                    SDL.surfaces[surf] = {\n                        width,\n                        height,\n                        canvas,\n                        ctx,\n                        surf,\n                        buffer,\n                        pixelFormat,\n                        alpha: 255,\n                        flags,\n                        locked: 0,\n                        usePageCanvas,\n                        source,\n                        isFlagSet: flag => flags & flag\n                    };\n                    return surf\n                },\n                copyIndexedColorData(surfData, rX, rY, rW, rH) {\n                    if (!surfData.colors) {\n                        return\n                    }\n                    var fullWidth = Module[\"canvas\"].width;\n                    var fullHeight = Module[\"canvas\"].height;\n                    var startX = rX || 0;\n                    var startY = rY || 0;\n                    var endX = (rW || fullWidth - startX) + startX;\n                    var endY = (rH || fullHeight - startY) + startY;\n                    var buffer = surfData.buffer;\n                    if (!surfData.image.data32) {\n                        surfData.image.data32 = new Uint32Array(surfData.image.data.buffer)\n                    }\n                    var data32 = surfData.image.data32;\n                    var colors32 = surfData.colors32;\n                    for (var y = startY; y < endY; ++y) {\n                        var base = y * fullWidth;\n                        for (var x = startX; x < endX; ++x) {\n                            data32[base + x] = colors32[HEAPU8[buffer + (base + x) >>> 0]]\n                        }\n                    }\n                },\n                freeSurface(surf) {\n                    var refcountPointer = surf + 56;\n                    var refcount = HEAP32[refcountPointer >>> 2 >>> 0];\n                    if (refcount > 1) {\n                        HEAP32[refcountPointer >>> 2 >>> 0] = refcount - 1;\n                        return\n                    }\n                    var info = SDL.surfaces[surf];\n                    if (!info.usePageCanvas && info.canvas) SDL.canvasPool.push(info.canvas);\n                    if (info.buffer) _free(info.buffer);\n                    _free(info.pixelFormat);\n                    _free(surf);\n                    SDL.surfaces[surf] = null;\n                    if (surf === SDL.screen) {\n                        SDL.screen = null\n                    }\n                },\n                blitSurface(src, srcrect, dst, dstrect, scale) {\n                    var srcData = SDL.surfaces[src];\n                    var dstData = SDL.surfaces[dst];\n                    var sr, dr;\n                    if (srcrect) {\n                        sr = SDL.loadRect(srcrect)\n                    } else {\n                        sr = {\n                            x: 0,\n                            y: 0,\n                            w: srcData.width,\n                            h: srcData.height\n                        }\n                    }\n                    if (dstrect) {\n                        dr = SDL.loadRect(dstrect)\n                    } else {\n                        dr = {\n                            x: 0,\n                            y: 0,\n                            w: srcData.width,\n                            h: srcData.height\n                        }\n                    }\n                    if (dstData.clipRect) {\n                        var widthScale = !scale || sr.w === 0 ? 1 : sr.w / dr.w;\n                        var heightScale = !scale || sr.h === 0 ? 1 : sr.h / dr.h;\n                        dr = SDL.intersectionOfRects(dstData.clipRect, dr);\n                        sr.w = dr.w * widthScale;\n                        sr.h = dr.h * heightScale;\n                        if (dstrect) {\n                            SDL.updateRect(dstrect, dr)\n                        }\n                    }\n                    var blitw, blith;\n                    if (scale) {\n                        blitw = dr.w;\n                        blith = dr.h\n                    } else {\n                        blitw = sr.w;\n                        blith = sr.h\n                    }\n                    if (sr.w === 0 || sr.h === 0 || blitw === 0 || blith === 0) {\n                        return 0\n                    }\n                    var oldAlpha = dstData.ctx.globalAlpha;\n                    dstData.ctx.globalAlpha = srcData.alpha / 255;\n                    dstData.ctx.drawImage(srcData.canvas, sr.x, sr.y, sr.w, sr.h, dr.x, dr.y, blitw, blith);\n                    dstData.ctx.globalAlpha = oldAlpha;\n                    if (dst != SDL.screen) {\n                        warnOnce(\"WARNING: copying canvas data to memory for compatibility\");\n                        _SDL_LockSurface(dst);\n                        dstData.locked--\n                    }\n                    return 0\n                },\n                downFingers: {},\n                savedKeydown: null,\n                receiveEvent(event) {\n                    function unpressAllPressedKeys() {\n                        for (var code in SDL.keyboardMap) {\n                            SDL.events.push({\n                                type: \"keyup\",\n                                keyCode: SDL.keyboardMap[code]\n                            })\n                        }\n                    }\n                    switch (event.type) {\n                        case \"touchstart\":\n                        case \"touchmove\": {\n                            event.preventDefault();\n                            var touches = [];\n                            if (event.type === \"touchstart\") {\n                                for (var i = 0; i < event.touches.length; i++) {\n                                    var touch = event.touches[i];\n                                    if (SDL.downFingers[touch.identifier] != true) {\n                                        SDL.downFingers[touch.identifier] = true;\n                                        touches.push(touch)\n                                    }\n                                }\n                            } else {\n                                touches = event.touches\n                            }\n                            var firstTouch = touches[0];\n                            if (firstTouch) {\n                                if (event.type == \"touchstart\") {\n                                    SDL.DOMButtons[0] = 1\n                                }\n                                var mouseEventType;\n                                switch (event.type) {\n                                    case \"touchstart\":\n                                        mouseEventType = \"mousedown\";\n                                        break;\n                                    case \"touchmove\":\n                                        mouseEventType = \"mousemove\";\n                                        break\n                                }\n                                var mouseEvent = {\n                                    type: mouseEventType,\n                                    button: 0,\n                                    pageX: firstTouch.clientX,\n                                    pageY: firstTouch.clientY\n                                };\n                                SDL.events.push(mouseEvent)\n                            }\n                            for (var i = 0; i < touches.length; i++) {\n                                var touch = touches[i];\n                                SDL.events.push({\n                                    type: event.type,\n                                    touch\n                                })\n                            }\n                            break\n                        }\n                        case \"touchend\": {\n                            event.preventDefault();\n                            for (var i = 0; i < event.changedTouches.length; i++) {\n                                var touch = event.changedTouches[i];\n                                if (SDL.downFingers[touch.identifier] === true) {\n                                    delete SDL.downFingers[touch.identifier]\n                                }\n                            }\n                            var mouseEvent = {\n                                type: \"mouseup\",\n                                button: 0,\n                                pageX: event.changedTouches[0].clientX,\n                                pageY: event.changedTouches[0].clientY\n                            };\n                            SDL.DOMButtons[0] = 0;\n                            SDL.events.push(mouseEvent);\n                            for (var i = 0; i < event.changedTouches.length; i++) {\n                                var touch = event.changedTouches[i];\n                                SDL.events.push({\n                                    type: \"touchend\",\n                                    touch\n                                })\n                            }\n                            break\n                        }\n                        case \"DOMMouseScroll\":\n                        case \"mousewheel\":\n                        case \"wheel\":\n                            var delta = -Browser.getMouseWheelDelta(event);\n                            delta = delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n                            var button = delta > 0 ? 3 : 4;\n                            SDL.events.push({\n                                type: \"mousedown\",\n                                button,\n                                pageX: event.pageX,\n                                pageY: event.pageY\n                            });\n                            SDL.events.push({\n                                type: \"mouseup\",\n                                button,\n                                pageX: event.pageX,\n                                pageY: event.pageY\n                            });\n                            SDL.events.push({\n                                type: \"wheel\",\n                                deltaX: 0,\n                                deltaY: delta\n                            });\n                            event.preventDefault();\n                            break;\n                        case \"mousemove\":\n                            if (SDL.DOMButtons[0] === 1) {\n                                SDL.events.push({\n                                    type: \"touchmove\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                })\n                            }\n                            if (Browser.pointerLock) {\n                                if (\"mozMovementX\" in event) {\n                                    event[\"movementX\"] = event[\"mozMovementX\"];\n                                    event[\"movementY\"] = event[\"mozMovementY\"]\n                                }\n                                if (event[\"movementX\"] == 0 && event[\"movementY\"] == 0) {\n                                    event.preventDefault();\n                                    return\n                                }\n                            }\n                        case \"keydown\":\n                        case \"keyup\":\n                        case \"keypress\":\n                        case \"mousedown\":\n                        case \"mouseup\":\n                            if (event.type !== \"keydown\" || !SDL.unicode && !SDL.textInput || (event.keyCode === 8 || event.keyCode === 9)) {\n                                event.preventDefault()\n                            }\n                            if (event.type == \"mousedown\") {\n                                SDL.DOMButtons[event.button] = 1;\n                                SDL.events.push({\n                                    type: \"touchstart\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                })\n                            } else if (event.type == \"mouseup\") {\n                                if (!SDL.DOMButtons[event.button]) {\n                                    return\n                                }\n                                SDL.events.push({\n                                    type: \"touchend\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                });\n                                SDL.DOMButtons[event.button] = 0\n                            }\n                            if (event.type === \"keydown\" || event.type === \"mousedown\") {\n                                SDL.canRequestFullscreen = true\n                            } else if (event.type === \"keyup\" || event.type === \"mouseup\") {\n                                if (SDL.isRequestingFullscreen) {\n                                    Module[\"requestFullscreen\"](true, true);\n                                    SDL.isRequestingFullscreen = false\n                                }\n                                SDL.canRequestFullscreen = false\n                            }\n                            if (event.type === \"keypress\" && SDL.savedKeydown) {\n                                SDL.savedKeydown.keypressCharCode = event.charCode;\n                                SDL.savedKeydown = null\n                            } else if (event.type === \"keydown\") {\n                                SDL.savedKeydown = event\n                            }\n                            if (event.type !== \"keypress\" || SDL.textInput) {\n                                SDL.events.push(event)\n                            }\n                            break;\n                        case \"mouseout\":\n                            for (var i = 0; i < 3; i++) {\n                                if (SDL.DOMButtons[i]) {\n                                    SDL.events.push({\n                                        type: \"mouseup\",\n                                        button: i,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    });\n                                    SDL.DOMButtons[i] = 0\n                                }\n                            }\n                            event.preventDefault();\n                            break;\n                        case \"focus\":\n                            SDL.events.push(event);\n                            event.preventDefault();\n                            break;\n                        case \"blur\":\n                            SDL.events.push(event);\n                            unpressAllPressedKeys();\n                            event.preventDefault();\n                            break;\n                        case \"visibilitychange\":\n                            SDL.events.push({\n                                type: \"visibilitychange\",\n                                visible: !document.hidden\n                            });\n                            unpressAllPressedKeys();\n                            event.preventDefault();\n                            break;\n                        case \"unload\":\n                            if (MainLoop.runner) {\n                                SDL.events.push(event);\n                                MainLoop.runner()\n                            }\n                            return;\n                        case \"resize\":\n                            SDL.events.push(event);\n                            if (event.preventDefault) {\n                                event.preventDefault()\n                            }\n                            break\n                    }\n                    if (SDL.events.length >= 1e4) {\n                        err(\"SDL event queue full, dropping events\");\n                        SDL.events = SDL.events.slice(0, 1e4)\n                    }\n                    SDL.flushEventsToHandler();\n                    return\n                },\n                lookupKeyCodeForEvent(event) {\n                    var code = event.keyCode;\n                    if (code >= 65 && code <= 90) {\n                        code += 32\n                    } else {\n                        code = SDL.keyCodes[event.keyCode] || event.keyCode;\n                        if (event.location === 2 && code >= (224 | 1 << 10) && code <= (227 | 1 << 10)) {\n                            code += 4\n                        }\n                    }\n                    return code\n                },\n                handleEvent(event) {\n                    if (event.handled) return;\n                    event.handled = true;\n                    switch (event.type) {\n                        case \"touchstart\":\n                        case \"touchend\":\n                        case \"touchmove\": {\n                            Browser.calculateMouseEvent(event);\n                            break\n                        }\n                        case \"keydown\":\n                        case \"keyup\": {\n                            var down = event.type === \"keydown\";\n                            var code = SDL.lookupKeyCodeForEvent(event);\n                            HEAP8[SDL.keyboardState + code >>> 0] = down;\n                            SDL.modState = (HEAP8[SDL.keyboardState + 1248 >>> 0] ? 64 : 0) | (HEAP8[SDL.keyboardState + 1249 >>> 0] ? 1 : 0) | (HEAP8[SDL.keyboardState + 1250 >>> 0] ? 256 : 0) | (HEAP8[SDL.keyboardState + 1252 >>> 0] ? 128 : 0) | (HEAP8[SDL.keyboardState + 1253 >>> 0] ? 2 : 0) | (HEAP8[SDL.keyboardState + 1254 >>> 0] ? 512 : 0);\n                            if (down) {\n                                SDL.keyboardMap[code] = event.keyCode\n                            } else {\n                                delete SDL.keyboardMap[code]\n                            }\n                            break\n                        }\n                        case \"mousedown\":\n                        case \"mouseup\":\n                            if (event.type == \"mousedown\") {\n                                SDL.buttonState |= 1 << event.button\n                            } else if (event.type == \"mouseup\") {\n                                SDL.buttonState &= ~(1 << event.button)\n                            }\n                        case \"mousemove\": {\n                            Browser.calculateMouseEvent(event);\n                            break\n                        }\n                    }\n                },\n                flushEventsToHandler() {\n                    if (!SDL.eventHandler) return;\n                    while (SDL.pollEvent(SDL.eventHandlerTemp)) {\n                        getWasmTableEntry(SDL.eventHandler)(SDL.eventHandlerContext, SDL.eventHandlerTemp)\n                    }\n                },\n                pollEvent(ptr) {\n                    if (SDL.initFlags & 512 && SDL.joystickEventState) {\n                        SDL.queryJoysticks()\n                    }\n                    if (ptr) {\n                        while (SDL.events.length > 0) {\n                            if (SDL.makeCEvent(SDL.events.shift(), ptr) !== false) return 1\n                        }\n                        return 0\n                    }\n                    return SDL.events.length > 0\n                },\n                makeCEvent(event, ptr) {\n                    if (typeof event == \"number\") {\n                        _memcpy(ptr, event, 28);\n                        _free(event);\n                        return\n                    }\n                    SDL.handleEvent(event);\n                    switch (event.type) {\n                        case \"keydown\":\n                        case \"keyup\": {\n                            var down = event.type === \"keydown\";\n                            var key = SDL.lookupKeyCodeForEvent(event);\n                            var scan;\n                            if (key >= 1024) {\n                                scan = key - 1024\n                            } else {\n                                scan = SDL.scanCodes[key] || key\n                            }\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 8 >>> 0] = down ? 1 : 0;\n                            HEAP8[ptr + 9 >>> 0] = 0;\n                            HEAP32[ptr + 12 >>> 2 >>> 0] = scan;\n                            HEAP32[ptr + 16 >>> 2 >>> 0] = key;\n                            HEAP16[ptr + 20 >>> 1 >>> 0] = SDL.modState;\n                            HEAP32[ptr + 24 >>> 2 >>> 0] = event.keypressCharCode || key;\n                            break\n                        }\n                        case \"keypress\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            var cStr = intArrayFromString(String.fromCharCode(event.charCode));\n                            for (var i = 0; i < cStr.length; ++i) {\n                                HEAP8[ptr + (8 + i) >>> 0] = cStr[i]\n                            }\n                            break\n                        }\n                        case \"mousedown\":\n                        case \"mouseup\":\n                        case \"mousemove\": {\n                            if (event.type != \"mousemove\") {\n                                var down = event.type === \"mousedown\";\n                                HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                                HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 8 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 12 >>> 2 >>> 0] = 0;\n                                HEAP8[ptr + 16 >>> 0] = event.button + 1;\n                                HEAP8[ptr + 17 >>> 0] = down ? 1 : 0;\n                                HEAP32[ptr + 20 >>> 2 >>> 0] = Browser.mouseX;\n                                HEAP32[ptr + 24 >>> 2 >>> 0] = Browser.mouseY\n                            } else {\n                                HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                                HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 8 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 12 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 16 >>> 2 >>> 0] = SDL.buttonState;\n                                HEAP32[ptr + 20 >>> 2 >>> 0] = Browser.mouseX;\n                                HEAP32[ptr + 24 >>> 2 >>> 0] = Browser.mouseY;\n                                HEAP32[ptr + 28 >>> 2 >>> 0] = Browser.mouseMovementX;\n                                HEAP32[ptr + 32 >>> 2 >>> 0] = Browser.mouseMovementY\n                            }\n                            break\n                        }\n                        case \"wheel\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 16 >>> 2 >>> 0] = event.deltaX;\n                            HEAP32[ptr + 20 >>> 2 >>> 0] = event.deltaY;\n                            break\n                        }\n                        case \"touchstart\":\n                        case \"touchend\":\n                        case \"touchmove\": {\n                            var touch = event.touch;\n                            if (!Browser.touches[touch.identifier]) break;\n                            var w = Module[\"canvas\"].width;\n                            var h = Module[\"canvas\"].height;\n                            var x = Browser.touches[touch.identifier].x / w;\n                            var y = Browser.touches[touch.identifier].y / h;\n                            var lx = Browser.lastTouches[touch.identifier].x / w;\n                            var ly = Browser.lastTouches[touch.identifier].y / h;\n                            var dx = x - lx;\n                            var dy = y - ly;\n                            if (touch[\"deviceID\"] === undefined) touch.deviceID = SDL.TOUCH_DEFAULT_ID;\n                            if (dx === 0 && dy === 0 && event.type === \"touchmove\") return false;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = _SDL_GetTicks();\n                            tempI64 = [touch.deviceID >>> 0, (tempDouble = touch.deviceID, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[ptr + 12 >>> 2 >>> 0] = tempI64[1];\n                            tempI64 = [touch.identifier >>> 0, (tempDouble = touch.identifier, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr + 16 >>> 2 >>> 0] = tempI64[0], HEAP32[ptr + 20 >>> 2 >>> 0] = tempI64[1];\n                            HEAPF32[ptr + 24 >>> 2 >>> 0] = x;\n                            HEAPF32[ptr + 28 >>> 2 >>> 0] = y;\n                            HEAPF32[ptr + 32 >>> 2 >>> 0] = dx;\n                            HEAPF32[ptr + 36 >>> 2 >>> 0] = dy;\n                            if (touch.force !== undefined) {\n                                HEAPF32[ptr + 40 >>> 2 >>> 0] = touch.force\n                            } else {\n                                HEAPF32[ptr + 40 >>> 2 >>> 0] = event.type == \"touchend\" ? 0 : 1\n                            }\n                            break\n                        }\n                        case \"unload\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            break\n                        }\n                        case \"resize\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = event.w;\n                            HEAP32[ptr + 8 >>> 2 >>> 0] = event.h;\n                            break\n                        }\n                        case \"joystick_button_up\":\n                        case \"joystick_button_down\": {\n                            var state = event.type === \"joystick_button_up\" ? 0 : 1;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 4 >>> 0] = event.index;\n                            HEAP8[ptr + 5 >>> 0] = event.button;\n                            HEAP8[ptr + 6 >>> 0] = state;\n                            break\n                        }\n                        case \"joystick_axis_motion\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 4 >>> 0] = event.index;\n                            HEAP8[ptr + 5 >>> 0] = event.axis;\n                            HEAP32[ptr + 8 >>> 2 >>> 0] = SDL.joystickAxisValueConversion(event.value);\n                            break\n                        }\n                        case \"focus\": {\n                            var SDL_WINDOWEVENT_FOCUS_GAINED = 12;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = SDL_WINDOWEVENT_FOCUS_GAINED;\n                            break\n                        }\n                        case \"blur\": {\n                            var SDL_WINDOWEVENT_FOCUS_LOST = 13;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = SDL_WINDOWEVENT_FOCUS_LOST;\n                            break\n                        }\n                        case \"visibilitychange\": {\n                            var SDL_WINDOWEVENT_SHOWN = 1;\n                            var SDL_WINDOWEVENT_HIDDEN = 2;\n                            var visibilityEventID = event.visible ? SDL_WINDOWEVENT_SHOWN : SDL_WINDOWEVENT_HIDDEN;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = visibilityEventID;\n                            break\n                        }\n                        default:\n                            throw \"Unhandled SDL event: \" + event.type\n                    }\n                },\n                makeFontString(height, fontName) {\n                    if (fontName.charAt(0) != \"'\" && fontName.charAt(0) != '\"') {\n                        fontName = '\"' + fontName + '\"'\n                    }\n                    return height + \"px \" + fontName + \", serif\"\n                },\n                estimateTextWidth(fontData, text) {\n                    var h = fontData.size;\n                    var fontString = SDL.makeFontString(h, fontData.name);\n                    var tempCtx = SDL.ttfContext;\n                    tempCtx.font = fontString;\n                    var ret = tempCtx.measureText(text).width | 0;\n                    return ret\n                },\n                allocateChannels(num) {\n                    if (SDL.numChannels && SDL.numChannels >= num && num != 0) return;\n                    SDL.numChannels = num;\n                    SDL.channels = [];\n                    for (var i = 0; i < num; i++) {\n                        SDL.channels[i] = {\n                            audio: null,\n                            volume: 1\n                        }\n                    }\n                },\n                setGetVolume(info, volume) {\n                    if (!info) return 0;\n                    var ret = info.volume * 128;\n                    if (volume != -1) {\n                        info.volume = Math.min(Math.max(volume, 0), 128) / 128;\n                        if (info.audio) {\n                            try {\n                                info.audio.volume = info.volume;\n                                if (info.audio.webAudioGainNode) info.audio.webAudioGainNode[\"gain\"][\"value\"] = info.volume\n                            } catch (e) {\n                                err(`setGetVolume failed to set audio volume: ${e}`)\n                            }\n                        }\n                    }\n                    return ret\n                },\n                setPannerPosition(info, x, y, z) {\n                    if (!info) return;\n                    if (info.audio) {\n                        if (info.audio.webAudioPannerNode) {\n                            info.audio.webAudioPannerNode[\"setPosition\"](x, y, z)\n                        }\n                    }\n                },\n                playWebAudio(audio) {\n                    if (!audio) return;\n                    if (audio.webAudioNode) return;\n                    if (!SDL.webAudioAvailable()) return;\n                    try {\n                        var webAudio = audio.resource.webAudio;\n                        audio.paused = false;\n                        if (!webAudio.decodedBuffer) {\n                            if (webAudio.onDecodeComplete === undefined) abort(\"Cannot play back audio object that was not loaded\");\n                            webAudio.onDecodeComplete.push(() => {\n                                if (!audio.paused) SDL.playWebAudio(audio)\n                            });\n                            return\n                        }\n                        audio.webAudioNode = SDL.audioContext[\"createBufferSource\"]();\n                        audio.webAudioNode[\"buffer\"] = webAudio.decodedBuffer;\n                        audio.webAudioNode[\"loop\"] = audio.loop;\n                        audio.webAudioNode[\"onended\"] = audio[\"onended\"];\n                        audio.webAudioPannerNode = SDL.audioContext[\"createPanner\"]();\n                        audio.webAudioPannerNode[\"setPosition\"](0, 0, -.5);\n                        audio.webAudioPannerNode[\"panningModel\"] = \"equalpower\";\n                        audio.webAudioGainNode = SDL.audioContext[\"createGain\"]();\n                        audio.webAudioGainNode[\"gain\"][\"value\"] = audio.volume;\n                        audio.webAudioNode[\"connect\"](audio.webAudioPannerNode);\n                        audio.webAudioPannerNode[\"connect\"](audio.webAudioGainNode);\n                        audio.webAudioGainNode[\"connect\"](SDL.audioContext[\"destination\"]);\n                        audio.webAudioNode[\"start\"](0, audio.currentPosition);\n                        audio.startTime = SDL.audioContext[\"currentTime\"] - audio.currentPosition\n                    } catch (e) {\n                        err(`playWebAudio failed: ${e}`)\n                    }\n                },\n                pauseWebAudio(audio) {\n                    if (!audio) return;\n                    if (audio.webAudioNode) {\n                        try {\n                            audio.currentPosition = (SDL.audioContext[\"currentTime\"] - audio.startTime) % audio.resource.webAudio.decodedBuffer.duration;\n                            audio.webAudioNode[\"onended\"] = undefined;\n                            audio.webAudioNode.stop(0);\n                            audio.webAudioNode = undefined\n                        } catch (e) {\n                            err(`pauseWebAudio failed: ${e}`)\n                        }\n                    }\n                    audio.paused = true\n                },\n                openAudioContext() {\n                    if (!SDL.audioContext) {\n                        if (typeof AudioContext != \"undefined\") SDL.audioContext = new AudioContext;\n                        else if (typeof webkitAudioContext != \"undefined\") SDL.audioContext = new webkitAudioContext\n                    }\n                },\n                webAudioAvailable: () => !!SDL.audioContext,\n                fillWebAudioBufferFromHeap(heapPtr, sizeSamplesPerChannel, dstAudioBuffer) {\n                    var audio = SDL.audio;\n                    var numChannels = audio.channels;\n                    for (var c = 0; c < numChannels; ++c) {\n                        var channelData = dstAudioBuffer[\"getChannelData\"](c);\n                        if (channelData.length != sizeSamplesPerChannel) {\n                            throw \"Web Audio output buffer length mismatch! Destination size: \" + channelData.length + \" samples vs expected \" + sizeSamplesPerChannel + \" samples!\"\n                        }\n                        if (audio.format == 32784) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                channelData[j] = HEAP16[heapPtr + (j * numChannels + c) * 2 >>> 1 >>> 0] / 32768\n                            }\n                        } else if (audio.format == 8) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                var v = HEAP8[heapPtr + (j * numChannels + c) >>> 0];\n                                channelData[j] = (v >= 0 ? v - 128 : v + 128) / 128\n                            }\n                        } else if (audio.format == 33056) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                channelData[j] = HEAPF32[heapPtr + (j * numChannels + c) * 4 >>> 2 >>> 0]\n                            }\n                        } else {\n                            throw \"Invalid SDL audio format \" + audio.format + \"!\"\n                        }\n                    }\n                },\n                joystickEventState: 1,\n                lastJoystickState: {},\n                joystickNamePool: {},\n                recordJoystickState(joystick, state) {\n                    var buttons = new Array(state.buttons.length);\n                    for (var i = 0; i < state.buttons.length; i++) {\n                        buttons[i] = SDL.getJoystickButtonState(state.buttons[i])\n                    }\n                    SDL.lastJoystickState[joystick] = {\n                        buttons,\n                        axes: state.axes.slice(0),\n                        timestamp: state.timestamp,\n                        index: state.index,\n                        id: state.id\n                    }\n                },\n                getJoystickButtonState(button) {\n                    if (typeof button == \"object\") {\n                        return button[\"pressed\"]\n                    }\n                    return button > 0\n                },\n                queryJoysticks() {\n                    for (var joystick in SDL.lastJoystickState) {\n                        var state = SDL.getGamepad(joystick - 1);\n                        var prevState = SDL.lastJoystickState[joystick];\n                        if (typeof state == \"undefined\") return;\n                        if (state === null) return;\n                        if (typeof state.timestamp != \"number\" || state.timestamp != prevState.timestamp || !state.timestamp) {\n                            var i;\n                            for (i = 0; i < state.buttons.length; i++) {\n                                var buttonState = SDL.getJoystickButtonState(state.buttons[i]);\n                                if (buttonState !== prevState.buttons[i]) {\n                                    SDL.events.push({\n                                        type: buttonState ? \"joystick_button_down\" : \"joystick_button_up\",\n                                        joystick,\n                                        index: joystick - 1,\n                                        button: i\n                                    })\n                                }\n                            }\n                            for (i = 0; i < state.axes.length; i++) {\n                                if (state.axes[i] !== prevState.axes[i]) {\n                                    SDL.events.push({\n                                        type: \"joystick_axis_motion\",\n                                        joystick,\n                                        index: joystick - 1,\n                                        axis: i,\n                                        value: state.axes[i]\n                                    })\n                                }\n                            }\n                            SDL.recordJoystickState(joystick, state)\n                        }\n                    }\n                },\n                joystickAxisValueConversion(value) {\n                    value = Math.min(1, Math.max(value, -1));\n                    return Math.ceil((value + 1) * 32767.5 - 32768)\n                },\n                getGamepads() {\n                    var fcn = navigator.getGamepads || navigator.webkitGamepads || navigator.mozGamepads || navigator.gamepads || navigator.webkitGetGamepads;\n                    if (fcn !== undefined) {\n                        return fcn.apply(navigator)\n                    }\n                    return []\n                },\n                getGamepad(deviceIndex) {\n                    var gamepads = SDL.getGamepads();\n                    if (gamepads.length > deviceIndex && deviceIndex >= 0) {\n                        return gamepads[deviceIndex]\n                    }\n                    return null\n                }\n            };\n\n            function _SDL_Linked_Version() {\n                if (SDL.version === null) {\n                    SDL.version = _malloc(3);\n                    HEAP8[SDL.version >>> 0] = 1;\n                    HEAP8[SDL.version + 1 >>> 0] = 3;\n                    HEAP8[SDL.version + 2 >>> 0] = 0\n                }\n                return SDL.version\n            }\n            _SDL_Linked_Version.sig = \"p\";\n            var _SDL_Init = initFlags => {\n                SDL.startTime = Date.now();\n                SDL.initFlags = initFlags;\n                if (!Module[\"doNotCaptureKeyboard\"]) {\n                    var keyboardListeningElement = Module[\"keyboardListeningElement\"] || document;\n                    keyboardListeningElement.addEventListener(\"keydown\", SDL.receiveEvent);\n                    keyboardListeningElement.addEventListener(\"keyup\", SDL.receiveEvent);\n                    keyboardListeningElement.addEventListener(\"keypress\", SDL.receiveEvent);\n                    window.addEventListener(\"focus\", SDL.receiveEvent);\n                    window.addEventListener(\"blur\", SDL.receiveEvent);\n                    document.addEventListener(\"visibilitychange\", SDL.receiveEvent)\n                }\n                window.addEventListener(\"unload\", SDL.receiveEvent);\n                SDL.keyboardState = _calloc(65536, 1);\n                SDL.DOMEventToSDLEvent[\"keydown\"] = 768;\n                SDL.DOMEventToSDLEvent[\"keyup\"] = 769;\n                SDL.DOMEventToSDLEvent[\"keypress\"] = 771;\n                SDL.DOMEventToSDLEvent[\"mousedown\"] = 1025;\n                SDL.DOMEventToSDLEvent[\"mouseup\"] = 1026;\n                SDL.DOMEventToSDLEvent[\"mousemove\"] = 1024;\n                SDL.DOMEventToSDLEvent[\"wheel\"] = 1027;\n                SDL.DOMEventToSDLEvent[\"touchstart\"] = 1792;\n                SDL.DOMEventToSDLEvent[\"touchend\"] = 1793;\n                SDL.DOMEventToSDLEvent[\"touchmove\"] = 1794;\n                SDL.DOMEventToSDLEvent[\"unload\"] = 256;\n                SDL.DOMEventToSDLEvent[\"resize\"] = 28673;\n                SDL.DOMEventToSDLEvent[\"visibilitychange\"] = 512;\n                SDL.DOMEventToSDLEvent[\"focus\"] = 512;\n                SDL.DOMEventToSDLEvent[\"blur\"] = 512;\n                SDL.DOMEventToSDLEvent[\"joystick_axis_motion\"] = 1536;\n                SDL.DOMEventToSDLEvent[\"joystick_button_down\"] = 1539;\n                SDL.DOMEventToSDLEvent[\"joystick_button_up\"] = 1540;\n                return 0\n            };\n            _SDL_Init.sig = \"ii\";\n            var _SDL_WasInit = flags => {\n                if (SDL.startTime === null) {\n                    _SDL_Init(0)\n                }\n                return 1\n            };\n            _SDL_WasInit.sig = \"ii\";\n\n            function _SDL_GetVideoInfo() {\n                var ret = _calloc(20, 1);\n                HEAP32[ret + 12 >>> 2 >>> 0] = Module[\"canvas\"].width;\n                HEAP32[ret + 16 >>> 2 >>> 0] = Module[\"canvas\"].height;\n                return ret\n            }\n            _SDL_GetVideoInfo.sig = \"p\";\n\n            function _SDL_ListModes(format, flags) {\n                format >>>= 0;\n                return -1\n            }\n            _SDL_ListModes.sig = \"ppi\";\n            var _SDL_VideoModeOK = (width, height, depth, flags) => depth;\n            _SDL_VideoModeOK.sig = \"iiiii\";\n\n            function _SDL_VideoDriverName(buf, max_size) {\n                buf >>>= 0;\n                if (SDL.startTime === null) {\n                    return 0\n                }\n                var driverName = [101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 95, 115, 100, 108, 95, 100, 114, 105, 118, 101, 114];\n                var index = 0;\n                var size = driverName.length;\n                if (max_size <= size) {\n                    size = max_size - 1\n                }\n                while (index < size) {\n                    var value = driverName[index];\n                    HEAP8[buf + index >>> 0] = value;\n                    index++\n                }\n                HEAP8[buf + index >>> 0] = 0;\n                return buf\n            }\n            _SDL_VideoDriverName.sig = \"ppi\";\n            var _SDL_AudioDriverName = _SDL_VideoDriverName;\n            _SDL_AudioDriverName.sig = \"ppi\";\n            var _SDL_SetVideoMode = function(width, height, depth, flags) {\n                [\"touchstart\", \"touchend\", \"touchmove\", \"mousedown\", \"mouseup\", \"mousemove\", \"mousewheel\", \"wheel\", \"mouseout\", \"DOMMouseScroll\"].forEach(e => Module[\"canvas\"].addEventListener(e, SDL.receiveEvent, true));\n                var canvas = Module[\"canvas\"];\n                if (width == 0 && height == 0) {\n                    width = canvas.width;\n                    height = canvas.height\n                }\n                if (!SDL.addedResizeListener) {\n                    SDL.addedResizeListener = true;\n                    Browser.resizeListeners.push((w, h) => {\n                        if (!SDL.settingVideoMode) {\n                            SDL.receiveEvent({\n                                type: \"resize\",\n                                w,\n                                h\n                            })\n                        }\n                    })\n                }\n                SDL.settingVideoMode = true;\n                Browser.setCanvasSize(width, height);\n                SDL.settingVideoMode = false;\n                if (SDL.screen) {\n                    SDL.freeSurface(SDL.screen);\n                    assert(!SDL.screen)\n                }\n                if (SDL.GL) flags = flags | 67108864;\n                SDL.screen = SDL.makeSurface(width, height, flags, true, \"screen\");\n                return SDL.screen\n            };\n            _SDL_SetVideoMode.sig = \"piiii\";\n\n            function _SDL_GetVideoSurface() {\n                return SDL.screen\n            }\n            _SDL_GetVideoSurface.sig = \"p\";\n            var _SDL_AudioQuit = () => {\n                for (var i = 0; i < SDL.numChannels; ++i) {\n                    var chan = SDL.channels[i];\n                    if (chan.audio) {\n                        chan.audio.pause();\n                        chan.audio = undefined\n                    }\n                }\n                var audio = SDL.music.audio;\n                audio?.pause();\n                SDL.music.audio = undefined\n            };\n            _SDL_AudioQuit.sig = \"v\";\n            var _SDL_VideoQuit = () => out(\"SDL_VideoQuit called (and ignored)\");\n            _SDL_VideoQuit.sig = \"v\";\n            var _SDL_QuitSubSystem = flags => out(\"SDL_QuitSubSystem called (and ignored)\");\n            _SDL_QuitSubSystem.sig = \"vi\";\n            var _SDL_Quit = () => {\n                _SDL_AudioQuit();\n                out(\"SDL_Quit called (and ignored)\")\n            };\n            _SDL_Quit.sig = \"v\";\n\n            function _SDL_UnlockSurface(surf) {\n                surf >>>= 0;\n                assert(!SDL.GL);\n                var surfData = SDL.surfaces[surf];\n                if (!surfData.locked || --surfData.locked > 0) {\n                    return\n                }\n                if (surfData.isFlagSet(2097152)) {\n                    SDL.copyIndexedColorData(surfData)\n                } else if (!surfData.colors) {\n                    var data = surfData.image.data;\n                    var buffer = surfData.buffer;\n                    assert(buffer % 4 == 0, \"Invalid buffer offset: \" + buffer);\n                    var src = buffer >>> 2;\n                    var dst = 0;\n                    var isScreen = surf == SDL.screen;\n                    var num;\n                    if (typeof CanvasPixelArray != \"undefined\" && data instanceof CanvasPixelArray) {\n                        num = data.length;\n                        while (dst < num) {\n                            var val = HEAP32[src >>> 0];\n                            data[dst] = val & 255;\n                            data[dst + 1] = val >> 8 & 255;\n                            data[dst + 2] = val >> 16 & 255;\n                            data[dst + 3] = isScreen ? 255 : val >> 24 & 255;\n                            src++;\n                            dst += 4\n                        }\n                    } else {\n                        var data32 = new Uint32Array(data.buffer);\n                        if (isScreen && SDL.defaults.opaqueFrontBuffer) {\n                            num = data32.length;\n                            data32.set(HEAP32.subarray(src >>> 0, src + num >>> 0));\n                            var data8 = new Uint8Array(data.buffer);\n                            var i = 3;\n                            var j = i + 4 * num;\n                            if (num % 8 == 0) {\n                                while (i < j) {\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0\n                                }\n                            } else {\n                                while (i < j) {\n                                    data8[i] = 255;\n                                    i = i + 4 | 0\n                                }\n                            }\n                        } else {\n                            data32.set(HEAP32.subarray(src >>> 0, src + data32.length >>> 0))\n                        }\n                    }\n                } else {\n                    var width = Module[\"canvas\"].width;\n                    var height = Module[\"canvas\"].height;\n                    var s = surfData.buffer;\n                    var data = surfData.image.data;\n                    var colors = surfData.colors;\n                    for (var y = 0; y < height; y++) {\n                        var base = y * width * 4;\n                        for (var x = 0; x < width; x++) {\n                            var val = HEAPU8[s++ >>> 0] * 4;\n                            var start = base + x * 4;\n                            data[start] = colors[val];\n                            data[start + 1] = colors[val + 1];\n                            data[start + 2] = colors[val + 2]\n                        }\n                        s += width * 3\n                    }\n                }\n                surfData.ctx.putImageData(surfData.image, 0, 0)\n            }\n            _SDL_UnlockSurface.sig = \"vp\";\n\n            function _SDL_Flip(surf) {\n                surf >>>= 0\n            }\n            _SDL_Flip.sig = \"ip\";\n\n            function _SDL_UpdateRect(surf, x, y, w, h) {\n                surf >>>= 0\n            }\n            _SDL_UpdateRect.sig = \"vpiiii\";\n\n            function _SDL_UpdateRects(surf, numrects, rects) {\n                surf >>>= 0;\n                rects >>>= 0\n            }\n            _SDL_UpdateRects.sig = \"vpip\";\n            var _SDL_Delay = delay => {\n                if (!ENVIRONMENT_IS_WORKER) abort(\"SDL_Delay called on the main thread! Potential infinite loop, quitting. (consider building with async support like ASYNCIFY)\");\n                var now = Date.now();\n                while (Date.now() - now < delay) {}\n            };\n            _SDL_Delay.sig = \"vi\";\n\n            function _SDL_WM_SetCaption(title, icon) {\n                title >>>= 0;\n                icon >>>= 0;\n                if (title) {\n                    _emscripten_set_window_title(title)\n                }\n                icon &&= UTF8ToString(icon)\n            }\n            _SDL_WM_SetCaption.sig = \"vpp\";\n            var _SDL_EnableKeyRepeat = (delay, interval) => {};\n            _SDL_EnableKeyRepeat.sig = \"iii\";\n\n            function _SDL_GetKeyboardState(numKeys) {\n                numKeys >>>= 0;\n                if (numKeys) {\n                    HEAP32[numKeys >>> 2 >>> 0] = 65536\n                }\n                return SDL.keyboardState\n            }\n            _SDL_GetKeyboardState.sig = \"pp\";\n            var _SDL_GetKeyState = () => _SDL_GetKeyboardState(0);\n\n            function _SDL_GetKeyName(key) {\n                SDL.keyName ||= stringToNewUTF8(\"unknown key\");\n                return SDL.keyName\n            }\n            _SDL_GetKeyName.sig = \"pi\";\n            var _SDL_GetModState = () => SDL.modState;\n            _SDL_GetModState.sig = \"i\";\n\n            function _SDL_GetMouseState(x, y) {\n                x >>>= 0;\n                y >>>= 0;\n                if (x) HEAP32[x >>> 2 >>> 0] = Browser.mouseX;\n                if (y) HEAP32[y >>> 2 >>> 0] = Browser.mouseY;\n                return SDL.buttonState\n            }\n            _SDL_GetMouseState.sig = \"ipp\";\n            var _SDL_WarpMouse = (x, y) => {};\n            _SDL_WarpMouse.sig = \"vii\";\n            var _SDL_ShowCursor = toggle => {\n                switch (toggle) {\n                    case 0:\n                        if (Browser.isFullscreen) {\n                            Module[\"canvas\"].requestPointerLock();\n                            return 0\n                        }\n                        return 1;\n                    case 1:\n                        Module[\"canvas\"].exitPointerLock();\n                        return 1;\n                    case -1:\n                        return !Browser.pointerLock;\n                    default:\n                        err(`SDL_ShowCursor called with unknown toggle parameter value: ${toggle}`);\n                        break\n                }\n            };\n            _SDL_ShowCursor.sig = \"ii\";\n\n            function _SDL_GetError() {\n                SDL.errorMessage ||= stringToNewUTF8(\"unknown SDL-emscripten error\");\n                return SDL.errorMessage\n            }\n            _SDL_GetError.sig = \"p\";\n\n            function _SDL_SetError(fmt, varargs) {\n                fmt >>>= 0;\n                varargs >>>= 0\n            }\n            _SDL_SetError.sig = \"vpp\";\n\n            function _SDL_CreateRGBSurface(flags, width, height, depth, rmask, gmask, bmask, amask) {\n                return SDL.makeSurface(width, height, flags, false, \"CreateRGBSurface\", rmask, gmask, bmask, amask)\n            }\n            _SDL_CreateRGBSurface.sig = \"piiiiiiii\";\n\n            function _SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, rmask, gmask, bmask, amask) {\n                pixels >>>= 0;\n                var surf = SDL.makeSurface(width, height, 0, false, \"CreateRGBSurfaceFrom\", rmask, gmask, bmask, amask);\n                if (depth !== 32) {\n                    err(\"TODO: Partially unimplemented SDL_CreateRGBSurfaceFrom called!\");\n                    return surf\n                }\n                var data = SDL.surfaces[surf];\n                var image = data.ctx.createImageData(width, height);\n                var pitchOfDst = width * 4;\n                for (var row = 0; row < height; ++row) {\n                    var baseOfSrc = row * pitch;\n                    var baseOfDst = row * pitchOfDst;\n                    for (var col = 0; col < width * 4; ++col) {\n                        image.data[baseOfDst + col] = HEAPU8[pixels + (baseOfDst + col) >>> 0]\n                    }\n                }\n                data.ctx.putImageData(image, 0, 0);\n                return surf\n            }\n            _SDL_CreateRGBSurfaceFrom.sig = \"ppiiiiiiii\";\n\n            function _SDL_ConvertSurface(surf, format, flags) {\n                surf >>>= 0;\n                format >>>= 0;\n                if (format) {\n                    SDL.checkPixelFormat(format)\n                }\n                var oldData = SDL.surfaces[surf];\n                var ret = SDL.makeSurface(oldData.width, oldData.height, oldData.flags, false, \"copy:\" + oldData.source);\n                var newData = SDL.surfaces[ret];\n                newData.ctx.globalCompositeOperation = \"copy\";\n                newData.ctx.drawImage(oldData.canvas, 0, 0);\n                newData.ctx.globalCompositeOperation = oldData.ctx.globalCompositeOperation;\n                return ret\n            }\n            _SDL_ConvertSurface.sig = \"pppi\";\n\n            function _SDL_DisplayFormatAlpha(surf) {\n                surf >>>= 0;\n                return _SDL_ConvertSurface(surf, 0, 0)\n            }\n            _SDL_DisplayFormatAlpha.sig = \"pp\";\n\n            function _SDL_FreeSurface(surf) {\n                surf >>>= 0;\n                if (surf) SDL.freeSurface(surf)\n            }\n            _SDL_FreeSurface.sig = \"vp\";\n\n            function _SDL_UpperBlit(src, srcrect, dst, dstrect) {\n                src >>>= 0;\n                srcrect >>>= 0;\n                dst >>>= 0;\n                dstrect >>>= 0;\n                return SDL.blitSurface(src, srcrect, dst, dstrect, false)\n            }\n            _SDL_UpperBlit.sig = \"ipppp\";\n\n            function _SDL_UpperBlitScaled(src, srcrect, dst, dstrect) {\n                src >>>= 0;\n                srcrect >>>= 0;\n                dst >>>= 0;\n                dstrect >>>= 0;\n                return SDL.blitSurface(src, srcrect, dst, dstrect, true)\n            }\n            _SDL_UpperBlitScaled.sig = \"ipppp\";\n            var _SDL_LowerBlit = _SDL_UpperBlit;\n            _SDL_LowerBlit.sig = \"ipppp\";\n            var _SDL_LowerBlitScaled = _SDL_UpperBlitScaled;\n            _SDL_LowerBlitScaled.sig = \"ipppp\";\n\n            function _SDL_GetClipRect(surf, rect) {\n                surf >>>= 0;\n                rect >>>= 0;\n                assert(rect);\n                var surfData = SDL.surfaces[surf];\n                var r = surfData.clipRect || {\n                    x: 0,\n                    y: 0,\n                    w: surfData.width,\n                    h: surfData.height\n                };\n                SDL.updateRect(rect, r)\n            }\n            _SDL_GetClipRect.sig = \"vpp\";\n\n            function _SDL_SetClipRect(surf, rect) {\n                surf >>>= 0;\n                rect >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                if (rect) {\n                    surfData.clipRect = SDL.intersectionOfRects({\n                        x: 0,\n                        y: 0,\n                        w: surfData.width,\n                        h: surfData.height\n                    }, SDL.loadRect(rect))\n                } else {\n                    delete surfData.clipRect\n                }\n            }\n            _SDL_SetClipRect.sig = \"ipp\";\n\n            function _SDL_FillRect(surf, rect, color) {\n                surf >>>= 0;\n                rect >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                assert(!surfData.locked);\n                if (surfData.isFlagSet(2097152)) {\n                    color = surfData.colors32[color]\n                }\n                var r = rect ? SDL.loadRect(rect) : {\n                    x: 0,\n                    y: 0,\n                    w: surfData.width,\n                    h: surfData.height\n                };\n                if (surfData.clipRect) {\n                    r = SDL.intersectionOfRects(surfData.clipRect, r);\n                    if (rect) {\n                        SDL.updateRect(rect, r)\n                    }\n                }\n                surfData.ctx.save();\n                surfData.ctx.fillStyle = SDL.translateColorToCSSRGBA(color);\n                surfData.ctx.fillRect(r.x, r.y, r.w, r.h);\n                surfData.ctx.restore();\n                return 0\n            }\n            _SDL_FillRect.sig = \"ippi\";\n\n            function _zoomSurface(src, x, y, smooth) {\n                src >>>= 0;\n                var srcData = SDL.surfaces[src];\n                var w = srcData.width * x;\n                var h = srcData.height * y;\n                var ret = SDL.makeSurface(Math.abs(w), Math.abs(h), srcData.flags, false, \"zoomSurface\");\n                var dstData = SDL.surfaces[ret];\n                if (x >= 0 && y >= 0) dstData.ctx.drawImage(srcData.canvas, 0, 0, w, h);\n                else {\n                    dstData.ctx.save();\n                    dstData.ctx.scale(x < 0 ? -1 : 1, y < 0 ? -1 : 1);\n                    dstData.ctx.drawImage(srcData.canvas, w < 0 ? w : 0, h < 0 ? h : 0, Math.abs(w), Math.abs(h));\n                    dstData.ctx.restore()\n                }\n                return ret\n            }\n            _zoomSurface.sig = \"ppddi\";\n\n            function _rotozoomSurface(src, angle, zoom, smooth) {\n                src >>>= 0;\n                if (angle % 360 === 0) {\n                    return _zoomSurface(src, zoom, zoom, smooth)\n                }\n                var srcData = SDL.surfaces[src];\n                var w = srcData.width * zoom;\n                var h = srcData.height * zoom;\n                var diagonal = Math.ceil(Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)));\n                var ret = SDL.makeSurface(diagonal, diagonal, srcData.flags, false, \"rotozoomSurface\");\n                var dstData = SDL.surfaces[ret];\n                dstData.ctx.translate(diagonal / 2, diagonal / 2);\n                dstData.ctx.rotate(-angle * Math.PI / 180);\n                dstData.ctx.drawImage(srcData.canvas, -w / 2, -h / 2, w, h);\n                return ret\n            }\n            _rotozoomSurface.sig = \"ppddi\";\n\n            function _SDL_SetAlpha(surf, flag, alpha) {\n                surf >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                surfData.alpha = alpha;\n                if (!(flag & 65536)) {\n                    surfData.alpha = 255\n                }\n            }\n            _SDL_SetAlpha.sig = \"ipii\";\n\n            function _SDL_SetColorKey(surf, flag, key) {\n                surf >>>= 0;\n                warnOnce(\"SDL_SetColorKey is a no-op for performance reasons\");\n                return 0\n            }\n            _SDL_SetColorKey.sig = \"ipii\";\n\n            function _SDL_PollEvent(ptr) {\n                ptr >>>= 0;\n                return SDL.pollEvent(ptr)\n            }\n            _SDL_PollEvent.sig = \"ip\";\n\n            function _SDL_PushEvent(ptr) {\n                ptr >>>= 0;\n                var copy = _malloc(28);\n                _memcpy(copy, ptr, 28);\n                SDL.events.push(copy);\n                return 0\n            }\n            _SDL_PushEvent.sig = \"ip\";\n\n            function _SDL_PeepEvents(events, requestedEventCount, action, from, to) {\n                events >>>= 0;\n                switch (action) {\n                    case 2: {\n                        assert(requestedEventCount == 1);\n                        var index = 0;\n                        var retrievedEventCount = 0;\n                        while (index < SDL.events.length && retrievedEventCount < requestedEventCount) {\n                            var event = SDL.events[index];\n                            var type = SDL.DOMEventToSDLEvent[event.type];\n                            if (from <= type && type <= to) {\n                                if (SDL.makeCEvent(event, events) === false) {\n                                    index++\n                                } else {\n                                    SDL.events.splice(index, 1);\n                                    retrievedEventCount++\n                                }\n                            } else {\n                                index++\n                            }\n                        }\n                        return retrievedEventCount\n                    }\n                    default:\n                        throw \"SDL_PeepEvents does not yet support that action: \" + action\n                }\n            }\n            _SDL_PeepEvents.sig = \"ipiiii\";\n            var _SDL_PumpEvents = () => SDL.events.forEach(SDL.handleEvent);\n            _SDL_PumpEvents.sig = \"v\";\n\n            function _emscripten_SDL_SetEventHandler(handler, userdata) {\n                handler >>>= 0;\n                userdata >>>= 0;\n                SDL.eventHandler = handler;\n                SDL.eventHandlerContext = userdata;\n                SDL.eventHandlerTemp ||= _malloc(28)\n            }\n            _emscripten_SDL_SetEventHandler.sig = \"vpp\";\n\n            function _SDL_SetColors(surf, colors, firstColor, nColors) {\n                surf >>>= 0;\n                colors >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                if (!surfData.colors) {\n                    var buffer = new ArrayBuffer(256 * 4);\n                    surfData.colors = new Uint8Array(buffer);\n                    surfData.colors32 = new Uint32Array(buffer)\n                }\n                for (var i = 0; i < nColors; ++i) {\n                    var index = (firstColor + i) * 4;\n                    surfData.colors[index] = HEAPU8[colors + i * 4 >>> 0];\n                    surfData.colors[index + 1] = HEAPU8[colors + (i * 4 + 1) >>> 0];\n                    surfData.colors[index + 2] = HEAPU8[colors + (i * 4 + 2) >>> 0];\n                    surfData.colors[index + 3] = 255\n                }\n                return 1\n            }\n            _SDL_SetColors.sig = \"ippii\";\n\n            function _SDL_SetPalette(surf, flags, colors, firstColor, nColors) {\n                surf >>>= 0;\n                colors >>>= 0;\n                return _SDL_SetColors(surf, colors, firstColor, nColors)\n            }\n            _SDL_SetPalette.sig = \"ipipii\";\n\n            function _SDL_MapRGB(fmt, r, g, b) {\n                fmt >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                return r & 255 | (g & 255) << 8 | (b & 255) << 16 | 4278190080\n            }\n            _SDL_MapRGB.sig = \"ipiii\";\n\n            function _SDL_MapRGBA(fmt, r, g, b, a) {\n                fmt >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                return r & 255 | (g & 255) << 8 | (b & 255) << 16 | (a & 255) << 24\n            }\n            _SDL_MapRGBA.sig = \"ipiiii\";\n\n            function _SDL_GetRGB(pixel, fmt, r, g, b) {\n                fmt >>>= 0;\n                r >>>= 0;\n                g >>>= 0;\n                b >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                if (r) {\n                    HEAP8[r >>> 0] = pixel & 255\n                }\n                if (g) {\n                    HEAP8[g >>> 0] = pixel >> 8 & 255\n                }\n                if (b) {\n                    HEAP8[b >>> 0] = pixel >> 16 & 255\n                }\n            }\n            _SDL_GetRGB.sig = \"vipppp\";\n\n            function _SDL_GetRGBA(pixel, fmt, r, g, b, a) {\n                fmt >>>= 0;\n                r >>>= 0;\n                g >>>= 0;\n                b >>>= 0;\n                a >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                if (r) {\n                    HEAP8[r >>> 0] = pixel & 255\n                }\n                if (g) {\n                    HEAP8[g >>> 0] = pixel >> 8 & 255\n                }\n                if (b) {\n                    HEAP8[b >>> 0] = pixel >> 16 & 255\n                }\n                if (a) {\n                    HEAP8[a >>> 0] = pixel >> 24 & 255\n                }\n            }\n            _SDL_GetRGBA.sig = \"vippppp\";\n            var _SDL_GetAppState = () => {\n                var state = 0;\n                if (Browser.pointerLock) {\n                    state |= 1\n                }\n                if (document.hasFocus()) {\n                    state |= 2\n                }\n                state |= 4;\n                return state\n            };\n            _SDL_GetAppState.sig = \"i\";\n            var _SDL_WM_GrabInput = () => {};\n            _SDL_WM_GrabInput.sig = \"ii\";\n\n            function _SDL_WM_ToggleFullScreen(surf) {\n                surf >>>= 0;\n                if (Browser.exitFullscreen()) {\n                    return 1\n                }\n                if (!SDL.canRequestFullscreen) {\n                    return 0\n                }\n                SDL.isRequestingFullscreen = true;\n                return 1\n            }\n            _SDL_WM_ToggleFullScreen.sig = \"ip\";\n            var _IMG_Init = flags => flags;\n            _IMG_Init.sig = \"ii\";\n\n            function _SDL_FreeRW(rwopsID) {\n                rwopsID >>>= 0;\n                SDL.rwops[rwopsID] = null;\n                while (SDL.rwops.length > 0 && SDL.rwops[SDL.rwops.length - 1] === null) {\n                    SDL.rwops.pop()\n                }\n            }\n            _SDL_FreeRW.sig = \"vp\";\n            var _IMG_Load_RW = function(rwopsID, freeSrc) {\n                rwopsID >>>= 0;\n                var sp = stackSave();\n                try {\n                    var cleanup = () => {\n                        stackRestore(sp);\n                        if (rwops && freeSrc) _SDL_FreeRW(rwopsID)\n                    };\n                    var addCleanup = func => {\n                        var old = cleanup;\n                        cleanup = () => {\n                            old();\n                            func()\n                        }\n                    };\n                    var callStbImage = (func, params) => {\n                        var x = stackAlloc(4);\n                        var y = stackAlloc(4);\n                        var comp = stackAlloc(4);\n                        var data = Module[\"_\" + func](...params, x, y, comp, 0);\n                        if (!data) return null;\n                        addCleanup(() => Module[\"_stbi_image_free\"](data));\n                        return {\n                            rawData: true,\n                            data,\n                            width: HEAP32[x >>> 2 >>> 0],\n                            height: HEAP32[y >>> 2 >>> 0],\n                            size: HEAP32[x >>> 2 >>> 0] * HEAP32[y >>> 2 >>> 0] * HEAP32[comp >>> 2 >>> 0],\n                            bpp: HEAP32[comp >>> 2 >>> 0]\n                        }\n                    };\n                    var rwops = SDL.rwops[rwopsID];\n                    if (rwops === undefined) {\n                        return 0\n                    }\n                    var raw;\n                    var filename = rwops.filename;\n                    if (filename === undefined) {\n                        warnOnce(\"Only file names that have been preloaded are supported for IMG_Load_RW. Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins\");\n                        return 0\n                    }\n                    if (!raw) {\n                        filename = PATH_FS.resolve(filename);\n                        raw = preloadedImages[filename];\n                        if (!raw) {\n                            if (raw === null) err(\"Trying to reuse preloaded image, but freePreloadedMediaOnUse is set!\");\n                            warnOnce(\"Cannot find preloaded image \" + filename);\n                            warnOnce(\"Cannot find preloaded image \" + filename + \". Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins\");\n                            return 0\n                        } else if (Module[\"freePreloadedMediaOnUse\"]) {\n                            preloadedImages[filename] = null\n                        }\n                    }\n                    var surf = SDL.makeSurface(raw.width, raw.height, 0, false, \"load:\" + filename);\n                    var surfData = SDL.surfaces[surf];\n                    surfData.ctx.globalCompositeOperation = \"copy\";\n                    if (!raw.rawData) {\n                        surfData.ctx.drawImage(raw, 0, 0, raw.width, raw.height, 0, 0, raw.width, raw.height)\n                    } else {\n                        var imageData = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height);\n                        if (raw.bpp == 4) {\n                            imageData.data.set(HEAPU8.subarray(raw.data >>> 0, raw.data + raw.size >>> 0))\n                        } else if (raw.bpp == 3) {\n                            var pixels = raw.size / 3;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = 255\n                            }\n                        } else if (raw.bpp == 2) {\n                            var pixels = raw.size;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                var gray = HEAPU8[sourcePtr++ >>> 0];\n                                var alpha = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = gray;\n                                data[destPtr++] = gray;\n                                data[destPtr++] = gray;\n                                data[destPtr++] = alpha\n                            }\n                        } else if (raw.bpp == 1) {\n                            var pixels = raw.size;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                var value = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = value;\n                                data[destPtr++] = value;\n                                data[destPtr++] = value;\n                                data[destPtr++] = 255\n                            }\n                        } else {\n                            err(`cannot handle bpp ${raw.bpp}`);\n                            return 0\n                        }\n                        surfData.ctx.putImageData(imageData, 0, 0)\n                    }\n                    surfData.ctx.globalCompositeOperation = \"source-over\";\n                    _SDL_LockSurface(surf);\n                    surfData.locked--;\n                    if (SDL.GL) {\n                        surfData.canvas = surfData.ctx = null\n                    }\n                    return surf\n                } finally {\n                    cleanup()\n                }\n            };\n            _IMG_Load_RW.sig = \"ppi\";\n            var _SDL_LoadBMP_RW = _IMG_Load_RW;\n            _SDL_LoadBMP_RW.sig = \"ppi\";\n\n            function _SDL_RWFromFile(_name, mode) {\n                _name >>>= 0;\n                mode >>>= 0;\n                var id = SDL.rwops.length;\n                var filename = UTF8ToString(_name);\n                SDL.rwops.push({\n                    filename,\n                    mimetype: Browser.getMimetype(filename)\n                });\n                return id\n            }\n            _SDL_RWFromFile.sig = \"ppp\";\n\n            function _IMG_Load(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _IMG_Load_RW(rwops, 1);\n                return result\n            }\n            _IMG_Load.sig = \"pp\";\n            var _IMG_Quit = () => out(\"IMG_Quit called (and ignored)\");\n            _IMG_Quit.sig = \"v\";\n\n            function _SDL_OpenAudio(desired, obtained) {\n                desired >>>= 0;\n                obtained >>>= 0;\n                try {\n                    SDL.audio = {\n                        freq: HEAPU32[desired >>> 2 >>> 0],\n                        format: HEAPU16[desired + 4 >>> 1 >>> 0],\n                        channels: HEAPU8[desired + 6 >>> 0],\n                        samples: HEAPU16[desired + 8 >>> 1 >>> 0],\n                        callback: HEAPU32[desired + 16 >>> 2 >>> 0],\n                        userdata: HEAPU32[desired + 20 >>> 2 >>> 0],\n                        paused: true,\n                        timer: null\n                    };\n                    if (SDL.audio.format == 8) {\n                        SDL.audio.silence = 128\n                    } else if (SDL.audio.format == 32784) {\n                        SDL.audio.silence = 0\n                    } else if (SDL.audio.format == 33056) {\n                        SDL.audio.silence = 0\n                    } else {\n                        throw \"Invalid SDL audio format \" + SDL.audio.format + \"!\"\n                    }\n                    if (SDL.audio.freq <= 0) {\n                        throw \"Unsupported sound frequency \" + SDL.audio.freq + \"!\"\n                    } else if (SDL.audio.freq <= 22050) {\n                        SDL.audio.freq = 22050\n                    } else if (SDL.audio.freq <= 32e3) {\n                        SDL.audio.freq = 32e3\n                    } else if (SDL.audio.freq <= 44100) {\n                        SDL.audio.freq = 44100\n                    } else if (SDL.audio.freq <= 48e3) {\n                        SDL.audio.freq = 48e3\n                    } else if (SDL.audio.freq <= 96e3) {\n                        SDL.audio.freq = 96e3\n                    } else {\n                        throw `Unsupported sound frequency ${SDL.audio.freq}!`\n                    }\n                    if (SDL.audio.channels == 0) {\n                        SDL.audio.channels = 1\n                    } else if (SDL.audio.channels < 0 || SDL.audio.channels > 32) {\n                        throw `Unsupported number of audio channels for SDL audio: ${SDL.audio.channels}!`\n                    } else if (SDL.audio.channels != 1 && SDL.audio.channels != 2) {\n                        out(`Warning: Using untested number of audio channels ${SDL.audio.channels}`)\n                    }\n                    if (SDL.audio.samples < 128 || SDL.audio.samples > 524288) {\n                        throw `Unsupported audio callback buffer size ${SDL.audio.samples}!`\n                    } else if ((SDL.audio.samples & SDL.audio.samples - 1) != 0) {\n                        throw `Audio callback buffer size ${SDL.audio.samples} must be a power-of-two!`\n                    }\n                    var totalSamples = SDL.audio.samples * SDL.audio.channels;\n                    if (SDL.audio.format == 8) {\n                        SDL.audio.bytesPerSample = 1\n                    } else if (SDL.audio.format == 32784) {\n                        SDL.audio.bytesPerSample = 2\n                    } else if (SDL.audio.format == 33056) {\n                        SDL.audio.bytesPerSample = 4\n                    } else {\n                        throw `Invalid SDL audio format ${SDL.audio.format}!`\n                    }\n                    SDL.audio.bufferSize = totalSamples * SDL.audio.bytesPerSample;\n                    SDL.audio.bufferDurationSecs = SDL.audio.bufferSize / SDL.audio.bytesPerSample / SDL.audio.channels / SDL.audio.freq;\n                    SDL.audio.bufferingDelay = 50 / 1e3;\n                    SDL.audio.buffer = _malloc(SDL.audio.bufferSize);\n                    SDL.audio.numSimultaneouslyQueuedBuffers = Module[\"SDL_numSimultaneouslyQueuedBuffers\"] || 5;\n                    SDL.audio.queueNewAudioData = () => {\n                        if (!SDL.audio) return;\n                        for (var i = 0; i < SDL.audio.numSimultaneouslyQueuedBuffers; ++i) {\n                            var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext[\"currentTime\"];\n                            if (secsUntilNextPlayStart >= SDL.audio.bufferingDelay + SDL.audio.bufferDurationSecs * SDL.audio.numSimultaneouslyQueuedBuffers) return;\n                            getWasmTableEntry(SDL.audio.callback)(SDL.audio.userdata, SDL.audio.buffer, SDL.audio.bufferSize);\n                            SDL.audio.pushAudio(SDL.audio.buffer, SDL.audio.bufferSize)\n                        }\n                    };\n                    SDL.audio.caller = () => {\n                        if (!SDL.audio) return;\n                        --SDL.audio.numAudioTimersPending;\n                        SDL.audio.queueNewAudioData();\n                        var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext[\"currentTime\"];\n                        var preemptBufferFeedSecs = SDL.audio.bufferDurationSecs / 2;\n                        if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n                            ++SDL.audio.numAudioTimersPending;\n                            SDL.audio.timer = safeSetTimeout(SDL.audio.caller, Math.max(0, 1e3 * (secsUntilNextPlayStart - preemptBufferFeedSecs)));\n                            if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n                                ++SDL.audio.numAudioTimersPending;\n                                safeSetTimeout(SDL.audio.caller, 1)\n                            }\n                        }\n                    };\n                    SDL.audio.audioOutput = new Audio;\n                    SDL.openAudioContext();\n                    if (!SDL.audioContext) throw \"Web Audio API is not available!\";\n                    autoResumeAudioContext(SDL.audioContext);\n                    SDL.audio.nextPlayTime = 0;\n                    SDL.audio.pushAudio = (ptr, sizeBytes) => {\n                        try {\n                            if (SDL.audio.paused) return;\n                            var sizeSamples = sizeBytes / SDL.audio.bytesPerSample;\n                            var sizeSamplesPerChannel = sizeSamples / SDL.audio.channels;\n                            if (sizeSamplesPerChannel != SDL.audio.samples) {\n                                throw \"Received mismatching audio buffer size!\"\n                            }\n                            var source = SDL.audioContext[\"createBufferSource\"]();\n                            var soundBuffer = SDL.audioContext[\"createBuffer\"](SDL.audio.channels, sizeSamplesPerChannel, SDL.audio.freq);\n                            source[\"connect\"](SDL.audioContext[\"destination\"]);\n                            SDL.fillWebAudioBufferFromHeap(ptr, sizeSamplesPerChannel, soundBuffer);\n                            source[\"buffer\"] = soundBuffer;\n                            var curtime = SDL.audioContext[\"currentTime\"];\n                            var playtime = Math.max(curtime + SDL.audio.bufferingDelay, SDL.audio.nextPlayTime);\n                            if (typeof source[\"start\"] != \"undefined\") {\n                                source[\"start\"](playtime)\n                            } else if (typeof source[\"noteOn\"] != \"undefined\") {\n                                source[\"noteOn\"](playtime)\n                            }\n                            SDL.audio.nextPlayTime = playtime + SDL.audio.bufferDurationSecs\n                        } catch (e) {\n                            err(`Web Audio API error playing back audio: ${e.toString()}`)\n                        }\n                    };\n                    if (obtained) {\n                        HEAP32[obtained >>> 2 >>> 0] = SDL.audio.freq;\n                        HEAP16[obtained + 4 >>> 1 >>> 0] = SDL.audio.format;\n                        HEAP8[obtained + 6 >>> 0] = SDL.audio.channels;\n                        HEAP8[obtained + 7 >>> 0] = SDL.audio.silence;\n                        HEAP16[obtained + 8 >>> 1 >>> 0] = SDL.audio.samples;\n                        HEAPU32[obtained + 16 >>> 2 >>> 0] = SDL.audio.callback;\n                        HEAPU32[obtained + 20 >>> 2 >>> 0] = SDL.audio.userdata\n                    }\n                    SDL.allocateChannels(32)\n                } catch (e) {\n                    err(`Initializing SDL audio threw an exception: \"${e.toString()}\"! Continuing without audio`);\n                    SDL.audio = null;\n                    SDL.allocateChannels(0);\n                    if (obtained) {\n                        HEAP32[obtained >>> 2 >>> 0] = 0;\n                        HEAP16[obtained + 4 >>> 1 >>> 0] = 0;\n                        HEAP8[obtained + 6 >>> 0] = 0;\n                        HEAP8[obtained + 7 >>> 0] = 0;\n                        HEAP16[obtained + 8 >>> 1 >>> 0] = 0;\n                        HEAPU32[obtained + 16 >>> 2 >>> 0] = 0;\n                        HEAPU32[obtained + 20 >>> 2 >>> 0] = 0\n                    }\n                }\n                if (!SDL.audio) {\n                    return -1\n                }\n                return 0\n            }\n            _SDL_OpenAudio.sig = \"ipp\";\n            var _SDL_PauseAudio = pauseOn => {\n                if (!SDL.audio) {\n                    return\n                }\n                if (pauseOn) {\n                    if (SDL.audio.timer !== undefined) {\n                        clearTimeout(SDL.audio.timer);\n                        SDL.audio.numAudioTimersPending = 0;\n                        SDL.audio.timer = undefined\n                    }\n                } else if (!SDL.audio.timer) {\n                    SDL.audio.numAudioTimersPending = 1;\n                    SDL.audio.timer = safeSetTimeout(SDL.audio.caller, 1)\n                }\n                SDL.audio.paused = pauseOn\n            };\n            _SDL_PauseAudio.sig = \"vi\";\n            var _SDL_CloseAudio = () => {\n                if (SDL.audio) {\n                    if (SDL.audio.callbackRemover) {\n                        SDL.audio.callbackRemover();\n                        SDL.audio.callbackRemover = null\n                    }\n                    _SDL_PauseAudio(1);\n                    _free(SDL.audio.buffer);\n                    SDL.audio = null;\n                    SDL.allocateChannels(0)\n                }\n            };\n            _SDL_CloseAudio.sig = \"v\";\n            var _SDL_LockAudio = () => {};\n            _SDL_LockAudio.sig = \"v\";\n            var _SDL_UnlockAudio = () => {};\n            _SDL_UnlockAudio.sig = \"v\";\n\n            function _SDL_CreateMutex() {\n                return 0\n            }\n            _SDL_CreateMutex.sig = \"p\";\n\n            function _SDL_mutexP(mutex) {\n                mutex >>>= 0;\n                return 0\n            }\n            _SDL_mutexP.sig = \"ip\";\n\n            function _SDL_mutexV(mutex) {\n                mutex >>>= 0;\n                return 0\n            }\n            _SDL_mutexV.sig = \"ip\";\n\n            function _SDL_DestroyMutex(mutex) {\n                mutex >>>= 0\n            }\n            _SDL_DestroyMutex.sig = \"vp\";\n\n            function _SDL_CreateCond() {\n                return 0\n            }\n            _SDL_CreateCond.sig = \"p\";\n\n            function _SDL_CondSignal(cond) {\n                cond >>>= 0\n            }\n            _SDL_CondSignal.sig = \"ip\";\n\n            function _SDL_CondWait(cond, mutex) {\n                cond >>>= 0;\n                mutex >>>= 0\n            }\n            _SDL_CondWait.sig = \"ipp\";\n\n            function _SDL_DestroyCond(cond) {\n                cond >>>= 0\n            }\n            _SDL_DestroyCond.sig = \"vp\";\n            var _SDL_StartTextInput = () => {\n                SDL.textInput = true\n            };\n            _SDL_StartTextInput.sig = \"v\";\n            var _SDL_StopTextInput = () => {\n                SDL.textInput = false\n            };\n            _SDL_StopTextInput.sig = \"v\";\n            var _Mix_Init = flags => {\n                if (!flags) return 0;\n                return 8\n            };\n            _Mix_Init.sig = \"ii\";\n            var _Mix_Quit = () => {};\n            _Mix_Quit.sig = \"v\";\n            var _Mix_OpenAudio = (frequency, format, channels, chunksize) => {\n                SDL.openAudioContext();\n                autoResumeAudioContext(SDL.audioContext);\n                SDL.allocateChannels(32);\n                SDL.mixerFrequency = frequency;\n                SDL.mixerFormat = format;\n                SDL.mixerNumChannels = channels;\n                SDL.mixerChunkSize = chunksize;\n                return 0\n            };\n            _Mix_OpenAudio.sig = \"iiiii\";\n            var _Mix_CloseAudio = _SDL_CloseAudio;\n            _Mix_CloseAudio.sig = \"v\";\n            var _Mix_AllocateChannels = num => {\n                SDL.allocateChannels(num);\n                return num\n            };\n            _Mix_AllocateChannels.sig = \"ii\";\n\n            function _Mix_ChannelFinished(func) {\n                func >>>= 0;\n                SDL.channelFinished = func\n            }\n            _Mix_ChannelFinished.sig = \"vp\";\n            var _Mix_Volume = (channel, volume) => {\n                if (channel == -1) {\n                    for (var i = 0; i < SDL.numChannels - 1; i++) {\n                        _Mix_Volume(i, volume)\n                    }\n                    return _Mix_Volume(SDL.numChannels - 1, volume)\n                }\n                return SDL.setGetVolume(SDL.channels[channel], volume)\n            };\n            _Mix_Volume.sig = \"iii\";\n            var _Mix_SetPanning = (channel, left, right) => {\n                left /= 255;\n                right /= 255;\n                SDL.setPannerPosition(SDL.channels[channel], right - left, 0, .1);\n                return 1\n            };\n            _Mix_SetPanning.sig = \"iiii\";\n\n            function _Mix_LoadWAV_RW(rwopsID, freesrc) {\n                rwopsID >>>= 0;\n                var rwops = SDL.rwops[rwopsID];\n                if (rwops === undefined) return 0;\n                var filename = \"\";\n                var audio;\n                var webAudio;\n                var bytes;\n                if (rwops.filename !== undefined) {\n                    filename = PATH_FS.resolve(rwops.filename);\n                    var raw = preloadedAudios[filename];\n                    if (!raw) {\n                        if (raw === null) err(\"Trying to reuse preloaded audio, but freePreloadedMediaOnUse is set!\");\n                        if (!Module[\"noAudioDecoding\"]) warnOnce(\"Cannot find preloaded audio \" + filename);\n                        try {\n                            bytes = FS.readFile(filename)\n                        } catch (e) {\n                            err(`Couldn't find file for: ${filename}`);\n                            return 0\n                        }\n                    }\n                    if (Module[\"freePreloadedMediaOnUse\"]) {\n                        preloadedAudios[filename] = null\n                    }\n                    audio = raw\n                } else if (rwops.bytes !== undefined) {\n                    if (SDL.webAudioAvailable()) bytes = HEAPU8.buffer.slice(rwops.bytes, rwops.bytes + rwops.count);\n                    else bytes = HEAPU8.subarray(rwops.bytes >>> 0, rwops.bytes + rwops.count >>> 0)\n                } else {\n                    return 0\n                }\n                var arrayBuffer = bytes ? bytes.buffer || bytes : bytes;\n                var canPlayWithWebAudio = Module[\"SDL_canPlayWithWebAudio\"] === undefined || Module[\"SDL_canPlayWithWebAudio\"](filename, arrayBuffer);\n                if (bytes !== undefined && SDL.webAudioAvailable() && canPlayWithWebAudio) {\n                    audio = undefined;\n                    webAudio = {};\n                    webAudio.onDecodeComplete = [];\n                    var onDecodeComplete = data => {\n                        webAudio.decodedBuffer = data;\n                        webAudio.onDecodeComplete.forEach(e => e());\n                        webAudio.onDecodeComplete = undefined\n                    };\n                    SDL.audioContext[\"decodeAudioData\"](arrayBuffer, onDecodeComplete)\n                } else if (audio === undefined && bytes) {\n                    var blob = new Blob([bytes], {\n                        type: rwops.mimetype\n                    });\n                    var url = URL.createObjectURL(blob);\n                    audio = new Audio;\n                    audio.src = url;\n                    audio.mozAudioChannelType = \"content\"\n                }\n                var id = SDL.audios.length;\n                SDL.audios.push({\n                    source: filename,\n                    audio,\n                    webAudio\n                });\n                return id\n            }\n            _Mix_LoadWAV_RW.sig = \"ppi\";\n\n            function _Mix_LoadWAV(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _Mix_LoadWAV_RW(rwops, 0);\n                _SDL_FreeRW(rwops);\n                return result\n            }\n            _Mix_LoadWAV.sig = \"pp\";\n\n            function _Mix_QuickLoad_RAW(mem, len) {\n                mem >>>= 0;\n                var audio;\n                var webAudio;\n                var numSamples = len >> 1;\n                var buffer = new Float32Array(numSamples);\n                for (var i = 0; i < numSamples; ++i) {\n                    buffer[i] = HEAP16[mem + i * 2 >>> 1 >>> 0] / 32768\n                }\n                if (SDL.webAudioAvailable()) {\n                    webAudio = {};\n                    webAudio.decodedBuffer = buffer\n                } else {\n                    audio = new Audio;\n                    audio.mozAudioChannelType = \"content\";\n                    audio.numChannels = SDL.mixerNumChannels;\n                    audio.frequency = SDL.mixerFrequency\n                }\n                var id = SDL.audios.length;\n                SDL.audios.push({\n                    source: \"\",\n                    audio,\n                    webAudio,\n                    buffer\n                });\n                return id\n            }\n            _Mix_QuickLoad_RAW.sig = \"ppi\";\n\n            function _Mix_FreeChunk(id) {\n                id >>>= 0;\n                SDL.audios[id] = null\n            }\n            _Mix_FreeChunk.sig = \"vp\";\n            var _Mix_ReserveChannels = num => {\n                SDL.channelMinimumNumber = num\n            };\n            _Mix_ReserveChannels.sig = \"ii\";\n            var _Mix_HaltChannel = channel => {\n                function halt(channel) {\n                    var info = SDL.channels[channel];\n                    if (info.audio) {\n                        info.audio.pause();\n                        info.audio = null\n                    }\n                    if (SDL.channelFinished) {\n                        getWasmTableEntry(SDL.channelFinished)(channel)\n                    }\n                }\n                if (channel != -1) {\n                    halt(channel)\n                } else {\n                    for (var i = 0; i < SDL.channels.length; ++i) halt(i)\n                }\n                return 0\n            };\n            _Mix_HaltChannel.sig = \"ii\";\n\n            function _Mix_PlayChannelTimed(channel, id, loops, ticks) {\n                id >>>= 0;\n                assert(ticks == -1);\n                var info = SDL.audios[id];\n                if (!info) return -1;\n                if (!info.audio && !info.webAudio) return -1;\n                if (channel == -1) {\n                    for (var i = SDL.channelMinimumNumber; i < SDL.numChannels; i++) {\n                        if (!SDL.channels[i].audio) {\n                            channel = i;\n                            break\n                        }\n                    }\n                    if (channel == -1) {\n                        err(`All ${SDL.numChannels}  channels in use!`);\n                        return -1\n                    }\n                }\n                var channelInfo = SDL.channels[channel];\n                var audio;\n                if (info.webAudio) {\n                    audio = {};\n                    audio.resource = info;\n                    audio.paused = false;\n                    audio.currentPosition = 0;\n                    audio.play = function() {\n                        SDL.playWebAudio(this)\n                    };\n                    audio.pause = function() {\n                        SDL.pauseWebAudio(this)\n                    }\n                } else {\n                    audio = info.audio.cloneNode(true);\n                    audio.numChannels = info.audio.numChannels;\n                    audio.frequency = info.audio.frequency\n                }\n                audio[\"onended\"] = function() {\n                    if (channelInfo.audio === this || channelInfo.audio.webAudioNode === this) {\n                        channelInfo.audio.paused = true;\n                        channelInfo.audio = null\n                    }\n                    if (SDL.channelFinished) getWasmTableEntry(SDL.channelFinished)(channel)\n                };\n                if (channelInfo.audio) {\n                    _Mix_HaltChannel(channel)\n                }\n                channelInfo.audio = audio;\n                audio.loop = loops != 0;\n                audio.volume = channelInfo.volume;\n                audio.play();\n                return channel\n            }\n            _Mix_PlayChannelTimed.sig = \"iipii\";\n            var _Mix_FadingChannel = channel => 0;\n            _Mix_FadingChannel.sig = \"ii\";\n            var _Mix_HaltMusic = () => {\n                var audio = SDL.music.audio;\n                if (audio) {\n                    audio.src = audio.src;\n                    audio.currentPosition = 0;\n                    audio.pause()\n                }\n                SDL.music.audio = null;\n                if (SDL.hookMusicFinished) {\n                    getWasmTableEntry(SDL.hookMusicFinished)()\n                }\n                return 0\n            };\n            _Mix_HaltMusic.sig = \"i\";\n\n            function _Mix_HookMusicFinished(func) {\n                func >>>= 0;\n                SDL.hookMusicFinished = func;\n                if (SDL.music.audio) {\n                    SDL.music.audio[\"onended\"] = _Mix_HaltMusic\n                }\n            }\n            _Mix_HookMusicFinished.sig = \"vp\";\n            var _Mix_VolumeMusic = volume => SDL.setGetVolume(SDL.music, volume);\n            _Mix_VolumeMusic.sig = \"ii\";\n\n            function _Mix_LoadMUS_RW(filename) {\n                filename >>>= 0;\n                return _Mix_LoadWAV_RW(filename, 0)\n            }\n            _Mix_LoadMUS_RW.sig = \"pp\";\n\n            function _Mix_LoadMUS(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _Mix_LoadMUS_RW(rwops);\n                _SDL_FreeRW(rwops);\n                return result\n            }\n            _Mix_LoadMUS.sig = \"pp\";\n            var _Mix_FreeMusic = _Mix_FreeChunk;\n            _Mix_FreeMusic.sig = \"vp\";\n\n            function _Mix_PlayMusic(id, loops) {\n                id >>>= 0;\n                if (SDL.music.audio) {\n                    if (!SDL.music.audio.paused) err(`Music is already playing. ${SDL.music.source}`);\n                    SDL.music.audio.pause()\n                }\n                var info = SDL.audios[id];\n                var audio;\n                if (info.webAudio) {\n                    audio = {};\n                    audio.resource = info;\n                    audio.paused = false;\n                    audio.currentPosition = 0;\n                    audio.play = function() {\n                        SDL.playWebAudio(this)\n                    };\n                    audio.pause = function() {\n                        SDL.pauseWebAudio(this)\n                    }\n                } else if (info.audio) {\n                    audio = info.audio\n                }\n                audio[\"onended\"] = function() {\n                    if (SDL.music.audio === this || SDL.music.audio?.webAudioNode === this) {\n                        _Mix_HaltMusic()\n                    }\n                };\n                audio.loop = loops != 0 && loops != 1;\n                audio.volume = SDL.music.volume;\n                SDL.music.audio = audio;\n                audio.play();\n                return 0\n            }\n            _Mix_PlayMusic.sig = \"ipi\";\n            var _Mix_PauseMusic = () => {\n                var audio = SDL.music.audio;\n                audio?.pause()\n            };\n            _Mix_PauseMusic.sig = \"v\";\n            var _Mix_ResumeMusic = () => {\n                var audio = SDL.music.audio;\n                audio?.play()\n            };\n            _Mix_ResumeMusic.sig = \"v\";\n            var _Mix_FadeInMusicPos = _Mix_PlayMusic;\n            _Mix_FadeInMusicPos.sig = \"ipiid\";\n            var _Mix_FadeOutMusic = _Mix_HaltMusic;\n            _Mix_FadeOutMusic.sig = \"ii\";\n            var _Mix_PlayingMusic = () => SDL.music.audio && !SDL.music.audio.paused ? 1 : 0;\n            _Mix_PlayingMusic.sig = \"i\";\n            var _Mix_Playing = channel => {\n                if (channel === -1) {\n                    var count = 0;\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        count += _Mix_Playing(i)\n                    }\n                    return count\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio && !info.audio.paused) {\n                    return 1\n                }\n                return 0\n            };\n            _Mix_Playing.sig = \"ii\";\n            var _Mix_Pause = channel => {\n                if (channel === -1) {\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        _Mix_Pause(i)\n                    }\n                    return\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio) {\n                    info.audio.pause()\n                } else {}\n            };\n            _Mix_Pause.sig = \"vi\";\n            var _Mix_Paused = channel => {\n                if (channel === -1) {\n                    var pausedCount = 0;\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        pausedCount += _Mix_Paused(i)\n                    }\n                    return pausedCount\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio?.paused) {\n                    return 1\n                }\n                return 0\n            };\n            _Mix_Paused.sig = \"ii\";\n            var _Mix_PausedMusic = () => SDL.music.audio?.paused ? 1 : 0;\n            _Mix_PausedMusic.sig = \"i\";\n            var _Mix_Resume = channel => {\n                if (channel === -1) {\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        _Mix_Resume(i)\n                    }\n                    return\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio) info.audio.play()\n            };\n            _Mix_Resume.sig = \"vi\";\n            var _TTF_Init = () => {\n                try {\n                    var offscreenCanvas = new OffscreenCanvas(0, 0);\n                    SDL.ttfContext = offscreenCanvas.getContext(\"2d\");\n                    if (typeof SDL.ttfContext.measureText != \"function\") {\n                        throw \"bad context\"\n                    }\n                } catch (ex) {\n                    var canvas = document.createElement(\"canvas\");\n                    SDL.ttfContext = canvas.getContext(\"2d\")\n                }\n                return 0\n            };\n            _TTF_Init.sig = \"i\";\n\n            function _TTF_OpenFont(name, size) {\n                name >>>= 0;\n                name = PATH.normalize(UTF8ToString(name));\n                var id = SDL.fonts.length;\n                SDL.fonts.push({\n                    name,\n                    size\n                });\n                return id\n            }\n            _TTF_OpenFont.sig = \"ppi\";\n\n            function _TTF_CloseFont(font) {\n                font >>>= 0;\n                SDL.fonts[font] = null\n            }\n            _TTF_CloseFont.sig = \"vp\";\n\n            function _TTF_RenderText_Solid(font, text, color) {\n                font >>>= 0;\n                text >>>= 0;\n                color >>>= 0;\n                text = UTF8ToString(text) || \" \";\n                var fontData = SDL.fonts[font];\n                var w = SDL.estimateTextWidth(fontData, text);\n                var h = fontData.size;\n                color = SDL.loadColorToCSSRGB(color);\n                var fontString = SDL.makeFontString(h, fontData.name);\n                var surf = SDL.makeSurface(w, h, 0, false, \"text:\" + text);\n                var surfData = SDL.surfaces[surf];\n                surfData.ctx.save();\n                surfData.ctx.fillStyle = color;\n                surfData.ctx.font = fontString;\n                surfData.ctx.textBaseline = \"bottom\";\n                surfData.ctx.fillText(text, 0, h | 0);\n                surfData.ctx.restore();\n                return surf\n            }\n            _TTF_RenderText_Solid.sig = \"pppp\";\n            var _TTF_RenderText_Blended = _TTF_RenderText_Solid;\n            _TTF_RenderText_Blended.sig = \"pppp\";\n            var _TTF_RenderText_Shaded = _TTF_RenderText_Solid;\n            _TTF_RenderText_Shaded.sig = \"ppppp\";\n            var _TTF_RenderUTF8_Solid = _TTF_RenderText_Solid;\n            _TTF_RenderUTF8_Solid.sig = \"pppp\";\n\n            function _TTF_SizeText(font, text, w, h) {\n                font >>>= 0;\n                text >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                var fontData = SDL.fonts[font];\n                if (w) {\n                    HEAP32[w >>> 2 >>> 0] = SDL.estimateTextWidth(fontData, UTF8ToString(text))\n                }\n                if (h) {\n                    HEAP32[h >>> 2 >>> 0] = fontData.size\n                }\n                return 0\n            }\n            _TTF_SizeText.sig = \"ipppp\";\n            var _TTF_SizeUTF8 = _TTF_SizeText;\n            _TTF_SizeUTF8.sig = \"ipppp\";\n\n            function _TTF_GlyphMetrics(font, ch, minx, maxx, miny, maxy, advance) {\n                font >>>= 0;\n                minx >>>= 0;\n                maxx >>>= 0;\n                miny >>>= 0;\n                maxy >>>= 0;\n                advance >>>= 0;\n                var fontData = SDL.fonts[font];\n                var width = SDL.estimateTextWidth(fontData, String.fromCharCode(ch));\n                if (advance) {\n                    HEAP32[advance >>> 2 >>> 0] = width\n                }\n                if (minx) {\n                    HEAP32[minx >>> 2 >>> 0] = 0\n                }\n                if (maxx) {\n                    HEAP32[maxx >>> 2 >>> 0] = width\n                }\n                if (miny) {\n                    HEAP32[miny >>> 2 >>> 0] = 0\n                }\n                if (maxy) {\n                    HEAP32[maxy >>> 2 >>> 0] = fontData.size\n                }\n            }\n            _TTF_GlyphMetrics.sig = \"ipippppp\";\n\n            function _TTF_FontAscent(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size * .98 | 0\n            }\n            _TTF_FontAscent.sig = \"ip\";\n\n            function _TTF_FontDescent(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size * .02 | 0\n            }\n            _TTF_FontDescent.sig = \"ip\";\n\n            function _TTF_FontHeight(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size\n            }\n            _TTF_FontHeight.sig = \"ip\";\n            var _TTF_FontLineSkip = _TTF_FontHeight;\n            _TTF_FontLineSkip.sig = \"ip\";\n            var _TTF_Quit = () => out(\"TTF_Quit called (and ignored)\");\n            _TTF_Quit.sig = \"v\";\n            var SDL_gfx = {\n                drawRectangle: (surf, x1, y1, x2, y2, action, cssColor) => {\n                    x1 = x1 << 16 >> 16;\n                    y1 = y1 << 16 >> 16;\n                    x2 = x2 << 16 >> 16;\n                    y2 = y2 << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    var x = x1 < x2 ? x1 : x2;\n                    var y = y1 < y2 ? y1 : y2;\n                    var w = Math.abs(x2 - x1);\n                    var h = Math.abs(y2 - y1);\n                    surfData.ctx.save();\n                    surfData.ctx[action + \"Style\"] = cssColor;\n                    surfData.ctx[action + \"Rect\"](x, y, w, h);\n                    surfData.ctx.restore()\n                },\n                drawLine: (surf, x1, y1, x2, y2, cssColor) => {\n                    x1 = x1 << 16 >> 16;\n                    y1 = y1 << 16 >> 16;\n                    x2 = x2 << 16 >> 16;\n                    y2 = y2 << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    surfData.ctx.save();\n                    surfData.ctx.strokeStyle = cssColor;\n                    surfData.ctx.beginPath();\n                    surfData.ctx.moveTo(x1, y1);\n                    surfData.ctx.lineTo(x2, y2);\n                    surfData.ctx.stroke();\n                    surfData.ctx.restore()\n                },\n                drawEllipse: (surf, x, y, rx, ry, action, cssColor) => {\n                    x = x << 16 >> 16;\n                    y = y << 16 >> 16;\n                    rx = rx << 16 >> 16;\n                    ry = ry << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    surfData.ctx.save();\n                    surfData.ctx.beginPath();\n                    surfData.ctx.translate(x, y);\n                    surfData.ctx.scale(rx, ry);\n                    surfData.ctx.arc(0, 0, 1, 0, 2 * Math.PI);\n                    surfData.ctx.restore();\n                    surfData.ctx.save();\n                    surfData.ctx[action + \"Style\"] = cssColor;\n                    surfData.ctx[action]();\n                    surfData.ctx.restore()\n                },\n                translateColorToCSSRGBA: rgba => `rgba(${rgba>>>24},${rgba>>16&255},${rgba>>8&255},${rgba&255})`\n            };\n\n            function _boxColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"fill\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _boxColor.sig = \"ipiiiii\";\n\n            function _boxRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"fill\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _boxRGBA.sig = \"ipiiiiiiii\";\n\n            function _rectangleColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"stroke\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _rectangleColor.sig = \"ipiiiii\";\n\n            function _rectangleRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"stroke\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _rectangleRGBA.sig = \"ipiiiiiiii\";\n\n            function _ellipseColor(surf, x, y, rx, ry, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"stroke\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _ellipseColor.sig = \"ipiiiii\";\n\n            function _ellipseRGBA(surf, x, y, rx, ry, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"stroke\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _ellipseRGBA.sig = \"ipiiiiiiii\";\n\n            function _filledEllipseColor(surf, x, y, rx, ry, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"fill\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _filledEllipseColor.sig = \"ipiiiii\";\n\n            function _filledEllipseRGBA(surf, x, y, rx, ry, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"fill\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _filledEllipseRGBA.sig = \"ipiiiiiiii\";\n\n            function _lineColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _lineColor.sig = \"ipiiiii\";\n\n            function _lineRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _lineRGBA.sig = \"ipiiiiiiii\";\n\n            function _pixelRGBA(surf, x1, y1, r, g, b, a) {\n                surf >>>= 0;\n                return _boxRGBA(surf, x1, y1, x1, y1, r, g, b, a)\n            }\n            _pixelRGBA.sig = \"ipiiiiii\";\n            var _SDL_GL_SetAttribute = (attr, value) => {\n                if (!(attr in SDL.glAttributes)) {\n                    abort(\"Unknown SDL GL attribute (\" + attr + \"). Please check if your SDL version is supported.\")\n                }\n                SDL.glAttributes[attr] = value\n            };\n            _SDL_GL_SetAttribute.sig = \"iii\";\n\n            function _SDL_GL_GetAttribute(attr, value) {\n                value >>>= 0;\n                if (!(attr in SDL.glAttributes)) {\n                    abort(\"Unknown SDL GL attribute (\" + attr + \"). Please check if your SDL version is supported.\")\n                }\n                if (value) HEAP32[value >>> 2 >>> 0] = SDL.glAttributes[attr];\n                return 0\n            }\n            _SDL_GL_GetAttribute.sig = \"iip\";\n            var _SDL_GL_SwapBuffers = () => {\n                Browser.doSwapBuffers?.()\n            };\n            _SDL_GL_SwapBuffers.sig = \"v\";\n\n            function _SDL_GL_ExtensionSupported(extension) {\n                extension >>>= 0;\n                return Module.ctx.getExtension(extension) | 0\n            }\n            _SDL_GL_ExtensionSupported.sig = \"ip\";\n\n            function _SDL_DestroyWindow(window) {\n                window >>>= 0\n            }\n            _SDL_DestroyWindow.sig = \"vp\";\n\n            function _SDL_DestroyRenderer(renderer) {\n                renderer >>>= 0\n            }\n            _SDL_DestroyRenderer.sig = \"vp\";\n\n            function _SDL_GetWindowFlags(window) {\n                window >>>= 0;\n                if (Browser.isFullscreen) {\n                    return 1\n                }\n                return 0\n            }\n            _SDL_GetWindowFlags.sig = \"ip\";\n\n            function _SDL_GL_SwapWindow(window) {\n                window >>>= 0\n            }\n            _SDL_GL_SwapWindow.sig = \"vp\";\n\n            function _SDL_GL_MakeCurrent(window, context) {\n                window >>>= 0;\n                context >>>= 0\n            }\n            _SDL_GL_MakeCurrent.sig = \"ipp\";\n\n            function _SDL_GL_DeleteContext(context) {\n                context >>>= 0\n            }\n            _SDL_GL_DeleteContext.sig = \"vp\";\n            var _SDL_GL_GetSwapInterval = () => {\n                if (MainLoop.timingMode == 1) return MainLoop.timingValue;\n                else return 0\n            };\n            _SDL_GL_GetSwapInterval.sig = \"i\";\n            var _SDL_GL_SetSwapInterval = state => {\n                _emscripten_set_main_loop_timing(1, state)\n            };\n            _SDL_GL_SetSwapInterval.sig = \"ii\";\n\n            function _SDL_SetWindowTitle(window, title) {\n                window >>>= 0;\n                title >>>= 0;\n                if (title) document.title = UTF8ToString(title)\n            }\n            _SDL_SetWindowTitle.sig = \"vpp\";\n\n            function _SDL_GetWindowSize(window, width, height) {\n                window >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var w = Module[\"canvas\"].width;\n                var h = Module[\"canvas\"].height;\n                if (width) HEAP32[width >>> 2 >>> 0] = w;\n                if (height) HEAP32[height >>> 2 >>> 0] = h\n            }\n            _SDL_GetWindowSize.sig = \"vppp\";\n\n            function _SDL_LogSetOutputFunction(callback, userdata) {\n                callback >>>= 0;\n                userdata >>>= 0\n            }\n            _SDL_LogSetOutputFunction.sig = \"vpp\";\n\n            function _SDL_SetWindowFullscreen(window, fullscreen) {\n                window >>>= 0;\n                if (Browser.isFullscreen) {\n                    Module[\"canvas\"].exitFullscreen();\n                    return 1\n                }\n                return 0\n            }\n            _SDL_SetWindowFullscreen.sig = \"ipi\";\n            var _SDL_ClearError = () => {};\n            _SDL_ClearError.sig = \"v\";\n            var _SDL_SetGamma = (r, g, b) => -1;\n            _SDL_SetGamma.sig = \"ifff\";\n\n            function _SDL_SetGammaRamp(redTable, greenTable, blueTable) {\n                redTable >>>= 0;\n                greenTable >>>= 0;\n                blueTable >>>= 0;\n                return -1\n            }\n            _SDL_SetGammaRamp.sig = \"ippp\";\n            var _SDL_NumJoysticks = () => {\n                var count = 0;\n                var gamepads = SDL.getGamepads();\n                for (var i = 0; i < gamepads.length; i++) {\n                    if (gamepads[i] !== undefined) count++\n                }\n                return count\n            };\n            _SDL_NumJoysticks.sig = \"i\";\n\n            function _SDL_JoystickName(deviceIndex) {\n                var gamepad = SDL.getGamepad(deviceIndex);\n                if (gamepad) {\n                    var name = gamepad.id;\n                    if (SDL.joystickNamePool.hasOwnProperty(name)) {\n                        return SDL.joystickNamePool[name]\n                    }\n                    return SDL.joystickNamePool[name] = stringToNewUTF8(name)\n                }\n                return 0\n            }\n            _SDL_JoystickName.sig = \"pi\";\n\n            function _SDL_JoystickOpen(deviceIndex) {\n                var gamepad = SDL.getGamepad(deviceIndex);\n                if (gamepad) {\n                    var joystick = deviceIndex + 1;\n                    SDL.recordJoystickState(joystick, gamepad);\n                    return joystick\n                }\n                return 0\n            }\n            _SDL_JoystickOpen.sig = \"pi\";\n            var _SDL_JoystickOpened = deviceIndex => SDL.lastJoystickState.hasOwnProperty(deviceIndex + 1) ? 1 : 0;\n            _SDL_JoystickOpened.sig = \"ii\";\n\n            function _SDL_JoystickIndex(joystick) {\n                joystick >>>= 0;\n                return joystick - 1\n            }\n            _SDL_JoystickIndex.sig = \"ip\";\n\n            function _SDL_JoystickNumAxes(joystick) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad) {\n                    return gamepad.axes.length\n                }\n                return 0\n            }\n            _SDL_JoystickNumAxes.sig = \"ip\";\n\n            function _SDL_JoystickNumBalls(joystick) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickNumBalls.sig = \"ip\";\n\n            function _SDL_JoystickNumHats(joystick) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickNumHats.sig = \"ip\";\n\n            function _SDL_JoystickNumButtons(joystick) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad) {\n                    return gamepad.buttons.length\n                }\n                return 0\n            }\n            _SDL_JoystickNumButtons.sig = \"ip\";\n            var _SDL_JoystickUpdate = () => SDL.queryJoysticks();\n            _SDL_JoystickUpdate.sig = \"v\";\n            var _SDL_JoystickEventState = state => {\n                if (state < 0) {\n                    return SDL.joystickEventState\n                }\n                return SDL.joystickEventState = state\n            };\n            _SDL_JoystickEventState.sig = \"ii\";\n\n            function _SDL_JoystickGetAxis(joystick, axis) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad && gamepad.axes.length > axis) {\n                    return SDL.joystickAxisValueConversion(gamepad.axes[axis])\n                }\n                return 0\n            }\n            _SDL_JoystickGetAxis.sig = \"ipi\";\n\n            function _SDL_JoystickGetHat(joystick, hat) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickGetHat.sig = \"ipi\";\n\n            function _SDL_JoystickGetBall(joystick, ball, dxptr, dyptr) {\n                joystick >>>= 0;\n                dxptr >>>= 0;\n                dyptr >>>= 0;\n                return -1\n            }\n            _SDL_JoystickGetBall.sig = \"ipipp\";\n\n            function _SDL_JoystickGetButton(joystick, button) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad && gamepad.buttons.length > button) {\n                    return SDL.getJoystickButtonState(gamepad.buttons[button]) ? 1 : 0\n                }\n                return 0\n            }\n            _SDL_JoystickGetButton.sig = \"ipi\";\n\n            function _SDL_JoystickClose(joystick) {\n                joystick >>>= 0;\n                delete SDL.lastJoystickState[joystick]\n            }\n            _SDL_JoystickClose.sig = \"vp\";\n            var _SDL_InitSubSystem = flags => 0;\n            _SDL_InitSubSystem.sig = \"ii\";\n\n            function _SDL_RWFromConstMem(mem, size) {\n                mem >>>= 0;\n                var id = SDL.rwops.length;\n                SDL.rwops.push({\n                    bytes: mem,\n                    count: size\n                });\n                return id\n            }\n            _SDL_RWFromConstMem.sig = \"ppi\";\n            var _SDL_RWFromMem = _SDL_RWFromConstMem;\n            _SDL_RWFromMem.sig = \"ppi\";\n            var _SDL_GetNumAudioDrivers = () => 1;\n            _SDL_GetNumAudioDrivers.sig = \"i\";\n\n            function _SDL_GetCurrentAudioDriver() {\n                return stringToNewUTF8(\"Emscripten Audio\")\n            }\n            _SDL_GetCurrentAudioDriver.sig = \"p\";\n            var _SDL_GetScancodeFromKey = key => SDL.scanCodes[key];\n            _SDL_GetScancodeFromKey.sig = \"ii\";\n\n            function _SDL_GetAudioDriver(index) {\n                return _SDL_GetCurrentAudioDriver()\n            }\n            _SDL_GetAudioDriver.sig = \"pi\";\n            var _SDL_EnableUNICODE = on => {\n                var ret = SDL.unicode || 0;\n                SDL.unicode = on;\n                return ret\n            };\n            _SDL_EnableUNICODE.sig = \"ii\";\n            var _SDL_AddTimer = function(interval, callback, param) {\n                callback >>>= 0;\n                param >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(callback)(interval, param), interval)\n            };\n            _SDL_AddTimer.sig = \"iipp\";\n            var _SDL_RemoveTimer = id => {\n                clearTimeout(id);\n                return true\n            };\n            _SDL_RemoveTimer.sig = \"ii\";\n\n            function _SDL_CreateThread(fs, data, pfnBeginThread, pfnEndThread) {\n                fs >>>= 0;\n                data >>>= 0;\n                throw \"SDL threads cannot be supported in the web platform because they assume shared state. See emscripten_create_worker etc. for a message-passing concurrency model that does let you run code in another thread.\"\n            }\n            _SDL_CreateThread.sig = \"ppp\";\n\n            function _SDL_WaitThread(thread, status) {\n                thread >>>= 0;\n                status >>>= 0;\n                throw \"SDL_WaitThread\"\n            }\n            _SDL_WaitThread.sig = \"vpp\";\n\n            function _SDL_GetThreadID(thread) {\n                thread >>>= 0;\n                throw \"SDL_GetThreadID\"\n            }\n            _SDL_GetThreadID.sig = \"pp\";\n\n            function _SDL_ThreadID() {\n                return 0\n            }\n            _SDL_ThreadID.sig = \"p\";\n\n            function _SDL_AllocRW() {\n                throw \"SDL_AllocRW: TODO\"\n            }\n            _SDL_AllocRW.sig = \"p\";\n\n            function _SDL_CondBroadcast(cond) {\n                cond >>>= 0;\n                throw \"SDL_CondBroadcast: TODO\"\n            }\n            _SDL_CondBroadcast.sig = \"ip\";\n\n            function _SDL_CondWaitTimeout(cond, mutex, ms) {\n                cond >>>= 0;\n                mutex >>>= 0;\n                throw \"SDL_CondWaitTimeout: TODO\"\n            }\n            _SDL_CondWaitTimeout.sig = \"ippi\";\n            var _SDL_WM_IconifyWindow = () => {\n                throw \"SDL_WM_IconifyWindow TODO\"\n            };\n            _SDL_WM_IconifyWindow.sig = \"i\";\n\n            function _Mix_SetPostMix(func, arg) {\n                func >>>= 0;\n                arg >>>= 0;\n                return warnOnce(\"Mix_SetPostMix: TODO\")\n            }\n            _Mix_SetPostMix.sig = \"vpp\";\n\n            function _Mix_VolumeChunk(chunk, volume) {\n                chunk >>>= 0;\n                throw \"Mix_VolumeChunk: TODO\"\n            }\n            _Mix_VolumeChunk.sig = \"ipi\";\n            var _Mix_SetPosition = (channel, angle, distance) => {\n                throw \"Mix_SetPosition: TODO\"\n            };\n            _Mix_SetPosition.sig = \"iiii\";\n\n            function _Mix_QuerySpec(frequency, format, channels) {\n                frequency >>>= 0;\n                format >>>= 0;\n                channels >>>= 0;\n                throw \"Mix_QuerySpec: TODO\"\n            }\n            _Mix_QuerySpec.sig = \"ippp\";\n\n            function _Mix_FadeInChannelTimed(channel, chunk, loop, ms, ticks) {\n                chunk >>>= 0;\n                throw \"Mix_FadeInChannelTimed\"\n            }\n            _Mix_FadeInChannelTimed.sig = \"iipiii\";\n            var _Mix_FadeOutChannel = () => {\n                throw \"Mix_FadeOutChannel\"\n            };\n            _Mix_FadeOutChannel.sig = \"iii\";\n\n            function _Mix_Linked_Version() {\n                throw \"Mix_Linked_Version: TODO\"\n            }\n            _Mix_Linked_Version.sig = \"p\";\n\n            function _SDL_SaveBMP_RW(surface, dst, freedst) {\n                surface >>>= 0;\n                dst >>>= 0;\n                throw \"SDL_SaveBMP_RW: TODO\"\n            }\n            _SDL_SaveBMP_RW.sig = \"ippi\";\n\n            function _SDL_WM_SetIcon(icon, mask) {\n                icon >>>= 0;\n                mask >>>= 0\n            }\n            _SDL_WM_SetIcon.sig = \"vpp\";\n            var _SDL_HasRDTSC = () => 0;\n            _SDL_HasRDTSC.sig = \"i\";\n            var _SDL_HasMMX = () => 0;\n            _SDL_HasMMX.sig = \"i\";\n            var _SDL_HasMMXExt = () => 0;\n            _SDL_HasMMXExt.sig = \"i\";\n            var _SDL_Has3DNow = () => 0;\n            _SDL_Has3DNow.sig = \"i\";\n            var _SDL_Has3DNowExt = () => 0;\n            _SDL_Has3DNowExt.sig = \"i\";\n            var _SDL_HasSSE = () => 0;\n            _SDL_HasSSE.sig = \"i\";\n            var _SDL_HasSSE2 = () => 0;\n            _SDL_HasSSE2.sig = \"i\";\n            var _SDL_HasAltiVec = () => 0;\n            _SDL_HasAltiVec.sig = \"i\";\n            var ALLOC_NORMAL = 0;\n            var ALLOC_STACK = 1;\n            var allocate = (slab, allocator) => {\n                var ret;\n                if (allocator == ALLOC_STACK) {\n                    ret = stackAlloc(slab.length)\n                } else {\n                    ret = _malloc(slab.length)\n                }\n                if (!slab.subarray && !slab.slice) {\n                    slab = new Uint8Array(slab)\n                }\n                HEAPU8.set(slab, ret >>> 0);\n                return ret\n            };\n            var writeStringToMemory = (string, buffer, dontAddNull) => {\n                warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");\n                var lastChar, end;\n                if (dontAddNull) {\n                    end = buffer + lengthBytesUTF8(string);\n                    lastChar = HEAP8[end >>> 0]\n                }\n                stringToUTF8(string, buffer, Infinity);\n                if (dontAddNull) HEAP8[end >>> 0] = lastChar\n            };\n            var writeAsciiToMemory = (str, buffer, dontAddNull) => {\n                for (var i = 0; i < str.length; ++i) {\n                    HEAP8[buffer++ >>> 0] = str.charCodeAt(i)\n                }\n                if (!dontAddNull) HEAP8[buffer >>> 0] = 0\n            };\n            var allocateUTF8 = stringToNewUTF8;\n            var allocateUTF8OnStack = stringToUTF8OnStack;\n            var setErrNo = value => {\n                HEAP32[___errno_location() >>> 2 >>> 0] = value;\n                return value\n            };\n            var demangle = func => {\n                demangle.recursionGuard = (demangle.recursionGuard | 0) + 1;\n                if (demangle.recursionGuard > 1) return func;\n                return withStackSave(() => {\n                    try {\n                        var s = func;\n                        if (s.startsWith(\"__Z\")) s = s.substr(1);\n                        var buf = stringToUTF8OnStack(s);\n                        var status = stackAlloc(4);\n                        var ret = ___cxa_demangle(buf, 0, 0, status);\n                        if (HEAP32[status >>> 2 >>> 0] === 0 && ret) {\n                            return UTF8ToString(ret)\n                        }\n                    } catch (e) {} finally {\n                        _free(ret);\n                        if (demangle.recursionGuard < 2) --demangle.recursionGuard\n                    }\n                    return func\n                })\n            };\n            var stackTrace = () => {\n                var js = jsStackTrace();\n                if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n                return js\n            };\n            var print = out;\n            var printErr = err;\n            var _emscripten_is_main_browser_thread = () => !ENVIRONMENT_IS_WORKER;\n            var tupleRegistrations = {};\n            var structRegistrations = {};\n            var getFunctionName = signature => {\n                signature = signature.trim();\n                const argsIndex = signature.indexOf(\"(\");\n                if (argsIndex !== -1) {\n                    return signature.substr(0, argsIndex)\n                } else {\n                    return signature\n                }\n            };\n            var getFunctionArgsName = signature => {\n                signature = signature.trim();\n                const argsIndex = signature.indexOf(\"(\") + 1;\n                if (argsIndex !== 0) {\n                    return signature.substr(argsIndex, signature.length - argsIndex - 1).replaceAll(\" \", \"\").split(\",\").filter(n => n.length)\n                } else {\n                    return []\n                }\n            };\n            var heap32VectorToArray = (count, firstElement) => {\n                var array = [];\n                for (var i = 0; i < count; i++) {\n                    array.push(HEAPU32[firstElement + i * 4 >>> 2 >>> 0])\n                }\n                return array\n            };\n\n            function usesDestructorStack(argTypes) {\n                for (var i = 1; i < argTypes.length; ++i) {\n                    if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) {\n                        return true\n                    }\n                }\n                return false\n            }\n\n            function createJsInvokerSignature(argTypes, isClassMethodFunc, returns, isAsync) {\n                const signature = [isClassMethodFunc ? \"t\" : \"f\", returns ? \"t\" : \"f\", isAsync ? \"t\" : \"f\"];\n                for (let i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                    const arg = argTypes[i];\n                    let destructorSig = \"\";\n                    if (arg.destructorFunction === undefined) {\n                        destructorSig = \"u\"\n                    } else if (arg.destructorFunction === null) {\n                        destructorSig = \"n\"\n                    } else {\n                        destructorSig = \"t\"\n                    }\n                    signature.push(destructorSig)\n                }\n                return signature.join(\"\")\n            }\n\n            function checkArgCount(numArgs, minArgs, maxArgs, humanName, throwBindingError) {\n                if (numArgs < minArgs || numArgs > maxArgs) {\n                    var argCountMessage = minArgs == maxArgs ? minArgs : `${minArgs} to ${maxArgs}`;\n                    throwBindingError(`function ${humanName} called with ${numArgs} arguments, expected ${argCountMessage}`)\n                }\n            }\n\n            function getRequiredArgCount(argTypes) {\n                var requiredArgCount = argTypes.length - 2;\n                for (var i = argTypes.length - 1; i >= 2; --i) {\n                    if (!argTypes[i].optional) {\n                        break\n                    }\n                    requiredArgCount--\n                }\n                return requiredArgCount\n            }\n\n            function createJsInvoker(argTypes, isClassMethodFunc, returns, isAsync) {\n                var needsDestructorStack = usesDestructorStack(argTypes);\n                var argCount = argTypes.length - 2;\n                var argsList = [];\n                var argsListWired = [\"fn\"];\n                if (isClassMethodFunc) {\n                    argsListWired.push(\"thisWired\")\n                }\n                for (var i = 0; i < argCount; ++i) {\n                    argsList.push(`arg${i}`);\n                    argsListWired.push(`arg${i}Wired`)\n                }\n                argsList = argsList.join(\",\");\n                argsListWired = argsListWired.join(\",\");\n                var invokerFnBody = `return function (${argsList}) {\\n`;\n                if (needsDestructorStack) {\n                    invokerFnBody += \"var destructors = [];\\n\"\n                }\n                var dtorStack = needsDestructorStack ? \"destructors\" : \"null\";\n                var args1 = [\"humanName\", \"throwBindingError\", \"invoker\", \"fn\", \"runDestructors\", \"retType\", \"classParam\"];\n                if (isClassMethodFunc) {\n                    invokerFnBody += `var thisWired = classParam['toWireType'](${dtorStack}, this);\\n`\n                }\n                for (var i = 0; i < argCount; ++i) {\n                    invokerFnBody += `var arg${i}Wired = argType${i}['toWireType'](${dtorStack}, arg${i});\\n`;\n                    args1.push(`argType${i}`)\n                }\n                invokerFnBody += (returns || isAsync ? \"var rv = \" : \"\") + `invoker(${argsListWired});\\n`;\n                var returnVal = returns ? \"rv\" : \"\";\n                if (needsDestructorStack) {\n                    invokerFnBody += \"runDestructors(destructors);\\n\"\n                } else {\n                    for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                        var paramName = i === 1 ? \"thisWired\" : \"arg\" + (i - 2) + \"Wired\";\n                        if (argTypes[i].destructorFunction !== null) {\n                            invokerFnBody += `${paramName}_dtor(${paramName});\\n`;\n                            args1.push(`${paramName}_dtor`)\n                        }\n                    }\n                }\n                if (returns) {\n                    invokerFnBody += \"var ret = retType['fromWireType'](rv);\\n\" + \"return ret;\\n\"\n                } else {}\n                invokerFnBody += \"}\\n\";\n                return [args1, invokerFnBody]\n            }\n            var extendError = (baseErrorType, errorName) => {\n                var errorClass = createNamedFunction(errorName, function(message) {\n                    this.name = errorName;\n                    this.message = message;\n                    var stack = new Error(message).stack;\n                    if (stack !== undefined) {\n                        this.stack = this.toString() + \"\\n\" + stack.replace(/^Error(:[^\\n]*)?\\n/, \"\")\n                    }\n                });\n                errorClass.prototype = Object.create(baseErrorType.prototype);\n                errorClass.prototype.constructor = errorClass;\n                errorClass.prototype.toString = function() {\n                    if (this.message === undefined) {\n                        return this.name\n                    } else {\n                        return `${this.name}: ${this.message}`\n                    }\n                };\n                return errorClass\n            };\n            var UnboundTypeError;\n            var PureVirtualError;\n            var EmValOptionalType = Object.assign({\n                optional: true\n            }, EmValType);\n            var throwUnboundTypeError = (message, types) => {\n                var unboundTypes = [];\n                var seen = {};\n\n                function visit(type) {\n                    if (seen[type]) {\n                        return\n                    }\n                    if (registeredTypes[type]) {\n                        return\n                    }\n                    if (typeDependencies[type]) {\n                        typeDependencies[type].forEach(visit);\n                        return\n                    }\n                    unboundTypes.push(type);\n                    seen[type] = true\n                }\n                types.forEach(visit);\n                throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([\", \"]))\n            };\n            var ensureOverloadTable = (proto, methodName, humanName) => {\n                if (undefined === proto[methodName].overloadTable) {\n                    var prevFunc = proto[methodName];\n                    proto[methodName] = function(...args) {\n                        if (!proto[methodName].overloadTable.hasOwnProperty(args.length)) {\n                            throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)\n                        }\n                        return proto[methodName].overloadTable[args.length].apply(this, args)\n                    };\n                    proto[methodName].overloadTable = [];\n                    proto[methodName].overloadTable[prevFunc.argCount] = prevFunc\n                }\n            };\n            var exposePublicSymbol = (name, value, numArguments) => {\n                if (Module.hasOwnProperty(name)) {\n                    if (undefined === numArguments || undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments]) {\n                        throwBindingError(`Cannot register public name '${name}' twice`)\n                    }\n                    ensureOverloadTable(Module, name, name);\n                    if (Module[name].overloadTable.hasOwnProperty(numArguments)) {\n                        throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)\n                    }\n                    Module[name].overloadTable[numArguments] = value\n                } else {\n                    Module[name] = value;\n                    Module[name].argCount = numArguments\n                }\n            };\n            var replacePublicSymbol = (name, value, numArguments) => {\n                if (!Module.hasOwnProperty(name)) {\n                    throwInternalError(\"Replacing nonexistent public symbol\")\n                }\n                if (undefined !== Module[name].overloadTable && undefined !== numArguments) {\n                    Module[name].overloadTable[numArguments] = value\n                } else {\n                    Module[name] = value;\n                    Module[name].argCount = numArguments\n                }\n            };\n            var registeredInstances = {};\n            var getBasestPointer = (class_, ptr) => {\n                if (ptr === undefined) {\n                    throwBindingError(\"ptr should not be undefined\")\n                }\n                while (class_.baseClass) {\n                    ptr = class_.upcast(ptr);\n                    class_ = class_.baseClass\n                }\n                return ptr\n            };\n            var registerInheritedInstance = (class_, ptr, instance) => {\n                ptr = getBasestPointer(class_, ptr);\n                if (registeredInstances.hasOwnProperty(ptr)) {\n                    throwBindingError(`Tried to register registered instance: ${ptr}`)\n                } else {\n                    registeredInstances[ptr] = instance\n                }\n            };\n            var unregisterInheritedInstance = (class_, ptr) => {\n                ptr = getBasestPointer(class_, ptr);\n                if (registeredInstances.hasOwnProperty(ptr)) {\n                    delete registeredInstances[ptr]\n                } else {\n                    throwBindingError(`Tried to unregister unregistered instance: ${ptr}`)\n                }\n            };\n            var getInheritedInstance = (class_, ptr) => {\n                ptr = getBasestPointer(class_, ptr);\n                return registeredInstances[ptr]\n            };\n            var getInheritedInstanceCount = () => Object.keys(registeredInstances).length;\n            var getLiveInheritedInstances = () => {\n                var rv = [];\n                for (var k in registeredInstances) {\n                    if (registeredInstances.hasOwnProperty(k)) {\n                        rv.push(registeredInstances[k])\n                    }\n                }\n                return rv\n            };\n            var registeredPointers = {};\n            var enumReadValueFromPointer = (name, width, signed) => {\n                switch (width) {\n                    case 1:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP8[pointer >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU8[pointer >>> 0])\n                        };\n                    case 2:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP16[pointer >>> 1 >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU16[pointer >>> 1 >>> 0])\n                        };\n                    case 4:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP32[pointer >>> 2 >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU32[pointer >>> 2 >>> 0])\n                        };\n                    default:\n                        throw new TypeError(`invalid integer width (${width}): ${name}`)\n                }\n            };\n\n            function __embind_register_user_type(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                __embind_register_emval(rawType)\n            }\n            __embind_register_user_type.sig = \"vpp\";\n\n            function __embind_register_optional(rawOptionalType, rawType) {\n                rawOptionalType >>>= 0;\n                rawType >>>= 0;\n                registerType(rawOptionalType, EmValOptionalType)\n            }\n            __embind_register_optional.sig = \"vpp\";\n\n            function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, isAsync) {\n                var argCount = argTypes.length;\n                if (argCount < 2) {\n                    throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")\n                }\n                var isClassMethodFunc = argTypes[1] !== null && classType !== null;\n                var needsDestructorStack = usesDestructorStack(argTypes);\n                var returns = argTypes[0].name !== \"void\";\n                var expectedArgCount = argCount - 2;\n                var closureArgs = [humanName, throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];\n                for (var i = 0; i < argCount - 2; ++i) {\n                    closureArgs.push(argTypes[i + 2])\n                }\n                if (!needsDestructorStack) {\n                    for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                        if (argTypes[i].destructorFunction !== null) {\n                            closureArgs.push(argTypes[i].destructorFunction)\n                        }\n                    }\n                }\n                let [args, invokerFnBody] = createJsInvoker(argTypes, isClassMethodFunc, returns, isAsync);\n                args.push(invokerFnBody);\n                var invokerFn = newFunc(Function, args)(...closureArgs);\n                return createNamedFunction(humanName, invokerFn)\n            }\n            var embind__requireFunction = (signature, rawFunction) => {\n                signature = readLatin1String(signature);\n\n                function makeDynCaller() {\n                    if (signature.includes(\"j\")) {\n                        return getDynCaller(signature, rawFunction)\n                    }\n                    if (signature.includes(\"p\")) {\n                        return getDynCaller(signature, rawFunction)\n                    }\n                    return getWasmTableEntry(rawFunction)\n                }\n                var fp = makeDynCaller();\n                if (typeof fp != \"function\") {\n                    throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)\n                }\n                return fp\n            };\n\n            function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync, isNonnullReturn) {\n                name >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                signature >>>= 0;\n                rawInvoker >>>= 0;\n                fn >>>= 0;\n                var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                name = readLatin1String(name);\n                name = getFunctionName(name);\n                rawInvoker = embind__requireFunction(signature, rawInvoker);\n                exposePublicSymbol(name, function() {\n                    throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes)\n                }, argCount - 1);\n                whenDependentTypesAreResolved([], argTypes, argTypes => {\n                    var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));\n                    replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn, isAsync), argCount - 1);\n                    return []\n                })\n            }\n            __embind_register_function.sig = \"vpippppii\";\n\n            function __embind_register_value_array(rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                name >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                tupleRegistrations[rawType] = {\n                    name: readLatin1String(name),\n                    rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),\n                    rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),\n                    elements: []\n                }\n            }\n            __embind_register_value_array.sig = \"vpppppp\";\n\n            function __embind_register_value_array_element(rawTupleType, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                rawTupleType >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                tupleRegistrations[rawTupleType].elements.push({\n                    getterReturnType,\n                    getter: embind__requireFunction(getterSignature, getter),\n                    getterContext,\n                    setterArgumentType,\n                    setter: embind__requireFunction(setterSignature, setter),\n                    setterContext\n                })\n            }\n            __embind_register_value_array_element.sig = \"vppppppppp\";\n            var __embind_finalize_value_array = function(rawTupleType) {\n                rawTupleType >>>= 0;\n                var reg = tupleRegistrations[rawTupleType];\n                delete tupleRegistrations[rawTupleType];\n                var elements = reg.elements;\n                var elementsLength = elements.length;\n                var elementTypes = elements.map(elt => elt.getterReturnType).concat(elements.map(elt => elt.setterArgumentType));\n                var rawConstructor = reg.rawConstructor;\n                var rawDestructor = reg.rawDestructor;\n                whenDependentTypesAreResolved([rawTupleType], elementTypes, elementTypes => {\n                    elements.forEach((elt, i) => {\n                        var getterReturnType = elementTypes[i];\n                        var getter = elt.getter;\n                        var getterContext = elt.getterContext;\n                        var setterArgumentType = elementTypes[i + elementsLength];\n                        var setter = elt.setter;\n                        var setterContext = elt.setterContext;\n                        elt.read = ptr => getterReturnType[\"fromWireType\"](getter(getterContext, ptr));\n                        elt.write = (ptr, o) => {\n                            var destructors = [];\n                            setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, o));\n                            runDestructors(destructors)\n                        }\n                    });\n                    return [{\n                        name: reg.name,\n                        fromWireType: ptr => {\n                            var rv = new Array(elementsLength);\n                            for (var i = 0; i < elementsLength; ++i) {\n                                rv[i] = elements[i].read(ptr)\n                            }\n                            rawDestructor(ptr);\n                            return rv\n                        },\n                        toWireType: (destructors, o) => {\n                            if (elementsLength !== o.length) {\n                                throw new TypeError(`Incorrect number of tuple elements for ${reg.name}: expected=${elementsLength}, actual=${o.length}`)\n                            }\n                            var ptr = rawConstructor();\n                            for (var i = 0; i < elementsLength; ++i) {\n                                elements[i].write(ptr, o[i])\n                            }\n                            if (destructors !== null) {\n                                destructors.push(rawDestructor, ptr)\n                            }\n                            return ptr\n                        },\n                        argPackAdvance: GenericWireTypeSize,\n                        readValueFromPointer: readPointer,\n                        destructorFunction: rawDestructor\n                    }]\n                })\n            };\n            __embind_finalize_value_array.sig = \"vp\";\n\n            function __embind_register_value_object(rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                name >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                structRegistrations[rawType] = {\n                    name: readLatin1String(name),\n                    rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),\n                    rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),\n                    fields: []\n                }\n            }\n            __embind_register_value_object.sig = \"vpppppp\";\n\n            function __embind_register_value_object_field(structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                structType >>>= 0;\n                fieldName >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                structRegistrations[structType].fields.push({\n                    fieldName: readLatin1String(fieldName),\n                    getterReturnType,\n                    getter: embind__requireFunction(getterSignature, getter),\n                    getterContext,\n                    setterArgumentType,\n                    setter: embind__requireFunction(setterSignature, setter),\n                    setterContext\n                })\n            }\n            __embind_register_value_object_field.sig = \"vpppppppppp\";\n            var __embind_finalize_value_object = function(structType) {\n                structType >>>= 0;\n                var reg = structRegistrations[structType];\n                delete structRegistrations[structType];\n                var rawConstructor = reg.rawConstructor;\n                var rawDestructor = reg.rawDestructor;\n                var fieldRecords = reg.fields;\n                var fieldTypes = fieldRecords.map(field => field.getterReturnType).concat(fieldRecords.map(field => field.setterArgumentType));\n                whenDependentTypesAreResolved([structType], fieldTypes, fieldTypes => {\n                    var fields = {};\n                    fieldRecords.forEach((field, i) => {\n                        var fieldName = field.fieldName;\n                        var getterReturnType = fieldTypes[i];\n                        var getter = field.getter;\n                        var getterContext = field.getterContext;\n                        var setterArgumentType = fieldTypes[i + fieldRecords.length];\n                        var setter = field.setter;\n                        var setterContext = field.setterContext;\n                        fields[fieldName] = {\n                            read: ptr => getterReturnType[\"fromWireType\"](getter(getterContext, ptr)),\n                            write: (ptr, o) => {\n                                var destructors = [];\n                                setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, o));\n                                runDestructors(destructors)\n                            }\n                        }\n                    });\n                    return [{\n                        name: reg.name,\n                        fromWireType: ptr => {\n                            var rv = {};\n                            for (var i in fields) {\n                                rv[i] = fields[i].read(ptr)\n                            }\n                            rawDestructor(ptr);\n                            return rv\n                        },\n                        toWireType: (destructors, o) => {\n                            for (var fieldName in fields) {\n                                if (!(fieldName in o)) {\n                                    throw new TypeError(`Missing field: \"${fieldName}\"`)\n                                }\n                            }\n                            var ptr = rawConstructor();\n                            for (fieldName in fields) {\n                                fields[fieldName].write(ptr, o[fieldName])\n                            }\n                            if (destructors !== null) {\n                                destructors.push(rawDestructor, ptr)\n                            }\n                            return ptr\n                        },\n                        argPackAdvance: GenericWireTypeSize,\n                        readValueFromPointer: readPointer,\n                        destructorFunction: rawDestructor\n                    }]\n                })\n            };\n            __embind_finalize_value_object.sig = \"vp\";\n            var upcastPointer = (ptr, ptrClass, desiredClass) => {\n                while (ptrClass !== desiredClass) {\n                    if (!ptrClass.upcast) {\n                        throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)\n                    }\n                    ptr = ptrClass.upcast(ptr);\n                    ptrClass = ptrClass.baseClass\n                }\n                return ptr\n            };\n\n            function genericPointerToWireType(destructors, handle) {\n                var ptr;\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    if (this.isSmartPointer) {\n                        ptr = this.rawConstructor();\n                        if (destructors !== null) {\n                            destructors.push(this.rawDestructor, ptr)\n                        }\n                        return ptr\n                    } else {\n                        return 0\n                    }\n                }\n                if (!handle || !handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                if (!this.isConst && handle.$$.ptrType.isConst) {\n                    throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                if (this.isSmartPointer) {\n                    if (undefined === handle.$$.smartPtr) {\n                        throwBindingError(\"Passing raw pointer to smart pointer is illegal\")\n                    }\n                    switch (this.sharingPolicy) {\n                        case 0:\n                            if (handle.$$.smartPtrType === this) {\n                                ptr = handle.$$.smartPtr\n                            } else {\n                                throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)\n                            }\n                            break;\n                        case 1:\n                            ptr = handle.$$.smartPtr;\n                            break;\n                        case 2:\n                            if (handle.$$.smartPtrType === this) {\n                                ptr = handle.$$.smartPtr\n                            } else {\n                                var clonedHandle = handle[\"clone\"]();\n                                ptr = this.rawShare(ptr, Emval.toHandle(() => clonedHandle[\"delete\"]()));\n                                if (destructors !== null) {\n                                    destructors.push(this.rawDestructor, ptr)\n                                }\n                            }\n                            break;\n                        default:\n                            throwBindingError(\"Unsupporting sharing policy\")\n                    }\n                }\n                return ptr\n            }\n\n            function constNoSmartPtrRawPointerToWireType(destructors, handle) {\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    return 0\n                }\n                if (!handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                return ptr\n            }\n\n            function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    return 0\n                }\n                if (!handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                if (handle.$$.ptrType.isConst) {\n                    throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                return ptr\n            }\n\n            function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {\n                this.name = name;\n                this.registeredClass = registeredClass;\n                this.isReference = isReference;\n                this.isConst = isConst;\n                this.isSmartPointer = isSmartPointer;\n                this.pointeeType = pointeeType;\n                this.sharingPolicy = sharingPolicy;\n                this.rawGetPointee = rawGetPointee;\n                this.rawConstructor = rawConstructor;\n                this.rawShare = rawShare;\n                this.rawDestructor = rawDestructor;\n                if (!isSmartPointer && registeredClass.baseClass === undefined) {\n                    if (isConst) {\n                        this[\"toWireType\"] = constNoSmartPtrRawPointerToWireType;\n                        this.destructorFunction = null\n                    } else {\n                        this[\"toWireType\"] = nonConstNoSmartPtrRawPointerToWireType;\n                        this.destructorFunction = null\n                    }\n                } else {\n                    this[\"toWireType\"] = genericPointerToWireType\n                }\n            }\n            var downcastPointer = (ptr, ptrClass, desiredClass) => {\n                if (ptrClass === desiredClass) {\n                    return ptr\n                }\n                if (undefined === desiredClass.baseClass) {\n                    return null\n                }\n                var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);\n                if (rv === null) {\n                    return null\n                }\n                return desiredClass.downcast(rv)\n            };\n            var finalizationRegistry = false;\n            var detachFinalizer = handle => {};\n            var runDestructor = $$ => {\n                if ($$.smartPtr) {\n                    $$.smartPtrType.rawDestructor($$.smartPtr)\n                } else {\n                    $$.ptrType.registeredClass.rawDestructor($$.ptr)\n                }\n            };\n            var releaseClassHandle = $$ => {\n                $$.count.value -= 1;\n                var toDelete = 0 === $$.count.value;\n                if (toDelete) {\n                    runDestructor($$)\n                }\n            };\n            var attachFinalizer = handle => {\n                if (\"undefined\" === typeof FinalizationRegistry) {\n                    attachFinalizer = handle => handle;\n                    return handle\n                }\n                finalizationRegistry = new FinalizationRegistry(info => {\n                    releaseClassHandle(info.$$)\n                });\n                attachFinalizer = handle => {\n                    var $$ = handle.$$;\n                    var hasSmartPtr = !!$$.smartPtr;\n                    if (hasSmartPtr) {\n                        var info = {\n                            $$\n                        };\n                        finalizationRegistry.register(handle, info, handle)\n                    }\n                    return handle\n                };\n                detachFinalizer = handle => finalizationRegistry.unregister(handle);\n                return attachFinalizer(handle)\n            };\n            var makeClassHandle = (prototype, record) => {\n                if (!record.ptrType || !record.ptr) {\n                    throwInternalError(\"makeClassHandle requires ptr and ptrType\")\n                }\n                var hasSmartPtrType = !!record.smartPtrType;\n                var hasSmartPtr = !!record.smartPtr;\n                if (hasSmartPtrType !== hasSmartPtr) {\n                    throwInternalError(\"Both smartPtrType and smartPtr must be specified\")\n                }\n                record.count = {\n                    value: 1\n                };\n                return attachFinalizer(Object.create(prototype, {\n                    $$: {\n                        value: record,\n                        writable: true\n                    }\n                }))\n            };\n\n            function RegisteredPointer_fromWireType(ptr) {\n                var rawPointer = this.getPointee(ptr);\n                if (!rawPointer) {\n                    this.destructor(ptr);\n                    return null\n                }\n                var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);\n                if (undefined !== registeredInstance) {\n                    if (0 === registeredInstance.$$.count.value) {\n                        registeredInstance.$$.ptr = rawPointer;\n                        registeredInstance.$$.smartPtr = ptr;\n                        return registeredInstance[\"clone\"]()\n                    } else {\n                        var rv = registeredInstance[\"clone\"]();\n                        this.destructor(ptr);\n                        return rv\n                    }\n                }\n\n                function makeDefaultHandle() {\n                    if (this.isSmartPointer) {\n                        return makeClassHandle(this.registeredClass.instancePrototype, {\n                            ptrType: this.pointeeType,\n                            ptr: rawPointer,\n                            smartPtrType: this,\n                            smartPtr: ptr\n                        })\n                    } else {\n                        return makeClassHandle(this.registeredClass.instancePrototype, {\n                            ptrType: this,\n                            ptr\n                        })\n                    }\n                }\n                var actualType = this.registeredClass.getActualType(rawPointer);\n                var registeredPointerRecord = registeredPointers[actualType];\n                if (!registeredPointerRecord) {\n                    return makeDefaultHandle.call(this)\n                }\n                var toType;\n                if (this.isConst) {\n                    toType = registeredPointerRecord.constPointerType\n                } else {\n                    toType = registeredPointerRecord.pointerType\n                }\n                var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);\n                if (dp === null) {\n                    return makeDefaultHandle.call(this)\n                }\n                if (this.isSmartPointer) {\n                    return makeClassHandle(toType.registeredClass.instancePrototype, {\n                        ptrType: toType,\n                        ptr: dp,\n                        smartPtrType: this,\n                        smartPtr: ptr\n                    })\n                } else {\n                    return makeClassHandle(toType.registeredClass.instancePrototype, {\n                        ptrType: toType,\n                        ptr: dp\n                    })\n                }\n            }\n            var init_RegisteredPointer = () => {\n                Object.assign(RegisteredPointer.prototype, {\n                    getPointee(ptr) {\n                        if (this.rawGetPointee) {\n                            ptr = this.rawGetPointee(ptr)\n                        }\n                        return ptr\n                    },\n                    destructor(ptr) {\n                        this.rawDestructor?.(ptr)\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    fromWireType: RegisteredPointer_fromWireType\n                })\n            };\n            var detachFinalizer_deps = [\"$finalizationRegistry\"];\n\n            function ClassHandle() {}\n            var shallowCopyInternalPointer = o => ({\n                count: o.count,\n                deleteScheduled: o.deleteScheduled,\n                preservePointerOnDelete: o.preservePointerOnDelete,\n                ptr: o.ptr,\n                ptrType: o.ptrType,\n                smartPtr: o.smartPtr,\n                smartPtrType: o.smartPtrType\n            });\n            var throwInstanceAlreadyDeleted = obj => {\n                function getInstanceTypeName(handle) {\n                    return handle.$$.ptrType.registeredClass.name\n                }\n                throwBindingError(getInstanceTypeName(obj) + \" instance already deleted\")\n            };\n            var deletionQueue = [];\n            var flushPendingDeletes = () => {\n                while (deletionQueue.length) {\n                    var obj = deletionQueue.pop();\n                    obj.$$.deleteScheduled = false;\n                    obj[\"delete\"]()\n                }\n            };\n            var delayFunction;\n            var init_ClassHandle = () => {\n                Object.assign(ClassHandle.prototype, {\n                    isAliasOf(other) {\n                        if (!(this instanceof ClassHandle)) {\n                            return false\n                        }\n                        if (!(other instanceof ClassHandle)) {\n                            return false\n                        }\n                        var leftClass = this.$$.ptrType.registeredClass;\n                        var left = this.$$.ptr;\n                        other.$$ = other.$$;\n                        var rightClass = other.$$.ptrType.registeredClass;\n                        var right = other.$$.ptr;\n                        while (leftClass.baseClass) {\n                            left = leftClass.upcast(left);\n                            leftClass = leftClass.baseClass\n                        }\n                        while (rightClass.baseClass) {\n                            right = rightClass.upcast(right);\n                            rightClass = rightClass.baseClass\n                        }\n                        return leftClass === rightClass && left === right\n                    },\n                    clone() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.preservePointerOnDelete) {\n                            this.$$.count.value += 1;\n                            return this\n                        } else {\n                            var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), {\n                                $$: {\n                                    value: shallowCopyInternalPointer(this.$$)\n                                }\n                            }));\n                            clone.$$.count.value += 1;\n                            clone.$$.deleteScheduled = false;\n                            return clone\n                        }\n                    },\n                    delete() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n                            throwBindingError(\"Object already scheduled for deletion\")\n                        }\n                        detachFinalizer(this);\n                        releaseClassHandle(this.$$);\n                        if (!this.$$.preservePointerOnDelete) {\n                            this.$$.smartPtr = undefined;\n                            this.$$.ptr = undefined\n                        }\n                    },\n                    isDeleted() {\n                        return !this.$$.ptr\n                    },\n                    deleteLater() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n                            throwBindingError(\"Object already scheduled for deletion\")\n                        }\n                        deletionQueue.push(this);\n                        if (deletionQueue.length === 1 && delayFunction) {\n                            delayFunction(flushPendingDeletes)\n                        }\n                        this.$$.deleteScheduled = true;\n                        return this\n                    }\n                })\n            };\n            var setDelayFunction = fn => {\n                delayFunction = fn;\n                if (deletionQueue.length && delayFunction) {\n                    delayFunction(flushPendingDeletes)\n                }\n            };\n\n            function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {\n                this.name = name;\n                this.constructor = constructor;\n                this.instancePrototype = instancePrototype;\n                this.rawDestructor = rawDestructor;\n                this.baseClass = baseClass;\n                this.getActualType = getActualType;\n                this.upcast = upcast;\n                this.downcast = downcast;\n                this.pureVirtualFunctions = []\n            }\n            var char_0 = 48;\n            var char_9 = 57;\n            var makeLegalFunctionName = name => {\n                name = name.replace(/[^a-zA-Z0-9_]/g, \"$\");\n                var f = name.charCodeAt(0);\n                if (f >= char_0 && f <= char_9) {\n                    return `_${name}`\n                }\n                return name\n            };\n\n            function __embind_register_class(rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                rawPointerType >>>= 0;\n                rawConstPointerType >>>= 0;\n                baseClassRawType >>>= 0;\n                getActualTypeSignature >>>= 0;\n                getActualType >>>= 0;\n                upcastSignature >>>= 0;\n                upcast >>>= 0;\n                downcastSignature >>>= 0;\n                downcast >>>= 0;\n                name >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                name = readLatin1String(name);\n                getActualType = embind__requireFunction(getActualTypeSignature, getActualType);\n                upcast &&= embind__requireFunction(upcastSignature, upcast);\n                downcast &&= embind__requireFunction(downcastSignature, downcast);\n                rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n                var legalFunctionName = makeLegalFunctionName(name);\n                exposePublicSymbol(legalFunctionName, function() {\n                    throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, [baseClassRawType])\n                });\n                whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], base => {\n                    base = base[0];\n                    var baseClass;\n                    var basePrototype;\n                    if (baseClassRawType) {\n                        baseClass = base.registeredClass;\n                        basePrototype = baseClass.instancePrototype\n                    } else {\n                        basePrototype = ClassHandle.prototype\n                    }\n                    var constructor = createNamedFunction(name, function(...args) {\n                        if (Object.getPrototypeOf(this) !== instancePrototype) {\n                            throw new BindingError(\"Use 'new' to construct \" + name)\n                        }\n                        if (undefined === registeredClass.constructor_body) {\n                            throw new BindingError(name + \" has no accessible constructor\")\n                        }\n                        var body = registeredClass.constructor_body[args.length];\n                        if (undefined === body) {\n                            throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)\n                        }\n                        return body.apply(this, args)\n                    });\n                    var instancePrototype = Object.create(basePrototype, {\n                        constructor: {\n                            value: constructor\n                        }\n                    });\n                    constructor.prototype = instancePrototype;\n                    var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast);\n                    if (registeredClass.baseClass) {\n                        registeredClass.baseClass.__derivedClasses ??= [];\n                        registeredClass.baseClass.__derivedClasses.push(registeredClass)\n                    }\n                    var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false);\n                    var pointerConverter = new RegisteredPointer(name + \"*\", registeredClass, false, false, false);\n                    var constPointerConverter = new RegisteredPointer(name + \" const*\", registeredClass, false, true, false);\n                    registeredPointers[rawType] = {\n                        pointerType: pointerConverter,\n                        constPointerType: constPointerConverter\n                    };\n                    replacePublicSymbol(legalFunctionName, constructor);\n                    return [referenceConverter, pointerConverter, constPointerConverter]\n                })\n            }\n            __embind_register_class.sig = \"vppppppppppppp\";\n            var __embind_register_class_constructor = function(rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor) {\n                rawClassType >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                invoker >>>= 0;\n                rawConstructor >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                invoker = embind__requireFunction(invokerSignature, invoker);\n                var args = [rawConstructor];\n                var destructors = [];\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `constructor ${classType.name}`;\n                    if (undefined === classType.registeredClass.constructor_body) {\n                        classType.registeredClass.constructor_body = []\n                    }\n                    if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) {\n                        throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)\n                    }\n                    classType.registeredClass.constructor_body[argCount - 1] = () => {\n                        throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`, rawArgTypes)\n                    };\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        argTypes.splice(1, 0, null);\n                        classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_constructor.sig = \"vpipppp\";\n            var validateThis = (this_, classType, humanName) => {\n                if (!(this_ instanceof Object)) {\n                    throwBindingError(`${humanName} with invalid \"this\": ${this_}`)\n                }\n                if (!(this_ instanceof classType.registeredClass.constructor)) {\n                    throwBindingError(`${humanName} incompatible with \"this\" of type ${this_.constructor.name}`)\n                }\n                if (!this_.$$.ptr) {\n                    throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)\n                }\n                return upcastPointer(this_.$$.ptr, this_.$$.ptrType.registeredClass, classType.registeredClass)\n            };\n            var __embind_register_class_function = function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual, isAsync, isNonnullReturn) {\n                rawClassType >>>= 0;\n                methodName >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                rawInvoker >>>= 0;\n                context >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                methodName = readLatin1String(methodName);\n                methodName = getFunctionName(methodName);\n                rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${methodName}`;\n                    if (methodName.startsWith(\"@@\")) {\n                        methodName = Symbol[methodName.substring(2)]\n                    }\n                    if (isPureVirtual) {\n                        classType.registeredClass.pureVirtualFunctions.push(methodName)\n                    }\n\n                    function unboundTypesHandler() {\n                        throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes)\n                    }\n                    var proto = classType.registeredClass.instancePrototype;\n                    var method = proto[methodName];\n                    if (undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) {\n                        unboundTypesHandler.argCount = argCount - 2;\n                        unboundTypesHandler.className = classType.name;\n                        proto[methodName] = unboundTypesHandler\n                    } else {\n                        ensureOverloadTable(proto, methodName, humanName);\n                        proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler\n                    }\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context, isAsync);\n                        if (undefined === proto[methodName].overloadTable) {\n                            memberFunction.argCount = argCount - 2;\n                            proto[methodName] = memberFunction\n                        } else {\n                            proto[methodName].overloadTable[argCount - 2] = memberFunction\n                        }\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_function.sig = \"vppippppiii\";\n            var __embind_register_class_property = function(classType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                classType >>>= 0;\n                fieldName >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                fieldName = readLatin1String(fieldName);\n                getter = embind__requireFunction(getterSignature, getter);\n                whenDependentTypesAreResolved([], [classType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${fieldName}`;\n                    var desc = {\n                        get() {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [getterReturnType, setterArgumentType])\n                        },\n                        enumerable: true,\n                        configurable: true\n                    };\n                    if (setter) {\n                        desc.set = () => throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [getterReturnType, setterArgumentType])\n                    } else {\n                        desc.set = v => throwBindingError(humanName + \" is a read-only property\")\n                    }\n                    Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);\n                    whenDependentTypesAreResolved([], setter ? [getterReturnType, setterArgumentType] : [getterReturnType], types => {\n                        var getterReturnType = types[0];\n                        var desc = {\n                            get() {\n                                var ptr = validateThis(this, classType, humanName + \" getter\");\n                                return getterReturnType[\"fromWireType\"](getter(getterContext, ptr))\n                            },\n                            enumerable: true\n                        };\n                        if (setter) {\n                            setter = embind__requireFunction(setterSignature, setter);\n                            var setterArgumentType = types[1];\n                            desc.set = function(v) {\n                                var ptr = validateThis(this, classType, humanName + \" setter\");\n                                var destructors = [];\n                                setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, v));\n                                runDestructors(destructors)\n                            }\n                        }\n                        Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_property.sig = \"vpppppppppp\";\n            var __embind_register_class_class_function = function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn, isAsync, isNonnullReturn) {\n                rawClassType >>>= 0;\n                methodName >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                rawInvoker >>>= 0;\n                fn >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                methodName = readLatin1String(methodName);\n                methodName = getFunctionName(methodName);\n                rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${methodName}`;\n\n                    function unboundTypesHandler() {\n                        throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes)\n                    }\n                    if (methodName.startsWith(\"@@\")) {\n                        methodName = Symbol[methodName.substring(2)]\n                    }\n                    var proto = classType.registeredClass.constructor;\n                    if (undefined === proto[methodName]) {\n                        unboundTypesHandler.argCount = argCount - 1;\n                        proto[methodName] = unboundTypesHandler\n                    } else {\n                        ensureOverloadTable(proto, methodName, humanName);\n                        proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler\n                    }\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));\n                        var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn, isAsync);\n                        if (undefined === proto[methodName].overloadTable) {\n                            func.argCount = argCount - 1;\n                            proto[methodName] = func\n                        } else {\n                            proto[methodName].overloadTable[argCount - 1] = func\n                        }\n                        if (classType.registeredClass.__derivedClasses) {\n                            for (const derivedClass of classType.registeredClass.__derivedClasses) {\n                                if (!derivedClass.constructor.hasOwnProperty(methodName)) {\n                                    derivedClass.constructor[methodName] = func\n                                }\n                            }\n                        }\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_class_function.sig = \"vppippppii\";\n            var __embind_register_class_class_property = function(rawClassType, fieldName, rawFieldType, rawFieldPtr, getterSignature, getter, setterSignature, setter) {\n                rawClassType >>>= 0;\n                fieldName >>>= 0;\n                rawFieldType >>>= 0;\n                rawFieldPtr >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                fieldName = readLatin1String(fieldName);\n                getter = embind__requireFunction(getterSignature, getter);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${fieldName}`;\n                    var desc = {\n                        get() {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [rawFieldType])\n                        },\n                        enumerable: true,\n                        configurable: true\n                    };\n                    if (setter) {\n                        desc.set = () => {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [rawFieldType])\n                        }\n                    } else {\n                        desc.set = v => {\n                            throwBindingError(`${humanName} is a read-only property`)\n                        }\n                    }\n                    Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n                    whenDependentTypesAreResolved([], [rawFieldType], fieldType => {\n                        fieldType = fieldType[0];\n                        var desc = {\n                            get() {\n                                return fieldType[\"fromWireType\"](getter(rawFieldPtr))\n                            },\n                            enumerable: true\n                        };\n                        if (setter) {\n                            setter = embind__requireFunction(setterSignature, setter);\n                            desc.set = v => {\n                                var destructors = [];\n                                setter(rawFieldPtr, fieldType[\"toWireType\"](destructors, v));\n                                runDestructors(destructors)\n                            }\n                        }\n                        Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_class_property.sig = \"vpppppppp\";\n\n            function __embind_create_inheriting_constructor(constructorName, wrapperType, properties) {\n                constructorName >>>= 0;\n                wrapperType >>>= 0;\n                properties >>>= 0;\n                constructorName = readLatin1String(constructorName);\n                wrapperType = requireRegisteredType(wrapperType, \"wrapper\");\n                properties = Emval.toValue(properties);\n                var registeredClass = wrapperType.registeredClass;\n                var wrapperPrototype = registeredClass.instancePrototype;\n                var baseClass = registeredClass.baseClass;\n                var baseClassPrototype = baseClass.instancePrototype;\n                var baseConstructor = registeredClass.baseClass.constructor;\n                var ctor = createNamedFunction(constructorName, function(...args) {\n                    registeredClass.baseClass.pureVirtualFunctions.forEach(function(name) {\n                        if (this[name] === baseClassPrototype[name]) {\n                            throw new PureVirtualError(`Pure virtual function ${name} must be implemented in JavaScript`)\n                        }\n                    }.bind(this));\n                    Object.defineProperty(this, \"__parent\", {\n                        value: wrapperPrototype\n                    });\n                    this[\"__construct\"](...args)\n                });\n                wrapperPrototype[\"__construct\"] = function __construct(...args) {\n                    if (this === wrapperPrototype) {\n                        throwBindingError(\"Pass correct 'this' to __construct\")\n                    }\n                    var inner = baseConstructor[\"implement\"](this, ...args);\n                    detachFinalizer(inner);\n                    var $$ = inner.$$;\n                    inner[\"notifyOnDestruction\"]();\n                    $$.preservePointerOnDelete = true;\n                    Object.defineProperties(this, {\n                        $$: {\n                            value: $$\n                        }\n                    });\n                    attachFinalizer(this);\n                    registerInheritedInstance(registeredClass, $$.ptr, this)\n                };\n                wrapperPrototype[\"__destruct\"] = function __destruct() {\n                    if (this === wrapperPrototype) {\n                        throwBindingError(\"Pass correct 'this' to __destruct\")\n                    }\n                    detachFinalizer(this);\n                    unregisterInheritedInstance(registeredClass, this.$$.ptr)\n                };\n                ctor.prototype = Object.create(wrapperPrototype);\n                Object.assign(ctor.prototype, properties);\n                return Emval.toHandle(ctor)\n            }\n            __embind_create_inheriting_constructor.sig = \"pppp\";\n            var __embind_register_smart_ptr = function(rawType, rawPointeeType, name, sharingPolicy, getPointeeSignature, rawGetPointee, constructorSignature, rawConstructor, shareSignature, rawShare, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                rawPointeeType >>>= 0;\n                name >>>= 0;\n                getPointeeSignature >>>= 0;\n                rawGetPointee >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                shareSignature >>>= 0;\n                rawShare >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                name = readLatin1String(name);\n                rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);\n                rawConstructor = embind__requireFunction(constructorSignature, rawConstructor);\n                rawShare = embind__requireFunction(shareSignature, rawShare);\n                rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n                whenDependentTypesAreResolved([rawType], [rawPointeeType], pointeeType => {\n                    pointeeType = pointeeType[0];\n                    var registeredPointer = new RegisteredPointer(name, pointeeType.registeredClass, false, false, true, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor);\n                    return [registeredPointer]\n                })\n            };\n            __embind_register_smart_ptr.sig = \"vpppipppppppp\";\n\n            function __embind_register_enum(rawType, name, size, isSigned) {\n                rawType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n\n                function ctor() {}\n                ctor.values = {};\n                registerType(rawType, {\n                    name,\n                    constructor: ctor,\n                    fromWireType: function(c) {\n                        return this.constructor.values[c]\n                    },\n                    toWireType: (destructors, c) => c.value,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),\n                    destructorFunction: null\n                });\n                exposePublicSymbol(name, ctor)\n            }\n            __embind_register_enum.sig = \"vpppi\";\n\n            function __embind_register_enum_value(rawEnumType, name, enumValue) {\n                rawEnumType >>>= 0;\n                name >>>= 0;\n                var enumType = requireRegisteredType(rawEnumType, \"enum\");\n                name = readLatin1String(name);\n                var Enum = enumType.constructor;\n                var Value = Object.create(enumType.constructor.prototype, {\n                    value: {\n                        value: enumValue\n                    },\n                    constructor: {\n                        value: createNamedFunction(`${enumType.name}_${name}`, function() {})\n                    }\n                });\n                Enum.values[enumValue] = Value;\n                Enum[name] = Value\n            }\n            __embind_register_enum_value.sig = \"vppi\";\n            var __embind_register_constant = function(name, type, value) {\n                name >>>= 0;\n                type >>>= 0;\n                name = readLatin1String(name);\n                whenDependentTypesAreResolved([], [type], type => {\n                    type = type[0];\n                    Module[name] = type[\"fromWireType\"](value);\n                    return []\n                })\n            };\n            __embind_register_constant.sig = \"vppd\";\n\n            function __emval_register_symbol(address) {\n                address >>>= 0;\n                emval_symbols[address] = readLatin1String(address)\n            }\n            __emval_register_symbol.sig = \"vp\";\n\n            function __emval_incref(handle) {\n                handle >>>= 0;\n                if (handle > 9) {\n                    emval_handles[handle + 1] += 1\n                }\n            }\n            __emval_incref.sig = \"vp\";\n\n            function __emval_new_array() {\n                return Emval.toHandle([])\n            }\n            __emval_new_array.sig = \"p\";\n\n            function __emval_new_array_from_memory_view(view) {\n                view >>>= 0;\n                view = Emval.toValue(view);\n                var a = new Array(view.length);\n                for (var i = 0; i < view.length; i++) a[i] = view[i];\n                return Emval.toHandle(a)\n            }\n            __emval_new_array_from_memory_view.sig = \"pp\";\n\n            function __emval_new_object() {\n                return Emval.toHandle({})\n            }\n            __emval_new_object.sig = \"p\";\n\n            function __emval_new_cstring(v) {\n                v >>>= 0;\n                return Emval.toHandle(getStringOrSymbol(v))\n            }\n            __emval_new_cstring.sig = \"pp\";\n\n            function __emval_new_u8string(v) {\n                v >>>= 0;\n                return Emval.toHandle(UTF8ToString(v))\n            }\n            __emval_new_u8string.sig = \"pp\";\n\n            function __emval_new_u16string(v) {\n                v >>>= 0;\n                return Emval.toHandle(UTF16ToString(v))\n            }\n            __emval_new_u16string.sig = \"pp\";\n\n            function __emval_take_value(type, arg) {\n                type >>>= 0;\n                arg >>>= 0;\n                type = requireRegisteredType(type, \"_emval_take_value\");\n                var v = type[\"readValueFromPointer\"](arg);\n                return Emval.toHandle(v)\n            }\n            __emval_take_value.sig = \"ppp\";\n\n            function __emval_get_module_property(name) {\n                name >>>= 0;\n                name = getStringOrSymbol(name);\n                return Emval.toHandle(Module[name])\n            }\n            __emval_get_module_property.sig = \"pp\";\n\n            function __emval_get_property(handle, key) {\n                handle >>>= 0;\n                key >>>= 0;\n                handle = Emval.toValue(handle);\n                key = Emval.toValue(key);\n                return Emval.toHandle(handle[key])\n            }\n            __emval_get_property.sig = \"ppp\";\n\n            function __emval_set_property(handle, key, value) {\n                handle >>>= 0;\n                key >>>= 0;\n                value >>>= 0;\n                handle = Emval.toValue(handle);\n                key = Emval.toValue(key);\n                value = Emval.toValue(value);\n                handle[key] = value\n            }\n            __emval_set_property.sig = \"vppp\";\n\n            function __emval_as(handle, returnType, destructorsRef) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                destructorsRef >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return emval_returnValue(returnType, destructorsRef, handle)\n            }\n            __emval_as.sig = \"dppp\";\n\n            function __emval_as_int64(handle, returnType) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return returnType[\"toWireType\"](null, handle)\n            }\n            __emval_as_int64.sig = \"ipp\";\n\n            function __emval_as_uint64(handle, returnType) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return returnType[\"toWireType\"](null, handle)\n            }\n            __emval_as_uint64.sig = \"ipp\";\n\n            function __emval_equals(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first == second\n            }\n            __emval_equals.sig = \"ipp\";\n\n            function __emval_strictly_equals(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first === second\n            }\n            __emval_strictly_equals.sig = \"ipp\";\n\n            function __emval_greater_than(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first > second\n            }\n            __emval_greater_than.sig = \"ipp\";\n\n            function __emval_less_than(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first < second\n            }\n            __emval_less_than.sig = \"ipp\";\n\n            function __emval_not(object) {\n                object >>>= 0;\n                object = Emval.toValue(object);\n                return !object\n            }\n            __emval_not.sig = \"ip\";\n\n            function __emval_call(caller, handle, destructorsRef, args) {\n                caller >>>= 0;\n                handle >>>= 0;\n                destructorsRef >>>= 0;\n                args >>>= 0;\n                caller = emval_methodCallers[caller];\n                handle = Emval.toValue(handle);\n                return caller(null, handle, destructorsRef, args)\n            }\n            __emval_call.sig = \"dpppp\";\n\n            function __emval_typeof(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return Emval.toHandle(typeof handle)\n            }\n            __emval_typeof.sig = \"pp\";\n\n            function __emval_instanceof(object, constructor) {\n                object >>>= 0;\n                constructor >>>= 0;\n                object = Emval.toValue(object);\n                constructor = Emval.toValue(constructor);\n                return object instanceof constructor\n            }\n            __emval_instanceof.sig = \"ipp\";\n\n            function __emval_is_number(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return typeof handle == \"number\"\n            }\n            __emval_is_number.sig = \"ip\";\n\n            function __emval_is_string(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return typeof handle == \"string\"\n            }\n            __emval_is_string.sig = \"ip\";\n\n            function __emval_in(item, object) {\n                item >>>= 0;\n                object >>>= 0;\n                item = Emval.toValue(item);\n                object = Emval.toValue(object);\n                return item in object\n            }\n            __emval_in.sig = \"ipp\";\n\n            function __emval_delete(object, property) {\n                object >>>= 0;\n                property >>>= 0;\n                object = Emval.toValue(object);\n                property = Emval.toValue(property);\n                return delete object[property]\n            }\n            __emval_delete.sig = \"ipp\";\n\n            function __emval_throw(object) {\n                object >>>= 0;\n                object = Emval.toValue(object);\n                throw object\n            }\n            __emval_throw.sig = \"ip\";\n\n            function __emval_iter_begin(iterable) {\n                iterable >>>= 0;\n                iterable = Emval.toValue(iterable);\n                return Emval.toHandle(iterable[Symbol.iterator]())\n            }\n            __emval_iter_begin.sig = \"pp\";\n\n            function __emval_iter_next(iterator) {\n                iterator >>>= 0;\n                iterator = Emval.toValue(iterator);\n                var result = iterator.next();\n                return result.done ? 0 : Emval.toHandle(result.value)\n            }\n            __emval_iter_next.sig = \"pp\";\n            var __emval_coro_suspend = function(promiseHandle, awaiterPtr) {\n                promiseHandle >>>= 0;\n                awaiterPtr >>>= 0;\n                Emval.toValue(promiseHandle).then(result => {\n                    __emval_coro_resume(awaiterPtr, Emval.toHandle(result))\n                })\n            };\n            __emval_coro_suspend.sig = \"vpp\";\n            var __emval_coro_make_promise = function(resolveHandlePtr, rejectHandlePtr) {\n                resolveHandlePtr >>>= 0;\n                rejectHandlePtr >>>= 0;\n                return Emval.toHandle(new Promise((resolve, reject) => {\n                    const rejectWithCurrentException = () => {\n                        try {\n                            ___cxa_rethrow()\n                        } catch (e) {\n                            reject(e)\n                        }\n                    };\n                    HEAPU32[resolveHandlePtr >>> 2 >>> 0] = Emval.toHandle(resolve);\n                    HEAPU32[rejectHandlePtr >>> 2 >>> 0] = Emval.toHandle(rejectWithCurrentException)\n                }))\n            };\n            __emval_coro_make_promise.sig = \"ppp\";\n\n            function _duckdb_web_fs_file_sync(fileId) {\n                return globalThis.DUCKDB_RUNTIME.syncFile(Module, fileId)\n            }\n            _duckdb_web_fs_file_sync.sig = \"vi\";\n\n            function _duckdb_web_fs_file_get_last_modified_time(fileId) {\n                return globalThis.DUCKDB_RUNTIME.getLastFileModificationTime(Module, fileId)\n            }\n            _duckdb_web_fs_file_get_last_modified_time.sig = \"di\";\n\n            function _duckdb_web_fs_file_remove(path, pathLen) {\n                return globalThis.DUCKDB_RUNTIME.removeFile(Module, path, pathLen)\n            }\n            registerWasmPlugin();\n            FS.createPreloadedFile = FS_createPreloadedFile;\n            FS.staticInit();\n            embind_init_charCodes();\n            BindingError = Module[\"BindingError\"] = class BindingError extends Error {\n                constructor(message) {\n                    super(message);\n                    this.name = \"BindingError\"\n                }\n            };\n            InternalError = Module[\"InternalError\"] = class InternalError extends Error {\n                constructor(message) {\n                    super(message);\n                    this.name = \"InternalError\"\n                }\n            };\n            init_emval();\n            Module[\"requestAnimationFrame\"] = MainLoop.requestAnimationFrame;\n            Module[\"pauseMainLoop\"] = MainLoop.pause;\n            Module[\"resumeMainLoop\"] = MainLoop.resume;\n            MainLoop.init();\n            for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i));\n            var miniTempWebGLFloatBuffersStorage = new Float32Array(288);\n            for (var i = 0; i <= 288; ++i) {\n                miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i)\n            }\n            var miniTempWebGLIntBuffersStorage = new Int32Array(288);\n            for (var i = 0; i <= 288; ++i) {\n                miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i)\n            }\n            var emSetImmediate;\n            var emClearImmediate;\n            if (typeof setImmediate != \"undefined\") {\n                emSetImmediate = setImmediateWrapped;\n                emClearImmediate = clearImmediateWrapped\n            } else if (typeof addEventListener == \"function\") {\n                var __setImmediate_id_counter = 0;\n                var __setImmediate_queue = [];\n                var __setImmediate_message_id = \"_si\";\n                var __setImmediate_cb = e => {\n                    if (e.data === __setImmediate_message_id) {\n                        e.stopPropagation();\n                        __setImmediate_queue.shift()();\n                        ++__setImmediate_id_counter\n                    }\n                };\n                addEventListener(\"message\", __setImmediate_cb, true);\n                emSetImmediate = func => {\n                    postMessage(__setImmediate_message_id, \"*\");\n                    return __setImmediate_id_counter + __setImmediate_queue.push(func) - 1\n                };\n                emClearImmediate = id => {\n                    var index = id - __setImmediate_id_counter;\n                    if (index >= 0 && index < __setImmediate_queue.length) __setImmediate_queue[index] = () => {}\n                }\n            }\n            Module[\"requestFullscreen\"] = Browser.requestFullscreen;\n            Module[\"setCanvasSize\"] = Browser.setCanvasSize;\n            Module[\"getUserMedia\"] = Browser.getUserMedia;\n            Module[\"createContext\"] = Browser.createContext;\n            var preloadedImages = {};\n            var preloadedAudios = {};\n            registerPostMainLoop(() => SDL.audio?.queueNewAudioData?.());\n            UnboundTypeError = Module[\"UnboundTypeError\"] = extendError(Error, \"UnboundTypeError\");\n            PureVirtualError = Module[\"PureVirtualError\"] = extendError(Error, \"PureVirtualError\");\n            init_RegisteredPointer();\n            init_ClassHandle();\n            var wasmImports = {\n                IMG_Init: _IMG_Init,\n                IMG_Load: _IMG_Load,\n                IMG_Load_RW: _IMG_Load_RW,\n                IMG_Quit: _IMG_Quit,\n                Mix_AllocateChannels: _Mix_AllocateChannels,\n                Mix_ChannelFinished: _Mix_ChannelFinished,\n                Mix_CloseAudio: _Mix_CloseAudio,\n                Mix_FadeInChannelTimed: _Mix_FadeInChannelTimed,\n                Mix_FadeInMusicPos: _Mix_FadeInMusicPos,\n                Mix_FadeOutChannel: _Mix_FadeOutChannel,\n                Mix_FadeOutMusic: _Mix_FadeOutMusic,\n                Mix_FadingChannel: _Mix_FadingChannel,\n                Mix_FreeChunk: _Mix_FreeChunk,\n                Mix_FreeMusic: _Mix_FreeMusic,\n                Mix_HaltChannel: _Mix_HaltChannel,\n                Mix_HaltMusic: _Mix_HaltMusic,\n                Mix_HookMusicFinished: _Mix_HookMusicFinished,\n                Mix_Init: _Mix_Init,\n                Mix_Linked_Version: _Mix_Linked_Version,\n                Mix_LoadMUS: _Mix_LoadMUS,\n                Mix_LoadMUS_RW: _Mix_LoadMUS_RW,\n                Mix_LoadWAV: _Mix_LoadWAV,\n                Mix_LoadWAV_RW: _Mix_LoadWAV_RW,\n                Mix_OpenAudio: _Mix_OpenAudio,\n                Mix_Pause: _Mix_Pause,\n                Mix_PauseMusic: _Mix_PauseMusic,\n                Mix_Paused: _Mix_Paused,\n                Mix_PausedMusic: _Mix_PausedMusic,\n                Mix_PlayChannelTimed: _Mix_PlayChannelTimed,\n                Mix_PlayMusic: _Mix_PlayMusic,\n                Mix_Playing: _Mix_Playing,\n                Mix_PlayingMusic: _Mix_PlayingMusic,\n                Mix_QuerySpec: _Mix_QuerySpec,\n                Mix_QuickLoad_RAW: _Mix_QuickLoad_RAW,\n                Mix_Quit: _Mix_Quit,\n                Mix_ReserveChannels: _Mix_ReserveChannels,\n                Mix_Resume: _Mix_Resume,\n                Mix_ResumeMusic: _Mix_ResumeMusic,\n                Mix_SetPanning: _Mix_SetPanning,\n                Mix_SetPosition: _Mix_SetPosition,\n                Mix_SetPostMix: _Mix_SetPostMix,\n                Mix_Volume: _Mix_Volume,\n                Mix_VolumeChunk: _Mix_VolumeChunk,\n                Mix_VolumeMusic: _Mix_VolumeMusic,\n                SDL_AddTimer: _SDL_AddTimer,\n                SDL_AllocRW: _SDL_AllocRW,\n                SDL_AudioDriverName: _SDL_AudioDriverName,\n                SDL_AudioQuit: _SDL_AudioQuit,\n                SDL_ClearError: _SDL_ClearError,\n                SDL_CloseAudio: _SDL_CloseAudio,\n                SDL_CondBroadcast: _SDL_CondBroadcast,\n                SDL_CondSignal: _SDL_CondSignal,\n                SDL_CondWait: _SDL_CondWait,\n                SDL_CondWaitTimeout: _SDL_CondWaitTimeout,\n                SDL_ConvertSurface: _SDL_ConvertSurface,\n                SDL_CreateCond: _SDL_CreateCond,\n                SDL_CreateMutex: _SDL_CreateMutex,\n                SDL_CreateRGBSurface: _SDL_CreateRGBSurface,\n                SDL_CreateRGBSurfaceFrom: _SDL_CreateRGBSurfaceFrom,\n                SDL_CreateThread: _SDL_CreateThread,\n                SDL_Delay: _SDL_Delay,\n                SDL_DestroyCond: _SDL_DestroyCond,\n                SDL_DestroyMutex: _SDL_DestroyMutex,\n                SDL_DestroyRenderer: _SDL_DestroyRenderer,\n                SDL_DestroyWindow: _SDL_DestroyWindow,\n                SDL_DisplayFormatAlpha: _SDL_DisplayFormatAlpha,\n                SDL_EnableKeyRepeat: _SDL_EnableKeyRepeat,\n                SDL_EnableUNICODE: _SDL_EnableUNICODE,\n                SDL_FillRect: _SDL_FillRect,\n                SDL_Flip: _SDL_Flip,\n                SDL_FreeRW: _SDL_FreeRW,\n                SDL_FreeSurface: _SDL_FreeSurface,\n                SDL_GL_DeleteContext: _SDL_GL_DeleteContext,\n                SDL_GL_ExtensionSupported: _SDL_GL_ExtensionSupported,\n                SDL_GL_GetAttribute: _SDL_GL_GetAttribute,\n                SDL_GL_GetSwapInterval: _SDL_GL_GetSwapInterval,\n                SDL_GL_MakeCurrent: _SDL_GL_MakeCurrent,\n                SDL_GL_SetAttribute: _SDL_GL_SetAttribute,\n                SDL_GL_SetSwapInterval: _SDL_GL_SetSwapInterval,\n                SDL_GL_SwapBuffers: _SDL_GL_SwapBuffers,\n                SDL_GL_SwapWindow: _SDL_GL_SwapWindow,\n                SDL_GetAppState: _SDL_GetAppState,\n                SDL_GetAudioDriver: _SDL_GetAudioDriver,\n                SDL_GetClipRect: _SDL_GetClipRect,\n                SDL_GetCurrentAudioDriver: _SDL_GetCurrentAudioDriver,\n                SDL_GetError: _SDL_GetError,\n                SDL_GetKeyName: _SDL_GetKeyName,\n                SDL_GetKeyState: _SDL_GetKeyState,\n                SDL_GetKeyboardState: _SDL_GetKeyboardState,\n                SDL_GetModState: _SDL_GetModState,\n                SDL_GetMouseState: _SDL_GetMouseState,\n                SDL_GetNumAudioDrivers: _SDL_GetNumAudioDrivers,\n                SDL_GetRGB: _SDL_GetRGB,\n                SDL_GetRGBA: _SDL_GetRGBA,\n                SDL_GetScancodeFromKey: _SDL_GetScancodeFromKey,\n                SDL_GetThreadID: _SDL_GetThreadID,\n                SDL_GetTicks: _SDL_GetTicks,\n                SDL_GetVideoInfo: _SDL_GetVideoInfo,\n                SDL_GetVideoSurface: _SDL_GetVideoSurface,\n                SDL_GetWindowFlags: _SDL_GetWindowFlags,\n                SDL_GetWindowSize: _SDL_GetWindowSize,\n                SDL_Has3DNow: _SDL_Has3DNow,\n                SDL_Has3DNowExt: _SDL_Has3DNowExt,\n                SDL_HasAltiVec: _SDL_HasAltiVec,\n                SDL_HasMMX: _SDL_HasMMX,\n                SDL_HasMMXExt: _SDL_HasMMXExt,\n                SDL_HasRDTSC: _SDL_HasRDTSC,\n                SDL_HasSSE: _SDL_HasSSE,\n                SDL_HasSSE2: _SDL_HasSSE2,\n                SDL_Init: _SDL_Init,\n                SDL_InitSubSystem: _SDL_InitSubSystem,\n                SDL_JoystickClose: _SDL_JoystickClose,\n                SDL_JoystickEventState: _SDL_JoystickEventState,\n                SDL_JoystickGetAxis: _SDL_JoystickGetAxis,\n                SDL_JoystickGetBall: _SDL_JoystickGetBall,\n                SDL_JoystickGetButton: _SDL_JoystickGetButton,\n                SDL_JoystickGetHat: _SDL_JoystickGetHat,\n                SDL_JoystickIndex: _SDL_JoystickIndex,\n                SDL_JoystickName: _SDL_JoystickName,\n                SDL_JoystickNumAxes: _SDL_JoystickNumAxes,\n                SDL_JoystickNumBalls: _SDL_JoystickNumBalls,\n                SDL_JoystickNumButtons: _SDL_JoystickNumButtons,\n                SDL_JoystickNumHats: _SDL_JoystickNumHats,\n                SDL_JoystickOpen: _SDL_JoystickOpen,\n                SDL_JoystickOpened: _SDL_JoystickOpened,\n                SDL_JoystickUpdate: _SDL_JoystickUpdate,\n                SDL_Linked_Version: _SDL_Linked_Version,\n                SDL_ListModes: _SDL_ListModes,\n                SDL_LoadBMP_RW: _SDL_LoadBMP_RW,\n                SDL_LockAudio: _SDL_LockAudio,\n                SDL_LockSurface: _SDL_LockSurface,\n                SDL_LogSetOutputFunction: _SDL_LogSetOutputFunction,\n                SDL_LowerBlit: _SDL_LowerBlit,\n                SDL_LowerBlitScaled: _SDL_LowerBlitScaled,\n                SDL_MapRGB: _SDL_MapRGB,\n                SDL_MapRGBA: _SDL_MapRGBA,\n                SDL_NumJoysticks: _SDL_NumJoysticks,\n                SDL_OpenAudio: _SDL_OpenAudio,\n                SDL_PauseAudio: _SDL_PauseAudio,\n                SDL_PeepEvents: _SDL_PeepEvents,\n                SDL_PollEvent: _SDL_PollEvent,\n                SDL_PumpEvents: _SDL_PumpEvents,\n                SDL_PushEvent: _SDL_PushEvent,\n                SDL_Quit: _SDL_Quit,\n                SDL_QuitSubSystem: _SDL_QuitSubSystem,\n                SDL_RWFromConstMem: _SDL_RWFromConstMem,\n                SDL_RWFromFile: _SDL_RWFromFile,\n                SDL_RWFromMem: _SDL_RWFromMem,\n                SDL_RemoveTimer: _SDL_RemoveTimer,\n                SDL_SaveBMP_RW: _SDL_SaveBMP_RW,\n                SDL_SetAlpha: _SDL_SetAlpha,\n                SDL_SetClipRect: _SDL_SetClipRect,\n                SDL_SetColorKey: _SDL_SetColorKey,\n                SDL_SetColors: _SDL_SetColors,\n                SDL_SetError: _SDL_SetError,\n                SDL_SetGamma: _SDL_SetGamma,\n                SDL_SetGammaRamp: _SDL_SetGammaRamp,\n                SDL_SetPalette: _SDL_SetPalette,\n                SDL_SetVideoMode: _SDL_SetVideoMode,\n                SDL_SetWindowFullscreen: _SDL_SetWindowFullscreen,\n                SDL_SetWindowTitle: _SDL_SetWindowTitle,\n                SDL_ShowCursor: _SDL_ShowCursor,\n                SDL_StartTextInput: _SDL_StartTextInput,\n                SDL_StopTextInput: _SDL_StopTextInput,\n                SDL_ThreadID: _SDL_ThreadID,\n                SDL_UnlockAudio: _SDL_UnlockAudio,\n                SDL_UnlockSurface: _SDL_UnlockSurface,\n                SDL_UpdateRect: _SDL_UpdateRect,\n                SDL_UpdateRects: _SDL_UpdateRects,\n                SDL_UpperBlit: _SDL_UpperBlit,\n                SDL_UpperBlitScaled: _SDL_UpperBlitScaled,\n                SDL_VideoDriverName: _SDL_VideoDriverName,\n                SDL_VideoModeOK: _SDL_VideoModeOK,\n                SDL_VideoQuit: _SDL_VideoQuit,\n                SDL_WM_GrabInput: _SDL_WM_GrabInput,\n                SDL_WM_IconifyWindow: _SDL_WM_IconifyWindow,\n                SDL_WM_SetCaption: _SDL_WM_SetCaption,\n                SDL_WM_SetIcon: _SDL_WM_SetIcon,\n                SDL_WM_ToggleFullScreen: _SDL_WM_ToggleFullScreen,\n                SDL_WaitThread: _SDL_WaitThread,\n                SDL_WarpMouse: _SDL_WarpMouse,\n                SDL_WasInit: _SDL_WasInit,\n                SDL_mutexP: _SDL_mutexP,\n                SDL_mutexV: _SDL_mutexV,\n                TTF_CloseFont: _TTF_CloseFont,\n                TTF_FontAscent: _TTF_FontAscent,\n                TTF_FontDescent: _TTF_FontDescent,\n                TTF_FontHeight: _TTF_FontHeight,\n                TTF_FontLineSkip: _TTF_FontLineSkip,\n                TTF_GlyphMetrics: _TTF_GlyphMetrics,\n                TTF_Init: _TTF_Init,\n                TTF_OpenFont: _TTF_OpenFont,\n                TTF_Quit: _TTF_Quit,\n                TTF_RenderText_Blended: _TTF_RenderText_Blended,\n                TTF_RenderText_Shaded: _TTF_RenderText_Shaded,\n                TTF_RenderText_Solid: _TTF_RenderText_Solid,\n                TTF_RenderUTF8_Solid: _TTF_RenderUTF8_Solid,\n                TTF_SizeText: _TTF_SizeText,\n                TTF_SizeUTF8: _TTF_SizeUTF8,\n                XChangeWindowAttributes: _XChangeWindowAttributes,\n                XCreateWindow: _XCreateWindow,\n                XInternAtom: _XInternAtom,\n                XMapWindow: _XMapWindow,\n                XOpenDisplay: _XOpenDisplay,\n                XPending: _XPending,\n                XSendEvent: _XSendEvent,\n                XSetWMHints: _XSetWMHints,\n                XStoreName: _XStoreName,\n                _Unwind_Backtrace: __Unwind_Backtrace,\n                _Unwind_DeleteException: __Unwind_DeleteException,\n                _Unwind_FindEnclosingFunction: __Unwind_FindEnclosingFunction,\n                _Unwind_GetIPInfo: __Unwind_GetIPInfo,\n                _Unwind_RaiseException: __Unwind_RaiseException,\n                __asctime_r: ___asctime_r,\n                __assert_fail: ___assert_fail,\n                __call_sighandler: ___call_sighandler,\n                __cxa_begin_catch: ___cxa_begin_catch,\n                __cxa_call_unexpected: ___cxa_call_unexpected,\n                __cxa_current_primary_exception: ___cxa_current_primary_exception,\n                __cxa_end_catch: ___cxa_end_catch,\n                __cxa_find_matching_catch_2: ___cxa_find_matching_catch_2,\n                __cxa_find_matching_catch_3: ___cxa_find_matching_catch_3,\n                __cxa_find_matching_catch_4: ___cxa_find_matching_catch_4,\n                __cxa_find_matching_catch_5: ___cxa_find_matching_catch_5,\n                __cxa_rethrow: ___cxa_rethrow,\n                __cxa_rethrow_primary_exception: ___cxa_rethrow_primary_exception,\n                __cxa_throw: ___cxa_throw,\n                __cxa_uncaught_exceptions: ___cxa_uncaught_exceptions,\n                __global_base: ___global_base,\n                __heap_base: ___heap_base,\n                __indirect_function_table: wasmTable,\n                __memory_base: ___memory_base,\n                __resumeException: ___resumeException,\n                __stack_high: ___stack_high,\n                __stack_low: ___stack_low,\n                __stack_pointer: ___stack_pointer,\n                __syscall__newselect: ___syscall__newselect,\n                __syscall_accept4: ___syscall_accept4,\n                __syscall_bind: ___syscall_bind,\n                __syscall_chdir: ___syscall_chdir,\n                __syscall_chmod: ___syscall_chmod,\n                __syscall_connect: ___syscall_connect,\n                __syscall_dup: ___syscall_dup,\n                __syscall_dup3: ___syscall_dup3,\n                __syscall_faccessat: ___syscall_faccessat,\n                __syscall_fadvise64: ___syscall_fadvise64,\n                __syscall_fallocate: ___syscall_fallocate,\n                __syscall_fchdir: ___syscall_fchdir,\n                __syscall_fchmod: ___syscall_fchmod,\n                __syscall_fchmodat2: ___syscall_fchmodat2,\n                __syscall_fchown32: ___syscall_fchown32,\n                __syscall_fchownat: ___syscall_fchownat,\n                __syscall_fcntl64: ___syscall_fcntl64,\n                __syscall_fdatasync: ___syscall_fdatasync,\n                __syscall_fstat64: ___syscall_fstat64,\n                __syscall_fstatfs64: ___syscall_fstatfs64,\n                __syscall_ftruncate64: ___syscall_ftruncate64,\n                __syscall_getcwd: ___syscall_getcwd,\n                __syscall_getdents64: ___syscall_getdents64,\n                __syscall_getpeername: ___syscall_getpeername,\n                __syscall_getsockname: ___syscall_getsockname,\n                __syscall_getsockopt: ___syscall_getsockopt,\n                __syscall_ioctl: ___syscall_ioctl,\n                __syscall_listen: ___syscall_listen,\n                __syscall_lstat64: ___syscall_lstat64,\n                __syscall_mkdirat: ___syscall_mkdirat,\n                __syscall_mknodat: ___syscall_mknodat,\n                __syscall_newfstatat: ___syscall_newfstatat,\n                __syscall_openat: ___syscall_openat,\n                __syscall_pipe: ___syscall_pipe,\n                __syscall_poll: ___syscall_poll,\n                __syscall_readlinkat: ___syscall_readlinkat,\n                __syscall_recvfrom: ___syscall_recvfrom,\n                __syscall_recvmsg: ___syscall_recvmsg,\n                __syscall_renameat: ___syscall_renameat,\n                __syscall_rmdir: ___syscall_rmdir,\n                __syscall_sendmsg: ___syscall_sendmsg,\n                __syscall_sendto: ___syscall_sendto,\n                __syscall_socket: ___syscall_socket,\n                __syscall_stat64: ___syscall_stat64,\n                __syscall_statfs64: ___syscall_statfs64,\n                __syscall_symlink: ___syscall_symlink,\n                __syscall_symlinkat: ___syscall_symlinkat,\n                __syscall_truncate64: ___syscall_truncate64,\n                __syscall_unlinkat: ___syscall_unlinkat,\n                __syscall_utimensat: ___syscall_utimensat,\n                __table_base: ___table_base,\n                _abort_js: __abort_js,\n                _dlopen_js: __dlopen_js,\n                _dlsym_catchup_js: __dlsym_catchup_js,\n                _dlsym_js: __dlsym_js,\n                _embind_create_inheriting_constructor: __embind_create_inheriting_constructor,\n                _embind_finalize_value_array: __embind_finalize_value_array,\n                _embind_finalize_value_object: __embind_finalize_value_object,\n                _embind_register_bigint: __embind_register_bigint,\n                _embind_register_bool: __embind_register_bool,\n                _embind_register_class: __embind_register_class,\n                _embind_register_class_class_function: __embind_register_class_class_function,\n                _embind_register_class_class_property: __embind_register_class_class_property,\n                _embind_register_class_constructor: __embind_register_class_constructor,\n                _embind_register_class_function: __embind_register_class_function,\n                _embind_register_class_property: __embind_register_class_property,\n                _embind_register_constant: __embind_register_constant,\n                _embind_register_emval: __embind_register_emval,\n                _embind_register_enum: __embind_register_enum,\n                _embind_register_enum_value: __embind_register_enum_value,\n                _embind_register_float: __embind_register_float,\n                _embind_register_function: __embind_register_function,\n                _embind_register_integer: __embind_register_integer,\n                _embind_register_memory_view: __embind_register_memory_view,\n                _embind_register_optional: __embind_register_optional,\n                _embind_register_smart_ptr: __embind_register_smart_ptr,\n                _embind_register_std_string: __embind_register_std_string,\n                _embind_register_std_wstring: __embind_register_std_wstring,\n                _embind_register_user_type: __embind_register_user_type,\n                _embind_register_value_array: __embind_register_value_array,\n                _embind_register_value_array_element: __embind_register_value_array_element,\n                _embind_register_value_object: __embind_register_value_object,\n                _embind_register_value_object_field: __embind_register_value_object_field,\n                _embind_register_void: __embind_register_void,\n                _emscripten_dlopen_js: __emscripten_dlopen_js,\n                _emscripten_fs_load_embedded_files: __emscripten_fs_load_embedded_files,\n                _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,\n                _emscripten_get_progname: __emscripten_get_progname,\n                _emscripten_lookup_name: __emscripten_lookup_name,\n                _emscripten_memcpy_js: __emscripten_memcpy_js,\n                _emscripten_push_main_loop_blocker: __emscripten_push_main_loop_blocker,\n                _emscripten_push_uncounted_main_loop_blocker: __emscripten_push_uncounted_main_loop_blocker,\n                _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear,\n                _emscripten_set_offscreencanvas_size: __emscripten_set_offscreencanvas_size,\n                _emscripten_system: __emscripten_system,\n                _emscripten_throw_longjmp: __emscripten_throw_longjmp,\n                _emval_as: __emval_as,\n                _emval_as_int64: __emval_as_int64,\n                _emval_as_uint64: __emval_as_uint64,\n                _emval_call: __emval_call,\n                _emval_call_method: __emval_call_method,\n                _emval_coro_make_promise: __emval_coro_make_promise,\n                _emval_coro_suspend: __emval_coro_suspend,\n                _emval_decref: __emval_decref,\n                _emval_delete: __emval_delete,\n                _emval_equals: __emval_equals,\n                _emval_get_global: __emval_get_global,\n                _emval_get_method_caller: __emval_get_method_caller,\n                _emval_get_module_property: __emval_get_module_property,\n                _emval_get_property: __emval_get_property,\n                _emval_greater_than: __emval_greater_than,\n                _emval_in: __emval_in,\n                _emval_incref: __emval_incref,\n                _emval_instanceof: __emval_instanceof,\n                _emval_is_number: __emval_is_number,\n                _emval_is_string: __emval_is_string,\n                _emval_iter_begin: __emval_iter_begin,\n                _emval_iter_next: __emval_iter_next,\n                _emval_less_than: __emval_less_than,\n                _emval_new_array: __emval_new_array,\n                _emval_new_array_from_memory_view: __emval_new_array_from_memory_view,\n                _emval_new_cstring: __emval_new_cstring,\n                _emval_new_object: __emval_new_object,\n                _emval_new_u16string: __emval_new_u16string,\n                _emval_new_u8string: __emval_new_u8string,\n                _emval_not: __emval_not,\n                _emval_register_symbol: __emval_register_symbol,\n                _emval_run_destructors: __emval_run_destructors,\n                _emval_set_property: __emval_set_property,\n                _emval_strictly_equals: __emval_strictly_equals,\n                _emval_take_value: __emval_take_value,\n                _emval_throw: __emval_throw,\n                _emval_typeof: __emval_typeof,\n                _glGetActiveAttribOrUniform: __glGetActiveAttribOrUniform,\n                _gmtime_js: __gmtime_js,\n                _localtime_js: __localtime_js,\n                _mktime_js: __mktime_js,\n                _mmap_js: __mmap_js,\n                _msync_js: __msync_js,\n                _munmap_js: __munmap_js,\n                _setitimer_js: __setitimer_js,\n                _timegm_js: __timegm_js,\n                _tzset_js: __tzset_js,\n                alBuffer3f: _alBuffer3f,\n                alBuffer3i: _alBuffer3i,\n                alBufferData: _alBufferData,\n                alBufferf: _alBufferf,\n                alBufferfv: _alBufferfv,\n                alBufferi: _alBufferi,\n                alBufferiv: _alBufferiv,\n                alDeleteBuffers: _alDeleteBuffers,\n                alDeleteSources: _alDeleteSources,\n                alDisable: _alDisable,\n                alDistanceModel: _alDistanceModel,\n                alDopplerFactor: _alDopplerFactor,\n                alDopplerVelocity: _alDopplerVelocity,\n                alEnable: _alEnable,\n                alGenBuffers: _alGenBuffers,\n                alGenSources: _alGenSources,\n                alGetBoolean: _alGetBoolean,\n                alGetBooleanv: _alGetBooleanv,\n                alGetBuffer3f: _alGetBuffer3f,\n                alGetBuffer3i: _alGetBuffer3i,\n                alGetBufferf: _alGetBufferf,\n                alGetBufferfv: _alGetBufferfv,\n                alGetBufferi: _alGetBufferi,\n                alGetBufferiv: _alGetBufferiv,\n                alGetDouble: _alGetDouble,\n                alGetDoublev: _alGetDoublev,\n                alGetEnumValue: _alGetEnumValue,\n                alGetError: _alGetError,\n                alGetFloat: _alGetFloat,\n                alGetFloatv: _alGetFloatv,\n                alGetInteger: _alGetInteger,\n                alGetIntegerv: _alGetIntegerv,\n                alGetListener3f: _alGetListener3f,\n                alGetListener3i: _alGetListener3i,\n                alGetListenerf: _alGetListenerf,\n                alGetListenerfv: _alGetListenerfv,\n                alGetListeneri: _alGetListeneri,\n                alGetListeneriv: _alGetListeneriv,\n                alGetSource3f: _alGetSource3f,\n                alGetSource3i: _alGetSource3i,\n                alGetSourcef: _alGetSourcef,\n                alGetSourcefv: _alGetSourcefv,\n                alGetSourcei: _alGetSourcei,\n                alGetSourceiv: _alGetSourceiv,\n                alGetString: _alGetString,\n                alIsBuffer: _alIsBuffer,\n                alIsEnabled: _alIsEnabled,\n                alIsExtensionPresent: _alIsExtensionPresent,\n                alIsSource: _alIsSource,\n                alListener3f: _alListener3f,\n                alListener3i: _alListener3i,\n                alListenerf: _alListenerf,\n                alListenerfv: _alListenerfv,\n                alListeneri: _alListeneri,\n                alListeneriv: _alListeneriv,\n                alSource3f: _alSource3f,\n                alSource3i: _alSource3i,\n                alSourcePause: _alSourcePause,\n                alSourcePausev: _alSourcePausev,\n                alSourcePlay: _alSourcePlay,\n                alSourcePlayv: _alSourcePlayv,\n                alSourceQueueBuffers: _alSourceQueueBuffers,\n                alSourceRewind: _alSourceRewind,\n                alSourceRewindv: _alSourceRewindv,\n                alSourceStop: _alSourceStop,\n                alSourceStopv: _alSourceStopv,\n                alSourceUnqueueBuffers: _alSourceUnqueueBuffers,\n                alSourcef: _alSourcef,\n                alSourcefv: _alSourcefv,\n                alSourcei: _alSourcei,\n                alSourceiv: _alSourceiv,\n                alSpeedOfSound: _alSpeedOfSound,\n                alcCaptureCloseDevice: _alcCaptureCloseDevice,\n                alcCaptureOpenDevice: _alcCaptureOpenDevice,\n                alcCaptureSamples: _alcCaptureSamples,\n                alcCaptureStart: _alcCaptureStart,\n                alcCaptureStop: _alcCaptureStop,\n                alcCloseDevice: _alcCloseDevice,\n                alcCreateContext: _alcCreateContext,\n                alcDestroyContext: _alcDestroyContext,\n                alcGetContextsDevice: _alcGetContextsDevice,\n                alcGetCurrentContext: _alcGetCurrentContext,\n                alcGetEnumValue: _alcGetEnumValue,\n                alcGetError: _alcGetError,\n                alcGetIntegerv: _alcGetIntegerv,\n                alcGetString: _alcGetString,\n                alcIsExtensionPresent: _alcIsExtensionPresent,\n                alcMakeContextCurrent: _alcMakeContextCurrent,\n                alcOpenDevice: _alcOpenDevice,\n                alcProcessContext: _alcProcessContext,\n                alcSuspendContext: _alcSuspendContext,\n                boxColor: _boxColor,\n                boxRGBA: _boxRGBA,\n                clock_res_get: _clock_res_get,\n                clock_time_get: _clock_time_get,\n                duckdb_web_fs_directory_create: _duckdb_web_fs_directory_create,\n                duckdb_web_fs_directory_exists: _duckdb_web_fs_directory_exists,\n                duckdb_web_fs_directory_list_files: _duckdb_web_fs_directory_list_files,\n                duckdb_web_fs_directory_remove: _duckdb_web_fs_directory_remove,\n                duckdb_web_fs_file_close: _duckdb_web_fs_file_close,\n                duckdb_web_fs_file_drop_file: _duckdb_web_fs_file_drop_file,\n                duckdb_web_fs_file_exists: _duckdb_web_fs_file_exists,\n                duckdb_web_fs_file_get_last_modified_time: _duckdb_web_fs_file_get_last_modified_time,\n                duckdb_web_fs_file_move: _duckdb_web_fs_file_move,\n                duckdb_web_fs_file_open: _duckdb_web_fs_file_open,\n                duckdb_web_fs_file_read: _duckdb_web_fs_file_read,\n                duckdb_web_fs_file_remove: _duckdb_web_fs_file_remove,\n                duckdb_web_fs_file_sync: _duckdb_web_fs_file_sync,\n                duckdb_web_fs_file_truncate: _duckdb_web_fs_file_truncate,\n                duckdb_web_fs_file_write: _duckdb_web_fs_file_write,\n                duckdb_web_fs_get_default_data_protocol: _duckdb_web_fs_get_default_data_protocol,\n                duckdb_web_fs_glob: _duckdb_web_fs_glob,\n                duckdb_web_test_platform_feature: _duckdb_web_test_platform_feature,\n                duckdb_web_udf_scalar_call: _duckdb_web_udf_scalar_call,\n                eglBindAPI: _eglBindAPI,\n                eglChooseConfig: _eglChooseConfig,\n                eglCreateContext: _eglCreateContext,\n                eglCreateWindowSurface: _eglCreateWindowSurface,\n                eglDestroyContext: _eglDestroyContext,\n                eglDestroySurface: _eglDestroySurface,\n                eglGetConfigAttrib: _eglGetConfigAttrib,\n                eglGetConfigs: _eglGetConfigs,\n                eglGetCurrentContext: _eglGetCurrentContext,\n                eglGetCurrentDisplay: _eglGetCurrentDisplay,\n                eglGetCurrentSurface: _eglGetCurrentSurface,\n                eglGetDisplay: _eglGetDisplay,\n                eglGetError: _eglGetError,\n                eglInitialize: _eglInitialize,\n                eglMakeCurrent: _eglMakeCurrent,\n                eglQueryAPI: _eglQueryAPI,\n                eglQueryContext: _eglQueryContext,\n                eglQueryString: _eglQueryString,\n                eglQuerySurface: _eglQuerySurface,\n                eglReleaseThread: _eglReleaseThread,\n                eglSwapBuffers: _eglSwapBuffers,\n                eglSwapInterval: _eglSwapInterval,\n                eglTerminate: _eglTerminate,\n                eglWaitClient: _eglWaitClient,\n                eglWaitGL: _eglWaitGL,\n                eglWaitNative: _eglWaitNative,\n                ellipseColor: _ellipseColor,\n                ellipseRGBA: _ellipseRGBA,\n                emscripten_SDL_SetEventHandler: _emscripten_SDL_SetEventHandler,\n                emscripten_alcDevicePauseSOFT: _emscripten_alcDevicePauseSOFT,\n                emscripten_alcDeviceResumeSOFT: _emscripten_alcDeviceResumeSOFT,\n                emscripten_alcGetStringiSOFT: _emscripten_alcGetStringiSOFT,\n                emscripten_alcResetDeviceSOFT: _emscripten_alcResetDeviceSOFT,\n                emscripten_asm_const_async_on_main_thread: _emscripten_asm_const_async_on_main_thread,\n                emscripten_asm_const_double: _emscripten_asm_const_double,\n                emscripten_asm_const_double_sync_on_main_thread: _emscripten_asm_const_double_sync_on_main_thread,\n                emscripten_asm_const_int: _emscripten_asm_const_int,\n                emscripten_asm_const_int_sync_on_main_thread: _emscripten_asm_const_int_sync_on_main_thread,\n                emscripten_asm_const_ptr: _emscripten_asm_const_ptr,\n                emscripten_asm_const_ptr_sync_on_main_thread: _emscripten_asm_const_ptr_sync_on_main_thread,\n                emscripten_async_call: _emscripten_async_call,\n                emscripten_async_load_script: _emscripten_async_load_script,\n                emscripten_async_run_script: _emscripten_async_run_script,\n                emscripten_async_wget: _emscripten_async_wget,\n                emscripten_async_wget2: _emscripten_async_wget2,\n                emscripten_async_wget2_abort: _emscripten_async_wget2_abort,\n                emscripten_async_wget2_data: _emscripten_async_wget2_data,\n                emscripten_async_wget_data: _emscripten_async_wget_data,\n                emscripten_call_worker: _emscripten_call_worker,\n                emscripten_cancel_animation_frame: _emscripten_cancel_animation_frame,\n                emscripten_cancel_main_loop: _emscripten_cancel_main_loop,\n                emscripten_clear_immediate: _emscripten_clear_immediate,\n                emscripten_clear_interval: _emscripten_clear_interval,\n                emscripten_clear_timeout: _emscripten_clear_timeout,\n                emscripten_console_error: _emscripten_console_error,\n                emscripten_console_log: _emscripten_console_log,\n                emscripten_console_trace: _emscripten_console_trace,\n                emscripten_console_warn: _emscripten_console_warn,\n                emscripten_create_worker: _emscripten_create_worker,\n                emscripten_date_now: _emscripten_date_now,\n                emscripten_debugger: _emscripten_debugger,\n                emscripten_destroy_worker: _emscripten_destroy_worker,\n                emscripten_enter_soft_fullscreen: _emscripten_enter_soft_fullscreen,\n                emscripten_err: _emscripten_err,\n                emscripten_errn: _emscripten_errn,\n                emscripten_exit_fullscreen: _emscripten_exit_fullscreen,\n                emscripten_exit_pointerlock: _emscripten_exit_pointerlock,\n                emscripten_exit_soft_fullscreen: _emscripten_exit_soft_fullscreen,\n                emscripten_exit_with_live_runtime: _emscripten_exit_with_live_runtime,\n                emscripten_fiber_swap: _emscripten_fiber_swap,\n                emscripten_force_exit: _emscripten_force_exit,\n                emscripten_get_battery_status: _emscripten_get_battery_status,\n                emscripten_get_callstack: _emscripten_get_callstack,\n                emscripten_get_canvas_element_size: _emscripten_get_canvas_element_size,\n                emscripten_get_canvas_size: _emscripten_get_canvas_size,\n                emscripten_get_compiler_setting: _emscripten_get_compiler_setting,\n                emscripten_get_device_pixel_ratio: _emscripten_get_device_pixel_ratio,\n                emscripten_get_devicemotion_status: _emscripten_get_devicemotion_status,\n                emscripten_get_deviceorientation_status: _emscripten_get_deviceorientation_status,\n                emscripten_get_element_css_size: _emscripten_get_element_css_size,\n                emscripten_get_fullscreen_status: _emscripten_get_fullscreen_status,\n                emscripten_get_gamepad_status: _emscripten_get_gamepad_status,\n                emscripten_get_heap_max: _emscripten_get_heap_max,\n                emscripten_get_main_loop_timing: _emscripten_get_main_loop_timing,\n                emscripten_get_mouse_status: _emscripten_get_mouse_status,\n                emscripten_get_now: _emscripten_get_now,\n                emscripten_get_now_res: _emscripten_get_now_res,\n                emscripten_get_num_gamepads: _emscripten_get_num_gamepads,\n                emscripten_get_orientation_status: _emscripten_get_orientation_status,\n                emscripten_get_pointerlock_status: _emscripten_get_pointerlock_status,\n                emscripten_get_preloaded_image_data: _emscripten_get_preloaded_image_data,\n                emscripten_get_preloaded_image_data_from_FILE: _emscripten_get_preloaded_image_data_from_FILE,\n                emscripten_get_screen_size: _emscripten_get_screen_size,\n                emscripten_get_visibility_status: _emscripten_get_visibility_status,\n                emscripten_get_window_title: _emscripten_get_window_title,\n                emscripten_get_worker_queue_size: _emscripten_get_worker_queue_size,\n                emscripten_glActiveTexture: _emscripten_glActiveTexture,\n                emscripten_glAttachShader: _emscripten_glAttachShader,\n                emscripten_glBegin: _emscripten_glBegin,\n                emscripten_glBeginQueryEXT: _emscripten_glBeginQueryEXT,\n                emscripten_glBindAttribLocation: _emscripten_glBindAttribLocation,\n                emscripten_glBindBuffer: _emscripten_glBindBuffer,\n                emscripten_glBindFramebuffer: _emscripten_glBindFramebuffer,\n                emscripten_glBindRenderbuffer: _emscripten_glBindRenderbuffer,\n                emscripten_glBindTexture: _emscripten_glBindTexture,\n                emscripten_glBindVertexArray: _emscripten_glBindVertexArray,\n                emscripten_glBindVertexArrayOES: _emscripten_glBindVertexArrayOES,\n                emscripten_glBlendColor: _emscripten_glBlendColor,\n                emscripten_glBlendEquation: _emscripten_glBlendEquation,\n                emscripten_glBlendEquationSeparate: _emscripten_glBlendEquationSeparate,\n                emscripten_glBlendFunc: _emscripten_glBlendFunc,\n                emscripten_glBlendFuncSeparate: _emscripten_glBlendFuncSeparate,\n                emscripten_glBufferData: _emscripten_glBufferData,\n                emscripten_glBufferSubData: _emscripten_glBufferSubData,\n                emscripten_glCheckFramebufferStatus: _emscripten_glCheckFramebufferStatus,\n                emscripten_glClear: _emscripten_glClear,\n                emscripten_glClearColor: _emscripten_glClearColor,\n                emscripten_glClearDepth: _emscripten_glClearDepth,\n                emscripten_glClearDepthf: _emscripten_glClearDepthf,\n                emscripten_glClearStencil: _emscripten_glClearStencil,\n                emscripten_glClipControlEXT: _emscripten_glClipControlEXT,\n                emscripten_glColorMask: _emscripten_glColorMask,\n                emscripten_glCompileShader: _emscripten_glCompileShader,\n                emscripten_glCompressedTexImage2D: _emscripten_glCompressedTexImage2D,\n                emscripten_glCompressedTexSubImage2D: _emscripten_glCompressedTexSubImage2D,\n                emscripten_glCopyTexImage2D: _emscripten_glCopyTexImage2D,\n                emscripten_glCopyTexSubImage2D: _emscripten_glCopyTexSubImage2D,\n                emscripten_glCreateProgram: _emscripten_glCreateProgram,\n                emscripten_glCreateShader: _emscripten_glCreateShader,\n                emscripten_glCullFace: _emscripten_glCullFace,\n                emscripten_glDeleteBuffers: _emscripten_glDeleteBuffers,\n                emscripten_glDeleteFramebuffers: _emscripten_glDeleteFramebuffers,\n                emscripten_glDeleteProgram: _emscripten_glDeleteProgram,\n                emscripten_glDeleteQueriesEXT: _emscripten_glDeleteQueriesEXT,\n                emscripten_glDeleteRenderbuffers: _emscripten_glDeleteRenderbuffers,\n                emscripten_glDeleteShader: _emscripten_glDeleteShader,\n                emscripten_glDeleteTextures: _emscripten_glDeleteTextures,\n                emscripten_glDeleteVertexArrays: _emscripten_glDeleteVertexArrays,\n                emscripten_glDeleteVertexArraysOES: _emscripten_glDeleteVertexArraysOES,\n                emscripten_glDepthFunc: _emscripten_glDepthFunc,\n                emscripten_glDepthMask: _emscripten_glDepthMask,\n                emscripten_glDepthRange: _emscripten_glDepthRange,\n                emscripten_glDepthRangef: _emscripten_glDepthRangef,\n                emscripten_glDetachShader: _emscripten_glDetachShader,\n                emscripten_glDisable: _emscripten_glDisable,\n                emscripten_glDisableVertexAttribArray: _emscripten_glDisableVertexAttribArray,\n                emscripten_glDrawArrays: _emscripten_glDrawArrays,\n                emscripten_glDrawArraysInstanced: _emscripten_glDrawArraysInstanced,\n                emscripten_glDrawArraysInstancedANGLE: _emscripten_glDrawArraysInstancedANGLE,\n                emscripten_glDrawArraysInstancedARB: _emscripten_glDrawArraysInstancedARB,\n                emscripten_glDrawArraysInstancedEXT: _emscripten_glDrawArraysInstancedEXT,\n                emscripten_glDrawArraysInstancedNV: _emscripten_glDrawArraysInstancedNV,\n                emscripten_glDrawBuffers: _emscripten_glDrawBuffers,\n                emscripten_glDrawBuffersEXT: _emscripten_glDrawBuffersEXT,\n                emscripten_glDrawBuffersWEBGL: _emscripten_glDrawBuffersWEBGL,\n                emscripten_glDrawElements: _emscripten_glDrawElements,\n                emscripten_glDrawElementsInstanced: _emscripten_glDrawElementsInstanced,\n                emscripten_glDrawElementsInstancedANGLE: _emscripten_glDrawElementsInstancedANGLE,\n                emscripten_glDrawElementsInstancedARB: _emscripten_glDrawElementsInstancedARB,\n                emscripten_glDrawElementsInstancedEXT: _emscripten_glDrawElementsInstancedEXT,\n                emscripten_glDrawElementsInstancedNV: _emscripten_glDrawElementsInstancedNV,\n                emscripten_glEnable: _emscripten_glEnable,\n                emscripten_glEnableVertexAttribArray: _emscripten_glEnableVertexAttribArray,\n                emscripten_glEndQueryEXT: _emscripten_glEndQueryEXT,\n                emscripten_glFinish: _emscripten_glFinish,\n                emscripten_glFlush: _emscripten_glFlush,\n                emscripten_glFramebufferRenderbuffer: _emscripten_glFramebufferRenderbuffer,\n                emscripten_glFramebufferTexture2D: _emscripten_glFramebufferTexture2D,\n                emscripten_glFrontFace: _emscripten_glFrontFace,\n                emscripten_glGenBuffers: _emscripten_glGenBuffers,\n                emscripten_glGenFramebuffers: _emscripten_glGenFramebuffers,\n                emscripten_glGenQueriesEXT: _emscripten_glGenQueriesEXT,\n                emscripten_glGenRenderbuffers: _emscripten_glGenRenderbuffers,\n                emscripten_glGenTextures: _emscripten_glGenTextures,\n                emscripten_glGenVertexArrays: _emscripten_glGenVertexArrays,\n                emscripten_glGenVertexArraysOES: _emscripten_glGenVertexArraysOES,\n                emscripten_glGenerateMipmap: _emscripten_glGenerateMipmap,\n                emscripten_glGetActiveAttrib: _emscripten_glGetActiveAttrib,\n                emscripten_glGetActiveUniform: _emscripten_glGetActiveUniform,\n                emscripten_glGetAttachedShaders: _emscripten_glGetAttachedShaders,\n                emscripten_glGetAttribLocation: _emscripten_glGetAttribLocation,\n                emscripten_glGetBooleanv: _emscripten_glGetBooleanv,\n                emscripten_glGetBufferParameteriv: _emscripten_glGetBufferParameteriv,\n                emscripten_glGetError: _emscripten_glGetError,\n                emscripten_glGetFloatv: _emscripten_glGetFloatv,\n                emscripten_glGetFramebufferAttachmentParameteriv: _emscripten_glGetFramebufferAttachmentParameteriv,\n                emscripten_glGetIntegerv: _emscripten_glGetIntegerv,\n                emscripten_glGetProgramInfoLog: _emscripten_glGetProgramInfoLog,\n                emscripten_glGetProgramiv: _emscripten_glGetProgramiv,\n                emscripten_glGetQueryObjecti64vEXT: _emscripten_glGetQueryObjecti64vEXT,\n                emscripten_glGetQueryObjectivEXT: _emscripten_glGetQueryObjectivEXT,\n                emscripten_glGetQueryObjectui64vEXT: _emscripten_glGetQueryObjectui64vEXT,\n                emscripten_glGetQueryObjectuivEXT: _emscripten_glGetQueryObjectuivEXT,\n                emscripten_glGetQueryivEXT: _emscripten_glGetQueryivEXT,\n                emscripten_glGetRenderbufferParameteriv: _emscripten_glGetRenderbufferParameteriv,\n                emscripten_glGetShaderInfoLog: _emscripten_glGetShaderInfoLog,\n                emscripten_glGetShaderPrecisionFormat: _emscripten_glGetShaderPrecisionFormat,\n                emscripten_glGetShaderSource: _emscripten_glGetShaderSource,\n                emscripten_glGetShaderiv: _emscripten_glGetShaderiv,\n                emscripten_glGetString: _emscripten_glGetString,\n                emscripten_glGetTexParameterfv: _emscripten_glGetTexParameterfv,\n                emscripten_glGetTexParameteriv: _emscripten_glGetTexParameteriv,\n                emscripten_glGetUniformLocation: _emscripten_glGetUniformLocation,\n                emscripten_glGetUniformfv: _emscripten_glGetUniformfv,\n                emscripten_glGetUniformiv: _emscripten_glGetUniformiv,\n                emscripten_glGetVertexAttribPointerv: _emscripten_glGetVertexAttribPointerv,\n                emscripten_glGetVertexAttribfv: _emscripten_glGetVertexAttribfv,\n                emscripten_glGetVertexAttribiv: _emscripten_glGetVertexAttribiv,\n                emscripten_glHint: _emscripten_glHint,\n                emscripten_glIsBuffer: _emscripten_glIsBuffer,\n                emscripten_glIsEnabled: _emscripten_glIsEnabled,\n                emscripten_glIsFramebuffer: _emscripten_glIsFramebuffer,\n                emscripten_glIsProgram: _emscripten_glIsProgram,\n                emscripten_glIsQueryEXT: _emscripten_glIsQueryEXT,\n                emscripten_glIsRenderbuffer: _emscripten_glIsRenderbuffer,\n                emscripten_glIsShader: _emscripten_glIsShader,\n                emscripten_glIsTexture: _emscripten_glIsTexture,\n                emscripten_glIsVertexArray: _emscripten_glIsVertexArray,\n                emscripten_glIsVertexArrayOES: _emscripten_glIsVertexArrayOES,\n                emscripten_glLineWidth: _emscripten_glLineWidth,\n                emscripten_glLinkProgram: _emscripten_glLinkProgram,\n                emscripten_glLoadIdentity: _emscripten_glLoadIdentity,\n                emscripten_glMatrixMode: _emscripten_glMatrixMode,\n                emscripten_glMultiDrawArrays: _emscripten_glMultiDrawArrays,\n                emscripten_glMultiDrawArraysANGLE: _emscripten_glMultiDrawArraysANGLE,\n                emscripten_glMultiDrawArraysInstancedANGLE: _emscripten_glMultiDrawArraysInstancedANGLE,\n                emscripten_glMultiDrawArraysInstancedWEBGL: _emscripten_glMultiDrawArraysInstancedWEBGL,\n                emscripten_glMultiDrawArraysWEBGL: _emscripten_glMultiDrawArraysWEBGL,\n                emscripten_glMultiDrawElements: _emscripten_glMultiDrawElements,\n                emscripten_glMultiDrawElementsANGLE: _emscripten_glMultiDrawElementsANGLE,\n                emscripten_glMultiDrawElementsInstancedANGLE: _emscripten_glMultiDrawElementsInstancedANGLE,\n                emscripten_glMultiDrawElementsInstancedWEBGL: _emscripten_glMultiDrawElementsInstancedWEBGL,\n                emscripten_glMultiDrawElementsWEBGL: _emscripten_glMultiDrawElementsWEBGL,\n                emscripten_glPixelStorei: _emscripten_glPixelStorei,\n                emscripten_glPolygonModeWEBGL: _emscripten_glPolygonModeWEBGL,\n                emscripten_glPolygonOffset: _emscripten_glPolygonOffset,\n                emscripten_glPolygonOffsetClampEXT: _emscripten_glPolygonOffsetClampEXT,\n                emscripten_glQueryCounterEXT: _emscripten_glQueryCounterEXT,\n                emscripten_glReadPixels: _emscripten_glReadPixels,\n                emscripten_glReleaseShaderCompiler: _emscripten_glReleaseShaderCompiler,\n                emscripten_glRenderbufferStorage: _emscripten_glRenderbufferStorage,\n                emscripten_glSampleCoverage: _emscripten_glSampleCoverage,\n                emscripten_glScissor: _emscripten_glScissor,\n                emscripten_glShaderBinary: _emscripten_glShaderBinary,\n                emscripten_glShaderSource: _emscripten_glShaderSource,\n                emscripten_glStencilFunc: _emscripten_glStencilFunc,\n                emscripten_glStencilFuncSeparate: _emscripten_glStencilFuncSeparate,\n                emscripten_glStencilMask: _emscripten_glStencilMask,\n                emscripten_glStencilMaskSeparate: _emscripten_glStencilMaskSeparate,\n                emscripten_glStencilOp: _emscripten_glStencilOp,\n                emscripten_glStencilOpSeparate: _emscripten_glStencilOpSeparate,\n                emscripten_glTexImage2D: _emscripten_glTexImage2D,\n                emscripten_glTexParameterf: _emscripten_glTexParameterf,\n                emscripten_glTexParameterfv: _emscripten_glTexParameterfv,\n                emscripten_glTexParameteri: _emscripten_glTexParameteri,\n                emscripten_glTexParameteriv: _emscripten_glTexParameteriv,\n                emscripten_glTexSubImage2D: _emscripten_glTexSubImage2D,\n                emscripten_glUniform1f: _emscripten_glUniform1f,\n                emscripten_glUniform1fv: _emscripten_glUniform1fv,\n                emscripten_glUniform1i: _emscripten_glUniform1i,\n                emscripten_glUniform1iv: _emscripten_glUniform1iv,\n                emscripten_glUniform2f: _emscripten_glUniform2f,\n                emscripten_glUniform2fv: _emscripten_glUniform2fv,\n                emscripten_glUniform2i: _emscripten_glUniform2i,\n                emscripten_glUniform2iv: _emscripten_glUniform2iv,\n                emscripten_glUniform3f: _emscripten_glUniform3f,\n                emscripten_glUniform3fv: _emscripten_glUniform3fv,\n                emscripten_glUniform3i: _emscripten_glUniform3i,\n                emscripten_glUniform3iv: _emscripten_glUniform3iv,\n                emscripten_glUniform4f: _emscripten_glUniform4f,\n                emscripten_glUniform4fv: _emscripten_glUniform4fv,\n                emscripten_glUniform4i: _emscripten_glUniform4i,\n                emscripten_glUniform4iv: _emscripten_glUniform4iv,\n                emscripten_glUniformMatrix2fv: _emscripten_glUniformMatrix2fv,\n                emscripten_glUniformMatrix3fv: _emscripten_glUniformMatrix3fv,\n                emscripten_glUniformMatrix4fv: _emscripten_glUniformMatrix4fv,\n                emscripten_glUseProgram: _emscripten_glUseProgram,\n                emscripten_glValidateProgram: _emscripten_glValidateProgram,\n                emscripten_glVertexAttrib1f: _emscripten_glVertexAttrib1f,\n                emscripten_glVertexAttrib1fv: _emscripten_glVertexAttrib1fv,\n                emscripten_glVertexAttrib2f: _emscripten_glVertexAttrib2f,\n                emscripten_glVertexAttrib2fv: _emscripten_glVertexAttrib2fv,\n                emscripten_glVertexAttrib3f: _emscripten_glVertexAttrib3f,\n                emscripten_glVertexAttrib3fv: _emscripten_glVertexAttrib3fv,\n                emscripten_glVertexAttrib4f: _emscripten_glVertexAttrib4f,\n                emscripten_glVertexAttrib4fv: _emscripten_glVertexAttrib4fv,\n                emscripten_glVertexAttribDivisor: _emscripten_glVertexAttribDivisor,\n                emscripten_glVertexAttribDivisorANGLE: _emscripten_glVertexAttribDivisorANGLE,\n                emscripten_glVertexAttribDivisorARB: _emscripten_glVertexAttribDivisorARB,\n                emscripten_glVertexAttribDivisorEXT: _emscripten_glVertexAttribDivisorEXT,\n                emscripten_glVertexAttribDivisorNV: _emscripten_glVertexAttribDivisorNV,\n                emscripten_glVertexAttribPointer: _emscripten_glVertexAttribPointer,\n                emscripten_glVertexPointer: _emscripten_glVertexPointer,\n                emscripten_glViewport: _emscripten_glViewport,\n                emscripten_has_asyncify: _emscripten_has_asyncify,\n                emscripten_hide_mouse: _emscripten_hide_mouse,\n                emscripten_html5_remove_all_event_listeners: _emscripten_html5_remove_all_event_listeners,\n                emscripten_idb_async_clear: _emscripten_idb_async_clear,\n                emscripten_idb_async_delete: _emscripten_idb_async_delete,\n                emscripten_idb_async_exists: _emscripten_idb_async_exists,\n                emscripten_idb_async_load: _emscripten_idb_async_load,\n                emscripten_idb_async_store: _emscripten_idb_async_store,\n                emscripten_idb_clear: _emscripten_idb_clear,\n                emscripten_idb_delete: _emscripten_idb_delete,\n                emscripten_idb_exists: _emscripten_idb_exists,\n                emscripten_idb_load: _emscripten_idb_load,\n                emscripten_idb_store: _emscripten_idb_store,\n                emscripten_is_main_browser_thread: _emscripten_is_main_browser_thread,\n                emscripten_is_webgl_context_lost: _emscripten_is_webgl_context_lost,\n                emscripten_lock_orientation: _emscripten_lock_orientation,\n                emscripten_log: _emscripten_log,\n                emscripten_math_acos: _emscripten_math_acos,\n                emscripten_math_acosh: _emscripten_math_acosh,\n                emscripten_math_asin: _emscripten_math_asin,\n                emscripten_math_asinh: _emscripten_math_asinh,\n                emscripten_math_atan: _emscripten_math_atan,\n                emscripten_math_atan2: _emscripten_math_atan2,\n                emscripten_math_atanh: _emscripten_math_atanh,\n                emscripten_math_cbrt: _emscripten_math_cbrt,\n                emscripten_math_cos: _emscripten_math_cos,\n                emscripten_math_cosh: _emscripten_math_cosh,\n                emscripten_math_exp: _emscripten_math_exp,\n                emscripten_math_expm1: _emscripten_math_expm1,\n                emscripten_math_fmod: _emscripten_math_fmod,\n                emscripten_math_hypot: _emscripten_math_hypot,\n                emscripten_math_log: _emscripten_math_log,\n                emscripten_math_log10: _emscripten_math_log10,\n                emscripten_math_log1p: _emscripten_math_log1p,\n                emscripten_math_log2: _emscripten_math_log2,\n                emscripten_math_pow: _emscripten_math_pow,\n                emscripten_math_random: _emscripten_math_random,\n                emscripten_math_round: _emscripten_math_round,\n                emscripten_math_sign: _emscripten_math_sign,\n                emscripten_math_sin: _emscripten_math_sin,\n                emscripten_math_sinh: _emscripten_math_sinh,\n                emscripten_math_sqrt: _emscripten_math_sqrt,\n                emscripten_math_tan: _emscripten_math_tan,\n                emscripten_math_tanh: _emscripten_math_tanh,\n                emscripten_notify_memory_growth: _emscripten_notify_memory_growth,\n                emscripten_out: _emscripten_out,\n                emscripten_outn: _emscripten_outn,\n                emscripten_pause_main_loop: _emscripten_pause_main_loop,\n                emscripten_pc_get_column: _emscripten_pc_get_column,\n                emscripten_pc_get_file: _emscripten_pc_get_file,\n                emscripten_pc_get_function: _emscripten_pc_get_function,\n                emscripten_pc_get_line: _emscripten_pc_get_line,\n                emscripten_performance_now: _emscripten_performance_now,\n                emscripten_print_double: _emscripten_print_double,\n                emscripten_promise_all: _emscripten_promise_all,\n                emscripten_promise_all_settled: _emscripten_promise_all_settled,\n                emscripten_promise_any: _emscripten_promise_any,\n                emscripten_promise_await: _emscripten_promise_await,\n                emscripten_promise_create: _emscripten_promise_create,\n                emscripten_promise_destroy: _emscripten_promise_destroy,\n                emscripten_promise_race: _emscripten_promise_race,\n                emscripten_promise_resolve: _emscripten_promise_resolve,\n                emscripten_promise_then: _emscripten_promise_then,\n                emscripten_random: _emscripten_random,\n                emscripten_request_animation_frame: _emscripten_request_animation_frame,\n                emscripten_request_animation_frame_loop: _emscripten_request_animation_frame_loop,\n                emscripten_request_fullscreen: _emscripten_request_fullscreen,\n                emscripten_request_fullscreen_strategy: _emscripten_request_fullscreen_strategy,\n                emscripten_request_pointerlock: _emscripten_request_pointerlock,\n                emscripten_resize_heap: _emscripten_resize_heap,\n                emscripten_resume_main_loop: _emscripten_resume_main_loop,\n                emscripten_return_address: _emscripten_return_address,\n                emscripten_run_preload_plugins: _emscripten_run_preload_plugins,\n                emscripten_run_preload_plugins_data: _emscripten_run_preload_plugins_data,\n                emscripten_run_script: _emscripten_run_script,\n                emscripten_run_script_int: _emscripten_run_script_int,\n                emscripten_run_script_string: _emscripten_run_script_string,\n                emscripten_runtime_keepalive_check: _emscripten_runtime_keepalive_check,\n                emscripten_runtime_keepalive_pop: _emscripten_runtime_keepalive_pop,\n                emscripten_runtime_keepalive_push: _emscripten_runtime_keepalive_push,\n                emscripten_sample_gamepad_data: _emscripten_sample_gamepad_data,\n                emscripten_scan_registers: _emscripten_scan_registers,\n                emscripten_set_batterychargingchange_callback_on_thread: _emscripten_set_batterychargingchange_callback_on_thread,\n                emscripten_set_batterylevelchange_callback_on_thread: _emscripten_set_batterylevelchange_callback_on_thread,\n                emscripten_set_beforeunload_callback_on_thread: _emscripten_set_beforeunload_callback_on_thread,\n                emscripten_set_blur_callback_on_thread: _emscripten_set_blur_callback_on_thread,\n                emscripten_set_canvas_element_size: _emscripten_set_canvas_element_size,\n                emscripten_set_canvas_size: _emscripten_set_canvas_size,\n                emscripten_set_click_callback_on_thread: _emscripten_set_click_callback_on_thread,\n                emscripten_set_dblclick_callback_on_thread: _emscripten_set_dblclick_callback_on_thread,\n                emscripten_set_devicemotion_callback_on_thread: _emscripten_set_devicemotion_callback_on_thread,\n                emscripten_set_deviceorientation_callback_on_thread: _emscripten_set_deviceorientation_callback_on_thread,\n                emscripten_set_element_css_size: _emscripten_set_element_css_size,\n                emscripten_set_focus_callback_on_thread: _emscripten_set_focus_callback_on_thread,\n                emscripten_set_focusin_callback_on_thread: _emscripten_set_focusin_callback_on_thread,\n                emscripten_set_focusout_callback_on_thread: _emscripten_set_focusout_callback_on_thread,\n                emscripten_set_fullscreenchange_callback_on_thread: _emscripten_set_fullscreenchange_callback_on_thread,\n                emscripten_set_gamepadconnected_callback_on_thread: _emscripten_set_gamepadconnected_callback_on_thread,\n                emscripten_set_gamepaddisconnected_callback_on_thread: _emscripten_set_gamepaddisconnected_callback_on_thread,\n                emscripten_set_immediate: _emscripten_set_immediate,\n                emscripten_set_immediate_loop: _emscripten_set_immediate_loop,\n                emscripten_set_interval: _emscripten_set_interval,\n                emscripten_set_keydown_callback_on_thread: _emscripten_set_keydown_callback_on_thread,\n                emscripten_set_keypress_callback_on_thread: _emscripten_set_keypress_callback_on_thread,\n                emscripten_set_keyup_callback_on_thread: _emscripten_set_keyup_callback_on_thread,\n                emscripten_set_main_loop: _emscripten_set_main_loop,\n                emscripten_set_main_loop_arg: _emscripten_set_main_loop_arg,\n                emscripten_set_main_loop_expected_blockers: _emscripten_set_main_loop_expected_blockers,\n                emscripten_set_main_loop_timing: _emscripten_set_main_loop_timing,\n                emscripten_set_mousedown_callback_on_thread: _emscripten_set_mousedown_callback_on_thread,\n                emscripten_set_mouseenter_callback_on_thread: _emscripten_set_mouseenter_callback_on_thread,\n                emscripten_set_mouseleave_callback_on_thread: _emscripten_set_mouseleave_callback_on_thread,\n                emscripten_set_mousemove_callback_on_thread: _emscripten_set_mousemove_callback_on_thread,\n                emscripten_set_mouseout_callback_on_thread: _emscripten_set_mouseout_callback_on_thread,\n                emscripten_set_mouseover_callback_on_thread: _emscripten_set_mouseover_callback_on_thread,\n                emscripten_set_mouseup_callback_on_thread: _emscripten_set_mouseup_callback_on_thread,\n                emscripten_set_orientationchange_callback_on_thread: _emscripten_set_orientationchange_callback_on_thread,\n                emscripten_set_pointerlockchange_callback_on_thread: _emscripten_set_pointerlockchange_callback_on_thread,\n                emscripten_set_pointerlockerror_callback_on_thread: _emscripten_set_pointerlockerror_callback_on_thread,\n                emscripten_set_resize_callback_on_thread: _emscripten_set_resize_callback_on_thread,\n                emscripten_set_scroll_callback_on_thread: _emscripten_set_scroll_callback_on_thread,\n                emscripten_set_socket_close_callback: _emscripten_set_socket_close_callback,\n                emscripten_set_socket_connection_callback: _emscripten_set_socket_connection_callback,\n                emscripten_set_socket_error_callback: _emscripten_set_socket_error_callback,\n                emscripten_set_socket_listen_callback: _emscripten_set_socket_listen_callback,\n                emscripten_set_socket_message_callback: _emscripten_set_socket_message_callback,\n                emscripten_set_socket_open_callback: _emscripten_set_socket_open_callback,\n                emscripten_set_timeout: _emscripten_set_timeout,\n                emscripten_set_timeout_loop: _emscripten_set_timeout_loop,\n                emscripten_set_touchcancel_callback_on_thread: _emscripten_set_touchcancel_callback_on_thread,\n                emscripten_set_touchend_callback_on_thread: _emscripten_set_touchend_callback_on_thread,\n                emscripten_set_touchmove_callback_on_thread: _emscripten_set_touchmove_callback_on_thread,\n                emscripten_set_touchstart_callback_on_thread: _emscripten_set_touchstart_callback_on_thread,\n                emscripten_set_visibilitychange_callback_on_thread: _emscripten_set_visibilitychange_callback_on_thread,\n                emscripten_set_webglcontextlost_callback_on_thread: _emscripten_set_webglcontextlost_callback_on_thread,\n                emscripten_set_webglcontextrestored_callback_on_thread: _emscripten_set_webglcontextrestored_callback_on_thread,\n                emscripten_set_wheel_callback_on_thread: _emscripten_set_wheel_callback_on_thread,\n                emscripten_set_window_title: _emscripten_set_window_title,\n                emscripten_sleep: _emscripten_sleep,\n                emscripten_stack_snapshot: _emscripten_stack_snapshot,\n                emscripten_stack_unwind_buffer: _emscripten_stack_unwind_buffer,\n                emscripten_supports_offscreencanvas: _emscripten_supports_offscreencanvas,\n                emscripten_throw_number: _emscripten_throw_number,\n                emscripten_throw_string: _emscripten_throw_string,\n                emscripten_unlock_orientation: _emscripten_unlock_orientation,\n                emscripten_unwind_to_js_event_loop: _emscripten_unwind_to_js_event_loop,\n                emscripten_vibrate: _emscripten_vibrate,\n                emscripten_vibrate_pattern: _emscripten_vibrate_pattern,\n                emscripten_webgl_commit_frame: _emscripten_webgl_commit_frame,\n                emscripten_webgl_create_context: _emscripten_webgl_create_context,\n                emscripten_webgl_destroy_context: _emscripten_webgl_destroy_context,\n                emscripten_webgl_do_commit_frame: _emscripten_webgl_do_commit_frame,\n                emscripten_webgl_do_create_context: _emscripten_webgl_do_create_context,\n                emscripten_webgl_do_get_current_context: _emscripten_webgl_do_get_current_context,\n                emscripten_webgl_enable_ANGLE_instanced_arrays: _emscripten_webgl_enable_ANGLE_instanced_arrays,\n                emscripten_webgl_enable_EXT_clip_control: _emscripten_webgl_enable_EXT_clip_control,\n                emscripten_webgl_enable_EXT_polygon_offset_clamp: _emscripten_webgl_enable_EXT_polygon_offset_clamp,\n                emscripten_webgl_enable_OES_vertex_array_object: _emscripten_webgl_enable_OES_vertex_array_object,\n                emscripten_webgl_enable_WEBGL_draw_buffers: _emscripten_webgl_enable_WEBGL_draw_buffers,\n                emscripten_webgl_enable_WEBGL_multi_draw: _emscripten_webgl_enable_WEBGL_multi_draw,\n                emscripten_webgl_enable_WEBGL_polygon_mode: _emscripten_webgl_enable_WEBGL_polygon_mode,\n                emscripten_webgl_enable_extension: _emscripten_webgl_enable_extension,\n                emscripten_webgl_get_context_attributes: _emscripten_webgl_get_context_attributes,\n                emscripten_webgl_get_current_context: _emscripten_webgl_get_current_context,\n                emscripten_webgl_get_drawing_buffer_size: _emscripten_webgl_get_drawing_buffer_size,\n                emscripten_webgl_get_parameter_d: _emscripten_webgl_get_parameter_d,\n                emscripten_webgl_get_parameter_i64v: _emscripten_webgl_get_parameter_i64v,\n                emscripten_webgl_get_parameter_o: _emscripten_webgl_get_parameter_o,\n                emscripten_webgl_get_parameter_utf8: _emscripten_webgl_get_parameter_utf8,\n                emscripten_webgl_get_parameter_v: _emscripten_webgl_get_parameter_v,\n                emscripten_webgl_get_program_info_log_utf8: _emscripten_webgl_get_program_info_log_utf8,\n                emscripten_webgl_get_program_parameter_d: _emscripten_webgl_get_program_parameter_d,\n                emscripten_webgl_get_shader_info_log_utf8: _emscripten_webgl_get_shader_info_log_utf8,\n                emscripten_webgl_get_shader_parameter_d: _emscripten_webgl_get_shader_parameter_d,\n                emscripten_webgl_get_shader_source_utf8: _emscripten_webgl_get_shader_source_utf8,\n                emscripten_webgl_get_supported_extensions: _emscripten_webgl_get_supported_extensions,\n                emscripten_webgl_get_uniform_d: _emscripten_webgl_get_uniform_d,\n                emscripten_webgl_get_uniform_v: _emscripten_webgl_get_uniform_v,\n                emscripten_webgl_get_vertex_attrib_d: _emscripten_webgl_get_vertex_attrib_d,\n                emscripten_webgl_get_vertex_attrib_o: _emscripten_webgl_get_vertex_attrib_o,\n                emscripten_webgl_get_vertex_attrib_v: _emscripten_webgl_get_vertex_attrib_v,\n                emscripten_webgl_make_context_current: _emscripten_webgl_make_context_current,\n                emscripten_wget_data: _emscripten_wget_data,\n                endprotoent: _endprotoent,\n                environ_get: _environ_get,\n                environ_sizes_get: _environ_sizes_get,\n                exit: _exit,\n                fd_close: _fd_close,\n                fd_fdstat_get: _fd_fdstat_get,\n                fd_pread: _fd_pread,\n                fd_pwrite: _fd_pwrite,\n                fd_read: _fd_read,\n                fd_seek: _fd_seek,\n                fd_sync: _fd_sync,\n                fd_write: _fd_write,\n                filledEllipseColor: _filledEllipseColor,\n                filledEllipseRGBA: _filledEllipseRGBA,\n                getaddrinfo: _getaddrinfo,\n                getnameinfo: _getnameinfo,\n                getprotobyname: _getprotobyname,\n                getprotobynumber: _getprotobynumber,\n                getprotoent: _getprotoent,\n                glActiveTexture: _glActiveTexture,\n                glAttachShader: _glAttachShader,\n                glBegin: _glBegin,\n                glBeginQueryEXT: _glBeginQueryEXT,\n                glBindAttribLocation: _glBindAttribLocation,\n                glBindBuffer: _glBindBuffer,\n                glBindFramebuffer: _glBindFramebuffer,\n                glBindRenderbuffer: _glBindRenderbuffer,\n                glBindTexture: _glBindTexture,\n                glBindVertexArray: _glBindVertexArray,\n                glBindVertexArrayOES: _glBindVertexArrayOES,\n                glBlendColor: _glBlendColor,\n                glBlendEquation: _glBlendEquation,\n                glBlendEquationSeparate: _glBlendEquationSeparate,\n                glBlendFunc: _glBlendFunc,\n                glBlendFuncSeparate: _glBlendFuncSeparate,\n                glBufferData: _glBufferData,\n                glBufferSubData: _glBufferSubData,\n                glCheckFramebufferStatus: _glCheckFramebufferStatus,\n                glClear: _glClear,\n                glClearColor: _glClearColor,\n                glClearDepth: _glClearDepth,\n                glClearDepthf: _glClearDepthf,\n                glClearStencil: _glClearStencil,\n                glClipControlEXT: _glClipControlEXT,\n                glColorMask: _glColorMask,\n                glCompileShader: _glCompileShader,\n                glCompressedTexImage2D: _glCompressedTexImage2D,\n                glCompressedTexSubImage2D: _glCompressedTexSubImage2D,\n                glCopyTexImage2D: _glCopyTexImage2D,\n                glCopyTexSubImage2D: _glCopyTexSubImage2D,\n                glCreateProgram: _glCreateProgram,\n                glCreateShader: _glCreateShader,\n                glCullFace: _glCullFace,\n                glDeleteBuffers: _glDeleteBuffers,\n                glDeleteFramebuffers: _glDeleteFramebuffers,\n                glDeleteProgram: _glDeleteProgram,\n                glDeleteQueriesEXT: _glDeleteQueriesEXT,\n                glDeleteRenderbuffers: _glDeleteRenderbuffers,\n                glDeleteShader: _glDeleteShader,\n                glDeleteTextures: _glDeleteTextures,\n                glDeleteVertexArrays: _glDeleteVertexArrays,\n                glDeleteVertexArraysOES: _glDeleteVertexArraysOES,\n                glDepthFunc: _glDepthFunc,\n                glDepthMask: _glDepthMask,\n                glDepthRange: _glDepthRange,\n                glDepthRangef: _glDepthRangef,\n                glDetachShader: _glDetachShader,\n                glDisable: _glDisable,\n                glDisableVertexAttribArray: _glDisableVertexAttribArray,\n                glDrawArrays: _glDrawArrays,\n                glDrawArraysInstanced: _glDrawArraysInstanced,\n                glDrawArraysInstancedANGLE: _glDrawArraysInstancedANGLE,\n                glDrawArraysInstancedARB: _glDrawArraysInstancedARB,\n                glDrawArraysInstancedEXT: _glDrawArraysInstancedEXT,\n                glDrawArraysInstancedNV: _glDrawArraysInstancedNV,\n                glDrawBuffers: _glDrawBuffers,\n                glDrawBuffersEXT: _glDrawBuffersEXT,\n                glDrawBuffersWEBGL: _glDrawBuffersWEBGL,\n                glDrawElements: _glDrawElements,\n                glDrawElementsInstanced: _glDrawElementsInstanced,\n                glDrawElementsInstancedANGLE: _glDrawElementsInstancedANGLE,\n                glDrawElementsInstancedARB: _glDrawElementsInstancedARB,\n                glDrawElementsInstancedEXT: _glDrawElementsInstancedEXT,\n                glDrawElementsInstancedNV: _glDrawElementsInstancedNV,\n                glEnable: _glEnable,\n                glEnableVertexAttribArray: _glEnableVertexAttribArray,\n                glEndQueryEXT: _glEndQueryEXT,\n                glFinish: _glFinish,\n                glFlush: _glFlush,\n                glFramebufferRenderbuffer: _glFramebufferRenderbuffer,\n                glFramebufferTexture2D: _glFramebufferTexture2D,\n                glFrontFace: _glFrontFace,\n                glGenBuffers: _glGenBuffers,\n                glGenFramebuffers: _glGenFramebuffers,\n                glGenQueriesEXT: _glGenQueriesEXT,\n                glGenRenderbuffers: _glGenRenderbuffers,\n                glGenTextures: _glGenTextures,\n                glGenVertexArrays: _glGenVertexArrays,\n                glGenVertexArraysOES: _glGenVertexArraysOES,\n                glGenerateMipmap: _glGenerateMipmap,\n                glGetActiveAttrib: _glGetActiveAttrib,\n                glGetActiveUniform: _glGetActiveUniform,\n                glGetAttachedShaders: _glGetAttachedShaders,\n                glGetAttribLocation: _glGetAttribLocation,\n                glGetBooleanv: _glGetBooleanv,\n                glGetBufferParameteriv: _glGetBufferParameteriv,\n                glGetError: _glGetError,\n                glGetFloatv: _glGetFloatv,\n                glGetFramebufferAttachmentParameteriv: _glGetFramebufferAttachmentParameteriv,\n                glGetIntegerv: _glGetIntegerv,\n                glGetProgramInfoLog: _glGetProgramInfoLog,\n                glGetProgramiv: _glGetProgramiv,\n                glGetQueryObjecti64vEXT: _glGetQueryObjecti64vEXT,\n                glGetQueryObjectivEXT: _glGetQueryObjectivEXT,\n                glGetQueryObjectui64vEXT: _glGetQueryObjectui64vEXT,\n                glGetQueryObjectuivEXT: _glGetQueryObjectuivEXT,\n                glGetQueryivEXT: _glGetQueryivEXT,\n                glGetRenderbufferParameteriv: _glGetRenderbufferParameteriv,\n                glGetShaderInfoLog: _glGetShaderInfoLog,\n                glGetShaderPrecisionFormat: _glGetShaderPrecisionFormat,\n                glGetShaderSource: _glGetShaderSource,\n                glGetShaderiv: _glGetShaderiv,\n                glGetString: _glGetString,\n                glGetTexParameterfv: _glGetTexParameterfv,\n                glGetTexParameteriv: _glGetTexParameteriv,\n                glGetUniformLocation: _glGetUniformLocation,\n                glGetUniformfv: _glGetUniformfv,\n                glGetUniformiv: _glGetUniformiv,\n                glGetVertexAttribPointerv: _glGetVertexAttribPointerv,\n                glGetVertexAttribfv: _glGetVertexAttribfv,\n                glGetVertexAttribiv: _glGetVertexAttribiv,\n                glHint: _glHint,\n                glIsBuffer: _glIsBuffer,\n                glIsEnabled: _glIsEnabled,\n                glIsFramebuffer: _glIsFramebuffer,\n                glIsProgram: _glIsProgram,\n                glIsQueryEXT: _glIsQueryEXT,\n                glIsRenderbuffer: _glIsRenderbuffer,\n                glIsShader: _glIsShader,\n                glIsTexture: _glIsTexture,\n                glIsVertexArray: _glIsVertexArray,\n                glIsVertexArrayOES: _glIsVertexArrayOES,\n                glLineWidth: _glLineWidth,\n                glLinkProgram: _glLinkProgram,\n                glLoadIdentity: _glLoadIdentity,\n                glMatrixMode: _glMatrixMode,\n                glMultiDrawArrays: _glMultiDrawArrays,\n                glMultiDrawArraysANGLE: _glMultiDrawArraysANGLE,\n                glMultiDrawArraysInstancedANGLE: _glMultiDrawArraysInstancedANGLE,\n                glMultiDrawArraysInstancedWEBGL: _glMultiDrawArraysInstancedWEBGL,\n                glMultiDrawArraysWEBGL: _glMultiDrawArraysWEBGL,\n                glMultiDrawElements: _glMultiDrawElements,\n                glMultiDrawElementsANGLE: _glMultiDrawElementsANGLE,\n                glMultiDrawElementsInstancedANGLE: _glMultiDrawElementsInstancedANGLE,\n                glMultiDrawElementsInstancedWEBGL: _glMultiDrawElementsInstancedWEBGL,\n                glMultiDrawElementsWEBGL: _glMultiDrawElementsWEBGL,\n                glPixelStorei: _glPixelStorei,\n                glPolygonModeWEBGL: _glPolygonModeWEBGL,\n                glPolygonOffset: _glPolygonOffset,\n                glPolygonOffsetClampEXT: _glPolygonOffsetClampEXT,\n                glQueryCounterEXT: _glQueryCounterEXT,\n                glReadPixels: _glReadPixels,\n                glReleaseShaderCompiler: _glReleaseShaderCompiler,\n                glRenderbufferStorage: _glRenderbufferStorage,\n                glSampleCoverage: _glSampleCoverage,\n                glScissor: _glScissor,\n                glShaderBinary: _glShaderBinary,\n                glShaderSource: _glShaderSource,\n                glStencilFunc: _glStencilFunc,\n                glStencilFuncSeparate: _glStencilFuncSeparate,\n                glStencilMask: _glStencilMask,\n                glStencilMaskSeparate: _glStencilMaskSeparate,\n                glStencilOp: _glStencilOp,\n                glStencilOpSeparate: _glStencilOpSeparate,\n                glTexImage2D: _glTexImage2D,\n                glTexParameterf: _glTexParameterf,\n                glTexParameterfv: _glTexParameterfv,\n                glTexParameteri: _glTexParameteri,\n                glTexParameteriv: _glTexParameteriv,\n                glTexSubImage2D: _glTexSubImage2D,\n                glUniform1f: _glUniform1f,\n                glUniform1fv: _glUniform1fv,\n                glUniform1i: _glUniform1i,\n                glUniform1iv: _glUniform1iv,\n                glUniform2f: _glUniform2f,\n                glUniform2fv: _glUniform2fv,\n                glUniform2i: _glUniform2i,\n                glUniform2iv: _glUniform2iv,\n                glUniform3f: _glUniform3f,\n                glUniform3fv: _glUniform3fv,\n                glUniform3i: _glUniform3i,\n                glUniform3iv: _glUniform3iv,\n                glUniform4f: _glUniform4f,\n                glUniform4fv: _glUniform4fv,\n                glUniform4i: _glUniform4i,\n                glUniform4iv: _glUniform4iv,\n                glUniformMatrix2fv: _glUniformMatrix2fv,\n                glUniformMatrix3fv: _glUniformMatrix3fv,\n                glUniformMatrix4fv: _glUniformMatrix4fv,\n                glUseProgram: _glUseProgram,\n                glValidateProgram: _glValidateProgram,\n                glVertexAttrib1f: _glVertexAttrib1f,\n                glVertexAttrib1fv: _glVertexAttrib1fv,\n                glVertexAttrib2f: _glVertexAttrib2f,\n                glVertexAttrib2fv: _glVertexAttrib2fv,\n                glVertexAttrib3f: _glVertexAttrib3f,\n                glVertexAttrib3fv: _glVertexAttrib3fv,\n                glVertexAttrib4f: _glVertexAttrib4f,\n                glVertexAttrib4fv: _glVertexAttrib4fv,\n                glVertexAttribDivisor: _glVertexAttribDivisor,\n                glVertexAttribDivisorANGLE: _glVertexAttribDivisorANGLE,\n                glVertexAttribDivisorARB: _glVertexAttribDivisorARB,\n                glVertexAttribDivisorEXT: _glVertexAttribDivisorEXT,\n                glVertexAttribDivisorNV: _glVertexAttribDivisorNV,\n                glVertexAttribPointer: _glVertexAttribPointer,\n                glVertexPointer: _glVertexPointer,\n                glViewport: _glViewport,\n                glewGetErrorString: _glewGetErrorString,\n                glewGetExtension: _glewGetExtension,\n                glewGetString: _glewGetString,\n                glewInit: _glewInit,\n                glewIsSupported: _glewIsSupported,\n                glutCreateWindow: _glutCreateWindow,\n                glutDestroyWindow: _glutDestroyWindow,\n                glutDisplayFunc: _glutDisplayFunc,\n                glutFullScreen: _glutFullScreen,\n                glutGet: _glutGet,\n                glutGetModifiers: _glutGetModifiers,\n                glutIdleFunc: _glutIdleFunc,\n                glutInit: _glutInit,\n                glutInitDisplayMode: _glutInitDisplayMode,\n                glutInitWindowPosition: _glutInitWindowPosition,\n                glutInitWindowSize: _glutInitWindowSize,\n                glutKeyboardFunc: _glutKeyboardFunc,\n                glutKeyboardUpFunc: _glutKeyboardUpFunc,\n                glutMainLoop: _glutMainLoop,\n                glutMotionFunc: _glutMotionFunc,\n                glutMouseFunc: _glutMouseFunc,\n                glutPassiveMotionFunc: _glutPassiveMotionFunc,\n                glutPositionWindow: _glutPositionWindow,\n                glutPostRedisplay: _glutPostRedisplay,\n                glutReshapeFunc: _glutReshapeFunc,\n                glutReshapeWindow: _glutReshapeWindow,\n                glutSetCursor: _glutSetCursor,\n                glutSpecialFunc: _glutSpecialFunc,\n                glutSpecialUpFunc: _glutSpecialUpFunc,\n                glutSwapBuffers: _glutSwapBuffers,\n                glutTimerFunc: _glutTimerFunc,\n                invoke_dd,\n                invoke_ddd,\n                invoke_di,\n                invoke_didd,\n                invoke_dii,\n                invoke_diii,\n                invoke_diiii,\n                invoke_diiiid,\n                invoke_diiiiid,\n                invoke_diiiij,\n                invoke_diij,\n                invoke_diiji,\n                invoke_dij,\n                invoke_dijjj,\n                invoke_dj,\n                invoke_djij,\n                invoke_fi,\n                invoke_fiii,\n                invoke_fiiii,\n                invoke_fiiiij,\n                invoke_fiiji,\n                invoke_i,\n                invoke_id,\n                invoke_idd,\n                invoke_idi,\n                invoke_idii,\n                invoke_idiii,\n                invoke_idiiii,\n                invoke_if,\n                invoke_iff,\n                invoke_ifi,\n                invoke_ifii,\n                invoke_ii,\n                invoke_iid,\n                invoke_iidi,\n                invoke_iidii,\n                invoke_iidiii,\n                invoke_iidiiii,\n                invoke_iidj,\n                invoke_iif,\n                invoke_iifii,\n                invoke_iii,\n                invoke_iiidj,\n                invoke_iiifj,\n                invoke_iiii,\n                invoke_iiiid,\n                invoke_iiiii,\n                invoke_iiiiid,\n                invoke_iiiiii,\n                invoke_iiiiiid,\n                invoke_iiiiiii,\n                invoke_iiiiiiii,\n                invoke_iiiiiiiii,\n                invoke_iiiiiiiiii,\n                invoke_iiiiiiiiiii,\n                invoke_iiiiiiiiiiii,\n                invoke_iiiiiiiiiiiii,\n                invoke_iiiiiiiiiiiiii,\n                invoke_iiiiiiiiiiiiiiiii,\n                invoke_iiiiiiiiiiiiiiiiii,\n                invoke_iiiiiiiiiiiji,\n                invoke_iiiiiiiiiiijiii,\n                invoke_iiiiiiiiiij,\n                invoke_iiiiiiiiiiji,\n                invoke_iiiiiiiiij,\n                invoke_iiiiiiiiiji,\n                invoke_iiiiiiiiijii,\n                invoke_iiiiiiiiijiiiiiiii,\n                invoke_iiiiiiiij,\n                invoke_iiiiiiiiji,\n                invoke_iiiiiiiijiii,\n                invoke_iiiiiiiijj,\n                invoke_iiiiiiiijjjjjjii,\n                invoke_iiiiiiij,\n                invoke_iiiiiiiji,\n                invoke_iiiiiiijji,\n                invoke_iiiiiij,\n                invoke_iiiiiiji,\n                invoke_iiiiiijii,\n                invoke_iiiiiijiijjji,\n                invoke_iiiiiijji,\n                invoke_iiiiiijjiiiiiiiji,\n                invoke_iiiiij,\n                invoke_iiiiiji,\n                invoke_iiiiijii,\n                invoke_iiiiijiii,\n                invoke_iiiiijiiii,\n                invoke_iiiiijiiiii,\n                invoke_iiiiijj,\n                invoke_iiiiijjii,\n                invoke_iiiiijjij,\n                invoke_iiiiijjj,\n                invoke_iiiij,\n                invoke_iiiiji,\n                invoke_iiiijii,\n                invoke_iiiijiii,\n                invoke_iiiijiiii,\n                invoke_iiiijiiiij,\n                invoke_iiiijiiij,\n                invoke_iiiijiijjiii,\n                invoke_iiiijij,\n                invoke_iiiijj,\n                invoke_iiiijji,\n                invoke_iiiijjiii,\n                invoke_iiiijjj,\n                invoke_iiiijjjj,\n                invoke_iiij,\n                invoke_iiiji,\n                invoke_iiijii,\n                invoke_iiijiii,\n                invoke_iiijiiii,\n                invoke_iiijiiiii,\n                invoke_iiijiiiijj,\n                invoke_iiijiiij,\n                invoke_iiijiiiji,\n                invoke_iiijiiijj,\n                invoke_iiijiij,\n                invoke_iiijiijj,\n                invoke_iiijij,\n                invoke_iiijj,\n                invoke_iiijji,\n                invoke_iiijjiii,\n                invoke_iiijjijiii,\n                invoke_iiijjj,\n                invoke_iiijjji,\n                invoke_iij,\n                invoke_iijf,\n                invoke_iiji,\n                invoke_iijii,\n                invoke_iijiii,\n                invoke_iijiiii,\n                invoke_iijiiiii,\n                invoke_iijiiiiii,\n                invoke_iijiiiiiij,\n                invoke_iijiiijj,\n                invoke_iijiijj,\n                invoke_iijij,\n                invoke_iijiji,\n                invoke_iijj,\n                invoke_iijji,\n                invoke_iijjii,\n                invoke_iijjiii,\n                invoke_iijjiiii,\n                invoke_iijjiiiii,\n                invoke_iijjji,\n                invoke_iijjjii,\n                invoke_iijjjj,\n                invoke_ij,\n                invoke_iji,\n                invoke_ijii,\n                invoke_ijij,\n                invoke_ijji,\n                invoke_ijjiii,\n                invoke_ijjj,\n                invoke_j,\n                invoke_jd,\n                invoke_jf,\n                invoke_ji,\n                invoke_jii,\n                invoke_jiii,\n                invoke_jiiii,\n                invoke_jiiiii,\n                invoke_jiiiiii,\n                invoke_jiiiiiii,\n                invoke_jiiiiiiii,\n                invoke_jiiiiiji,\n                invoke_jiiiiijiiii,\n                invoke_jiiiiijji,\n                invoke_jiiiij,\n                invoke_jiiiiji,\n                invoke_jiiiijii,\n                invoke_jiiiijiii,\n                invoke_jiiiijji,\n                invoke_jiiij,\n                invoke_jiiiji,\n                invoke_jiiijii,\n                invoke_jiiijiii,\n                invoke_jiiijiijiii,\n                invoke_jiiijij,\n                invoke_jiiijj,\n                invoke_jiij,\n                invoke_jiiji,\n                invoke_jiijii,\n                invoke_jiijiii,\n                invoke_jiijiiii,\n                invoke_jiijiiiii,\n                invoke_jiijiij,\n                invoke_jiijj,\n                invoke_jiijjiii,\n                invoke_jij,\n                invoke_jiji,\n                invoke_jijij,\n                invoke_jijj,\n                invoke_jijjj,\n                invoke_jijjjj,\n                invoke_jj,\n                invoke_jji,\n                invoke_jjij,\n                invoke_jjj,\n                invoke_jjjii,\n                invoke_jjjij,\n                invoke_jjjji,\n                invoke_jjjjjjd,\n                invoke_v,\n                invoke_vi,\n                invoke_vid,\n                invoke_viddddi,\n                invoke_vidi,\n                invoke_vidii,\n                invoke_vif,\n                invoke_vifi,\n                invoke_vifii,\n                invoke_vii,\n                invoke_viid,\n                invoke_viidddddddd,\n                invoke_viidii,\n                invoke_viif,\n                invoke_viifii,\n                invoke_viii,\n                invoke_viiidi,\n                invoke_viiifi,\n                invoke_viiii,\n                invoke_viiiii,\n                invoke_viiiiii,\n                invoke_viiiiiii,\n                invoke_viiiiiiii,\n                invoke_viiiiiiiii,\n                invoke_viiiiiiiiii,\n                invoke_viiiiiiiiiii,\n                invoke_viiiiiiiiiiii,\n                invoke_viiiiiiiiiiiii,\n                invoke_viiiiiiiiiiiiiii,\n                invoke_viiiiiiij,\n                invoke_viiiiiiijij,\n                invoke_viiiiiij,\n                invoke_viiiiiiji,\n                invoke_viiiiiijij,\n                invoke_viiiiiijjj,\n                invoke_viiiiij,\n                invoke_viiiiiji,\n                invoke_viiiiijii,\n                invoke_viiiiijiii,\n                invoke_viiiiijiiii,\n                invoke_viiiiijiijii,\n                invoke_viiiiijij,\n                invoke_viiiiijj,\n                invoke_viiiiijjij,\n                invoke_viiiiijjji,\n                invoke_viiiij,\n                invoke_viiiiji,\n                invoke_viiiijii,\n                invoke_viiiijiii,\n                invoke_viiiijiiii,\n                invoke_viiiijiiiii,\n                invoke_viiiijiiiiiiii,\n                invoke_viiiijiijjii,\n                invoke_viiiijij,\n                invoke_viiiijj,\n                invoke_viiiijji,\n                invoke_viiiijjii,\n                invoke_viiiijjij,\n                invoke_viiiijjjii,\n                invoke_viiij,\n                invoke_viiijd,\n                invoke_viiiji,\n                invoke_viiijii,\n                invoke_viiijiii,\n                invoke_viiijiiii,\n                invoke_viiijiiiji,\n                invoke_viiijiiijii,\n                invoke_viiijiijij,\n                invoke_viiijiijj,\n                invoke_viiijij,\n                invoke_viiijiji,\n                invoke_viiijijj,\n                invoke_viiijijjj,\n                invoke_viiijj,\n                invoke_viiijji,\n                invoke_viiijjii,\n                invoke_viiijjiii,\n                invoke_viiijjj,\n                invoke_viiijjjj,\n                invoke_viiijjjjii,\n                invoke_viij,\n                invoke_viijd,\n                invoke_viiji,\n                invoke_viijii,\n                invoke_viijiii,\n                invoke_viijiiii,\n                invoke_viijiiiii,\n                invoke_viijiiiiii,\n                invoke_viijiiij,\n                invoke_viijiiijj,\n                invoke_viijiij,\n                invoke_viijiijj,\n                invoke_viijiijji,\n                invoke_viijij,\n                invoke_viijiji,\n                invoke_viijijiiii,\n                invoke_viijijijij,\n                invoke_viijijijiji,\n                invoke_viijijj,\n                invoke_viijj,\n                invoke_viijji,\n                invoke_viijjii,\n                invoke_viijjiiij,\n                invoke_viijjj,\n                invoke_viijjji,\n                invoke_viijjjji,\n                invoke_vij,\n                invoke_viji,\n                invoke_vijii,\n                invoke_vijiii,\n                invoke_vijiiii,\n                invoke_vijiiiii,\n                invoke_vijiiiiii,\n                invoke_vijiiiiiii,\n                invoke_vijiiiiji,\n                invoke_vijiij,\n                invoke_vijiiji,\n                invoke_vijij,\n                invoke_vijiji,\n                invoke_vijijj,\n                invoke_vijijjd,\n                invoke_vijijjji,\n                invoke_vijj,\n                invoke_vijji,\n                invoke_vijjiii,\n                invoke_vijjij,\n                invoke_vijjj,\n                invoke_vijjji,\n                invoke_vijjjiiji,\n                invoke_vijjjj,\n                invoke_vj,\n                invoke_vji,\n                invoke_vjii,\n                invoke_vjiii,\n                invoke_vjiiii,\n                invoke_vjiiiii,\n                invoke_vjiiij,\n                invoke_vjij,\n                invoke_vjj,\n                invoke_vjjii,\n                invoke_vjjijij,\n                lineColor: _lineColor,\n                lineRGBA: _lineRGBA,\n                llvm_eh_typeid_for: _llvm_eh_typeid_for,\n                memory: wasmMemory,\n                pixelRGBA: _pixelRGBA,\n                proc_exit: _proc_exit,\n                pthread_kill: _pthread_kill,\n                random_get: _random_get,\n                rectangleColor: _rectangleColor,\n                rectangleRGBA: _rectangleRGBA,\n                rotozoomSurface: _rotozoomSurface,\n                setNetworkCallback: _setNetworkCallback,\n                setprotoent: _setprotoent,\n                stackAlloc: _stackAlloc,\n                stackRestore: _stackRestore,\n                stackSave: _stackSave,\n                strptime: _strptime,\n                strptime_l: _strptime_l,\n                uuid_clear: _uuid_clear,\n                uuid_compare: _uuid_compare,\n                uuid_copy: _uuid_copy,\n                uuid_generate: _uuid_generate,\n                uuid_is_null: _uuid_is_null,\n                uuid_parse: _uuid_parse,\n                uuid_type: _uuid_type,\n                uuid_unparse: _uuid_unparse,\n                uuid_unparse_lower: _uuid_unparse_lower,\n                uuid_unparse_upper: _uuid_unparse_upper,\n                uuid_variant: _uuid_variant,\n                zoomSurface: _zoomSurface\n            };\n            var wasmExports = createWasm();\n            var __emval_coro_resume = (a0, a1) => (__emval_coro_resume = wasmExports[\"_emval_coro_resume\"])(a0, a1);\n            var _main = Module[\"_main\"] = (a0, a1) => (_main = Module[\"_main\"] = wasmExports[\"main\"])(a0, a1);\n            var _duckdb_web_fs_glob_add_path = Module[\"_duckdb_web_fs_glob_add_path\"] = a0 => (_duckdb_web_fs_glob_add_path = Module[\"_duckdb_web_fs_glob_add_path\"] = wasmExports[\"duckdb_web_fs_glob_add_path\"])(a0);\n            var _duckdb_web_clear_response = Module[\"_duckdb_web_clear_response\"] = () => (_duckdb_web_clear_response = Module[\"_duckdb_web_clear_response\"] = wasmExports[\"duckdb_web_clear_response\"])();\n            var _duckdb_web_fail_with = Module[\"_duckdb_web_fail_with\"] = a0 => (_duckdb_web_fail_with = Module[\"_duckdb_web_fail_with\"] = wasmExports[\"duckdb_web_fail_with\"])(a0);\n            var _duckdb_web_reset = Module[\"_duckdb_web_reset\"] = a0 => (_duckdb_web_reset = Module[\"_duckdb_web_reset\"] = wasmExports[\"duckdb_web_reset\"])(a0);\n            var _duckdb_web_connect = Module[\"_duckdb_web_connect\"] = () => (_duckdb_web_connect = Module[\"_duckdb_web_connect\"] = wasmExports[\"duckdb_web_connect\"])();\n            var _duckdb_web_disconnect = Module[\"_duckdb_web_disconnect\"] = a0 => (_duckdb_web_disconnect = Module[\"_duckdb_web_disconnect\"] = wasmExports[\"duckdb_web_disconnect\"])(a0);\n            var _duckdb_web_flush_files = Module[\"_duckdb_web_flush_files\"] = () => (_duckdb_web_flush_files = Module[\"_duckdb_web_flush_files\"] = wasmExports[\"duckdb_web_flush_files\"])();\n            var _duckdb_web_flush_file = Module[\"_duckdb_web_flush_file\"] = a0 => (_duckdb_web_flush_file = Module[\"_duckdb_web_flush_file\"] = wasmExports[\"duckdb_web_flush_file\"])(a0);\n            var _duckdb_web_open = Module[\"_duckdb_web_open\"] = (a0, a1) => (_duckdb_web_open = Module[\"_duckdb_web_open\"] = wasmExports[\"duckdb_web_open\"])(a0, a1);\n            var _duckdb_web_get_global_file_info = Module[\"_duckdb_web_get_global_file_info\"] = (a0, a1) => (_duckdb_web_get_global_file_info = Module[\"_duckdb_web_get_global_file_info\"] = wasmExports[\"duckdb_web_get_global_file_info\"])(a0, a1);\n            var _duckdb_web_collect_file_stats = Module[\"_duckdb_web_collect_file_stats\"] = (a0, a1, a2) => (_duckdb_web_collect_file_stats = Module[\"_duckdb_web_collect_file_stats\"] = wasmExports[\"duckdb_web_collect_file_stats\"])(a0, a1, a2);\n            var _duckdb_web_export_file_stats = Module[\"_duckdb_web_export_file_stats\"] = (a0, a1) => (_duckdb_web_export_file_stats = Module[\"_duckdb_web_export_file_stats\"] = wasmExports[\"duckdb_web_export_file_stats\"])(a0, a1);\n            var _duckdb_web_fs_drop_file = Module[\"_duckdb_web_fs_drop_file\"] = (a0, a1) => (_duckdb_web_fs_drop_file = Module[\"_duckdb_web_fs_drop_file\"] = wasmExports[\"duckdb_web_fs_drop_file\"])(a0, a1);\n            var _duckdb_web_fs_drop_files = Module[\"_duckdb_web_fs_drop_files\"] = (a0, a1, a2) => (_duckdb_web_fs_drop_files = Module[\"_duckdb_web_fs_drop_files\"] = wasmExports[\"duckdb_web_fs_drop_files\"])(a0, a1, a2);\n            var _duckdb_web_fs_glob_file_infos = Module[\"_duckdb_web_fs_glob_file_infos\"] = (a0, a1) => (_duckdb_web_fs_glob_file_infos = Module[\"_duckdb_web_fs_glob_file_infos\"] = wasmExports[\"duckdb_web_fs_glob_file_infos\"])(a0, a1);\n            var _duckdb_web_fs_get_file_info_by_id = Module[\"_duckdb_web_fs_get_file_info_by_id\"] = (a0, a1, a2) => (_duckdb_web_fs_get_file_info_by_id = Module[\"_duckdb_web_fs_get_file_info_by_id\"] = wasmExports[\"duckdb_web_fs_get_file_info_by_id\"])(a0, a1, a2);\n            var _duckdb_web_fs_get_file_info_by_name = Module[\"_duckdb_web_fs_get_file_info_by_name\"] = (a0, a1, a2) => (_duckdb_web_fs_get_file_info_by_name = Module[\"_duckdb_web_fs_get_file_info_by_name\"] = wasmExports[\"duckdb_web_fs_get_file_info_by_name\"])(a0, a1, a2);\n            var _duckdb_web_fs_register_file_url = Module[\"_duckdb_web_fs_register_file_url\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_fs_register_file_url = Module[\"_duckdb_web_fs_register_file_url\"] = wasmExports[\"duckdb_web_fs_register_file_url\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_fs_register_file_buffer = Module[\"_duckdb_web_fs_register_file_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_fs_register_file_buffer = Module[\"_duckdb_web_fs_register_file_buffer\"] = wasmExports[\"duckdb_web_fs_register_file_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_copy_file_to_buffer = Module[\"_duckdb_web_copy_file_to_buffer\"] = (a0, a1) => (_duckdb_web_copy_file_to_buffer = Module[\"_duckdb_web_copy_file_to_buffer\"] = wasmExports[\"duckdb_web_copy_file_to_buffer\"])(a0, a1);\n            var _duckdb_web_copy_file_to_path = Module[\"_duckdb_web_copy_file_to_path\"] = (a0, a1, a2) => (_duckdb_web_copy_file_to_path = Module[\"_duckdb_web_copy_file_to_path\"] = wasmExports[\"duckdb_web_copy_file_to_path\"])(a0, a1, a2);\n            var _duckdb_web_get_version = Module[\"_duckdb_web_get_version\"] = a0 => (_duckdb_web_get_version = Module[\"_duckdb_web_get_version\"] = wasmExports[\"duckdb_web_get_version\"])(a0);\n            var _duckdb_web_get_feature_flags = Module[\"_duckdb_web_get_feature_flags\"] = () => (_duckdb_web_get_feature_flags = Module[\"_duckdb_web_get_feature_flags\"] = wasmExports[\"duckdb_web_get_feature_flags\"])();\n            var _duckdb_web_tokenize = Module[\"_duckdb_web_tokenize\"] = (a0, a1) => (_duckdb_web_tokenize = Module[\"_duckdb_web_tokenize\"] = wasmExports[\"duckdb_web_tokenize\"])(a0, a1);\n            var _duckdb_web_tokenize_buffer = Module[\"_duckdb_web_tokenize_buffer\"] = (a0, a1, a2) => (_duckdb_web_tokenize_buffer = Module[\"_duckdb_web_tokenize_buffer\"] = wasmExports[\"duckdb_web_tokenize_buffer\"])(a0, a1, a2);\n            var _duckdb_web_udf_scalar_create = Module[\"_duckdb_web_udf_scalar_create\"] = (a0, a1, a2) => (_duckdb_web_udf_scalar_create = Module[\"_duckdb_web_udf_scalar_create\"] = wasmExports[\"duckdb_web_udf_scalar_create\"])(a0, a1, a2);\n            var _duckdb_web_prepared_create = Module[\"_duckdb_web_prepared_create\"] = (a0, a1, a2) => (_duckdb_web_prepared_create = Module[\"_duckdb_web_prepared_create\"] = wasmExports[\"duckdb_web_prepared_create\"])(a0, a1, a2);\n            var _duckdb_web_prepared_create_buffer = Module[\"_duckdb_web_prepared_create_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_create_buffer = Module[\"_duckdb_web_prepared_create_buffer\"] = wasmExports[\"duckdb_web_prepared_create_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_prepared_close = Module[\"_duckdb_web_prepared_close\"] = (a0, a1, a2) => (_duckdb_web_prepared_close = Module[\"_duckdb_web_prepared_close\"] = wasmExports[\"duckdb_web_prepared_close\"])(a0, a1, a2);\n            var _duckdb_web_prepared_run = Module[\"_duckdb_web_prepared_run\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_run = Module[\"_duckdb_web_prepared_run\"] = wasmExports[\"duckdb_web_prepared_run\"])(a0, a1, a2, a3);\n            var _duckdb_web_prepared_send = Module[\"_duckdb_web_prepared_send\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_send = Module[\"_duckdb_web_prepared_send\"] = wasmExports[\"duckdb_web_prepared_send\"])(a0, a1, a2, a3);\n            var _duckdb_web_query_run = Module[\"_duckdb_web_query_run\"] = (a0, a1, a2) => (_duckdb_web_query_run = Module[\"_duckdb_web_query_run\"] = wasmExports[\"duckdb_web_query_run\"])(a0, a1, a2);\n            var _duckdb_web_query_run_buffer = Module[\"_duckdb_web_query_run_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_query_run_buffer = Module[\"_duckdb_web_query_run_buffer\"] = wasmExports[\"duckdb_web_query_run_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_pending_query_start = Module[\"_duckdb_web_pending_query_start\"] = (a0, a1, a2, a3) => (_duckdb_web_pending_query_start = Module[\"_duckdb_web_pending_query_start\"] = wasmExports[\"duckdb_web_pending_query_start\"])(a0, a1, a2, a3);\n            var _duckdb_web_pending_query_start_buffer = Module[\"_duckdb_web_pending_query_start_buffer\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_pending_query_start_buffer = Module[\"_duckdb_web_pending_query_start_buffer\"] = wasmExports[\"duckdb_web_pending_query_start_buffer\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_pending_query_poll = Module[\"_duckdb_web_pending_query_poll\"] = (a0, a1, a2) => (_duckdb_web_pending_query_poll = Module[\"_duckdb_web_pending_query_poll\"] = wasmExports[\"duckdb_web_pending_query_poll\"])(a0, a1, a2);\n            var _duckdb_web_pending_query_cancel = Module[\"_duckdb_web_pending_query_cancel\"] = (a0, a1) => (_duckdb_web_pending_query_cancel = Module[\"_duckdb_web_pending_query_cancel\"] = wasmExports[\"duckdb_web_pending_query_cancel\"])(a0, a1);\n            var _duckdb_web_query_fetch_results = Module[\"_duckdb_web_query_fetch_results\"] = (a0, a1) => (_duckdb_web_query_fetch_results = Module[\"_duckdb_web_query_fetch_results\"] = wasmExports[\"duckdb_web_query_fetch_results\"])(a0, a1);\n            var _duckdb_web_get_tablenames = Module[\"_duckdb_web_get_tablenames\"] = (a0, a1, a2) => (_duckdb_web_get_tablenames = Module[\"_duckdb_web_get_tablenames\"] = wasmExports[\"duckdb_web_get_tablenames\"])(a0, a1, a2);\n            var _duckdb_web_get_tablenames_buffer = Module[\"_duckdb_web_get_tablenames_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_get_tablenames_buffer = Module[\"_duckdb_web_get_tablenames_buffer\"] = wasmExports[\"duckdb_web_get_tablenames_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_insert_arrow_from_ipc_stream = Module[\"_duckdb_web_insert_arrow_from_ipc_stream\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_insert_arrow_from_ipc_stream = Module[\"_duckdb_web_insert_arrow_from_ipc_stream\"] = wasmExports[\"duckdb_web_insert_arrow_from_ipc_stream\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_insert_csv_from_path = Module[\"_duckdb_web_insert_csv_from_path\"] = (a0, a1, a2, a3) => (_duckdb_web_insert_csv_from_path = Module[\"_duckdb_web_insert_csv_from_path\"] = wasmExports[\"duckdb_web_insert_csv_from_path\"])(a0, a1, a2, a3);\n            var _duckdb_web_insert_json_from_path = Module[\"_duckdb_web_insert_json_from_path\"] = (a0, a1, a2, a3) => (_duckdb_web_insert_json_from_path = Module[\"_duckdb_web_insert_json_from_path\"] = wasmExports[\"duckdb_web_insert_json_from_path\"])(a0, a1, a2, a3);\n            var ___dl_seterr = (a0, a1) => (___dl_seterr = wasmExports[\"__dl_seterr\"])(a0, a1);\n            var __emscripten_timeout = (a0, a1) => (__emscripten_timeout = wasmExports[\"_emscripten_timeout\"])(a0, a1);\n            var _malloc = Module[\"_malloc\"] = a0 => (_malloc = Module[\"_malloc\"] = wasmExports[\"malloc\"])(a0);\n            var _free = Module[\"_free\"] = a0 => (_free = Module[\"_free\"] = wasmExports[\"free\"])(a0);\n            var _calloc = Module[\"_calloc\"] = (a0, a1) => (_calloc = Module[\"_calloc\"] = wasmExports[\"calloc\"])(a0, a1);\n            var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports[\"emscripten_builtin_memalign\"])(a0, a1);\n            var __emscripten_tempret_set = a0 => (__emscripten_tempret_set = wasmExports[\"_emscripten_tempret_set\"])(a0);\n            var __emscripten_tempret_get = () => (__emscripten_tempret_get = wasmExports[\"_emscripten_tempret_get\"])();\n            var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports[\"_emscripten_stack_restore\"])(a0);\n            var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports[\"_emscripten_stack_alloc\"])(a0);\n            var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports[\"emscripten_stack_get_current\"])();\n\n            function invoke_ii(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vii(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iii(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_dii(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vi(index, a1) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_v(index) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)()\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_i(index) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)()\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_fi(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viif(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viid(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iid(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiid(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_di(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_id(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vid(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vif(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iidii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viifii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vifi(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viidii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vidi(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_idiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iff(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_idd(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diiiid(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_if(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_didd(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ifii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_idii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ifi(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_idi(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_idiiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viidddddddd(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_dd(index, a1) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ddd(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viddddi(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diiiiid(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiid(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iifii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iidiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iidiiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iidi(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vifii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vidii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iif(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_fiiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiifi(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiidi(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiid(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_fiii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return getWasmTableEntry(index)(a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n                var sp = stackSave();\n                try {\n                    getWasmTableEntry(index)(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viji(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viji\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ji(index, a1) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ji\"](index, a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iij(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iij\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiij(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiij\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vij(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vij\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jii(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jii\"](index, a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viij(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viij\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiji(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiji\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiji(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiji\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijji(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijji\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiii(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiii\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjjii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjjii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jj(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jj\"](index, a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiii\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_dij(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_dij\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijii\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiji(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiji\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijji(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijji\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijj(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijj\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjiiiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ij(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ij\"](index, a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jij(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jij\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjjii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjjii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijd(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijd\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiifj(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiifj\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijf(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijf\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijj(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijj\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijj(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijj\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ijji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ijji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijd(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijd\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vj(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vj\"](index, a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijii\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijjjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijjjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijj(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijj\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiii\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijjj(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_fiiji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_fiiji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diiji(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_diiji\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjjij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjjij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jji(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jji\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijiiiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjiiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjiiii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_j(index) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_j\"](index)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjiiij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjiiij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijijijiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijijijiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijjjjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijjjjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijjjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijjjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijijijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijijijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiij(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiij\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjii\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiijii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiijii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iji(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iji\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jijjj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jijjj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_dijjj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_dijjj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijijjd(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijijjd\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ijjiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ijjiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiijiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiijiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijjij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijjij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijijj(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijjjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijjjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jf(index, a1) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jf\"](index, a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jd(index, a1) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jd\"](index, a1)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vji(index, a1, a2, a3) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vji\"](index, a1, a2, a3)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijj(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijj\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijjii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijiijjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiijjiiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiijjiiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ijii(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ijii\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijjiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijjiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijiijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijiijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiidj(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiidj\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiii(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiii\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiijiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiijiiiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijjij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijjij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ijjj(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ijjj\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiijjjjjjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiijjjjjjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiiiiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiiiiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijjj(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjiii(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjiii\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jijj(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jijj\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiijj(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiijj\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iidj(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iidj\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiij(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiij\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjjijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjjijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiji(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiji\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiijiij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiijiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiiijiijjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiiijiijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijjijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijjijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiijjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jijij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jijij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiiijjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiiijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijjij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijjij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijjii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jiji(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jiji\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiiijij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiiijij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjii(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjii\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjj(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjj\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_ijij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_ijij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diij(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_diij\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_djij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_djij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_dj(index, a1, a2) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_dj\"](index, a1, a2)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjj(index, a1, a2, a3, a4) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjj\"](index, a1, a2, a3, a4)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vjij(index, a1, a2, a3, a4, a5) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vjij\"](index, a1, a2, a3, a4, a5)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjjjjjd(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjjjjjd\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jjjji(index, a1, a2, a3, a4, a5, a6, a7) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jjjji\"](index, a1, a2, a3, a4, a5, a6, a7)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijjjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijjjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_fiiiij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_fiiiij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_diiiij(index, a1, a2, a3, a4, a5, a6) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_diiiij\"](index, a1, a2, a3, a4, a5, a6)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijiijii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijiijii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiiijjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiiijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiijijjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiijijjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijijjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiij(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_jijjjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_jijjjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iijiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iijiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiij(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiij\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijiiiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijjjiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijjjiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiji(index, a1, a2, a3, a4, a5, a6, a7, a8) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiiijjjj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiiijjjj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_vijiiiiji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_vijiiiiji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viiiijiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viiiijiii\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_iiijjji(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n                var sp = stackSave();\n                try {\n                    return Module[\"dynCall_iiijjji\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function invoke_viijiiijj(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {\n                var sp = stackSave();\n                try {\n                    Module[\"dynCall_viijiiijj\"](index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)\n                } catch (e) {\n                    stackRestore(sp);\n                    if (e !== e + 0) throw e;\n                    _setThrew(1, 0)\n                }\n            }\n\n            function applySignatureConversions(wasmExports) {\n                wasmExports = Object.assign({}, wasmExports);\n                var makeWrapper_pp = f => a0 => f(a0) >>> 0;\n                var makeWrapper_p = f => () => f() >>> 0;\n                var makeWrapper_pppp = f => (a0, a1, a2) => f(a0, a1, a2) >>> 0;\n                var makeWrapper_ppp = f => (a0, a1) => f(a0, a1) >>> 0;\n                var makeWrapper_p_ = f => a0 => f(a0) >>> 0;\n                var makeWrapper_pP = f => a0 => f(a0) >>> 0;\n                wasmExports[\"__getTypeName\"] = makeWrapper_pp(wasmExports[\"__getTypeName\"]);\n                wasmExports[\"pthread_self\"] = makeWrapper_p(wasmExports[\"pthread_self\"]);\n                wasmExports[\"memcpy\"] = makeWrapper_pppp(wasmExports[\"memcpy\"]);\n                wasmExports[\"malloc\"] = makeWrapper_pp(wasmExports[\"malloc\"]);\n                wasmExports[\"calloc\"] = makeWrapper_ppp(wasmExports[\"calloc\"]);\n                wasmExports[\"__errno_location\"] = makeWrapper_p(wasmExports[\"__errno_location\"]);\n                wasmExports[\"strerror\"] = makeWrapper_p_(wasmExports[\"strerror\"]);\n                wasmExports[\"emscripten_builtin_malloc\"] = makeWrapper_pp(wasmExports[\"emscripten_builtin_malloc\"]);\n                wasmExports[\"emscripten_stack_get_base\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_base\"]);\n                wasmExports[\"emscripten_stack_get_end\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_end\"]);\n                wasmExports[\"emscripten_builtin_memalign\"] = makeWrapper_ppp(wasmExports[\"emscripten_builtin_memalign\"]);\n                wasmExports[\"emscripten_stack_get_current\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_current\"]);\n                wasmExports[\"emscripten_main_runtime_thread_id\"] = makeWrapper_p(wasmExports[\"emscripten_main_runtime_thread_id\"]);\n                wasmExports[\"sbrk\"] = makeWrapper_pP(wasmExports[\"sbrk\"]);\n                wasmExports[\"memalign\"] = makeWrapper_ppp(wasmExports[\"memalign\"]);\n                wasmExports[\"emscripten_builtin_calloc\"] = makeWrapper_ppp(wasmExports[\"emscripten_builtin_calloc\"]);\n                wasmExports[\"_emscripten_stack_alloc\"] = makeWrapper_pp(wasmExports[\"_emscripten_stack_alloc\"]);\n                wasmExports[\"__cxa_get_exception_ptr\"] = makeWrapper_pp(wasmExports[\"__cxa_get_exception_ptr\"]);\n                return wasmExports\n            }\n            Module[\"stackSave\"] = stackSave;\n            Module[\"stackRestore\"] = stackRestore;\n            Module[\"stackAlloc\"] = stackAlloc;\n            Module[\"getTempRet0\"] = getTempRet0;\n            Module[\"setTempRet0\"] = setTempRet0;\n            Module[\"ccall\"] = ccall;\n            Module[\"createDyncallWrapper\"] = createDyncallWrapper;\n            var calledRun;\n            dependenciesFulfilled = function runCaller() {\n                if (!calledRun) run();\n                if (!calledRun) dependenciesFulfilled = runCaller\n            };\n\n            function callMain(args = []) {\n                var entryFunction = resolveGlobalSymbol(\"main\").sym;\n                if (!entryFunction) return;\n                args.unshift(thisProgram);\n                var argc = args.length;\n                var argv = stackAlloc((argc + 1) * 4);\n                var argv_ptr = argv;\n                args.forEach(arg => {\n                    HEAPU32[argv_ptr >>> 2 >>> 0] = stringToUTF8OnStack(arg);\n                    argv_ptr += 4\n                });\n                HEAPU32[argv_ptr >>> 2 >>> 0] = 0;\n                try {\n                    var ret = entryFunction(argc, argv);\n                    exitJS(ret, true);\n                    return ret\n                } catch (e) {\n                    return handleException(e)\n                }\n            }\n\n            function run(args = arguments_) {\n                if (runDependencies > 0) {\n                    return\n                }\n                preRun();\n                if (runDependencies > 0) {\n                    return\n                }\n\n                function doRun() {\n                    if (calledRun) return;\n                    calledRun = true;\n                    Module[\"calledRun\"] = true;\n                    if (ABORT) return;\n                    initRuntime();\n                    preMain();\n                    readyPromiseResolve(Module);\n                    Module[\"onRuntimeInitialized\"]?.();\n                    if (shouldRunNow) callMain(args);\n                    postRun()\n                }\n                if (Module[\"setStatus\"]) {\n                    Module[\"setStatus\"](\"Running...\");\n                    setTimeout(() => {\n                        setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n                        doRun()\n                    }, 1)\n                } else {\n                    doRun()\n                }\n            }\n            if (Module[\"preInit\"]) {\n                if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n                while (Module[\"preInit\"].length > 0) {\n                    Module[\"preInit\"].pop()()\n                }\n            }\n            var shouldRunNow = true;\n            if (Module[\"noInitialRun\"]) shouldRunNow = false;\n            run();\n            moduleRtn = readyPromise;\n\n\n            return moduleRtn;\n        }\n    );\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n    module.exports = DuckDB;\nelse if (typeof define === 'function' && define['amd'])\n    define([], () => DuckDB);\n", "var DuckDB = (() => {\n    var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n    if (typeof __filename != 'undefined') _scriptName = _scriptName || __filename;\n    return (\n        function(moduleArg = {}) {\n            var moduleRtn;\n\n            var Module = moduleArg;\n            var readyPromiseResolve, readyPromiseReject;\n            var readyPromise = new Promise((resolve, reject) => {\n                readyPromiseResolve = resolve;\n                readyPromiseReject = reject\n            });\n            var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n            var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != \"undefined\";\n            var ENVIRONMENT_IS_NODE = typeof process == \"object\" && typeof process.versions == \"object\" && typeof process.versions.node == \"string\" && process.type != \"renderer\";\n            var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n            if (ENVIRONMENT_IS_NODE) {}\n            var moduleOverrides = Object.assign({}, Module);\n            var arguments_ = [];\n            var thisProgram = \"./this.program\";\n            var quit_ = (status, toThrow) => {\n                throw toThrow\n            };\n            var scriptDirectory = \"\";\n\n            function locateFile(path) {\n                if (Module[\"locateFile\"]) {\n                    return Module[\"locateFile\"](path, scriptDirectory)\n                }\n                return scriptDirectory + path\n            }\n            var readAsync, readBinary;\n            if (ENVIRONMENT_IS_NODE) {\n                var fs = require(\"fs\");\n                var nodePath = require(\"path\");\n                scriptDirectory = __dirname + \"/\";\n                readBinary = filename => {\n                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n                    var ret = fs.readFileSync(filename);\n                    return ret\n                };\n                readAsync = (filename, binary = true) => {\n                    filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);\n                    return new Promise((resolve, reject) => {\n                        fs.readFile(filename, binary ? undefined : \"utf8\", (err, data) => {\n                            if (err) reject(err);\n                            else resolve(binary ? data.buffer : data)\n                        })\n                    })\n                };\n                if (!Module[\"thisProgram\"] && process.argv.length > 1) {\n                    thisProgram = process.argv[1].replace(/\\\\/g, \"/\")\n                }\n                arguments_ = process.argv.slice(2);\n                quit_ = (status, toThrow) => {\n                    process.exitCode = status;\n                    throw toThrow\n                }\n            } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n                if (ENVIRONMENT_IS_WORKER) {\n                    scriptDirectory = self.location.href\n                } else if (typeof document != \"undefined\" && document.currentScript) {\n                    scriptDirectory = document.currentScript.src\n                }\n                if (_scriptName) {\n                    scriptDirectory = _scriptName\n                }\n                if (scriptDirectory.startsWith(\"blob:\")) {\n                    scriptDirectory = \"\"\n                } else {\n                    scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1)\n                } {\n                    if (ENVIRONMENT_IS_WORKER) {\n                        readBinary = url => {\n                            var xhr = new XMLHttpRequest;\n                            xhr.open(\"GET\", url, false);\n                            xhr.responseType = \"arraybuffer\";\n                            xhr.send(null);\n                            return new Uint8Array(xhr.response)\n                        }\n                    }\n                    readAsync = url => fetch(url, {\n                        credentials: \"same-origin\"\n                    }).then(response => {\n                        if (response.ok) {\n                            return response.arrayBuffer()\n                        }\n                        return Promise.reject(new Error(response.status + \" : \" + response.url))\n                    })\n                }\n            } else {}\n            var out = Module[\"print\"] || console.log.bind(console);\n            var err = Module[\"printErr\"] || console.error.bind(console);\n            Object.assign(Module, moduleOverrides);\n            moduleOverrides = null;\n            if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n            if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n            var dynamicLibraries = Module[\"dynamicLibraries\"] || [];\n            var wasmBinary = Module[\"wasmBinary\"];\n            var wasmMemory;\n            var ABORT = false;\n            var EXITSTATUS;\n\n            function assert(condition, text) {\n                if (!condition) {\n                    abort(text)\n                }\n            }\n            var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n            function updateMemoryViews() {\n                var b = wasmMemory.buffer;\n                Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n                Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n                Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n                Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n                Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n                Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n                Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n                Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b)\n            }\n            if (Module[\"wasmMemory\"]) {\n                wasmMemory = Module[\"wasmMemory\"]\n            } else {\n                var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 16777216;\n                wasmMemory = new WebAssembly.Memory({\n                    initial: INITIAL_MEMORY / 65536,\n                    maximum: 65536\n                })\n            }\n            updateMemoryViews();\n            var __ATPRERUN__ = [];\n            var __ATINIT__ = [];\n            var __ATMAIN__ = [];\n            var __ATEXIT__ = [];\n            var __ATPOSTRUN__ = [];\n            var __RELOC_FUNCS__ = [];\n            var runtimeInitialized = false;\n\n            function preRun() {\n                if (Module[\"preRun\"]) {\n                    if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n                    while (Module[\"preRun\"].length) {\n                        addOnPreRun(Module[\"preRun\"].shift())\n                    }\n                }\n                callRuntimeCallbacks(__ATPRERUN__)\n            }\n\n            function initRuntime() {\n                runtimeInitialized = true;\n                callRuntimeCallbacks(__RELOC_FUNCS__);\n                if (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n                FS.ignorePermissions = false;\n                TTY.init();\n                SOCKFS.root = FS.mount(SOCKFS, {}, null);\n                PIPEFS.root = FS.mount(PIPEFS, {}, null);\n                callRuntimeCallbacks(__ATINIT__)\n            }\n\n            function preMain() {\n                callRuntimeCallbacks(__ATMAIN__)\n            }\n\n            function postRun() {\n                if (Module[\"postRun\"]) {\n                    if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n                    while (Module[\"postRun\"].length) {\n                        addOnPostRun(Module[\"postRun\"].shift())\n                    }\n                }\n                callRuntimeCallbacks(__ATPOSTRUN__)\n            }\n\n            function addOnPreRun(cb) {\n                __ATPRERUN__.unshift(cb)\n            }\n\n            function addOnInit(cb) {\n                __ATINIT__.unshift(cb)\n            }\n\n            function addOnPreMain(cb) {\n                __ATMAIN__.unshift(cb)\n            }\n\n            function addOnExit(cb) {}\n\n            function addOnPostRun(cb) {\n                __ATPOSTRUN__.unshift(cb)\n            }\n            var runDependencies = 0;\n            var runDependencyWatcher = null;\n            var dependenciesFulfilled = null;\n\n            function getUniqueRunDependency(id) {\n                return id\n            }\n\n            function addRunDependency(id) {\n                runDependencies++;\n                Module[\"monitorRunDependencies\"]?.(runDependencies)\n            }\n\n            function removeRunDependency(id) {\n                runDependencies--;\n                Module[\"monitorRunDependencies\"]?.(runDependencies);\n                if (runDependencies == 0) {\n                    if (runDependencyWatcher !== null) {\n                        clearInterval(runDependencyWatcher);\n                        runDependencyWatcher = null\n                    }\n                    if (dependenciesFulfilled) {\n                        var callback = dependenciesFulfilled;\n                        dependenciesFulfilled = null;\n                        callback()\n                    }\n                }\n            }\n\n            function abort(what) {\n                Module[\"onAbort\"]?.(what);\n                what = \"Aborted(\" + what + \")\";\n                err(what);\n                ABORT = true;\n                what += \". Build with -sASSERTIONS for more info.\";\n                if (runtimeInitialized) {\n                    ___trap()\n                }\n                var e = new WebAssembly.RuntimeError(what);\n                readyPromiseReject(e);\n                throw e\n            }\n            var dataURIPrefix = \"data:application/octet-stream;base64,\";\n            var isDataURI = filename => filename.startsWith(dataURIPrefix);\n            var isFileURI = filename => filename.startsWith(\"file://\");\n\n            function findWasmBinary() {\n                var f = \"./duckdb-eh.wasm\";\n                if (!isDataURI(f)) {\n                    return locateFile(f)\n                }\n                return f\n            }\n            var wasmBinaryFile;\n\n            function getBinarySync(file) {\n                if (file == wasmBinaryFile && wasmBinary) {\n                    return new Uint8Array(wasmBinary)\n                }\n                if (readBinary) {\n                    return readBinary(file)\n                }\n                throw \"both async and sync fetching of the wasm failed\"\n            }\n\n            function getBinaryPromise(binaryFile) {\n                if (!wasmBinary) {\n                    return readAsync(binaryFile).then(response => new Uint8Array(response), () => getBinarySync(binaryFile))\n                }\n                return Promise.resolve().then(() => getBinarySync(binaryFile))\n            }\n\n            function instantiateArrayBuffer(binaryFile, imports, receiver) {\n                return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {\n                    err(`failed to asynchronously prepare wasm: ${reason}`);\n                    abort(reason)\n                })\n            }\n\n            function instantiateAsync(binary, binaryFile, imports, callback) {\n                if (!binary && typeof WebAssembly.instantiateStreaming == \"function\" && !isDataURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == \"function\") {\n                    return fetch(binaryFile, {\n                        credentials: \"same-origin\"\n                    }).then(response => {\n                        var result = WebAssembly.instantiateStreaming(response, imports);\n                        return result.then(callback, function(reason) {\n                            err(`wasm streaming compile failed: ${reason}`);\n                            err(\"falling back to ArrayBuffer instantiation\");\n                            return instantiateArrayBuffer(binaryFile, imports, callback)\n                        })\n                    })\n                }\n                return instantiateArrayBuffer(binaryFile, imports, callback)\n            }\n\n            function getWasmImports() {\n                return {\n                    env: wasmImports,\n                    wasi_snapshot_preview1: wasmImports,\n                    \"GOT.mem\": new Proxy(wasmImports, GOTHandler),\n                    \"GOT.func\": new Proxy(wasmImports, GOTHandler)\n                }\n            }\n\n            function createWasm() {\n                var info = getWasmImports();\n\n                function receiveInstance(instance, module) {\n                    wasmExports = instance.exports;\n                    wasmExports = relocateExports(wasmExports, 1024);\n                    var metadata = getDylinkMetadata(module);\n                    if (metadata.neededDynlibs) {\n                        dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries)\n                    }\n                    mergeLibSymbols(wasmExports, \"main\");\n                    LDSO.init();\n                    loadDylibs();\n                    wasmExports = applySignatureConversions(wasmExports);\n                    addOnInit(wasmExports[\"__wasm_call_ctors\"]);\n                    __RELOC_FUNCS__.push(wasmExports[\"__wasm_apply_data_relocs\"]);\n                    removeRunDependency(\"wasm-instantiate\");\n                    return wasmExports\n                }\n                addRunDependency(\"wasm-instantiate\");\n\n                function receiveInstantiationResult(result) {\n                    receiveInstance(result[\"instance\"], result[\"module\"])\n                }\n                if (Module[\"instantiateWasm\"]) {\n                    try {\n                        return Module[\"instantiateWasm\"](info, receiveInstance)\n                    } catch (e) {\n                        err(`Module.instantiateWasm callback failed with error: ${e}`);\n                        readyPromiseReject(e)\n                    }\n                }\n                wasmBinaryFile ??= findWasmBinary();\n                instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);\n                return {}\n            }\n            var tempDouble;\n            var tempI64;\n            var ASM_CONSTS = {\n                2510904: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2512311: ($0, $1, $2, $3, $4, $5) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        var post_payload = new Uint8Array($5);\n                        for (var iii = 0; iii < $5; iii++) {\n                            post_payload[iii] = Module.HEAPU8[iii + $4]\n                        }\n                        xhr.send(post_payload)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = Uint8Array.from(Array.from(xhr.getResponseHeader(\"Etag\")).map(letter => letter.charCodeAt(0)));\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2513931: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        console.log(\"HEAD\", UTF8ToString(ptr1), UTF8ToString(ptr2));\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 8);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 8] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap + 4);\n                    var headers = Uint8Array.from(Array.from(xhr.getAllResponseHeaders()).map(letter => letter.charCodeAt(0)));\n                    len = headers.byteLength;\n                    var headersOnWasmHeap = _malloc(len + 8);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + headersOnWasmHeap + 8] = headers[iii]\n                    }\n                    LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, headersOnWasmHeap + 4);\n                    len = headersOnWasmHeap;\n                    LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2516276: ($0, $1, $2, $3) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        xhr.send(null)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2517683: ($0, $1, $2, $3, $4, $5) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        return 0\n                    }\n                    const xhr = new XMLHttpRequest;\n                    if (false && url.startsWith(\"http://\")) {\n                        url = \"https://\" + url.substr(7)\n                    }\n                    xhr.open(UTF8ToString($3), url, false);\n                    xhr.responseType = \"arraybuffer\";\n                    var i = 0;\n                    var len = $1;\n                    while (i < len * 2) {\n                        var ptr1 = HEAP32[$2 / 4 + i >>> 0];\n                        var ptr2 = HEAP32[$2 / 4 + i + 1 >>> 0];\n                        try {\n                            var z = encodeURI(UTF8ToString(ptr1));\n                            if (z === \"Host\") z = \"X-Host-Override\";\n                            if (z === \"User-Agent\") z = \"X-user-agent\";\n                            if (z === \"Authorization\") {\n                                xhr.setRequestHeader(z, UTF8ToString(ptr2))\n                            } else {\n                                xhr.setRequestHeader(z, encodeURI(UTF8ToString(ptr2)))\n                            }\n                        } catch (error) {\n                            console.warn(\"Error while performing XMLHttpRequest.setRequestHeader()\", error)\n                        }\n                        i += 2\n                    }\n                    try {\n                        var post_payload = new Uint8Array($5);\n                        for (var iii = 0; iii < $5; iii++) {\n                            post_payload[iii] = Module.HEAPU8[iii + $4]\n                        }\n                        xhr.send(post_payload)\n                    } catch {\n                        return 0\n                    }\n                    if (xhr.status >= 400) return 0;\n                    var uInt8Array = xhr.response;\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    return fileOnWasmHeap\n                },\n                2519221: ($0, $1) => {\n                    var jsString = typeof runtime == \"object\" && runtime && typeof runtime.whereToLoad == \"function\" && runtime.whereToLoad ? runtime.whereToLoad(UTF8ToString($0)) : UTF8ToString($1);\n                    var lengthBytes = lengthBytesUTF8(jsString) + 1;\n                    var stringOnWasmHeap = _malloc(lengthBytes);\n                    stringToUTF8(jsString, stringOnWasmHeap, lengthBytes);\n                    return stringOnWasmHeap\n                },\n                2519587: ($0, $1) => {\n                    var url = UTF8ToString($0);\n                    if (typeof XMLHttpRequest === \"undefined\") {\n                        const os = require(\"os\");\n                        const path = require(\"path\");\n                        const fs = require(\"fs\");\n                        var array = url.split(\"/\");\n                        var l = array.length;\n                        var folder = path.join(os.homedir(), \".duckdb/extensions/\" + array[l - 4] + \"/\" + array[l - 3] + \"/\" + array[l - 2] + \"/\");\n                        var filePath = path.join(folder, array[l - 1]);\n                        try {\n                            if (!fs.existsSync(folder)) {\n                                fs.mkdirSync(folder, {\n                                    recursive: true\n                                })\n                            }\n                            if (!fs.existsSync(filePath)) {\n                                const int32 = new Int32Array(new SharedArrayBuffer(8));\n                                var Worker = require(\"node:worker_threads\").Worker;\n                                var worker = new Worker(\"const {Worker,isMainThread,parentPort,workerData,} = require('node:worker_threads');var times = 0;var SAB = 23;var Z = 0; async function ZZZ(e) {var x = await fetch(e);var res = await x.arrayBuffer();Atomics.store(SAB, 1, res.byteLength);Atomics.store(SAB, 0, 1);Atomics.notify(SAB, 1);Atomics.notify(SAB, 0);Z = res;};parentPort.on('message', function(event) {if (times == 0) {times++;SAB = event;} else if (times == 1) {times++; ZZZ(event);} else {const a = new Uint8Array(Z);const b = new Uint8Array(event.buffer);var K = Z.byteLength;for (var i = 0; i < K; i++) {b[i] = a[i];}Atomics.notify(event, 0);Atomics.store(SAB, 0, 2);Atomics.notify(SAB, 0);}});\", {\n                                    eval: true\n                                });\n                                var uInt8Array;\n                                int32[0] = 0;\n                                int32[2] = 4;\n                                worker.postMessage(int32);\n                                worker.postMessage(url);\n                                Atomics.wait(int32, 0, 0);\n                                const int32_2 = new Int32Array(new SharedArrayBuffer(int32[1] + 3 - (int32[1] + 3) % 4));\n                                worker.postMessage(int32_2);\n                                Atomics.wait(int32, 0, 1);\n                                var x = new Uint8Array(int32_2.buffer, 0, int32[1]);\n                                uInt8Array = x;\n                                worker.terminate();\n                                fs.writeFileSync(filePath, uInt8Array)\n                            } else {\n                                uInt8Array = fs.readFileSync(filePath)\n                            }\n                        } catch (e) {\n                            console.log(\"Error fetching module\", e);\n                            return 0\n                        }\n                    } else {\n                        const xhr = new XMLHttpRequest;\n                        xhr.open(\"GET\", url, false);\n                        xhr.responseType = \"arraybuffer\";\n                        xhr.send(null);\n                        if (xhr.status != 200) return 0;\n                        uInt8Array = xhr.response\n                    }\n                    var valid = WebAssembly.validate(uInt8Array);\n                    var len = uInt8Array.byteLength;\n                    var fileOnWasmHeap = _malloc(len + 4);\n                    var properArray = new Uint8Array(uInt8Array);\n                    for (var iii = 0; iii < len; iii++) {\n                        Module.HEAPU8[iii + fileOnWasmHeap + 4] = properArray[iii]\n                    }\n                    var LEN123 = new Uint8Array(4);\n                    LEN123[0] = len % 256;\n                    len -= LEN123[0];\n                    len /= 256;\n                    LEN123[1] = len % 256;\n                    len -= LEN123[1];\n                    len /= 256;\n                    LEN123[2] = len % 256;\n                    len -= LEN123[2];\n                    len /= 256;\n                    LEN123[3] = len % 256;\n                    len -= LEN123[3];\n                    len /= 256;\n                    Module.HEAPU8.set(LEN123, fileOnWasmHeap);\n                    FS.writeFile(UTF8ToString($1), new Uint8Array(uInt8Array));\n                    return fileOnWasmHeap\n                },\n                2522228: $0 => {\n                    if (!$0) {\n                        AL.alcErr = 40964;\n                        return 1\n                    }\n                },\n                2522276: $0 => {\n                    if (!AL.currentCtx) {\n                        err(\"alGetProcAddress() called without a valid context\");\n                        return 1\n                    }\n                    if (!$0) {\n                        AL.currentCtx.err = 40963;\n                        return 1\n                    }\n                }\n            };\n            class ExitStatus {\n                name = \"ExitStatus\";\n                constructor(status) {\n                    this.message = `Program terminated with exit(${status})`;\n                    this.status = status\n                }\n            }\n            var GOT = {};\n            var currentModuleWeakSymbols = new Set([]);\n            var GOTHandler = {\n                get(obj, symName) {\n                    var rtn = GOT[symName];\n                    if (!rtn) {\n                        rtn = GOT[symName] = new WebAssembly.Global({\n                            value: \"i32\",\n                            mutable: true\n                        })\n                    }\n                    if (!currentModuleWeakSymbols.has(symName)) {\n                        rtn.required = true\n                    }\n                    return rtn\n                }\n            };\n            var callRuntimeCallbacks = callbacks => {\n                while (callbacks.length > 0) {\n                    callbacks.shift()(Module)\n                }\n            };\n            var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder : undefined;\n            var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n                idx >>>= 0;\n                var endIdx = idx + maxBytesToRead;\n                var endPtr = idx;\n                while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n                if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n                    return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr))\n                }\n                var str = \"\";\n                while (idx < endPtr) {\n                    var u0 = heapOrArray[idx++];\n                    if (!(u0 & 128)) {\n                        str += String.fromCharCode(u0);\n                        continue\n                    }\n                    var u1 = heapOrArray[idx++] & 63;\n                    if ((u0 & 224) == 192) {\n                        str += String.fromCharCode((u0 & 31) << 6 | u1);\n                        continue\n                    }\n                    var u2 = heapOrArray[idx++] & 63;\n                    if ((u0 & 240) == 224) {\n                        u0 = (u0 & 15) << 12 | u1 << 6 | u2\n                    } else {\n                        u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63\n                    }\n                    if (u0 < 65536) {\n                        str += String.fromCharCode(u0)\n                    } else {\n                        var ch = u0 - 65536;\n                        str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)\n                    }\n                }\n                return str\n            };\n            var getDylinkMetadata = binary => {\n                var offset = 0;\n                var end = 0;\n\n                function getU8() {\n                    return binary[offset++]\n                }\n\n                function getLEB() {\n                    var ret = 0;\n                    var mul = 1;\n                    while (1) {\n                        var byte = binary[offset++];\n                        ret += (byte & 127) * mul;\n                        mul *= 128;\n                        if (!(byte & 128)) break\n                    }\n                    return ret\n                }\n\n                function getString() {\n                    var len = getLEB();\n                    offset += len;\n                    return UTF8ArrayToString(binary, offset - len, len)\n                }\n\n                function failIf(condition, message) {\n                    if (condition) throw new Error(message)\n                }\n                var name = \"dylink.0\";\n                if (binary instanceof WebAssembly.Module) {\n                    var dylinkSection = WebAssembly.Module.customSections(binary, name);\n                    if (dylinkSection.length === 0) {\n                        name = \"dylink\";\n                        dylinkSection = WebAssembly.Module.customSections(binary, name)\n                    }\n                    failIf(dylinkSection.length === 0, \"need dylink section\");\n                    binary = new Uint8Array(dylinkSection[0]);\n                    end = binary.length\n                } else {\n                    var int32View = new Uint32Array(new Uint8Array(binary.subarray(0, 24)).buffer);\n                    var magicNumberFound = int32View[0] == 1836278016;\n                    failIf(!magicNumberFound, \"need to see wasm magic number\");\n                    failIf(binary[8] !== 0, \"need the dylink section to be first\");\n                    offset = 9;\n                    var section_size = getLEB();\n                    end = offset + section_size;\n                    name = getString()\n                }\n                var customSection = {\n                    neededDynlibs: [],\n                    tlsExports: new Set,\n                    weakImports: new Set\n                };\n                if (name == \"dylink\") {\n                    customSection.memorySize = getLEB();\n                    customSection.memoryAlign = getLEB();\n                    customSection.tableSize = getLEB();\n                    customSection.tableAlign = getLEB();\n                    var neededDynlibsCount = getLEB();\n                    for (var i = 0; i < neededDynlibsCount; ++i) {\n                        var libname = getString();\n                        customSection.neededDynlibs.push(libname)\n                    }\n                } else {\n                    failIf(name !== \"dylink.0\");\n                    var WASM_DYLINK_MEM_INFO = 1;\n                    var WASM_DYLINK_NEEDED = 2;\n                    var WASM_DYLINK_EXPORT_INFO = 3;\n                    var WASM_DYLINK_IMPORT_INFO = 4;\n                    var WASM_SYMBOL_TLS = 256;\n                    var WASM_SYMBOL_BINDING_MASK = 3;\n                    var WASM_SYMBOL_BINDING_WEAK = 1;\n                    while (offset < end) {\n                        var subsectionType = getU8();\n                        var subsectionSize = getLEB();\n                        if (subsectionType === WASM_DYLINK_MEM_INFO) {\n                            customSection.memorySize = getLEB();\n                            customSection.memoryAlign = getLEB();\n                            customSection.tableSize = getLEB();\n                            customSection.tableAlign = getLEB()\n                        } else if (subsectionType === WASM_DYLINK_NEEDED) {\n                            var neededDynlibsCount = getLEB();\n                            for (var i = 0; i < neededDynlibsCount; ++i) {\n                                libname = getString();\n                                customSection.neededDynlibs.push(libname)\n                            }\n                        } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {\n                            var count = getLEB();\n                            while (count--) {\n                                var symname = getString();\n                                var flags = getLEB();\n                                if (flags & WASM_SYMBOL_TLS) {\n                                    customSection.tlsExports.add(symname)\n                                }\n                            }\n                        } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {\n                            var count = getLEB();\n                            while (count--) {\n                                var modname = getString();\n                                var symname = getString();\n                                var flags = getLEB();\n                                if ((flags & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {\n                                    customSection.weakImports.add(symname)\n                                }\n                            }\n                        } else {\n                            offset += subsectionSize\n                        }\n                    }\n                }\n                return customSection\n            };\n\n            function getValue(ptr, type = \"i8\") {\n                if (type.endsWith(\"*\")) type = \"*\";\n                switch (type) {\n                    case \"i1\":\n                        return HEAP8[ptr >>> 0];\n                    case \"i8\":\n                        return HEAP8[ptr >>> 0];\n                    case \"i16\":\n                        return HEAP16[ptr >>> 1 >>> 0];\n                    case \"i32\":\n                        return HEAP32[ptr >>> 2 >>> 0];\n                    case \"i64\":\n                        abort(\"to do getValue(i64) use WASM_BIGINT\");\n                    case \"float\":\n                        return HEAPF32[ptr >>> 2 >>> 0];\n                    case \"double\":\n                        return HEAPF64[ptr >>> 3 >>> 0];\n                    case \"*\":\n                        return HEAPU32[ptr >>> 2 >>> 0];\n                    default:\n                        abort(`invalid type for getValue: ${type}`)\n                }\n            }\n            var newDSO = (name, handle, syms) => {\n                var dso = {\n                    refcount: Infinity,\n                    name,\n                    exports: syms,\n                    global: true\n                };\n                LDSO.loadedLibsByName[name] = dso;\n                if (handle != undefined) {\n                    LDSO.loadedLibsByHandle[handle] = dso\n                }\n                return dso\n            };\n            var LDSO = {\n                loadedLibsByName: {},\n                loadedLibsByHandle: {},\n                init() {\n                    newDSO(\"__main__\", 0, wasmImports)\n                }\n            };\n            var ___heap_base = 3660288;\n            var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;\n            var getMemory = size => {\n                if (runtimeInitialized) {\n                    return _calloc(size, 1)\n                }\n                var ret = ___heap_base;\n                var end = ret + alignMemory(size, 16);\n                ___heap_base = end;\n                GOT[\"__heap_base\"].value = end;\n                return ret\n            };\n            var isInternalSym = symName => [\"__cpp_exception\", \"__c_longjmp\", \"__wasm_apply_data_relocs\", \"__dso_handle\", \"__tls_size\", \"__tls_align\", \"__set_stack_limits\", \"_emscripten_tls_init\", \"__wasm_init_tls\", \"__wasm_call_ctors\", \"__start_em_asm\", \"__stop_em_asm\", \"__start_em_js\", \"__stop_em_js\"].includes(symName) || symName.startsWith(\"__em_js__\");\n            var uleb128Encode = (n, target) => {\n                if (n < 128) {\n                    target.push(n)\n                } else {\n                    target.push(n % 128 | 128, n >> 7)\n                }\n            };\n            var sigToWasmTypes = sig => {\n                var typeNames = {\n                    i: \"i32\",\n                    j: \"i64\",\n                    f: \"f32\",\n                    d: \"f64\",\n                    e: \"externref\",\n                    p: \"i32\"\n                };\n                var type = {\n                    parameters: [],\n                    results: sig[0] == \"v\" ? [] : [typeNames[sig[0]]]\n                };\n                for (var i = 1; i < sig.length; ++i) {\n                    type.parameters.push(typeNames[sig[i]])\n                }\n                return type\n            };\n            var generateFuncType = (sig, target) => {\n                var sigRet = sig.slice(0, 1);\n                var sigParam = sig.slice(1);\n                var typeCodes = {\n                    i: 127,\n                    p: 127,\n                    j: 126,\n                    f: 125,\n                    d: 124,\n                    e: 111\n                };\n                target.push(96);\n                uleb128Encode(sigParam.length, target);\n                for (var i = 0; i < sigParam.length; ++i) {\n                    target.push(typeCodes[sigParam[i]])\n                }\n                if (sigRet == \"v\") {\n                    target.push(0)\n                } else {\n                    target.push(1, typeCodes[sigRet])\n                }\n            };\n            var convertJsFunctionToWasm = (func, sig) => {\n                if (typeof WebAssembly.Function == \"function\") {\n                    return new WebAssembly.Function(sigToWasmTypes(sig), func)\n                }\n                var typeSectionBody = [1];\n                generateFuncType(sig, typeSectionBody);\n                var bytes = [0, 97, 115, 109, 1, 0, 0, 0, 1];\n                uleb128Encode(typeSectionBody.length, bytes);\n                bytes.push(...typeSectionBody);\n                bytes.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n                var module = new WebAssembly.Module(new Uint8Array(bytes));\n                var instance = new WebAssembly.Instance(module, {\n                    e: {\n                        f: func\n                    }\n                });\n                var wrappedFunc = instance.exports[\"f\"];\n                return wrappedFunc\n            };\n            var wasmTable = new WebAssembly.Table({\n                initial: 25589,\n                element: \"anyfunc\"\n            });\n            var getWasmTableEntry = funcPtr => wasmTable.get(funcPtr);\n            var updateTableMap = (offset, count) => {\n                if (functionsInTableMap) {\n                    for (var i = offset; i < offset + count; i++) {\n                        var item = getWasmTableEntry(i);\n                        if (item) {\n                            functionsInTableMap.set(item, i)\n                        }\n                    }\n                }\n            };\n            var functionsInTableMap;\n            var getFunctionAddress = func => {\n                if (!functionsInTableMap) {\n                    functionsInTableMap = new WeakMap;\n                    updateTableMap(0, wasmTable.length)\n                }\n                return functionsInTableMap.get(func) || 0\n            };\n            var freeTableIndexes = [];\n            var getEmptyTableSlot = () => {\n                if (freeTableIndexes.length) {\n                    return freeTableIndexes.pop()\n                }\n                try {\n                    wasmTable.grow(1)\n                } catch (err) {\n                    if (!(err instanceof RangeError)) {\n                        throw err\n                    }\n                    throw \"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"\n                }\n                return wasmTable.length - 1\n            };\n            var setWasmTableEntry = (idx, func) => wasmTable.set(idx, func);\n            var addFunction = (func, sig) => {\n                var rtn = getFunctionAddress(func);\n                if (rtn) {\n                    return rtn\n                }\n                var ret = getEmptyTableSlot();\n                try {\n                    setWasmTableEntry(ret, func)\n                } catch (err) {\n                    if (!(err instanceof TypeError)) {\n                        throw err\n                    }\n                    var wrapped = convertJsFunctionToWasm(func, sig);\n                    setWasmTableEntry(ret, wrapped)\n                }\n                functionsInTableMap.set(func, ret);\n                return ret\n            };\n            var updateGOT = (exports, replace) => {\n                for (var symName in exports) {\n                    if (isInternalSym(symName)) {\n                        continue\n                    }\n                    var value = exports[symName];\n                    if (symName.startsWith(\"orig$\")) {\n                        symName = symName.split(\"$\")[1];\n                        replace = true\n                    }\n                    GOT[symName] ||= new WebAssembly.Global({\n                        value: \"i32\",\n                        mutable: true\n                    });\n                    if (replace || GOT[symName].value == 0) {\n                        if (typeof value == \"function\") {\n                            GOT[symName].value = addFunction(value)\n                        } else if (typeof value == \"number\") {\n                            GOT[symName].value = value\n                        } else {\n                            err(`unhandled export type for '${symName}': ${typeof value}`)\n                        }\n                    }\n                }\n            };\n            var relocateExports = (exports, memoryBase, replace) => {\n                var relocated = {};\n                for (var e in exports) {\n                    var value = exports[e];\n                    if (typeof value == \"object\") {\n                        value = value.value\n                    }\n                    if (typeof value == \"number\") {\n                        value += memoryBase\n                    }\n                    relocated[e] = value\n                }\n                updateGOT(relocated, replace);\n                return relocated\n            };\n            var isSymbolDefined = symName => {\n                var existing = wasmImports[symName];\n                if (!existing || existing.stub) {\n                    return false\n                }\n                return true\n            };\n            var resolveGlobalSymbol = (symName, direct = false) => {\n                var sym;\n                if (direct && \"orig$\" + symName in wasmImports) {\n                    symName = \"orig$\" + symName\n                }\n                if (isSymbolDefined(symName)) {\n                    sym = wasmImports[symName]\n                }\n                return {\n                    sym,\n                    name: symName\n                }\n            };\n            var UTF8ToString = (ptr, maxBytesToRead) => {\n                ptr >>>= 0;\n                return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\"\n            };\n            var loadWebAssemblyModule = (binary, flags, libName, localScope, handle) => {\n                var metadata = getDylinkMetadata(binary);\n                currentModuleWeakSymbols = metadata.weakImports;\n\n                function loadModule() {\n                    var firstLoad = !handle || !HEAP8[handle + 8 >>> 0];\n                    if (firstLoad) {\n                        var memAlign = Math.pow(2, metadata.memoryAlign);\n                        var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;\n                        var tableBase = metadata.tableSize ? wasmTable.length : 0;\n                        if (handle) {\n                            HEAP8[handle + 8 >>> 0] = 1;\n                            HEAPU32[handle + 12 >>> 2 >>> 0] = memoryBase;\n                            HEAP32[handle + 16 >>> 2 >>> 0] = metadata.memorySize;\n                            HEAPU32[handle + 20 >>> 2 >>> 0] = tableBase;\n                            HEAP32[handle + 24 >>> 2 >>> 0] = metadata.tableSize\n                        }\n                    } else {\n                        memoryBase = HEAPU32[handle + 12 >>> 2 >>> 0];\n                        tableBase = HEAPU32[handle + 20 >>> 2 >>> 0]\n                    }\n                    var tableGrowthNeeded = tableBase + metadata.tableSize - wasmTable.length;\n                    if (tableGrowthNeeded > 0) {\n                        wasmTable.grow(tableGrowthNeeded)\n                    }\n                    var moduleExports;\n\n                    function resolveSymbol(sym) {\n                        var resolved = resolveGlobalSymbol(sym).sym;\n                        if (!resolved && localScope) {\n                            resolved = localScope[sym]\n                        }\n                        if (!resolved) {\n                            resolved = moduleExports[sym]\n                        }\n                        return resolved\n                    }\n                    var proxyHandler = {\n                        get(stubs,prop) { if (prop.startsWith(\"invoke_\")) {return createDyncallWrapper(prop.substring(7));}\n                            switch (prop) {\n                                case \"__memory_base\":\n                                    return memoryBase;\n                                case \"getTempRet0\": return getTempRet0;   case \"__table_base\":\n                                    return tableBase\n                            }\n                            if (prop in wasmImports && !wasmImports[prop].stub) {\n                                return wasmImports[prop]\n                            }\n                            if (!(prop in stubs)) {\n                                var resolved;\n                                stubs[prop] = (...args) => {\n                                    resolved ||= resolveSymbol(prop);\n                                    return resolved(...args)\n                                }\n                            }\n                            return stubs[prop]\n                        }\n                    };\n                    var proxy = new Proxy({}, proxyHandler);\n                    var info = {\n                        \"GOT.mem\": new Proxy({}, GOTHandler),\n                        \"GOT.func\": new Proxy({}, GOTHandler),\n                        env: proxy,\n                        wasi_snapshot_preview1: proxy\n                    };\n\n                    function postInstantiation(module, instance) {\n                        updateTableMap(tableBase, metadata.tableSize);\n                        moduleExports = relocateExports(instance.exports, memoryBase);\n                        if (!flags.allowUndefined) {\n                            reportUndefinedSymbols()\n                        }\n\n                        function addEmAsm(addr, body) {\n                            var args = [];\n                            var arity = 0;\n                            for (; arity < 16; arity++) {\n                                if (body.indexOf(\"$\" + arity) != -1) {\n                                    args.push(\"$\" + arity)\n                                } else {\n                                    break\n                                }\n                            }\n                            args = args.join(\",\");\n                            var func = `(${args}) => { ${body} };`;\n                            ASM_CONSTS[start] = eval(func)\n                        }\n                        if (\"__start_em_asm\" in moduleExports) {\n                            var start = moduleExports[\"__start_em_asm\"];\n                            var stop = moduleExports[\"__stop_em_asm\"];\n                            while (start < stop) {\n                                var jsString = UTF8ToString(start);\n                                addEmAsm(start, jsString);\n                                start = HEAPU8.indexOf(0, start) + 1\n                            }\n                        }\n\n                        function addEmJs(name, cSig, body) {\n                            var jsArgs = [];\n                            cSig = cSig.slice(1, -1);\n                            if (cSig != \"void\") {\n                                cSig = cSig.split(\",\");\n                                for (var i in cSig) {\n                                    var jsArg = cSig[i].split(\" \").pop();\n                                    jsArgs.push(jsArg.replace(\"*\", \"\"))\n                                }\n                            }\n                            var func = `(${jsArgs}) => ${body};`;\n                            moduleExports[name] = eval(func)\n                        }\n                        for (var name in moduleExports) {\n                            if (name.startsWith(\"__em_js__\")) {\n                                var start = moduleExports[name];\n                                var jsString = UTF8ToString(start);\n                                var parts = jsString.split(\"<::>\");\n                                addEmJs(name.replace(\"__em_js__\", \"\"), parts[0], parts[1]);\n                                delete moduleExports[name]\n                            }\n                        }\n                        var applyRelocs = moduleExports[\"__wasm_apply_data_relocs\"];\n                        if (applyRelocs) {\n                            if (runtimeInitialized) {\n                                applyRelocs()\n                            } else {\n                                __RELOC_FUNCS__.push(applyRelocs)\n                            }\n                        }\n                        var init = moduleExports[\"__wasm_call_ctors\"];\n                        if (init) {\n                            if (runtimeInitialized) {\n                                init()\n                            } else {\n                                __ATINIT__.push(init)\n                            }\n                        }\n                        return moduleExports\n                    }\n                    if (flags.loadAsync) {\n                        if (binary instanceof WebAssembly.Module) {\n                            var instance = new WebAssembly.Instance(binary, info);\n                            return Promise.resolve(postInstantiation(binary, instance))\n                        }\n                        return WebAssembly.instantiate(binary, info).then(result => postInstantiation(result.module, result.instance))\n                    }\n                    var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);\n                    var instance = new WebAssembly.Instance(module, info);\n                    return postInstantiation(module, instance)\n                }\n                if (flags.loadAsync) {\n                    return metadata.neededDynlibs.reduce((chain, dynNeeded) => chain.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule)\n                }\n                metadata.neededDynlibs.forEach(needed => loadDynamicLibrary(needed, flags, localScope));\n                return loadModule()\n            };\n            var mergeLibSymbols = (exports, libName) => {\n                registerDynCallSymbols(exports);\n                for (var [sym, exp] of Object.entries(exports)) {\n                    const setImport = target => {\n                        if (!isSymbolDefined(target)) {\n                            wasmImports[target] = exp\n                        }\n                    };\n                    setImport(sym)\n                }\n            };\n            var asyncLoad = (url, onload, onerror, noRunDep) => {\n                var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : \"\";\n                readAsync(url).then(arrayBuffer => {\n                    onload(new Uint8Array(arrayBuffer));\n                    if (dep) removeRunDependency(dep)\n                }, err => {\n                    if (onerror) {\n                        onerror()\n                    } else {\n                        throw `Loading data file \"${url}\" failed.`\n                    }\n                });\n                if (dep) addRunDependency(dep)\n            };\n            var preloadPlugins = Module[\"preloadPlugins\"] || [];\n            var registerWasmPlugin = () => {\n                var wasmPlugin = {\n                    promiseChainEnd: Promise.resolve(),\n                    canHandle: name => !Module[\"noWasmDecoding\"] && name.endsWith(\".so\"),\n                    handle: (byteArray, name, onload, onerror) => {\n                        wasmPlugin[\"promiseChainEnd\"] = wasmPlugin[\"promiseChainEnd\"].then(() => loadWebAssemblyModule(byteArray, {\n                            loadAsync: true,\n                            nodelete: true\n                        }, name, {})).then(exports => {\n                            preloadedWasm[name] = exports;\n                            onload(byteArray)\n                        }, error => {\n                            err(`failed to instantiate wasm: ${name}: ${error}`);\n                            onerror()\n                        })\n                    }\n                };\n                preloadPlugins.push(wasmPlugin)\n            };\n            var preloadedWasm = {};\n            var registerDynCallSymbols = exports => {\n                for (var [sym, exp] of Object.entries(exports)) {\n                    if (sym.startsWith(\"dynCall_\") && !Module.hasOwnProperty(sym)) {\n                        Module[sym] = exp\n                    }\n                }\n            };\n\n            function loadDynamicLibrary(libName, flags = {\n                global: true,\n                nodelete: true\n            }, localScope, handle) {\n                var dso = LDSO.loadedLibsByName[libName];\n                if (dso) {\n                    if (!flags.global) {\n                        if (localScope) {\n                            Object.assign(localScope, dso.exports)\n                        }\n                        registerDynCallSymbols(dso.exports)\n                    } else if (!dso.global) {\n                        dso.global = true;\n                        mergeLibSymbols(dso.exports, libName)\n                    }\n                    if (flags.nodelete && dso.refcount !== Infinity) {\n                        dso.refcount = Infinity\n                    }\n                    dso.refcount++;\n                    if (handle) {\n                        LDSO.loadedLibsByHandle[handle] = dso\n                    }\n                    return flags.loadAsync ? Promise.resolve(true) : true\n                }\n                dso = newDSO(libName, handle, \"loading\");\n                dso.refcount = flags.nodelete ? Infinity : 1;\n                dso.global = flags.global;\n\n                function loadLibData() {\n                    if (handle) {\n                        var data = HEAPU32[handle + 28 >>> 2 >>> 0];\n                        var dataSize = HEAPU32[handle + 32 >>> 2 >>> 0];\n                        if (data && dataSize) {\n                            var libData = HEAP8.slice(data, data + dataSize);\n                            return flags.loadAsync ? Promise.resolve(libData) : libData\n                        }\n                    }\n                    var libFile = locateFile(libName);\n                    if (flags.loadAsync) {\n                        return new Promise((resolve, reject) => asyncLoad(libFile, resolve, reject))\n                    }\n                    if (!readBinary) {\n                        throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`)\n                    }\n                    return readBinary(libFile)\n                }\n\n                function getExports() {\n                    var preloaded = preloadedWasm[libName];\n                    if (preloaded) {\n                        return flags.loadAsync ? Promise.resolve(preloaded) : preloaded\n                    }\n                    if (flags.loadAsync) {\n                        return loadLibData().then(libData => loadWebAssemblyModule(libData, flags, libName, localScope, handle))\n                    }\n                    return loadWebAssemblyModule(loadLibData(), flags, libName, localScope, handle)\n                }\n\n                function moduleLoaded(exports) {\n                    if (dso.global) {\n                        mergeLibSymbols(exports, libName)\n                    } else if (localScope) {\n                        Object.assign(localScope, exports);\n                        registerDynCallSymbols(exports)\n                    }\n                    dso.exports = exports\n                }\n                if (flags.loadAsync) {\n                    return getExports().then(exports => {\n                        moduleLoaded(exports);\n                        return true\n                    })\n                }\n                moduleLoaded(getExports());\n                return true\n            }\n            var reportUndefinedSymbols = () => {\n                for (var [symName, entry] of Object.entries(GOT)) {\n                    if (entry.value == 0) {\n                        var value = resolveGlobalSymbol(symName, true).sym;\n                        if (!value && !entry.required) {\n                            continue\n                        }\n                        if (typeof value == \"function\") {\n                            entry.value = addFunction(value, value.sig)\n                        } else if (typeof value == \"number\") {\n                            entry.value = value\n                        } else {\n                            throw new Error(`bad export type for '${symName}': ${typeof value}`)\n                        }\n                    }\n                }\n            };\n            var loadDylibs = () => {\n                if (!dynamicLibraries.length) {\n                    reportUndefinedSymbols();\n                    return\n                }\n                addRunDependency(\"loadDylibs\");\n                dynamicLibraries.reduce((chain, lib) => chain.then(() => loadDynamicLibrary(lib, {\n                    loadAsync: true,\n                    global: true,\n                    nodelete: true,\n                    allowUndefined: true\n                })), Promise.resolve()).then(() => {\n                    reportUndefinedSymbols();\n                    removeRunDependency(\"loadDylibs\")\n                })\n            };\n            var noExitRuntime = Module[\"noExitRuntime\"] || true;\n\n            function setValue(ptr, value, type = \"i8\") {\n                if (type.endsWith(\"*\")) type = \"*\";\n                switch (type) {\n                    case \"i1\":\n                        HEAP8[ptr >>> 0] = value;\n                        break;\n                    case \"i8\":\n                        HEAP8[ptr >>> 0] = value;\n                        break;\n                    case \"i16\":\n                        HEAP16[ptr >>> 1 >>> 0] = value;\n                        break;\n                    case \"i32\":\n                        HEAP32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    case \"i64\":\n                        abort(\"to do setValue(i64) use WASM_BIGINT\");\n                    case \"float\":\n                        HEAPF32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    case \"double\":\n                        HEAPF64[ptr >>> 3 >>> 0] = value;\n                        break;\n                    case \"*\":\n                        HEAPU32[ptr >>> 2 >>> 0] = value;\n                        break;\n                    default:\n                        abort(`invalid type for setValue: ${type}`)\n                }\n            }\n            var convertI32PairToI53Checked = (lo, hi) => hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN;\n\n            function ___assert_fail(condition, filename, line, func) {\n                condition >>>= 0;\n                filename >>>= 0;\n                func >>>= 0;\n                abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : \"unknown filename\", line, func ? UTF8ToString(func) : \"unknown function\"])\n            }\n            ___assert_fail.sig = \"vppip\";\n            var ___c_longjmp = new WebAssembly.Tag({\n                parameters: [\"i32\"]\n            });\n\n            function ___call_sighandler(fp, sig) {\n                fp >>>= 0;\n                return getWasmTableEntry(fp)(sig)\n            }\n            ___call_sighandler.sig = \"vpi\";\n            var ___cpp_exception = new WebAssembly.Tag({\n                parameters: [\"i32\"]\n            });\n            var ___memory_base = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: false\n            }, 1024);\n            var ___stack_high = 3660288;\n            var ___stack_low = 2611712;\n            var ___stack_pointer = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: true\n            }, 3660288);\n            var PATH = {\n                isAbs: path => path.charAt(0) === \"/\",\n                splitPath: filename => {\n                    var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n                    return splitPathRe.exec(filename).slice(1)\n                },\n                normalizeArray: (parts, allowAboveRoot) => {\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                    if (allowAboveRoot) {\n                        for (; up; up--) {\n                            parts.unshift(\"..\")\n                        }\n                    }\n                    return parts\n                },\n                normalize: path => {\n                    var isAbsolute = PATH.isAbs(path),\n                        trailingSlash = path.substr(-1) === \"/\";\n                    path = PATH.normalizeArray(path.split(\"/\").filter(p => !!p), !isAbsolute).join(\"/\");\n                    if (!path && !isAbsolute) {\n                        path = \".\"\n                    }\n                    if (path && trailingSlash) {\n                        path += \"/\"\n                    }\n                    return (isAbsolute ? \"/\" : \"\") + path\n                },\n                dirname: path => {\n                    var result = PATH.splitPath(path),\n                        root = result[0],\n                        dir = result[1];\n                    if (!root && !dir) {\n                        return \".\"\n                    }\n                    if (dir) {\n                        dir = dir.substr(0, dir.length - 1)\n                    }\n                    return root + dir\n                },\n                basename: path => {\n                    if (path === \"/\") return \"/\";\n                    path = PATH.normalize(path);\n                    path = path.replace(/\\/$/, \"\");\n                    var lastSlash = path.lastIndexOf(\"/\");\n                    if (lastSlash === -1) return path;\n                    return path.substr(lastSlash + 1)\n                },\n                join: (...paths) => PATH.normalize(paths.join(\"/\")),\n                join2: (l, r) => PATH.normalize(l + \"/\" + r)\n            };\n            var initRandomFill = () => {\n                if (typeof crypto == \"object\" && typeof crypto[\"getRandomValues\"] == \"function\") {\n                    return view => crypto.getRandomValues(view)\n                } else if (ENVIRONMENT_IS_NODE) {\n                    try {\n                        var crypto_module = require(\"crypto\");\n                        var randomFillSync = crypto_module[\"randomFillSync\"];\n                        if (randomFillSync) {\n                            return view => crypto_module[\"randomFillSync\"](view)\n                        }\n                        var randomBytes = crypto_module[\"randomBytes\"];\n                        return view => (view.set(randomBytes(view.byteLength)), view)\n                    } catch (e) {}\n                }\n                abort(\"initRandomDevice\")\n            };\n            var randomFill = view => (randomFill = initRandomFill())(view);\n            var PATH_FS = {\n                resolve: (...args) => {\n                    var resolvedPath = \"\",\n                        resolvedAbsolute = false;\n                    for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n                        var path = i >= 0 ? args[i] : FS.cwd();\n                        if (typeof path != \"string\") {\n                            throw new TypeError(\"Arguments to path.resolve must be strings\")\n                        } else if (!path) {\n                            return \"\"\n                        }\n                        resolvedPath = path + \"/\" + resolvedPath;\n                        resolvedAbsolute = PATH.isAbs(path)\n                    }\n                    resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(p => !!p), !resolvedAbsolute).join(\"/\");\n                    return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\"\n                },\n                relative: (from, to) => {\n                    from = PATH_FS.resolve(from).substr(1);\n                    to = PATH_FS.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                        var end = arr.length - 1;\n                        for (; end >= 0; end--) {\n                            if (arr[end] !== \"\") break\n                        }\n                        if (start > end) return [];\n                        return arr.slice(start, end - start + 1)\n                    }\n                    var fromParts = trim(from.split(\"/\"));\n                    var toParts = trim(to.split(\"/\"));\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                    var outputParts = [];\n                    for (var i = samePartsLength; i < fromParts.length; i++) {\n                        outputParts.push(\"..\")\n                    }\n                    outputParts = outputParts.concat(toParts.slice(samePartsLength));\n                    return outputParts.join(\"/\")\n                }\n            };\n            var FS_stdin_getChar_buffer = [];\n            var lengthBytesUTF8 = str => {\n                var len = 0;\n                for (var i = 0; i < str.length; ++i) {\n                    var c = str.charCodeAt(i);\n                    if (c <= 127) {\n                        len++\n                    } else if (c <= 2047) {\n                        len += 2\n                    } else if (c >= 55296 && c <= 57343) {\n                        len += 4;\n                        ++i\n                    } else {\n                        len += 3\n                    }\n                }\n                return len\n            };\n            Module[\"lengthBytesUTF8\"] = lengthBytesUTF8;\n            var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n                outIdx >>>= 0;\n                if (!(maxBytesToWrite > 0)) return 0;\n                var startIdx = outIdx;\n                var endIdx = outIdx + maxBytesToWrite - 1;\n                for (var i = 0; i < str.length; ++i) {\n                    var u = str.charCodeAt(i);\n                    if (u >= 55296 && u <= 57343) {\n                        var u1 = str.charCodeAt(++i);\n                        u = 65536 + ((u & 1023) << 10) | u1 & 1023\n                    }\n                    if (u <= 127) {\n                        if (outIdx >= endIdx) break;\n                        heap[outIdx++ >>> 0] = u\n                    } else if (u <= 2047) {\n                        if (outIdx + 1 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 192 | u >> 6;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    } else if (u <= 65535) {\n                        if (outIdx + 2 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 224 | u >> 12;\n                        heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    } else {\n                        if (outIdx + 3 >= endIdx) break;\n                        heap[outIdx++ >>> 0] = 240 | u >> 18;\n                        heap[outIdx++ >>> 0] = 128 | u >> 12 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u >> 6 & 63;\n                        heap[outIdx++ >>> 0] = 128 | u & 63\n                    }\n                }\n                heap[outIdx >>> 0] = 0;\n                return outIdx - startIdx\n            };\n\n            function intArrayFromString(stringy, dontAddNull, length) {\n                var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n                var u8array = new Array(len);\n                var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n                if (dontAddNull) u8array.length = numBytesWritten;\n                return u8array\n            }\n            var FS_stdin_getChar = () => {\n                if (!FS_stdin_getChar_buffer.length) {\n                    var result = null;\n                    if (ENVIRONMENT_IS_NODE) {\n                        var BUFSIZE = 256;\n                        var buf = Buffer.alloc(BUFSIZE);\n                        var bytesRead = 0;\n                        var fd = process.stdin.fd;\n                        try {\n                            bytesRead = fs.readSync(fd, buf, 0, BUFSIZE)\n                        } catch (e) {\n                            if (e.toString().includes(\"EOF\")) bytesRead = 0;\n                            else throw e\n                        }\n                        if (bytesRead > 0) {\n                            result = buf.slice(0, bytesRead).toString(\"utf-8\")\n                        }\n                    } else if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n                        result = window.prompt(\"Input: \");\n                        if (result !== null) {\n                            result += \"\\n\"\n                        }\n                    } else {}\n                    if (!result) {\n                        return null\n                    }\n                    FS_stdin_getChar_buffer = intArrayFromString(result, true)\n                }\n                return FS_stdin_getChar_buffer.shift()\n            };\n            var TTY = {\n                ttys: [],\n                init() {},\n                shutdown() {},\n                register(dev, ops) {\n                    TTY.ttys[dev] = {\n                        input: [],\n                        output: [],\n                        ops\n                    };\n                    FS.registerDevice(dev, TTY.stream_ops)\n                },\n                stream_ops: {\n                    open(stream) {\n                        var tty = TTY.ttys[stream.node.rdev];\n                        if (!tty) {\n                            throw new FS.ErrnoError(43)\n                        }\n                        stream.tty = tty;\n                        stream.seekable = false\n                    },\n                    close(stream) {\n                        stream.tty.ops.fsync(stream.tty)\n                    },\n                    fsync(stream) {\n                        stream.tty.ops.fsync(stream.tty)\n                    },\n                    read(stream, buffer, offset, length, pos) {\n                        if (!stream.tty || !stream.tty.ops.get_char) {\n                            throw new FS.ErrnoError(60)\n                        }\n                        var bytesRead = 0;\n                        for (var i = 0; i < length; i++) {\n                            var result;\n                            try {\n                                result = stream.tty.ops.get_char(stream.tty)\n                            } catch (e) {\n                                throw new FS.ErrnoError(29)\n                            }\n                            if (result === undefined && bytesRead === 0) {\n                                throw new FS.ErrnoError(6)\n                            }\n                            if (result === null || result === undefined) break;\n                            bytesRead++;\n                            buffer[offset + i] = result\n                        }\n                        if (bytesRead) {\n                            stream.node.timestamp = Date.now()\n                        }\n                        return bytesRead\n                    },\n                    write(stream, buffer, offset, length, pos) {\n                        if (!stream.tty || !stream.tty.ops.put_char) {\n                            throw new FS.ErrnoError(60)\n                        }\n                        try {\n                            for (var i = 0; i < length; i++) {\n                                stream.tty.ops.put_char(stream.tty, buffer[offset + i])\n                            }\n                        } catch (e) {\n                            throw new FS.ErrnoError(29)\n                        }\n                        if (length) {\n                            stream.node.timestamp = Date.now()\n                        }\n                        return i\n                    }\n                },\n                default_tty_ops: {\n                    get_char(tty) {\n                        return FS_stdin_getChar()\n                    },\n                    put_char(tty, val) {\n                        if (val === null || val === 10) {\n                            out(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        } else {\n                            if (val != 0) tty.output.push(val)\n                        }\n                    },\n                    fsync(tty) {\n                        if (tty.output && tty.output.length > 0) {\n                            out(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        }\n                    },\n                    ioctl_tcgets(tty) {\n                        return {\n                            c_iflag: 25856,\n                            c_oflag: 5,\n                            c_cflag: 191,\n                            c_lflag: 35387,\n                            c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n                        }\n                    },\n                    ioctl_tcsets(tty, optional_actions, data) {\n                        return 0\n                    },\n                    ioctl_tiocgwinsz(tty) {\n                        return [24, 80]\n                    }\n                },\n                default_tty1_ops: {\n                    put_char(tty, val) {\n                        if (val === null || val === 10) {\n                            err(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        } else {\n                            if (val != 0) tty.output.push(val)\n                        }\n                    },\n                    fsync(tty) {\n                        if (tty.output && tty.output.length > 0) {\n                            err(UTF8ArrayToString(tty.output));\n                            tty.output = []\n                        }\n                    }\n                }\n            };\n            var zeroMemory = (address, size) => {\n                HEAPU8.fill(0, address, address + size)\n            };\n            var mmapAlloc = size => {\n                size = alignMemory(size, 65536);\n                var ptr = _emscripten_builtin_memalign(65536, size);\n                if (ptr) zeroMemory(ptr, size);\n                return ptr\n            };\n            var MEMFS = {\n                ops_table: null,\n                mount(mount) {\n                    return MEMFS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createNode(parent, name, mode, dev) {\n                    if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    MEMFS.ops_table ||= {\n                        dir: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr,\n                                lookup: MEMFS.node_ops.lookup,\n                                mknod: MEMFS.node_ops.mknod,\n                                rename: MEMFS.node_ops.rename,\n                                unlink: MEMFS.node_ops.unlink,\n                                rmdir: MEMFS.node_ops.rmdir,\n                                readdir: MEMFS.node_ops.readdir,\n                                symlink: MEMFS.node_ops.symlink\n                            },\n                            stream: {\n                                llseek: MEMFS.stream_ops.llseek\n                            }\n                        },\n                        file: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr\n                            },\n                            stream: {\n                                llseek: MEMFS.stream_ops.llseek,\n                                read: MEMFS.stream_ops.read,\n                                write: MEMFS.stream_ops.write,\n                                allocate: MEMFS.stream_ops.allocate,\n                                mmap: MEMFS.stream_ops.mmap,\n                                msync: MEMFS.stream_ops.msync\n                            }\n                        },\n                        link: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr,\n                                readlink: MEMFS.node_ops.readlink\n                            },\n                            stream: {}\n                        },\n                        chrdev: {\n                            node: {\n                                getattr: MEMFS.node_ops.getattr,\n                                setattr: MEMFS.node_ops.setattr\n                            },\n                            stream: FS.chrdev_stream_ops\n                        }\n                    };\n                    var node = FS.createNode(parent, name, mode, dev);\n                    if (FS.isDir(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.dir.node;\n                        node.stream_ops = MEMFS.ops_table.dir.stream;\n                        node.contents = {}\n                    } else if (FS.isFile(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.file.node;\n                        node.stream_ops = MEMFS.ops_table.file.stream;\n                        node.usedBytes = 0;\n                        node.contents = null\n                    } else if (FS.isLink(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.link.node;\n                        node.stream_ops = MEMFS.ops_table.link.stream\n                    } else if (FS.isChrdev(node.mode)) {\n                        node.node_ops = MEMFS.ops_table.chrdev.node;\n                        node.stream_ops = MEMFS.ops_table.chrdev.stream\n                    }\n                    node.timestamp = Date.now();\n                    if (parent) {\n                        parent.contents[name] = node;\n                        parent.timestamp = node.timestamp\n                    }\n                    return node\n                },\n                getFileDataAsTypedArray(node) {\n                    if (!node.contents) return new Uint8Array(0);\n                    if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n                    return new Uint8Array(node.contents)\n                },\n                expandFileStorage(node, newCapacity) {\n                    var prevCapacity = node.contents ? node.contents.length : 0;\n                    if (prevCapacity >= newCapacity) return;\n                    var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n                    newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n                    if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n                    var oldContents = node.contents;\n                    node.contents = new Uint8Array(newCapacity);\n                    if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0)\n                },\n                resizeFileStorage(node, newSize) {\n                    if (node.usedBytes == newSize) return;\n                    if (newSize == 0) {\n                        node.contents = null;\n                        node.usedBytes = 0\n                    } else {\n                        var oldContents = node.contents;\n                        node.contents = new Uint8Array(newSize);\n                        if (oldContents) {\n                            node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))\n                        }\n                        node.usedBytes = newSize\n                    }\n                },\n                node_ops: {\n                    getattr(node) {\n                        var attr = {};\n                        attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n                        attr.ino = node.id;\n                        attr.mode = node.mode;\n                        attr.nlink = 1;\n                        attr.uid = 0;\n                        attr.gid = 0;\n                        attr.rdev = node.rdev;\n                        if (FS.isDir(node.mode)) {\n                            attr.size = 4096\n                        } else if (FS.isFile(node.mode)) {\n                            attr.size = node.usedBytes\n                        } else if (FS.isLink(node.mode)) {\n                            attr.size = node.link.length\n                        } else {\n                            attr.size = 0\n                        }\n                        attr.atime = new Date(node.timestamp);\n                        attr.mtime = new Date(node.timestamp);\n                        attr.ctime = new Date(node.timestamp);\n                        attr.blksize = 4096;\n                        attr.blocks = Math.ceil(attr.size / attr.blksize);\n                        return attr\n                    },\n                    setattr(node, attr) {\n                        if (attr.mode !== undefined) {\n                            node.mode = attr.mode\n                        }\n                        if (attr.timestamp !== undefined) {\n                            node.timestamp = attr.timestamp\n                        }\n                        if (attr.size !== undefined) {\n                            MEMFS.resizeFileStorage(node, attr.size)\n                        }\n                    },\n                    lookup(parent, name) {\n                        throw FS.genericErrors[44]\n                    },\n                    mknod(parent, name, mode, dev) {\n                        return MEMFS.createNode(parent, name, mode, dev)\n                    },\n                    rename(old_node, new_dir, new_name) {\n                        if (FS.isDir(old_node.mode)) {\n                            var new_node;\n                            try {\n                                new_node = FS.lookupNode(new_dir, new_name)\n                            } catch (e) {}\n                            if (new_node) {\n                                for (var i in new_node.contents) {\n                                    throw new FS.ErrnoError(55)\n                                }\n                            }\n                        }\n                        delete old_node.parent.contents[old_node.name];\n                        old_node.parent.timestamp = Date.now();\n                        old_node.name = new_name;\n                        new_dir.contents[new_name] = old_node;\n                        new_dir.timestamp = old_node.parent.timestamp\n                    },\n                    unlink(parent, name) {\n                        delete parent.contents[name];\n                        parent.timestamp = Date.now()\n                    },\n                    rmdir(parent, name) {\n                        var node = FS.lookupNode(parent, name);\n                        for (var i in node.contents) {\n                            throw new FS.ErrnoError(55)\n                        }\n                        delete parent.contents[name];\n                        parent.timestamp = Date.now()\n                    },\n                    readdir(node) {\n                        var entries = [\".\", \"..\"];\n                        for (var key of Object.keys(node.contents)) {\n                            entries.push(key)\n                        }\n                        return entries\n                    },\n                    symlink(parent, newname, oldpath) {\n                        var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n                        node.link = oldpath;\n                        return node\n                    },\n                    readlink(node) {\n                        if (!FS.isLink(node.mode)) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        return node.link\n                    }\n                },\n                stream_ops: {\n                    read(stream, buffer, offset, length, position) {\n                        var contents = stream.node.contents;\n                        if (position >= stream.node.usedBytes) return 0;\n                        var size = Math.min(stream.node.usedBytes - position, length);\n                        if (size > 8 && contents.subarray) {\n                            buffer.set(contents.subarray(position, position + size), offset)\n                        } else {\n                            for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]\n                        }\n                        return size\n                    },\n                    write(stream, buffer, offset, length, position, canOwn) {\n                        if (buffer.buffer === HEAP8.buffer) {\n                            canOwn = false\n                        }\n                        if (!length) return 0;\n                        var node = stream.node;\n                        node.timestamp = Date.now();\n                        if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n                            if (canOwn) {\n                                node.contents = buffer.subarray(offset, offset + length);\n                                node.usedBytes = length;\n                                return length\n                            } else if (node.usedBytes === 0 && position === 0) {\n                                node.contents = buffer.slice(offset, offset + length);\n                                node.usedBytes = length;\n                                return length\n                            } else if (position + length <= node.usedBytes) {\n                                node.contents.set(buffer.subarray(offset, offset + length), position);\n                                return length\n                            }\n                        }\n                        MEMFS.expandFileStorage(node, position + length);\n                        if (node.contents.subarray && buffer.subarray) {\n                            node.contents.set(buffer.subarray(offset, offset + length), position)\n                        } else {\n                            for (var i = 0; i < length; i++) {\n                                node.contents[position + i] = buffer[offset + i]\n                            }\n                        }\n                        node.usedBytes = Math.max(node.usedBytes, position + length);\n                        return length\n                    },\n                    llseek(stream, offset, whence) {\n                        var position = offset;\n                        if (whence === 1) {\n                            position += stream.position\n                        } else if (whence === 2) {\n                            if (FS.isFile(stream.node.mode)) {\n                                position += stream.node.usedBytes\n                            }\n                        }\n                        if (position < 0) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        return position\n                    },\n                    allocate(stream, offset, length) {\n                        MEMFS.expandFileStorage(stream.node, offset + length);\n                        stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)\n                    },\n                    mmap(stream, length, position, prot, flags) {\n                        if (!FS.isFile(stream.node.mode)) {\n                            throw new FS.ErrnoError(43)\n                        }\n                        var ptr;\n                        var allocated;\n                        var contents = stream.node.contents;\n                        if (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {\n                            allocated = false;\n                            ptr = contents.byteOffset\n                        } else {\n                            allocated = true;\n                            ptr = mmapAlloc(length);\n                            if (!ptr) {\n                                throw new FS.ErrnoError(48)\n                            }\n                            if (contents) {\n                                if (position > 0 || position + length < contents.length) {\n                                    if (contents.subarray) {\n                                        contents = contents.subarray(position, position + length)\n                                    } else {\n                                        contents = Array.prototype.slice.call(contents, position, position + length)\n                                    }\n                                }\n                                HEAP8.set(contents, ptr >>> 0)\n                            }\n                        }\n                        return {\n                            ptr,\n                            allocated\n                        }\n                    },\n                    msync(stream, buffer, offset, length, mmapFlags) {\n                        MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n                        return 0\n                    }\n                }\n            };\n            var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {\n                FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn)\n            };\n            var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {\n                if (typeof Browser != \"undefined\") Browser.init();\n                var handled = false;\n                preloadPlugins.forEach(plugin => {\n                    if (handled) return;\n                    if (plugin[\"canHandle\"](fullname)) {\n                        plugin[\"handle\"](byteArray, fullname, finish, onerror);\n                        handled = true\n                    }\n                });\n                return handled\n            };\n            var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n                var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n                var dep = getUniqueRunDependency(`cp ${fullname}`);\n\n                function processData(byteArray) {\n                    function finish(byteArray) {\n                        preFinish?.();\n                        if (!dontCreateFile) {\n                            FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)\n                        }\n                        onload?.();\n                        removeRunDependency(dep)\n                    }\n                    if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {\n                            onerror?.();\n                            removeRunDependency(dep)\n                        })) {\n                        return\n                    }\n                    finish(byteArray)\n                }\n                addRunDependency(dep);\n                if (typeof url == \"string\") {\n                    asyncLoad(url, processData, onerror)\n                } else {\n                    processData(url)\n                }\n            };\n            var FS_modeStringToFlags = str => {\n                var flagModes = {\n                    r: 0,\n                    \"r+\": 2,\n                    w: 512 | 64 | 1,\n                    \"w+\": 512 | 64 | 2,\n                    a: 1024 | 64 | 1,\n                    \"a+\": 1024 | 64 | 2\n                };\n                var flags = flagModes[str];\n                if (typeof flags == \"undefined\") {\n                    throw new Error(`Unknown file open mode: ${str}`)\n                }\n                return flags\n            };\n            var FS_getMode = (canRead, canWrite) => {\n                var mode = 0;\n                if (canRead) mode |= 292 | 73;\n                if (canWrite) mode |= 146;\n                return mode\n            };\n            var FS = {\n                root: null,\n                mounts: [],\n                devices: {},\n                streams: [],\n                nextInode: 1,\n                nameTable: null,\n                currentPath: \"/\",\n                initialized: false,\n                ignorePermissions: true,\n                ErrnoError: class {\n                    name = \"ErrnoError\";\n                    constructor(errno) {\n                        this.errno = errno\n                    }\n                },\n                genericErrors: {},\n                filesystems: null,\n                syncFSRequests: 0,\n                readFiles: {},\n                FSStream: class {\n                    shared = {};\n                    get object() {\n                        return this.node\n                    }\n                    set object(val) {\n                        this.node = val\n                    }\n                    get isRead() {\n                        return (this.flags & 2097155) !== 1\n                    }\n                    get isWrite() {\n                        return (this.flags & 2097155) !== 0\n                    }\n                    get isAppend() {\n                        return this.flags & 1024\n                    }\n                    get flags() {\n                        return this.shared.flags\n                    }\n                    set flags(val) {\n                        this.shared.flags = val\n                    }\n                    get position() {\n                        return this.shared.position\n                    }\n                    set position(val) {\n                        this.shared.position = val\n                    }\n                },\n                FSNode: class {\n                    node_ops = {};\n                    stream_ops = {};\n                    readMode = 292 | 73;\n                    writeMode = 146;\n                    mounted = null;\n                    constructor(parent, name, mode, rdev) {\n                        if (!parent) {\n                            parent = this\n                        }\n                        this.parent = parent;\n                        this.mount = parent.mount;\n                        this.id = FS.nextInode++;\n                        this.name = name;\n                        this.mode = mode;\n                        this.rdev = rdev\n                    }\n                    get read() {\n                        return (this.mode & this.readMode) === this.readMode\n                    }\n                    set read(val) {\n                        val ? this.mode |= this.readMode : this.mode &= ~this.readMode\n                    }\n                    get write() {\n                        return (this.mode & this.writeMode) === this.writeMode\n                    }\n                    set write(val) {\n                        val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode\n                    }\n                    get isFolder() {\n                        return FS.isDir(this.mode)\n                    }\n                    get isDevice() {\n                        return FS.isChrdev(this.mode)\n                    }\n                },\n                lookupPath(path, opts = {}) {\n                    path = PATH_FS.resolve(path);\n                    if (!path) return {\n                        path: \"\",\n                        node: null\n                    };\n                    var defaults = {\n                        follow_mount: true,\n                        recurse_count: 0\n                    };\n                    opts = Object.assign(defaults, opts);\n                    if (opts.recurse_count > 8) {\n                        throw new FS.ErrnoError(32)\n                    }\n                    var parts = path.split(\"/\").filter(p => !!p);\n                    var current = FS.root;\n                    var current_path = \"/\";\n                    for (var i = 0; i < parts.length; i++) {\n                        var islast = i === parts.length - 1;\n                        if (islast && opts.parent) {\n                            break\n                        }\n                        current = FS.lookupNode(current, parts[i]);\n                        current_path = PATH.join2(current_path, parts[i]);\n                        if (FS.isMountpoint(current)) {\n                            if (!islast || islast && opts.follow_mount) {\n                                current = current.mounted.root\n                            }\n                        }\n                        if (!islast || opts.follow) {\n                            var count = 0;\n                            while (FS.isLink(current.mode)) {\n                                var link = FS.readlink(current_path);\n                                current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n                                var lookup = FS.lookupPath(current_path, {\n                                    recurse_count: opts.recurse_count + 1\n                                });\n                                current = lookup.node;\n                                if (count++ > 40) {\n                                    throw new FS.ErrnoError(32)\n                                }\n                            }\n                        }\n                    }\n                    return {\n                        path: current_path,\n                        node: current\n                    }\n                },\n                getPath(node) {\n                    var path;\n                    while (true) {\n                        if (FS.isRoot(node)) {\n                            var mount = node.mount.mountpoint;\n                            if (!path) return mount;\n                            return mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path\n                        }\n                        path = path ? `${node.name}/${path}` : node.name;\n                        node = node.parent\n                    }\n                },\n                hashName(parentid, name) {\n                    var hash = 0;\n                    for (var i = 0; i < name.length; i++) {\n                        hash = (hash << 5) - hash + name.charCodeAt(i) | 0\n                    }\n                    return (parentid + hash >>> 0) % FS.nameTable.length\n                },\n                hashAddNode(node) {\n                    var hash = FS.hashName(node.parent.id, node.name);\n                    node.name_next = FS.nameTable[hash];\n                    FS.nameTable[hash] = node\n                },\n                hashRemoveNode(node) {\n                    var hash = FS.hashName(node.parent.id, node.name);\n                    if (FS.nameTable[hash] === node) {\n                        FS.nameTable[hash] = node.name_next\n                    } else {\n                        var current = FS.nameTable[hash];\n                        while (current) {\n                            if (current.name_next === node) {\n                                current.name_next = node.name_next;\n                                break\n                            }\n                            current = current.name_next\n                        }\n                    }\n                },\n                lookupNode(parent, name) {\n                    var errCode = FS.mayLookup(parent);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    var hash = FS.hashName(parent.id, name);\n                    for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n                        var nodeName = node.name;\n                        if (node.parent.id === parent.id && nodeName === name) {\n                            return node\n                        }\n                    }\n                    return FS.lookup(parent, name)\n                },\n                createNode(parent, name, mode, rdev) {\n                    var node = new FS.FSNode(parent, name, mode, rdev);\n                    FS.hashAddNode(node);\n                    return node\n                },\n                destroyNode(node) {\n                    FS.hashRemoveNode(node)\n                },\n                isRoot(node) {\n                    return node === node.parent\n                },\n                isMountpoint(node) {\n                    return !!node.mounted\n                },\n                isFile(mode) {\n                    return (mode & 61440) === 32768\n                },\n                isDir(mode) {\n                    return (mode & 61440) === 16384\n                },\n                isLink(mode) {\n                    return (mode & 61440) === 40960\n                },\n                isChrdev(mode) {\n                    return (mode & 61440) === 8192\n                },\n                isBlkdev(mode) {\n                    return (mode & 61440) === 24576\n                },\n                isFIFO(mode) {\n                    return (mode & 61440) === 4096\n                },\n                isSocket(mode) {\n                    return (mode & 49152) === 49152\n                },\n                flagsToPermissionString(flag) {\n                    var perms = [\"r\", \"w\", \"rw\"][flag & 3];\n                    if (flag & 512) {\n                        perms += \"w\"\n                    }\n                    return perms\n                },\n                nodePermissions(node, perms) {\n                    if (FS.ignorePermissions) {\n                        return 0\n                    }\n                    if (perms.includes(\"r\") && !(node.mode & 292)) {\n                        return 2\n                    } else if (perms.includes(\"w\") && !(node.mode & 146)) {\n                        return 2\n                    } else if (perms.includes(\"x\") && !(node.mode & 73)) {\n                        return 2\n                    }\n                    return 0\n                },\n                mayLookup(dir) {\n                    if (!FS.isDir(dir.mode)) return 54;\n                    var errCode = FS.nodePermissions(dir, \"x\");\n                    if (errCode) return errCode;\n                    if (!dir.node_ops.lookup) return 2;\n                    return 0\n                },\n                mayCreate(dir, name) {\n                    try {\n                        var node = FS.lookupNode(dir, name);\n                        return 20\n                    } catch (e) {}\n                    return FS.nodePermissions(dir, \"wx\")\n                },\n                mayDelete(dir, name, isdir) {\n                    var node;\n                    try {\n                        node = FS.lookupNode(dir, name)\n                    } catch (e) {\n                        return e.errno\n                    }\n                    var errCode = FS.nodePermissions(dir, \"wx\");\n                    if (errCode) {\n                        return errCode\n                    }\n                    if (isdir) {\n                        if (!FS.isDir(node.mode)) {\n                            return 54\n                        }\n                        if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n                            return 10\n                        }\n                    } else {\n                        if (FS.isDir(node.mode)) {\n                            return 31\n                        }\n                    }\n                    return 0\n                },\n                mayOpen(node, flags) {\n                    if (!node) {\n                        return 44\n                    }\n                    if (FS.isLink(node.mode)) {\n                        return 32\n                    } else if (FS.isDir(node.mode)) {\n                        if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n                            return 31\n                        }\n                    }\n                    return FS.nodePermissions(node, FS.flagsToPermissionString(flags))\n                },\n                MAX_OPEN_FDS: 4096,\n                nextfd() {\n                    for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {\n                        if (!FS.streams[fd]) {\n                            return fd\n                        }\n                    }\n                    throw new FS.ErrnoError(33)\n                },\n                getStreamChecked(fd) {\n                    var stream = FS.getStream(fd);\n                    if (!stream) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    return stream\n                },\n                getStream: fd => FS.streams[fd],\n                createStream(stream, fd = -1) {\n                    stream = Object.assign(new FS.FSStream, stream);\n                    if (fd == -1) {\n                        fd = FS.nextfd()\n                    }\n                    stream.fd = fd;\n                    FS.streams[fd] = stream;\n                    return stream\n                },\n                closeStream(fd) {\n                    FS.streams[fd] = null\n                },\n                dupStream(origStream, fd = -1) {\n                    var stream = FS.createStream(origStream, fd);\n                    stream.stream_ops?.dup?.(stream);\n                    return stream\n                },\n                chrdev_stream_ops: {\n                    open(stream) {\n                        var device = FS.getDevice(stream.node.rdev);\n                        stream.stream_ops = device.stream_ops;\n                        stream.stream_ops.open?.(stream)\n                    },\n                    llseek() {\n                        throw new FS.ErrnoError(70)\n                    }\n                },\n                major: dev => dev >> 8,\n                minor: dev => dev & 255,\n                makedev: (ma, mi) => ma << 8 | mi,\n                registerDevice(dev, ops) {\n                    FS.devices[dev] = {\n                        stream_ops: ops\n                    }\n                },\n                getDevice: dev => FS.devices[dev],\n                getMounts(mount) {\n                    var mounts = [];\n                    var check = [mount];\n                    while (check.length) {\n                        var m = check.pop();\n                        mounts.push(m);\n                        check.push(...m.mounts)\n                    }\n                    return mounts\n                },\n                syncfs(populate, callback) {\n                    if (typeof populate == \"function\") {\n                        callback = populate;\n                        populate = false\n                    }\n                    FS.syncFSRequests++;\n                    if (FS.syncFSRequests > 1) {\n                        err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)\n                    }\n                    var mounts = FS.getMounts(FS.root.mount);\n                    var completed = 0;\n\n                    function doCallback(errCode) {\n                        FS.syncFSRequests--;\n                        return callback(errCode)\n                    }\n\n                    function done(errCode) {\n                        if (errCode) {\n                            if (!done.errored) {\n                                done.errored = true;\n                                return doCallback(errCode)\n                            }\n                            return\n                        }\n                        if (++completed >= mounts.length) {\n                            doCallback(null)\n                        }\n                    }\n                    mounts.forEach(mount => {\n                        if (!mount.type.syncfs) {\n                            return done(null)\n                        }\n                        mount.type.syncfs(mount, populate, done)\n                    })\n                },\n                mount(type, opts, mountpoint) {\n                    var root = mountpoint === \"/\";\n                    var pseudo = !mountpoint;\n                    var node;\n                    if (root && FS.root) {\n                        throw new FS.ErrnoError(10)\n                    } else if (!root && !pseudo) {\n                        var lookup = FS.lookupPath(mountpoint, {\n                            follow_mount: false\n                        });\n                        mountpoint = lookup.path;\n                        node = lookup.node;\n                        if (FS.isMountpoint(node)) {\n                            throw new FS.ErrnoError(10)\n                        }\n                        if (!FS.isDir(node.mode)) {\n                            throw new FS.ErrnoError(54)\n                        }\n                    }\n                    var mount = {\n                        type,\n                        opts,\n                        mountpoint,\n                        mounts: []\n                    };\n                    var mountRoot = type.mount(mount);\n                    mountRoot.mount = mount;\n                    mount.root = mountRoot;\n                    if (root) {\n                        FS.root = mountRoot\n                    } else if (node) {\n                        node.mounted = mount;\n                        if (node.mount) {\n                            node.mount.mounts.push(mount)\n                        }\n                    }\n                    return mountRoot\n                },\n                unmount(mountpoint) {\n                    var lookup = FS.lookupPath(mountpoint, {\n                        follow_mount: false\n                    });\n                    if (!FS.isMountpoint(lookup.node)) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var node = lookup.node;\n                    var mount = node.mounted;\n                    var mounts = FS.getMounts(mount);\n                    Object.keys(FS.nameTable).forEach(hash => {\n                        var current = FS.nameTable[hash];\n                        while (current) {\n                            var next = current.name_next;\n                            if (mounts.includes(current.mount)) {\n                                FS.destroyNode(current)\n                            }\n                            current = next\n                        }\n                    });\n                    node.mounted = null;\n                    var idx = node.mount.mounts.indexOf(mount);\n                    node.mount.mounts.splice(idx, 1)\n                },\n                lookup(parent, name) {\n                    return parent.node_ops.lookup(parent, name)\n                },\n                mknod(path, mode, dev) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    var name = PATH.basename(path);\n                    if (!name || name === \".\" || name === \"..\") {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var errCode = FS.mayCreate(parent, name);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.mknod) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return parent.node_ops.mknod(parent, name, mode, dev)\n                },\n                create(path, mode) {\n                    mode = mode !== undefined ? mode : 438;\n                    mode &= 4095;\n                    mode |= 32768;\n                    return FS.mknod(path, mode, 0)\n                },\n                mkdir(path, mode) {\n                    mode = mode !== undefined ? mode : 511;\n                    mode &= 511 | 512;\n                    mode |= 16384;\n                    return FS.mknod(path, mode, 0)\n                },\n                mkdirTree(path, mode) {\n                    var dirs = path.split(\"/\");\n                    var d = \"\";\n                    for (var i = 0; i < dirs.length; ++i) {\n                        if (!dirs[i]) continue;\n                        d += \"/\" + dirs[i];\n                        try {\n                            FS.mkdir(d, mode)\n                        } catch (e) {\n                            if (e.errno != 20) throw e\n                        }\n                    }\n                },\n                mkdev(path, mode, dev) {\n                    if (typeof dev == \"undefined\") {\n                        dev = mode;\n                        mode = 438\n                    }\n                    mode |= 8192;\n                    return FS.mknod(path, mode, dev)\n                },\n                symlink(oldpath, newpath) {\n                    if (!PATH_FS.resolve(oldpath)) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var lookup = FS.lookupPath(newpath, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    if (!parent) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var newname = PATH.basename(newpath);\n                    var errCode = FS.mayCreate(parent, newname);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.symlink) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return parent.node_ops.symlink(parent, newname, oldpath)\n                },\n                rename(old_path, new_path) {\n                    var old_dirname = PATH.dirname(old_path);\n                    var new_dirname = PATH.dirname(new_path);\n                    var old_name = PATH.basename(old_path);\n                    var new_name = PATH.basename(new_path);\n                    var lookup, old_dir, new_dir;\n                    lookup = FS.lookupPath(old_path, {\n                        parent: true\n                    });\n                    old_dir = lookup.node;\n                    lookup = FS.lookupPath(new_path, {\n                        parent: true\n                    });\n                    new_dir = lookup.node;\n                    if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n                    if (old_dir.mount !== new_dir.mount) {\n                        throw new FS.ErrnoError(75)\n                    }\n                    var old_node = FS.lookupNode(old_dir, old_name);\n                    var relative = PATH_FS.relative(old_path, new_dirname);\n                    if (relative.charAt(0) !== \".\") {\n                        throw new FS.ErrnoError(28)\n                    }\n                    relative = PATH_FS.relative(new_path, old_dirname);\n                    if (relative.charAt(0) !== \".\") {\n                        throw new FS.ErrnoError(55)\n                    }\n                    var new_node;\n                    try {\n                        new_node = FS.lookupNode(new_dir, new_name)\n                    } catch (e) {}\n                    if (old_node === new_node) {\n                        return\n                    }\n                    var isdir = FS.isDir(old_node.mode);\n                    var errCode = FS.mayDelete(old_dir, old_name, isdir);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!old_dir.node_ops.rename) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    if (new_dir !== old_dir) {\n                        errCode = FS.nodePermissions(old_dir, \"w\");\n                        if (errCode) {\n                            throw new FS.ErrnoError(errCode)\n                        }\n                    }\n                    FS.hashRemoveNode(old_node);\n                    try {\n                        old_dir.node_ops.rename(old_node, new_dir, new_name);\n                        old_node.parent = new_dir\n                    } catch (e) {\n                        throw e\n                    } finally {\n                        FS.hashAddNode(old_node)\n                    }\n                },\n                rmdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    var name = PATH.basename(path);\n                    var node = FS.lookupNode(parent, name);\n                    var errCode = FS.mayDelete(parent, name, true);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.rmdir) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    parent.node_ops.rmdir(parent, name);\n                    FS.destroyNode(node)\n                },\n                readdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    if (!node.node_ops.readdir) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    return node.node_ops.readdir(node)\n                },\n                unlink(path) {\n                    var lookup = FS.lookupPath(path, {\n                        parent: true\n                    });\n                    var parent = lookup.node;\n                    if (!parent) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    var name = PATH.basename(path);\n                    var node = FS.lookupNode(parent, name);\n                    var errCode = FS.mayDelete(parent, name, false);\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    if (!parent.node_ops.unlink) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isMountpoint(node)) {\n                        throw new FS.ErrnoError(10)\n                    }\n                    parent.node_ops.unlink(parent, name);\n                    FS.destroyNode(node)\n                },\n                readlink(path) {\n                    var lookup = FS.lookupPath(path);\n                    var link = lookup.node;\n                    if (!link) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!link.node_ops.readlink) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))\n                },\n                stat(path, dontFollow) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: !dontFollow\n                    });\n                    var node = lookup.node;\n                    if (!node) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!node.node_ops.getattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    return node.node_ops.getattr(node)\n                },\n                lstat(path) {\n                    return FS.stat(path, true)\n                },\n                chmod(path, mode, dontFollow) {\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontFollow\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    node.node_ops.setattr(node, {\n                        mode: mode & 4095 | node.mode & ~4095,\n                        timestamp: Date.now()\n                    })\n                },\n                lchmod(path, mode) {\n                    FS.chmod(path, mode, true)\n                },\n                fchmod(fd, mode) {\n                    var stream = FS.getStreamChecked(fd);\n                    FS.chmod(stream.node, mode)\n                },\n                chown(path, uid, gid, dontFollow) {\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontFollow\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    node.node_ops.setattr(node, {\n                        timestamp: Date.now()\n                    })\n                },\n                lchown(path, uid, gid) {\n                    FS.chown(path, uid, gid, true)\n                },\n                fchown(fd, uid, gid) {\n                    var stream = FS.getStreamChecked(fd);\n                    FS.chown(stream.node, uid, gid)\n                },\n                truncate(path, len) {\n                    if (len < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var node;\n                    if (typeof path == \"string\") {\n                        var lookup = FS.lookupPath(path, {\n                            follow: true\n                        });\n                        node = lookup.node\n                    } else {\n                        node = path\n                    }\n                    if (!node.node_ops.setattr) {\n                        throw new FS.ErrnoError(63)\n                    }\n                    if (FS.isDir(node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!FS.isFile(node.mode)) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var errCode = FS.nodePermissions(node, \"w\");\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    node.node_ops.setattr(node, {\n                        size: len,\n                        timestamp: Date.now()\n                    })\n                },\n                ftruncate(fd, len) {\n                    var stream = FS.getStreamChecked(fd);\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    FS.truncate(stream.node, len)\n                },\n                utime(path, atime, mtime) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    node.node_ops.setattr(node, {\n                        timestamp: Math.max(atime, mtime)\n                    })\n                },\n                open(path, flags, mode) {\n                    if (path === \"\") {\n                        throw new FS.ErrnoError(44)\n                    }\n                    flags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n                    if (flags & 64) {\n                        mode = typeof mode == \"undefined\" ? 438 : mode;\n                        mode = mode & 4095 | 32768\n                    } else {\n                        mode = 0\n                    }\n                    var node;\n                    if (typeof path == \"object\") {\n                        node = path\n                    } else {\n                        path = PATH.normalize(path);\n                        try {\n                            var lookup = FS.lookupPath(path, {\n                                follow: !(flags & 131072)\n                            });\n                            node = lookup.node\n                        } catch (e) {}\n                    }\n                    var created = false;\n                    if (flags & 64) {\n                        if (node) {\n                            if (flags & 128) {\n                                throw new FS.ErrnoError(20)\n                            }\n                        } else {\n                            node = FS.mknod(path, mode, 0);\n                            created = true\n                        }\n                    }\n                    if (!node) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (FS.isChrdev(node.mode)) {\n                        flags &= ~512\n                    }\n                    if (flags & 65536 && !FS.isDir(node.mode)) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    if (!created) {\n                        var errCode = FS.mayOpen(node, flags);\n                        if (errCode) {\n                            throw new FS.ErrnoError(errCode)\n                        }\n                    }\n                    if (flags & 512 && !created) {\n                        FS.truncate(node, 0)\n                    }\n                    flags &= ~(128 | 512 | 131072);\n                    var stream = FS.createStream({\n                        node,\n                        path: FS.getPath(node),\n                        flags,\n                        seekable: true,\n                        position: 0,\n                        stream_ops: node.stream_ops,\n                        ungotten: [],\n                        error: false\n                    });\n                    if (stream.stream_ops.open) {\n                        stream.stream_ops.open(stream)\n                    }\n                    if (Module[\"logReadFiles\"] && !(flags & 1)) {\n                        if (!(path in FS.readFiles)) {\n                            FS.readFiles[path] = 1\n                        }\n                    }\n                    return stream\n                },\n                close(stream) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (stream.getdents) stream.getdents = null;\n                    try {\n                        if (stream.stream_ops.close) {\n                            stream.stream_ops.close(stream)\n                        }\n                    } catch (e) {\n                        throw e\n                    } finally {\n                        FS.closeStream(stream.fd)\n                    }\n                    stream.fd = null\n                },\n                isClosed(stream) {\n                    return stream.fd === null\n                },\n                llseek(stream, offset, whence) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (!stream.seekable || !stream.stream_ops.llseek) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    if (whence != 0 && whence != 1 && whence != 2) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    stream.position = stream.stream_ops.llseek(stream, offset, whence);\n                    stream.ungotten = [];\n                    return stream.position\n                },\n                read(stream, buffer, offset, length, position) {\n                    if (length < 0 || position < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if ((stream.flags & 2097155) === 1) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!stream.stream_ops.read) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    var seeking = typeof position != \"undefined\";\n                    if (!seeking) {\n                        position = stream.position\n                    } else if (!stream.seekable) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n                    if (!seeking) stream.position += bytesRead;\n                    return bytesRead\n                },\n                write(stream, buffer, offset, length, position, canOwn) {\n                    if (length < 0 || position < 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(31)\n                    }\n                    if (!stream.stream_ops.write) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if (stream.seekable && stream.flags & 1024) {\n                        FS.llseek(stream, 0, 2)\n                    }\n                    var seeking = typeof position != \"undefined\";\n                    if (!seeking) {\n                        position = stream.position\n                    } else if (!stream.seekable) {\n                        throw new FS.ErrnoError(70)\n                    }\n                    var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n                    if (!seeking) stream.position += bytesWritten;\n                    return bytesWritten\n                },\n                allocate(stream, offset, length) {\n                    if (FS.isClosed(stream)) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (offset < 0 || length <= 0) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    if ((stream.flags & 2097155) === 0) {\n                        throw new FS.ErrnoError(8)\n                    }\n                    if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (!stream.stream_ops.allocate) {\n                        throw new FS.ErrnoError(138)\n                    }\n                    stream.stream_ops.allocate(stream, offset, length)\n                },\n                mmap(stream, length, position, prot, flags) {\n                    if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n                        throw new FS.ErrnoError(2)\n                    }\n                    if ((stream.flags & 2097155) === 1) {\n                        throw new FS.ErrnoError(2)\n                    }\n                    if (!stream.stream_ops.mmap) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (!length) {\n                        throw new FS.ErrnoError(28)\n                    }\n                    return stream.stream_ops.mmap(stream, length, position, prot, flags)\n                },\n                msync(stream, buffer, offset, length, mmapFlags) {\n                    if (!stream.stream_ops.msync) {\n                        return 0\n                    }\n                    return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)\n                },\n                ioctl(stream, cmd, arg) {\n                    if (!stream.stream_ops.ioctl) {\n                        throw new FS.ErrnoError(59)\n                    }\n                    return stream.stream_ops.ioctl(stream, cmd, arg)\n                },\n                readFile(path, opts = {}) {\n                    opts.flags = opts.flags || 0;\n                    opts.encoding = opts.encoding || \"binary\";\n                    if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n                        throw new Error(`Invalid encoding type \"${opts.encoding}\"`)\n                    }\n                    var ret;\n                    var stream = FS.open(path, opts.flags);\n                    var stat = FS.stat(path);\n                    var length = stat.size;\n                    var buf = new Uint8Array(length);\n                    FS.read(stream, buf, 0, length, 0);\n                    if (opts.encoding === \"utf8\") {\n                        ret = UTF8ArrayToString(buf)\n                    } else if (opts.encoding === \"binary\") {\n                        ret = buf\n                    }\n                    FS.close(stream);\n                    return ret\n                },\n                writeFile(path, data, opts = {}) {\n                    opts.flags = opts.flags || 577;\n                    var stream = FS.open(path, opts.flags, opts.mode);\n                    if (typeof data == \"string\") {\n                        var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n                        var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n                        FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn)\n                    } else if (ArrayBuffer.isView(data)) {\n                        FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn)\n                    } else {\n                        throw new Error(\"Unsupported data type\")\n                    }\n                    FS.close(stream)\n                },\n                cwd: () => FS.currentPath,\n                chdir(path) {\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    if (lookup.node === null) {\n                        throw new FS.ErrnoError(44)\n                    }\n                    if (!FS.isDir(lookup.node.mode)) {\n                        throw new FS.ErrnoError(54)\n                    }\n                    var errCode = FS.nodePermissions(lookup.node, \"x\");\n                    if (errCode) {\n                        throw new FS.ErrnoError(errCode)\n                    }\n                    FS.currentPath = lookup.path\n                },\n                createDefaultDirectories() {\n                    FS.mkdir(\"/tmp\");\n                    FS.mkdir(\"/home\");\n                    FS.mkdir(\"/home/web_user\")\n                },\n                createDefaultDevices() {\n                    FS.mkdir(\"/dev\");\n                    FS.registerDevice(FS.makedev(1, 3), {\n                        read: () => 0,\n                        write: (stream, buffer, offset, length, pos) => length\n                    });\n                    FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n                    TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n                    TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n                    FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n                    FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n                    var randomBuffer = new Uint8Array(1024),\n                        randomLeft = 0;\n                    var randomByte = () => {\n                        if (randomLeft === 0) {\n                            randomLeft = randomFill(randomBuffer).byteLength\n                        }\n                        return randomBuffer[--randomLeft]\n                    };\n                    FS.createDevice(\"/dev\", \"random\", randomByte);\n                    FS.createDevice(\"/dev\", \"urandom\", randomByte);\n                    FS.mkdir(\"/dev/shm\");\n                    FS.mkdir(\"/dev/shm/tmp\")\n                },\n                createSpecialDirectories() {\n                    FS.mkdir(\"/proc\");\n                    var proc_self = FS.mkdir(\"/proc/self\");\n                    FS.mkdir(\"/proc/self/fd\");\n                    FS.mount({\n                        mount() {\n                            var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n                            node.node_ops = {\n                                lookup(parent, name) {\n                                    var fd = +name;\n                                    var stream = FS.getStreamChecked(fd);\n                                    var ret = {\n                                        parent: null,\n                                        mount: {\n                                            mountpoint: \"fake\"\n                                        },\n                                        node_ops: {\n                                            readlink: () => stream.path\n                                        }\n                                    };\n                                    ret.parent = ret;\n                                    return ret\n                                }\n                            };\n                            return node\n                        }\n                    }, {}, \"/proc/self/fd\")\n                },\n                createStandardStreams(input, output, error) {\n                    if (input) {\n                        FS.createDevice(\"/dev\", \"stdin\", input)\n                    } else {\n                        FS.symlink(\"/dev/tty\", \"/dev/stdin\")\n                    }\n                    if (output) {\n                        FS.createDevice(\"/dev\", \"stdout\", null, output)\n                    } else {\n                        FS.symlink(\"/dev/tty\", \"/dev/stdout\")\n                    }\n                    if (error) {\n                        FS.createDevice(\"/dev\", \"stderr\", null, error)\n                    } else {\n                        FS.symlink(\"/dev/tty1\", \"/dev/stderr\")\n                    }\n                    var stdin = FS.open(\"/dev/stdin\", 0);\n                    var stdout = FS.open(\"/dev/stdout\", 1);\n                    var stderr = FS.open(\"/dev/stderr\", 1)\n                },\n                staticInit() {\n                    [44].forEach(code => {\n                        FS.genericErrors[code] = new FS.ErrnoError(code);\n                        FS.genericErrors[code].stack = \"<generic error, no stack>\"\n                    });\n                    FS.nameTable = new Array(4096);\n                    FS.mount(MEMFS, {}, \"/\");\n                    FS.createDefaultDirectories();\n                    FS.createDefaultDevices();\n                    FS.createSpecialDirectories();\n                    FS.filesystems = {\n                        MEMFS\n                    }\n                },\n                init(input, output, error) {\n                    FS.initialized = true;\n                    input ??= Module[\"stdin\"];\n                    output ??= Module[\"stdout\"];\n                    error ??= Module[\"stderr\"];\n                    FS.createStandardStreams(input, output, error)\n                },\n                quit() {\n                    FS.initialized = false;\n                    for (var i = 0; i < FS.streams.length; i++) {\n                        var stream = FS.streams[i];\n                        if (!stream) {\n                            continue\n                        }\n                        FS.close(stream)\n                    }\n                },\n                findObject(path, dontResolveLastLink) {\n                    var ret = FS.analyzePath(path, dontResolveLastLink);\n                    if (!ret.exists) {\n                        return null\n                    }\n                    return ret.object\n                },\n                analyzePath(path, dontResolveLastLink) {\n                    try {\n                        var lookup = FS.lookupPath(path, {\n                            follow: !dontResolveLastLink\n                        });\n                        path = lookup.path\n                    } catch (e) {}\n                    var ret = {\n                        isRoot: false,\n                        exists: false,\n                        error: 0,\n                        name: null,\n                        path: null,\n                        object: null,\n                        parentExists: false,\n                        parentPath: null,\n                        parentObject: null\n                    };\n                    try {\n                        var lookup = FS.lookupPath(path, {\n                            parent: true\n                        });\n                        ret.parentExists = true;\n                        ret.parentPath = lookup.path;\n                        ret.parentObject = lookup.node;\n                        ret.name = PATH.basename(path);\n                        lookup = FS.lookupPath(path, {\n                            follow: !dontResolveLastLink\n                        });\n                        ret.exists = true;\n                        ret.path = lookup.path;\n                        ret.object = lookup.node;\n                        ret.name = lookup.node.name;\n                        ret.isRoot = lookup.path === \"/\"\n                    } catch (e) {\n                        ret.error = e.errno\n                    }\n                    return ret\n                },\n                createPath(parent, path, canRead, canWrite) {\n                    parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n                    var parts = path.split(\"/\").reverse();\n                    while (parts.length) {\n                        var part = parts.pop();\n                        if (!part) continue;\n                        var current = PATH.join2(parent, part);\n                        try {\n                            FS.mkdir(current)\n                        } catch (e) {}\n                        parent = current\n                    }\n                    return current\n                },\n                createFile(parent, name, properties, canRead, canWrite) {\n                    var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n                    var mode = FS_getMode(canRead, canWrite);\n                    return FS.create(path, mode)\n                },\n                createDataFile(parent, name, data, canRead, canWrite, canOwn) {\n                    var path = name;\n                    if (parent) {\n                        parent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n                        path = name ? PATH.join2(parent, name) : parent\n                    }\n                    var mode = FS_getMode(canRead, canWrite);\n                    var node = FS.create(path, mode);\n                    if (data) {\n                        if (typeof data == \"string\") {\n                            var arr = new Array(data.length);\n                            for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n                            data = arr\n                        }\n                        FS.chmod(node, mode | 146);\n                        var stream = FS.open(node, 577);\n                        FS.write(stream, data, 0, data.length, 0, canOwn);\n                        FS.close(stream);\n                        FS.chmod(node, mode)\n                    }\n                },\n                createDevice(parent, name, input, output) {\n                    var path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n                    var mode = FS_getMode(!!input, !!output);\n                    FS.createDevice.major ??= 64;\n                    var dev = FS.makedev(FS.createDevice.major++, 0);\n                    FS.registerDevice(dev, {\n                        open(stream) {\n                            stream.seekable = false\n                        },\n                        close(stream) {\n                            if (output?.buffer?.length) {\n                                output(10)\n                            }\n                        },\n                        read(stream, buffer, offset, length, pos) {\n                            var bytesRead = 0;\n                            for (var i = 0; i < length; i++) {\n                                var result;\n                                try {\n                                    result = input()\n                                } catch (e) {\n                                    throw new FS.ErrnoError(29)\n                                }\n                                if (result === undefined && bytesRead === 0) {\n                                    throw new FS.ErrnoError(6)\n                                }\n                                if (result === null || result === undefined) break;\n                                bytesRead++;\n                                buffer[offset + i] = result\n                            }\n                            if (bytesRead) {\n                                stream.node.timestamp = Date.now()\n                            }\n                            return bytesRead\n                        },\n                        write(stream, buffer, offset, length, pos) {\n                            for (var i = 0; i < length; i++) {\n                                try {\n                                    output(buffer[offset + i])\n                                } catch (e) {\n                                    throw new FS.ErrnoError(29)\n                                }\n                            }\n                            if (length) {\n                                stream.node.timestamp = Date.now()\n                            }\n                            return i\n                        }\n                    });\n                    return FS.mkdev(path, mode, dev)\n                },\n                forceLoadFile(obj) {\n                    if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n                    if (typeof XMLHttpRequest != \"undefined\") {\n                        throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")\n                    } else {\n                        try {\n                            obj.contents = readBinary(obj.url);\n                            obj.usedBytes = obj.contents.length\n                        } catch (e) {\n                            throw new FS.ErrnoError(29)\n                        }\n                    }\n                },\n                createLazyFile(parent, name, url, canRead, canWrite) {\n                    class LazyUint8Array {\n                        lengthKnown = false;\n                        chunks = [];\n                        get(idx) {\n                            if (idx > this.length - 1 || idx < 0) {\n                                return undefined\n                            }\n                            var chunkOffset = idx % this.chunkSize;\n                            var chunkNum = idx / this.chunkSize | 0;\n                            return this.getter(chunkNum)[chunkOffset]\n                        }\n                        setDataGetter(getter) {\n                            this.getter = getter\n                        }\n                        cacheLength() {\n                            var xhr = new XMLHttpRequest;\n                            xhr.open(\"HEAD\", url, false);\n                            xhr.send(null);\n                            if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n                            var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n                            var header;\n                            var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n                            var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n                            var chunkSize = 1024 * 1024;\n                            if (!hasByteServing) chunkSize = datalength;\n                            var doXHR = (from, to) => {\n                                if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n                                if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n                                var xhr = new XMLHttpRequest;\n                                xhr.open(\"GET\", url, false);\n                                if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n                                xhr.responseType = \"arraybuffer\";\n                                if (xhr.overrideMimeType) {\n                                    xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")\n                                }\n                                xhr.send(null);\n                                if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n                                if (xhr.response !== undefined) {\n                                    return new Uint8Array(xhr.response || [])\n                                }\n                                return intArrayFromString(xhr.responseText || \"\", true)\n                            };\n                            var lazyArray = this;\n                            lazyArray.setDataGetter(chunkNum => {\n                                var start = chunkNum * chunkSize;\n                                var end = (chunkNum + 1) * chunkSize - 1;\n                                end = Math.min(end, datalength - 1);\n                                if (typeof lazyArray.chunks[chunkNum] == \"undefined\") {\n                                    lazyArray.chunks[chunkNum] = doXHR(start, end)\n                                }\n                                if (typeof lazyArray.chunks[chunkNum] == \"undefined\") throw new Error(\"doXHR failed!\");\n                                return lazyArray.chunks[chunkNum]\n                            });\n                            if (usesGzip || !datalength) {\n                                chunkSize = datalength = 1;\n                                datalength = this.getter(0).length;\n                                chunkSize = datalength;\n                                out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")\n                            }\n                            this._length = datalength;\n                            this._chunkSize = chunkSize;\n                            this.lengthKnown = true\n                        }\n                        get length() {\n                            if (!this.lengthKnown) {\n                                this.cacheLength()\n                            }\n                            return this._length\n                        }\n                        get chunkSize() {\n                            if (!this.lengthKnown) {\n                                this.cacheLength()\n                            }\n                            return this._chunkSize\n                        }\n                    }\n                    if (typeof XMLHttpRequest != \"undefined\") {\n                        if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n                        var lazyArray = new LazyUint8Array;\n                        var properties = {\n                            isDevice: false,\n                            contents: lazyArray\n                        }\n                    } else {\n                        var properties = {\n                            isDevice: false,\n                            url\n                        }\n                    }\n                    var node = FS.createFile(parent, name, properties, canRead, canWrite);\n                    if (properties.contents) {\n                        node.contents = properties.contents\n                    } else if (properties.url) {\n                        node.contents = null;\n                        node.url = properties.url\n                    }\n                    Object.defineProperties(node, {\n                        usedBytes: {\n                            get: function() {\n                                return this.contents.length\n                            }\n                        }\n                    });\n                    var stream_ops = {};\n                    var keys = Object.keys(node.stream_ops);\n                    keys.forEach(key => {\n                        var fn = node.stream_ops[key];\n                        stream_ops[key] = (...args) => {\n                            FS.forceLoadFile(node);\n                            return fn(...args)\n                        }\n                    });\n\n                    function writeChunks(stream, buffer, offset, length, position) {\n                        var contents = stream.node.contents;\n                        if (position >= contents.length) return 0;\n                        var size = Math.min(contents.length - position, length);\n                        if (contents.slice) {\n                            for (var i = 0; i < size; i++) {\n                                buffer[offset + i] = contents[position + i]\n                            }\n                        } else {\n                            for (var i = 0; i < size; i++) {\n                                buffer[offset + i] = contents.get(position + i)\n                            }\n                        }\n                        return size\n                    }\n                    stream_ops.read = (stream, buffer, offset, length, position) => {\n                        FS.forceLoadFile(node);\n                        return writeChunks(stream, buffer, offset, length, position)\n                    };\n                    stream_ops.mmap = (stream, length, position, prot, flags) => {\n                        FS.forceLoadFile(node);\n                        var ptr = mmapAlloc(length);\n                        if (!ptr) {\n                            throw new FS.ErrnoError(48)\n                        }\n                        writeChunks(stream, HEAP8, ptr, length, position);\n                        return {\n                            ptr,\n                            allocated: true\n                        }\n                    };\n                    node.stream_ops = stream_ops;\n                    return node\n                }\n            };\n            var SYSCALLS = {\n                DEFAULT_POLLMASK: 5,\n                calculateAt(dirfd, path, allowEmpty) {\n                    if (PATH.isAbs(path)) {\n                        return path\n                    }\n                    var dir;\n                    if (dirfd === -100) {\n                        dir = FS.cwd()\n                    } else {\n                        var dirstream = SYSCALLS.getStreamFromFD(dirfd);\n                        dir = dirstream.path\n                    }\n                    if (path.length == 0) {\n                        if (!allowEmpty) {\n                            throw new FS.ErrnoError(44)\n                        }\n                        return dir\n                    }\n                    return PATH.join2(dir, path)\n                },\n                doStat(func, path, buf) {\n                    var stat = func(path);\n                    HEAP32[buf >>> 2 >>> 0] = stat.dev;\n                    HEAP32[buf + 4 >>> 2 >>> 0] = stat.mode;\n                    HEAPU32[buf + 8 >>> 2 >>> 0] = stat.nlink;\n                    HEAP32[buf + 12 >>> 2 >>> 0] = stat.uid;\n                    HEAP32[buf + 16 >>> 2 >>> 0] = stat.gid;\n                    HEAP32[buf + 20 >>> 2 >>> 0] = stat.rdev;\n                    tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 28 >>> 2 >>> 0] = tempI64[1];\n                    HEAP32[buf + 32 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 36 >>> 2 >>> 0] = stat.blocks;\n                    var atime = stat.atime.getTime();\n                    var mtime = stat.mtime.getTime();\n                    var ctime = stat.ctime.getTime();\n                    tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 44 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 48 >>> 2 >>> 0] = atime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 60 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 64 >>> 2 >>> 0] = mtime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 76 >>> 2 >>> 0] = tempI64[1];\n                    HEAPU32[buf + 80 >>> 2 >>> 0] = ctime % 1e3 * 1e3 * 1e3;\n                    tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >>> 2 >>> 0] = tempI64[0], HEAP32[buf + 92 >>> 2 >>> 0] = tempI64[1];\n                    return 0\n                },\n                doMsync(addr, stream, len, flags, offset) {\n                    if (!FS.isFile(stream.node.mode)) {\n                        throw new FS.ErrnoError(43)\n                    }\n                    if (flags & 2) {\n                        return 0\n                    }\n                    var buffer = HEAPU8.slice(addr, addr + len);\n                    FS.msync(stream, buffer, offset, len, flags)\n                },\n                getStreamFromFD(fd) {\n                    var stream = FS.getStreamChecked(fd);\n                    return stream\n                },\n                varargs: undefined,\n                getStr(ptr) {\n                    var ret = UTF8ToString(ptr);\n                    return ret\n                }\n            };\n            var ___syscall__newselect = function(nfds, readfds, writefds, exceptfds, timeout) {\n                readfds >>>= 0;\n                writefds >>>= 0;\n                exceptfds >>>= 0;\n                timeout >>>= 0;\n                try {\n                    var total = 0;\n                    var srcReadLow = readfds ? HEAP32[readfds >>> 2 >>> 0] : 0,\n                        srcReadHigh = readfds ? HEAP32[readfds + 4 >>> 2 >>> 0] : 0;\n                    var srcWriteLow = writefds ? HEAP32[writefds >>> 2 >>> 0] : 0,\n                        srcWriteHigh = writefds ? HEAP32[writefds + 4 >>> 2 >>> 0] : 0;\n                    var srcExceptLow = exceptfds ? HEAP32[exceptfds >>> 2 >>> 0] : 0,\n                        srcExceptHigh = exceptfds ? HEAP32[exceptfds + 4 >>> 2 >>> 0] : 0;\n                    var dstReadLow = 0,\n                        dstReadHigh = 0;\n                    var dstWriteLow = 0,\n                        dstWriteHigh = 0;\n                    var dstExceptLow = 0,\n                        dstExceptHigh = 0;\n                    var allLow = (readfds ? HEAP32[readfds >>> 2 >>> 0] : 0) | (writefds ? HEAP32[writefds >>> 2 >>> 0] : 0) | (exceptfds ? HEAP32[exceptfds >>> 2 >>> 0] : 0);\n                    var allHigh = (readfds ? HEAP32[readfds + 4 >>> 2 >>> 0] : 0) | (writefds ? HEAP32[writefds + 4 >>> 2 >>> 0] : 0) | (exceptfds ? HEAP32[exceptfds + 4 >>> 2 >>> 0] : 0);\n                    var check = (fd, low, high, val) => fd < 32 ? low & val : high & val;\n                    for (var fd = 0; fd < nfds; fd++) {\n                        var mask = 1 << fd % 32;\n                        if (!check(fd, allLow, allHigh, mask)) {\n                            continue\n                        }\n                        var stream = SYSCALLS.getStreamFromFD(fd);\n                        var flags = SYSCALLS.DEFAULT_POLLMASK;\n                        if (stream.stream_ops.poll) {\n                            var timeoutInMillis = -1;\n                            if (timeout) {\n                                var tv_sec = readfds ? HEAP32[timeout >>> 2 >>> 0] : 0,\n                                    tv_usec = readfds ? HEAP32[timeout + 4 >>> 2 >>> 0] : 0;\n                                timeoutInMillis = (tv_sec + tv_usec / 1e6) * 1e3\n                            }\n                            flags = stream.stream_ops.poll(stream, timeoutInMillis)\n                        }\n                        if (flags & 1 && check(fd, srcReadLow, srcReadHigh, mask)) {\n                            fd < 32 ? dstReadLow = dstReadLow | mask : dstReadHigh = dstReadHigh | mask;\n                            total++\n                        }\n                        if (flags & 4 && check(fd, srcWriteLow, srcWriteHigh, mask)) {\n                            fd < 32 ? dstWriteLow = dstWriteLow | mask : dstWriteHigh = dstWriteHigh | mask;\n                            total++\n                        }\n                        if (flags & 2 && check(fd, srcExceptLow, srcExceptHigh, mask)) {\n                            fd < 32 ? dstExceptLow = dstExceptLow | mask : dstExceptHigh = dstExceptHigh | mask;\n                            total++\n                        }\n                    }\n                    if (readfds) {\n                        HEAP32[readfds >>> 2 >>> 0] = dstReadLow;\n                        HEAP32[readfds + 4 >>> 2 >>> 0] = dstReadHigh\n                    }\n                    if (writefds) {\n                        HEAP32[writefds >>> 2 >>> 0] = dstWriteLow;\n                        HEAP32[writefds + 4 >>> 2 >>> 0] = dstWriteHigh\n                    }\n                    if (exceptfds) {\n                        HEAP32[exceptfds >>> 2 >>> 0] = dstExceptLow;\n                        HEAP32[exceptfds + 4 >>> 2 >>> 0] = dstExceptHigh\n                    }\n                    return total\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            };\n            ___syscall__newselect.sig = \"iipppp\";\n            var SOCKFS = {\n                websocketArgs: {},\n                callbacks: {},\n                on(event, callback) {\n                    SOCKFS.callbacks[event] = callback\n                },\n                emit(event, param) {\n                    SOCKFS.callbacks[event]?.(param)\n                },\n                mount(mount) {\n                    SOCKFS.websocketArgs = Module[\"websocket\"] || {};\n                    (Module[\"websocket\"] ??= {})[\"on\"] = SOCKFS.on;\n                    return FS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createSocket(family, type, protocol) {\n                    type &= ~526336;\n                    var streaming = type == 1;\n                    if (streaming && protocol && protocol != 6) {\n                        throw new FS.ErrnoError(66)\n                    }\n                    var sock = {\n                        family,\n                        type,\n                        protocol,\n                        server: null,\n                        error: null,\n                        peers: {},\n                        pending: [],\n                        recv_queue: [],\n                        sock_ops: SOCKFS.websocket_sock_ops\n                    };\n                    var name = SOCKFS.nextname();\n                    var node = FS.createNode(SOCKFS.root, name, 49152, 0);\n                    node.sock = sock;\n                    var stream = FS.createStream({\n                        path: name,\n                        node,\n                        flags: 2,\n                        seekable: false,\n                        stream_ops: SOCKFS.stream_ops\n                    });\n                    sock.stream = stream;\n                    return sock\n                },\n                getSocket(fd) {\n                    var stream = FS.getStream(fd);\n                    if (!stream || !FS.isSocket(stream.node.mode)) {\n                        return null\n                    }\n                    return stream.node.sock\n                },\n                stream_ops: {\n                    poll(stream) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.poll(sock)\n                    },\n                    ioctl(stream, request, varargs) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.ioctl(sock, request, varargs)\n                    },\n                    read(stream, buffer, offset, length, position) {\n                        var sock = stream.node.sock;\n                        var msg = sock.sock_ops.recvmsg(sock, length);\n                        if (!msg) {\n                            return 0\n                        }\n                        buffer.set(msg.buffer, offset);\n                        return msg.buffer.length\n                    },\n                    write(stream, buffer, offset, length, position) {\n                        var sock = stream.node.sock;\n                        return sock.sock_ops.sendmsg(sock, buffer, offset, length)\n                    },\n                    close(stream) {\n                        var sock = stream.node.sock;\n                        sock.sock_ops.close(sock)\n                    }\n                },\n                nextname() {\n                    if (!SOCKFS.nextname.current) {\n                        SOCKFS.nextname.current = 0\n                    }\n                    return \"socket[\" + SOCKFS.nextname.current++ + \"]\"\n                },\n                websocket_sock_ops: {\n                    createPeer(sock, addr, port) {\n                        var ws;\n                        if (typeof addr == \"object\") {\n                            ws = addr;\n                            addr = null;\n                            port = null\n                        }\n                        if (ws) {\n                            if (ws._socket) {\n                                addr = ws._socket.remoteAddress;\n                                port = ws._socket.remotePort\n                            } else {\n                                var result = /ws[s]?:\\/\\/([^:]+):(\\d+)/.exec(ws.url);\n                                if (!result) {\n                                    throw new Error(\"WebSocket URL must be in the format ws(s)://address:port\")\n                                }\n                                addr = result[1];\n                                port = parseInt(result[2], 10)\n                            }\n                        } else {\n                            try {\n                                var url = \"ws:#\".replace(\"#\", \"//\");\n                                var subProtocols = \"binary\";\n                                var opts = undefined;\n                                if (SOCKFS.websocketArgs[\"url\"]) {\n                                    url = SOCKFS.websocketArgs[\"url\"]\n                                }\n                                if (SOCKFS.websocketArgs[\"subprotocol\"]) {\n                                    subProtocols = SOCKFS.websocketArgs[\"subprotocol\"]\n                                } else if (SOCKFS.websocketArgs[\"subprotocol\"] === null) {\n                                    subProtocols = \"null\"\n                                }\n                                if (url === \"ws://\" || url === \"wss://\") {\n                                    var parts = addr.split(\"/\");\n                                    url = url + parts[0] + \":\" + port + \"/\" + parts.slice(1).join(\"/\")\n                                }\n                                if (subProtocols !== \"null\") {\n                                    subProtocols = subProtocols.replace(/^ +| +$/g, \"\").split(/ *, */);\n                                    opts = subProtocols\n                                }\n                                var WebSocketConstructor;\n                                if (ENVIRONMENT_IS_NODE) {\n                                    WebSocketConstructor = require(\"ws\")\n                                } else {\n                                    WebSocketConstructor = WebSocket\n                                }\n                                ws = new WebSocketConstructor(url, opts);\n                                ws.binaryType = \"arraybuffer\"\n                            } catch (e) {\n                                throw new FS.ErrnoError(23)\n                            }\n                        }\n                        var peer = {\n                            addr,\n                            port,\n                            socket: ws,\n                            msg_send_queue: []\n                        };\n                        SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n                        SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);\n                        if (sock.type === 2 && typeof sock.sport != \"undefined\") {\n                            peer.msg_send_queue.push(new Uint8Array([255, 255, 255, 255, \"p\".charCodeAt(0), \"o\".charCodeAt(0), \"r\".charCodeAt(0), \"t\".charCodeAt(0), (sock.sport & 65280) >> 8, sock.sport & 255]))\n                        }\n                        return peer\n                    },\n                    getPeer(sock, addr, port) {\n                        return sock.peers[addr + \":\" + port]\n                    },\n                    addPeer(sock, peer) {\n                        sock.peers[peer.addr + \":\" + peer.port] = peer\n                    },\n                    removePeer(sock, peer) {\n                        delete sock.peers[peer.addr + \":\" + peer.port]\n                    },\n                    handlePeerEvents(sock, peer) {\n                        var first = true;\n                        var handleOpen = function() {\n                            sock.connecting = false;\n                            SOCKFS.emit(\"open\", sock.stream.fd);\n                            try {\n                                var queued = peer.msg_send_queue.shift();\n                                while (queued) {\n                                    peer.socket.send(queued);\n                                    queued = peer.msg_send_queue.shift()\n                                }\n                            } catch (e) {\n                                peer.socket.close()\n                            }\n                        };\n\n                        function handleMessage(data) {\n                            if (typeof data == \"string\") {\n                                var encoder = new TextEncoder;\n                                data = encoder.encode(data)\n                            } else {\n                                assert(data.byteLength !== undefined);\n                                if (data.byteLength == 0) {\n                                    return\n                                }\n                                data = new Uint8Array(data)\n                            }\n                            var wasfirst = first;\n                            first = false;\n                            if (wasfirst && data.length === 10 && data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && data[4] === \"p\".charCodeAt(0) && data[5] === \"o\".charCodeAt(0) && data[6] === \"r\".charCodeAt(0) && data[7] === \"t\".charCodeAt(0)) {\n                                var newport = data[8] << 8 | data[9];\n                                SOCKFS.websocket_sock_ops.removePeer(sock, peer);\n                                peer.port = newport;\n                                SOCKFS.websocket_sock_ops.addPeer(sock, peer);\n                                return\n                            }\n                            sock.recv_queue.push({\n                                addr: peer.addr,\n                                port: peer.port,\n                                data\n                            });\n                            SOCKFS.emit(\"message\", sock.stream.fd)\n                        }\n                        if (ENVIRONMENT_IS_NODE) {\n                            peer.socket.on(\"open\", handleOpen);\n                            peer.socket.on(\"message\", function(data, isBinary) {\n                                if (!isBinary) {\n                                    return\n                                }\n                                handleMessage(new Uint8Array(data).buffer)\n                            });\n                            peer.socket.on(\"close\", function() {\n                                SOCKFS.emit(\"close\", sock.stream.fd)\n                            });\n                            peer.socket.on(\"error\", function(error) {\n                                sock.error = 14;\n                                SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"ECONNREFUSED: Connection refused\"])\n                            })\n                        } else {\n                            peer.socket.onopen = handleOpen;\n                            peer.socket.onclose = function() {\n                                SOCKFS.emit(\"close\", sock.stream.fd)\n                            };\n                            peer.socket.onmessage = function peer_socket_onmessage(event) {\n                                handleMessage(event.data)\n                            };\n                            peer.socket.onerror = function(error) {\n                                sock.error = 14;\n                                SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"ECONNREFUSED: Connection refused\"])\n                            }\n                        }\n                    },\n                    poll(sock) {\n                        if (sock.type === 1 && sock.server) {\n                            return sock.pending.length ? 64 | 1 : 0\n                        }\n                        var mask = 0;\n                        var dest = sock.type === 1 ? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : null;\n                        if (sock.recv_queue.length || !dest || dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n                            mask |= 64 | 1\n                        }\n                        if (!dest || dest && dest.socket.readyState === dest.socket.OPEN) {\n                            mask |= 4\n                        }\n                        if (dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {\n                            if (sock.connecting) {\n                                mask |= 4\n                            } else {\n                                mask |= 16\n                            }\n                        }\n                        return mask\n                    },\n                    ioctl(sock, request, arg) {\n                        switch (request) {\n                            case 21531:\n                                var bytes = 0;\n                                if (sock.recv_queue.length) {\n                                    bytes = sock.recv_queue[0].data.length\n                                }\n                                HEAP32[arg >>> 2 >>> 0] = bytes;\n                                return 0;\n                            default:\n                                return 28\n                        }\n                    },\n                    close(sock) {\n                        if (sock.server) {\n                            try {\n                                sock.server.close()\n                            } catch (e) {}\n                            sock.server = null\n                        }\n                        var peers = Object.keys(sock.peers);\n                        for (var i = 0; i < peers.length; i++) {\n                            var peer = sock.peers[peers[i]];\n                            try {\n                                peer.socket.close()\n                            } catch (e) {}\n                            SOCKFS.websocket_sock_ops.removePeer(sock, peer)\n                        }\n                        return 0\n                    },\n                    bind(sock, addr, port) {\n                        if (typeof sock.saddr != \"undefined\" || typeof sock.sport != \"undefined\") {\n                            throw new FS.ErrnoError(28)\n                        }\n                        sock.saddr = addr;\n                        sock.sport = port;\n                        if (sock.type === 2) {\n                            if (sock.server) {\n                                sock.server.close();\n                                sock.server = null\n                            }\n                            try {\n                                sock.sock_ops.listen(sock, 0)\n                            } catch (e) {\n                                if (!(e.name === \"ErrnoError\")) throw e;\n                                if (e.errno !== 138) throw e\n                            }\n                        }\n                    },\n                    connect(sock, addr, port) {\n                        if (sock.server) {\n                            throw new FS.ErrnoError(138)\n                        }\n                        if (typeof sock.daddr != \"undefined\" && typeof sock.dport != \"undefined\") {\n                            var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n                            if (dest) {\n                                if (dest.socket.readyState === dest.socket.CONNECTING) {\n                                    throw new FS.ErrnoError(7)\n                                } else {\n                                    throw new FS.ErrnoError(30)\n                                }\n                            }\n                        }\n                        var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);\n                        sock.daddr = peer.addr;\n                        sock.dport = peer.port;\n                        sock.connecting = true\n                    },\n                    listen(sock, backlog) {\n                        if (!ENVIRONMENT_IS_NODE) {\n                            throw new FS.ErrnoError(138)\n                        }\n                        if (sock.server) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        var WebSocketServer = require(\"ws\").Server;\n                        var host = sock.saddr;\n                        sock.server = new WebSocketServer({\n                            host,\n                            port: sock.sport\n                        });\n                        SOCKFS.emit(\"listen\", sock.stream.fd);\n                        sock.server.on(\"connection\", function(ws) {\n                            if (sock.type === 1) {\n                                var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);\n                                var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);\n                                newsock.daddr = peer.addr;\n                                newsock.dport = peer.port;\n                                sock.pending.push(newsock);\n                                SOCKFS.emit(\"connection\", newsock.stream.fd)\n                            } else {\n                                SOCKFS.websocket_sock_ops.createPeer(sock, ws);\n                                SOCKFS.emit(\"connection\", sock.stream.fd)\n                            }\n                        });\n                        sock.server.on(\"close\", function() {\n                            SOCKFS.emit(\"close\", sock.stream.fd);\n                            sock.server = null\n                        });\n                        sock.server.on(\"error\", function(error) {\n                            sock.error = 23;\n                            SOCKFS.emit(\"error\", [sock.stream.fd, sock.error, \"EHOSTUNREACH: Host is unreachable\"])\n                        })\n                    },\n                    accept(listensock) {\n                        if (!listensock.server || !listensock.pending.length) {\n                            throw new FS.ErrnoError(28)\n                        }\n                        var newsock = listensock.pending.shift();\n                        newsock.stream.flags = listensock.stream.flags;\n                        return newsock\n                    },\n                    getname(sock, peer) {\n                        var addr, port;\n                        if (peer) {\n                            if (sock.daddr === undefined || sock.dport === undefined) {\n                                throw new FS.ErrnoError(53)\n                            }\n                            addr = sock.daddr;\n                            port = sock.dport\n                        } else {\n                            addr = sock.saddr || 0;\n                            port = sock.sport || 0\n                        }\n                        return {\n                            addr,\n                            port\n                        }\n                    },\n                    sendmsg(sock, buffer, offset, length, addr, port) {\n                        if (sock.type === 2) {\n                            if (addr === undefined || port === undefined) {\n                                addr = sock.daddr;\n                                port = sock.dport\n                            }\n                            if (addr === undefined || port === undefined) {\n                                throw new FS.ErrnoError(17)\n                            }\n                        } else {\n                            addr = sock.daddr;\n                            port = sock.dport\n                        }\n                        var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);\n                        if (sock.type === 1) {\n                            if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                throw new FS.ErrnoError(53)\n                            }\n                        }\n                        if (ArrayBuffer.isView(buffer)) {\n                            offset += buffer.byteOffset;\n                            buffer = buffer.buffer\n                        }\n                        var data;\n                        data = buffer.slice(offset, offset + length);\n                        if (!dest || dest.socket.readyState !== dest.socket.OPEN) {\n                            if (sock.type === 2) {\n                                if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                    dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port)\n                                }\n                            }\n                            dest.msg_send_queue.push(data);\n                            return length\n                        }\n                        try {\n                            dest.socket.send(data);\n                            return length\n                        } catch (e) {\n                            throw new FS.ErrnoError(28)\n                        }\n                    },\n                    recvmsg(sock, length) {\n                        if (sock.type === 1 && sock.server) {\n                            throw new FS.ErrnoError(53)\n                        }\n                        var queued = sock.recv_queue.shift();\n                        if (!queued) {\n                            if (sock.type === 1) {\n                                var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);\n                                if (!dest) {\n                                    throw new FS.ErrnoError(53)\n                                }\n                                if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {\n                                    return null\n                                }\n                                throw new FS.ErrnoError(6)\n                            }\n                            throw new FS.ErrnoError(6)\n                        }\n                        var queuedLength = queued.data.byteLength || queued.data.length;\n                        var queuedOffset = queued.data.byteOffset || 0;\n                        var queuedBuffer = queued.data.buffer || queued.data;\n                        var bytesRead = Math.min(length, queuedLength);\n                        var res = {\n                            buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),\n                            addr: queued.addr,\n                            port: queued.port\n                        };\n                        if (sock.type === 1 && bytesRead < queuedLength) {\n                            var bytesRemaining = queuedLength - bytesRead;\n                            queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);\n                            sock.recv_queue.unshift(queued)\n                        }\n                        return res\n                    }\n                }\n            };\n            var getSocketFromFD = fd => {\n                var socket = SOCKFS.getSocket(fd);\n                if (!socket) throw new FS.ErrnoError(8);\n                return socket\n            };\n            var Sockets = {\n                BUFFER_SIZE: 10240,\n                MAX_BUFFER_SIZE: 10485760,\n                nextFd: 1,\n                fds: {},\n                nextport: 1,\n                maxport: 65535,\n                peer: null,\n                connections: {},\n                portmap: {},\n                localAddr: 4261412874,\n                addrPool: [33554442, 50331658, 67108874, 83886090, 100663306, 117440522, 134217738, 150994954, 167772170, 184549386, 201326602, 218103818, 234881034]\n            };\n            var inetPton4 = str => {\n                var b = str.split(\".\");\n                for (var i = 0; i < 4; i++) {\n                    var tmp = Number(b[i]);\n                    if (isNaN(tmp)) return null;\n                    b[i] = tmp\n                }\n                return (b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24) >>> 0\n            };\n            var jstoi_q = str => parseInt(str);\n            var inetPton6 = str => {\n                var words;\n                var w, offset, z, i;\n                var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i;\n                var parts = [];\n                if (!valid6regx.test(str)) {\n                    return null\n                }\n                if (str === \"::\") {\n                    return [0, 0, 0, 0, 0, 0, 0, 0]\n                }\n                if (str.startsWith(\"::\")) {\n                    str = str.replace(\"::\", \"Z:\")\n                } else {\n                    str = str.replace(\"::\", \":Z:\")\n                }\n                if (str.indexOf(\".\") > 0) {\n                    str = str.replace(new RegExp(\"[.]\", \"g\"), \":\");\n                    words = str.split(\":\");\n                    words[words.length - 4] = jstoi_q(words[words.length - 4]) + jstoi_q(words[words.length - 3]) * 256;\n                    words[words.length - 3] = jstoi_q(words[words.length - 2]) + jstoi_q(words[words.length - 1]) * 256;\n                    words = words.slice(0, words.length - 2)\n                } else {\n                    words = str.split(\":\")\n                }\n                offset = 0;\n                z = 0;\n                for (w = 0; w < words.length; w++) {\n                    if (typeof words[w] == \"string\") {\n                        if (words[w] === \"Z\") {\n                            for (z = 0; z < 8 - words.length + 1; z++) {\n                                parts[w + z] = 0\n                            }\n                            offset = z - 1\n                        } else {\n                            parts[w + offset] = _htons(parseInt(words[w], 16))\n                        }\n                    } else {\n                        parts[w + offset] = words[w]\n                    }\n                }\n                return [parts[1] << 16 | parts[0], parts[3] << 16 | parts[2], parts[5] << 16 | parts[4], parts[7] << 16 | parts[6]]\n            };\n            var writeSockaddr = (sa, family, addr, port, addrlen) => {\n                switch (family) {\n                    case 2:\n                        addr = inetPton4(addr);\n                        zeroMemory(sa, 16);\n                        if (addrlen) {\n                            HEAP32[addrlen >>> 2 >>> 0] = 16\n                        }\n                        HEAP16[sa >>> 1 >>> 0] = family;\n                        HEAP32[sa + 4 >>> 2 >>> 0] = addr;\n                        HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n                        break;\n                    case 10:\n                        addr = inetPton6(addr);\n                        zeroMemory(sa, 28);\n                        if (addrlen) {\n                            HEAP32[addrlen >>> 2 >>> 0] = 28\n                        }\n                        HEAP32[sa >>> 2 >>> 0] = family;\n                        HEAP32[sa + 8 >>> 2 >>> 0] = addr[0];\n                        HEAP32[sa + 12 >>> 2 >>> 0] = addr[1];\n                        HEAP32[sa + 16 >>> 2 >>> 0] = addr[2];\n                        HEAP32[sa + 20 >>> 2 >>> 0] = addr[3];\n                        HEAP16[sa + 2 >>> 1 >>> 0] = _htons(port);\n                        break;\n                    default:\n                        return 5\n                }\n                return 0\n            };\n            var DNS = {\n                address_map: {\n                    id: 1,\n                    addrs: {},\n                    names: {}\n                },\n                lookup_name(name) {\n                    var res = inetPton4(name);\n                    if (res !== null) {\n                        return name\n                    }\n                    res = inetPton6(name);\n                    if (res !== null) {\n                        return name\n                    }\n                    var addr;\n                    if (DNS.address_map.addrs[name]) {\n                        addr = DNS.address_map.addrs[name]\n                    } else {\n                        var id = DNS.address_map.id++;\n                        assert(id < 65535, \"exceeded max address mappings of 65535\");\n                        addr = \"172.29.\" + (id & 255) + \".\" + (id & 65280);\n                        DNS.address_map.names[addr] = name;\n                        DNS.address_map.addrs[name] = addr\n                    }\n                    return addr\n                },\n                lookup_addr(addr) {\n                    if (DNS.address_map.names[addr]) {\n                        return DNS.address_map.names[addr]\n                    }\n                    return null\n                }\n            };\n\n            function ___syscall_accept4(fd, addr, addrlen, flags, d1, d2) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var newsock = sock.sock_ops.accept(sock);\n                    if (addr) {\n                        var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen)\n                    }\n                    return newsock.stream.fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_accept4.sig = \"iippiii\";\n            var inetNtop4 = addr => (addr & 255) + \".\" + (addr >> 8 & 255) + \".\" + (addr >> 16 & 255) + \".\" + (addr >> 24 & 255);\n            var inetNtop6 = ints => {\n                var str = \"\";\n                var word = 0;\n                var longest = 0;\n                var lastzero = 0;\n                var zstart = 0;\n                var len = 0;\n                var i = 0;\n                var parts = [ints[0] & 65535, ints[0] >> 16, ints[1] & 65535, ints[1] >> 16, ints[2] & 65535, ints[2] >> 16, ints[3] & 65535, ints[3] >> 16];\n                var hasipv4 = true;\n                var v4part = \"\";\n                for (i = 0; i < 5; i++) {\n                    if (parts[i] !== 0) {\n                        hasipv4 = false;\n                        break\n                    }\n                }\n                if (hasipv4) {\n                    v4part = inetNtop4(parts[6] | parts[7] << 16);\n                    if (parts[5] === -1) {\n                        str = \"::ffff:\";\n                        str += v4part;\n                        return str\n                    }\n                    if (parts[5] === 0) {\n                        str = \"::\";\n                        if (v4part === \"0.0.0.0\") v4part = \"\";\n                        if (v4part === \"0.0.0.1\") v4part = \"1\";\n                        str += v4part;\n                        return str\n                    }\n                }\n                for (word = 0; word < 8; word++) {\n                    if (parts[word] === 0) {\n                        if (word - lastzero > 1) {\n                            len = 0\n                        }\n                        lastzero = word;\n                        len++\n                    }\n                    if (len > longest) {\n                        longest = len;\n                        zstart = word - longest + 1\n                    }\n                }\n                for (word = 0; word < 8; word++) {\n                    if (longest > 1) {\n                        if (parts[word] === 0 && word >= zstart && word < zstart + longest) {\n                            if (word === zstart) {\n                                str += \":\";\n                                if (zstart === 0) str += \":\"\n                            }\n                            continue\n                        }\n                    }\n                    str += Number(_ntohs(parts[word] & 65535)).toString(16);\n                    str += word < 7 ? \":\" : \"\"\n                }\n                return str\n            };\n            var readSockaddr = (sa, salen) => {\n                var family = HEAP16[sa >>> 1 >>> 0];\n                var port = _ntohs(HEAPU16[sa + 2 >>> 1 >>> 0]);\n                var addr;\n                switch (family) {\n                    case 2:\n                        if (salen !== 16) {\n                            return {\n                                errno: 28\n                            }\n                        }\n                        addr = HEAP32[sa + 4 >>> 2 >>> 0];\n                        addr = inetNtop4(addr);\n                        break;\n                    case 10:\n                        if (salen !== 28) {\n                            return {\n                                errno: 28\n                            }\n                        }\n                        addr = [HEAP32[sa + 8 >>> 2 >>> 0], HEAP32[sa + 12 >>> 2 >>> 0], HEAP32[sa + 16 >>> 2 >>> 0], HEAP32[sa + 20 >>> 2 >>> 0]];\n                        addr = inetNtop6(addr);\n                        break;\n                    default:\n                        return {\n                            errno: 5\n                        }\n                }\n                return {\n                    family,\n                    addr,\n                    port\n                }\n            };\n            var getSocketAddress = (addrp, addrlen) => {\n                var info = readSockaddr(addrp, addrlen);\n                if (info.errno) throw new FS.ErrnoError(info.errno);\n                info.addr = DNS.lookup_addr(info.addr) || info.addr;\n                return info\n            };\n\n            function ___syscall_bind(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var info = getSocketAddress(addr, addrlen);\n                    sock.sock_ops.bind(sock, info.addr, info.port);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_bind.sig = \"iippiii\";\n\n            function ___syscall_chdir(path) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.chdir(path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_chdir.sig = \"ip\";\n\n            function ___syscall_chmod(path, mode) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.chmod(path, mode);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_chmod.sig = \"ipi\";\n\n            function ___syscall_connect(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var info = getSocketAddress(addr, addrlen);\n                    sock.sock_ops.connect(sock, info.addr, info.port);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_connect.sig = \"iippiii\";\n\n            function ___syscall_dup(fd) {\n                try {\n                    var old = SYSCALLS.getStreamFromFD(fd);\n                    return FS.dupStream(old).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_dup.sig = \"ii\";\n\n            function ___syscall_dup3(fd, newfd, flags) {\n                try {\n                    var old = SYSCALLS.getStreamFromFD(fd);\n                    if (old.fd === newfd) return -28;\n                    if (newfd < 0 || newfd >= FS.MAX_OPEN_FDS) return -8;\n                    var existing = FS.getStream(newfd);\n                    if (existing) FS.close(existing);\n                    return FS.dupStream(old, newfd).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_dup3.sig = \"iiii\";\n\n            function ___syscall_faccessat(dirfd, path, amode, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (amode & ~7) {\n                        return -28\n                    }\n                    var lookup = FS.lookupPath(path, {\n                        follow: true\n                    });\n                    var node = lookup.node;\n                    if (!node) {\n                        return -44\n                    }\n                    var perms = \"\";\n                    if (amode & 4) perms += \"r\";\n                    if (amode & 2) perms += \"w\";\n                    if (amode & 1) perms += \"x\";\n                    if (perms && FS.nodePermissions(node, perms)) {\n                        return -2\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_faccessat.sig = \"iipii\";\n            var ___syscall_fadvise64 = (fd, offset, len, advice) => 0;\n            ___syscall_fadvise64.sig = \"iiiiiii\";\n\n            function ___syscall_fallocate(fd, mode, offset_low, offset_high, len_low, len_high) {\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                var len = convertI32PairToI53Checked(len_low, len_high);\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.allocate(stream, offset, len);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fallocate.sig = \"iiiiiii\";\n\n            function ___syscall_fchdir(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.chdir(stream.path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchdir.sig = \"ii\";\n\n            function ___syscall_fchmod(fd, mode) {\n                try {\n                    FS.fchmod(fd, mode);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchmod.sig = \"iii\";\n\n            function ___syscall_fchmodat2(dirfd, path, mode, flags) {\n                path >>>= 0;\n                try {\n                    var nofollow = flags & 256;\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    FS.chmod(path, mode, nofollow);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchmodat2.sig = \"iipii\";\n\n            function ___syscall_fchown32(fd, owner, group) {\n                try {\n                    FS.fchown(fd, owner, group);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchown32.sig = \"iiii\";\n\n            function ___syscall_fchownat(dirfd, path, owner, group, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    var nofollow = flags & 256;\n                    flags = flags & ~256;\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    (nofollow ? FS.lchown : FS.chown)(path, owner, group);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fchownat.sig = \"iipiii\";\n            var syscallGetVarargI = () => {\n                var ret = HEAP32[+SYSCALLS.varargs >>> 2 >>> 0];\n                SYSCALLS.varargs += 4;\n                return ret\n            };\n            var syscallGetVarargP = syscallGetVarargI;\n\n            function ___syscall_fcntl64(fd, cmd, varargs) {\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    switch (cmd) {\n                        case 0: {\n                            var arg = syscallGetVarargI();\n                            if (arg < 0) {\n                                return -28\n                            }\n                            while (FS.streams[arg]) {\n                                arg++\n                            }\n                            var newStream;\n                            newStream = FS.dupStream(stream, arg);\n                            return newStream.fd\n                        }\n                        case 1:\n                        case 2:\n                            return 0;\n                        case 3:\n                            return stream.flags;\n                        case 4: {\n                            var arg = syscallGetVarargI();\n                            stream.flags |= arg;\n                            return 0\n                        }\n                        case 12: {\n                            var arg = syscallGetVarargP();\n                            var offset = 0;\n                            HEAP16[arg + offset >>> 1 >>> 0] = 2;\n                            return 0\n                        }\n                        case 13:\n                        case 14:\n                            return 0\n                    }\n                    return -28\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fcntl64.sig = \"iiip\";\n\n            function ___syscall_fdatasync(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fdatasync.sig = \"ii\";\n\n            function ___syscall_fstat64(fd, buf) {\n                buf >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return SYSCALLS.doStat(FS.stat, stream.path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fstat64.sig = \"iip\";\n\n            function ___syscall_statfs64(path, size, buf) {\n                path >>>= 0;\n                size >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    HEAP32[buf + 4 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 40 >>> 2 >>> 0] = 4096;\n                    HEAP32[buf + 8 >>> 2 >>> 0] = 1e6;\n                    HEAP32[buf + 12 >>> 2 >>> 0] = 5e5;\n                    HEAP32[buf + 16 >>> 2 >>> 0] = 5e5;\n                    HEAP32[buf + 20 >>> 2 >>> 0] = FS.nextInode;\n                    HEAP32[buf + 24 >>> 2 >>> 0] = 1e6;\n                    HEAP32[buf + 28 >>> 2 >>> 0] = 42;\n                    HEAP32[buf + 44 >>> 2 >>> 0] = 2;\n                    HEAP32[buf + 36 >>> 2 >>> 0] = 255;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_statfs64.sig = \"ippp\";\n\n            function ___syscall_fstatfs64(fd, size, buf) {\n                size >>>= 0;\n                buf >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    return ___syscall_statfs64(0, size, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_fstatfs64.sig = \"iipp\";\n\n            function ___syscall_ftruncate64(fd, length_low, length_high) {\n                var length = convertI32PairToI53Checked(length_low, length_high);\n                try {\n                    if (isNaN(length)) return 61;\n                    FS.ftruncate(fd, length);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_ftruncate64.sig = \"iiii\";\n            var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n            Module[\"stringToUTF8\"] = stringToUTF8;\n\n            function ___syscall_getcwd(buf, size) {\n                buf >>>= 0;\n                size >>>= 0;\n                try {\n                    if (size === 0) return -28;\n                    var cwd = FS.cwd();\n                    var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n                    if (size < cwdLengthInBytes) return -68;\n                    stringToUTF8(cwd, buf, size);\n                    return cwdLengthInBytes\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getcwd.sig = \"ipp\";\n\n            function ___syscall_getdents64(fd, dirp, count) {\n                dirp >>>= 0;\n                count >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    stream.getdents ||= FS.readdir(stream.path);\n                    var struct_size = 280;\n                    var pos = 0;\n                    var off = FS.llseek(stream, 0, 1);\n                    var idx = Math.floor(off / struct_size);\n                    while (idx < stream.getdents.length && pos + struct_size <= count) {\n                        var id;\n                        var type;\n                        var name = stream.getdents[idx];\n                        if (name === \".\") {\n                            id = stream.node.id;\n                            type = 4\n                        } else if (name === \"..\") {\n                            var lookup = FS.lookupPath(stream.path, {\n                                parent: true\n                            });\n                            id = lookup.node.id;\n                            type = 4\n                        } else {\n                            var child = FS.lookupNode(stream.node, name);\n                            id = child.id;\n                            type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8\n                        }\n                        tempI64 = [id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos >>> 2 >>> 0] = tempI64[0], HEAP32[dirp + pos + 4 >>> 2 >>> 0] = tempI64[1];\n                        tempI64 = [(idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[dirp + pos + 12 >>> 2 >>> 0] = tempI64[1];\n                        HEAP16[dirp + pos + 16 >>> 1 >>> 0] = 280;\n                        HEAP8[dirp + pos + 18 >>> 0] = type;\n                        stringToUTF8(name, dirp + pos + 19, 256);\n                        pos += struct_size;\n                        idx += 1\n                    }\n                    FS.llseek(stream, idx * struct_size, 0);\n                    return pos\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getdents64.sig = \"iipp\";\n\n            function ___syscall_getpeername(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (!sock.daddr) {\n                        return -53\n                    }\n                    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getpeername.sig = \"iippiii\";\n\n            function ___syscall_getsockname(fd, addr, addrlen, d1, d2, d3) {\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || \"0.0.0.0\"), sock.sport, addrlen);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getsockname.sig = \"iippiii\";\n\n            function ___syscall_getsockopt(fd, level, optname, optval, optlen, d1) {\n                optval >>>= 0;\n                optlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (level === 1) {\n                        if (optname === 4) {\n                            HEAP32[optval >>> 2 >>> 0] = sock.error;\n                            HEAP32[optlen >>> 2 >>> 0] = 4;\n                            sock.error = null;\n                            return 0\n                        }\n                    }\n                    return -50\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_getsockopt.sig = \"iiiippi\";\n\n            function ___syscall_ioctl(fd, op, varargs) {\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    switch (op) {\n                        case 21509: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21505: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tcgets) {\n                                var termios = stream.tty.ops.ioctl_tcgets(stream);\n                                var argp = syscallGetVarargP();\n                                HEAP32[argp >>> 2 >>> 0] = termios.c_iflag || 0;\n                                HEAP32[argp + 4 >>> 2 >>> 0] = termios.c_oflag || 0;\n                                HEAP32[argp + 8 >>> 2 >>> 0] = termios.c_cflag || 0;\n                                HEAP32[argp + 12 >>> 2 >>> 0] = termios.c_lflag || 0;\n                                for (var i = 0; i < 32; i++) {\n                                    HEAP8[argp + i + 17 >>> 0] = termios.c_cc[i] || 0\n                                }\n                                return 0\n                            }\n                            return 0\n                        }\n                        case 21510:\n                        case 21511:\n                        case 21512: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21506:\n                        case 21507:\n                        case 21508: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tcsets) {\n                                var argp = syscallGetVarargP();\n                                var c_iflag = HEAP32[argp >>> 2 >>> 0];\n                                var c_oflag = HEAP32[argp + 4 >>> 2 >>> 0];\n                                var c_cflag = HEAP32[argp + 8 >>> 2 >>> 0];\n                                var c_lflag = HEAP32[argp + 12 >>> 2 >>> 0];\n                                var c_cc = [];\n                                for (var i = 0; i < 32; i++) {\n                                    c_cc.push(HEAP8[argp + i + 17 >>> 0])\n                                }\n                                return stream.tty.ops.ioctl_tcsets(stream.tty, op, {\n                                    c_iflag,\n                                    c_oflag,\n                                    c_cflag,\n                                    c_lflag,\n                                    c_cc\n                                })\n                            }\n                            return 0\n                        }\n                        case 21519: {\n                            if (!stream.tty) return -59;\n                            var argp = syscallGetVarargP();\n                            HEAP32[argp >>> 2 >>> 0] = 0;\n                            return 0\n                        }\n                        case 21520: {\n                            if (!stream.tty) return -59;\n                            return -28\n                        }\n                        case 21531: {\n                            var argp = syscallGetVarargP();\n                            return FS.ioctl(stream, op, argp)\n                        }\n                        case 21523: {\n                            if (!stream.tty) return -59;\n                            if (stream.tty.ops.ioctl_tiocgwinsz) {\n                                var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n                                var argp = syscallGetVarargP();\n                                HEAP16[argp >>> 1 >>> 0] = winsize[0];\n                                HEAP16[argp + 2 >>> 1 >>> 0] = winsize[1]\n                            }\n                            return 0\n                        }\n                        case 21524: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        case 21515: {\n                            if (!stream.tty) return -59;\n                            return 0\n                        }\n                        default:\n                            return -28\n                    }\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_ioctl.sig = \"iiip\";\n\n            function ___syscall_listen(fd, backlog) {\n                try {\n                    var sock = getSocketFromFD(fd);\n                    sock.sock_ops.listen(sock, backlog);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_listen.sig = \"iiiiiii\";\n\n            function ___syscall_lstat64(path, buf) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    return SYSCALLS.doStat(FS.lstat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_lstat64.sig = \"ipp\";\n\n            function ___syscall_mkdirat(dirfd, path, mode) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    path = PATH.normalize(path);\n                    if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n                    FS.mkdir(path, mode, 0);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_mkdirat.sig = \"iipi\";\n\n            function ___syscall_mknodat(dirfd, path, mode, dev) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    switch (mode & 61440) {\n                        case 32768:\n                        case 8192:\n                        case 24576:\n                        case 4096:\n                        case 49152:\n                            break;\n                        default:\n                            return -28\n                    }\n                    FS.mknod(path, mode, dev);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_mknodat.sig = \"iipii\";\n\n            function ___syscall_newfstatat(dirfd, path, buf, flags) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    var nofollow = flags & 256;\n                    var allowEmpty = flags & 4096;\n                    flags = flags & ~6400;\n                    path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n                    return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_newfstatat.sig = \"iippi\";\n\n            function ___syscall_openat(dirfd, path, flags, varargs) {\n                path >>>= 0;\n                varargs >>>= 0;\n                SYSCALLS.varargs = varargs;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    var mode = varargs ? syscallGetVarargI() : 0;\n                    return FS.open(path, flags, mode).fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_openat.sig = \"iipip\";\n            var PIPEFS = {\n                BUCKET_BUFFER_SIZE: 8192,\n                mount(mount) {\n                    return FS.createNode(null, \"/\", 16384 | 511, 0)\n                },\n                createPipe() {\n                    var pipe = {\n                        buckets: [],\n                        refcnt: 2\n                    };\n                    pipe.buckets.push({\n                        buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                        offset: 0,\n                        roffset: 0\n                    });\n                    var rName = PIPEFS.nextname();\n                    var wName = PIPEFS.nextname();\n                    var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);\n                    var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);\n                    rNode.pipe = pipe;\n                    wNode.pipe = pipe;\n                    var readableStream = FS.createStream({\n                        path: rName,\n                        node: rNode,\n                        flags: 0,\n                        seekable: false,\n                        stream_ops: PIPEFS.stream_ops\n                    });\n                    rNode.stream = readableStream;\n                    var writableStream = FS.createStream({\n                        path: wName,\n                        node: wNode,\n                        flags: 1,\n                        seekable: false,\n                        stream_ops: PIPEFS.stream_ops\n                    });\n                    wNode.stream = writableStream;\n                    return {\n                        readable_fd: readableStream.fd,\n                        writable_fd: writableStream.fd\n                    }\n                },\n                stream_ops: {\n                    poll(stream) {\n                        var pipe = stream.node.pipe;\n                        if ((stream.flags & 2097155) === 1) {\n                            return 256 | 4\n                        }\n                        if (pipe.buckets.length > 0) {\n                            for (var i = 0; i < pipe.buckets.length; i++) {\n                                var bucket = pipe.buckets[i];\n                                if (bucket.offset - bucket.roffset > 0) {\n                                    return 64 | 1\n                                }\n                            }\n                        }\n                        return 0\n                    },\n                    ioctl(stream, request, varargs) {\n                        return 28\n                    },\n                    fsync(stream) {\n                        return 28\n                    },\n                    read(stream, buffer, offset, length, position) {\n                        var pipe = stream.node.pipe;\n                        var currentLength = 0;\n                        for (var i = 0; i < pipe.buckets.length; i++) {\n                            var bucket = pipe.buckets[i];\n                            currentLength += bucket.offset - bucket.roffset\n                        }\n                        var data = buffer.subarray(offset, offset + length);\n                        if (length <= 0) {\n                            return 0\n                        }\n                        if (currentLength == 0) {\n                            throw new FS.ErrnoError(6)\n                        }\n                        var toRead = Math.min(currentLength, length);\n                        var totalRead = toRead;\n                        var toRemove = 0;\n                        for (var i = 0; i < pipe.buckets.length; i++) {\n                            var currBucket = pipe.buckets[i];\n                            var bucketSize = currBucket.offset - currBucket.roffset;\n                            if (toRead <= bucketSize) {\n                                var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n                                if (toRead < bucketSize) {\n                                    tmpSlice = tmpSlice.subarray(0, toRead);\n                                    currBucket.roffset += toRead\n                                } else {\n                                    toRemove++\n                                }\n                                data.set(tmpSlice);\n                                break\n                            } else {\n                                var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);\n                                data.set(tmpSlice);\n                                data = data.subarray(tmpSlice.byteLength);\n                                toRead -= tmpSlice.byteLength;\n                                toRemove++\n                            }\n                        }\n                        if (toRemove && toRemove == pipe.buckets.length) {\n                            toRemove--;\n                            pipe.buckets[toRemove].offset = 0;\n                            pipe.buckets[toRemove].roffset = 0\n                        }\n                        pipe.buckets.splice(0, toRemove);\n                        return totalRead\n                    },\n                    write(stream, buffer, offset, length, position) {\n                        var pipe = stream.node.pipe;\n                        var data = buffer.subarray(offset, offset + length);\n                        var dataLen = data.byteLength;\n                        if (dataLen <= 0) {\n                            return 0\n                        }\n                        var currBucket = null;\n                        if (pipe.buckets.length == 0) {\n                            currBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: 0,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(currBucket)\n                        } else {\n                            currBucket = pipe.buckets[pipe.buckets.length - 1]\n                        }\n                        assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);\n                        var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;\n                        if (freeBytesInCurrBuffer >= dataLen) {\n                            currBucket.buffer.set(data, currBucket.offset);\n                            currBucket.offset += dataLen;\n                            return dataLen\n                        } else if (freeBytesInCurrBuffer > 0) {\n                            currBucket.buffer.set(data.subarray(0, freeBytesInCurrBuffer), currBucket.offset);\n                            currBucket.offset += freeBytesInCurrBuffer;\n                            data = data.subarray(freeBytesInCurrBuffer, data.byteLength)\n                        }\n                        var numBuckets = data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;\n                        var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;\n                        for (var i = 0; i < numBuckets; i++) {\n                            var newBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: PIPEFS.BUCKET_BUFFER_SIZE,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(newBucket);\n                            newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));\n                            data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength)\n                        }\n                        if (remElements > 0) {\n                            var newBucket = {\n                                buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),\n                                offset: data.byteLength,\n                                roffset: 0\n                            };\n                            pipe.buckets.push(newBucket);\n                            newBucket.buffer.set(data)\n                        }\n                        return dataLen\n                    },\n                    close(stream) {\n                        var pipe = stream.node.pipe;\n                        pipe.refcnt--;\n                        if (pipe.refcnt === 0) {\n                            pipe.buckets = null\n                        }\n                    }\n                },\n                nextname() {\n                    if (!PIPEFS.nextname.current) {\n                        PIPEFS.nextname.current = 0\n                    }\n                    return \"pipe[\" + PIPEFS.nextname.current++ + \"]\"\n                }\n            };\n\n            function ___syscall_pipe(fdPtr) {\n                fdPtr >>>= 0;\n                try {\n                    if (fdPtr == 0) {\n                        throw new FS.ErrnoError(21)\n                    }\n                    var res = PIPEFS.createPipe();\n                    HEAP32[fdPtr >>> 2 >>> 0] = res.readable_fd;\n                    HEAP32[fdPtr + 4 >>> 2 >>> 0] = res.writable_fd;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_pipe.sig = \"ip\";\n\n            function ___syscall_poll(fds, nfds, timeout) {\n                fds >>>= 0;\n                try {\n                    var nonzero = 0;\n                    for (var i = 0; i < nfds; i++) {\n                        var pollfd = fds + 8 * i;\n                        var fd = HEAP32[pollfd >>> 2 >>> 0];\n                        var events = HEAP16[pollfd + 4 >>> 1 >>> 0];\n                        var mask = 32;\n                        var stream = FS.getStream(fd);\n                        if (stream) {\n                            mask = SYSCALLS.DEFAULT_POLLMASK;\n                            if (stream.stream_ops.poll) {\n                                mask = stream.stream_ops.poll(stream, -1)\n                            }\n                        }\n                        mask &= events | 8 | 16;\n                        if (mask) nonzero++;\n                        HEAP16[pollfd + 6 >>> 1 >>> 0] = mask\n                    }\n                    return nonzero\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_poll.sig = \"ipii\";\n\n            function ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n                path >>>= 0;\n                buf >>>= 0;\n                bufsize >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (bufsize <= 0) return -28;\n                    var ret = FS.readlink(path);\n                    var len = Math.min(bufsize, lengthBytesUTF8(ret));\n                    var endChar = HEAP8[buf + len >>> 0];\n                    stringToUTF8(ret, buf, bufsize + 1);\n                    HEAP8[buf + len >>> 0] = endChar;\n                    return len\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_readlinkat.sig = \"iippp\";\n\n            function ___syscall_recvfrom(fd, buf, len, flags, addr, addrlen) {\n                buf >>>= 0;\n                len >>>= 0;\n                addr >>>= 0;\n                addrlen >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var msg = sock.sock_ops.recvmsg(sock, len);\n                    if (!msg) return 0;\n                    if (addr) {\n                        var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen)\n                    }\n                    HEAPU8.set(msg.buffer, buf >>> 0);\n                    return msg.buffer.byteLength\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_recvfrom.sig = \"iippipp\";\n\n            function ___syscall_recvmsg(fd, message, flags, d1, d2, d3) {\n                message >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n                    var num = HEAP32[message + 12 >>> 2 >>> 0];\n                    var total = 0;\n                    for (var i = 0; i < num; i++) {\n                        total += HEAP32[iov + (8 * i + 4) >>> 2 >>> 0]\n                    }\n                    var msg = sock.sock_ops.recvmsg(sock, total);\n                    if (!msg) return 0;\n                    var name = HEAPU32[message >>> 2 >>> 0];\n                    if (name) {\n                        var errno = writeSockaddr(name, sock.family, DNS.lookup_name(msg.addr), msg.port)\n                    }\n                    var bytesRead = 0;\n                    var bytesRemaining = msg.buffer.byteLength;\n                    for (var i = 0; bytesRemaining > 0 && i < num; i++) {\n                        var iovbase = HEAPU32[iov + (8 * i + 0) >>> 2 >>> 0];\n                        var iovlen = HEAP32[iov + (8 * i + 4) >>> 2 >>> 0];\n                        if (!iovlen) {\n                            continue\n                        }\n                        var length = Math.min(iovlen, bytesRemaining);\n                        var buf = msg.buffer.subarray(bytesRead, bytesRead + length);\n                        HEAPU8.set(buf, iovbase + bytesRead >>> 0);\n                        bytesRead += length;\n                        bytesRemaining -= length\n                    }\n                    return bytesRead\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_recvmsg.sig = \"iipiiii\";\n\n            function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {\n                oldpath >>>= 0;\n                newpath >>>= 0;\n                try {\n                    oldpath = SYSCALLS.getStr(oldpath);\n                    newpath = SYSCALLS.getStr(newpath);\n                    oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);\n                    newpath = SYSCALLS.calculateAt(newdirfd, newpath);\n                    FS.rename(oldpath, newpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_renameat.sig = \"iipip\";\n\n            function ___syscall_rmdir(path) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    FS.rmdir(path);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_rmdir.sig = \"ip\";\n\n            function ___syscall_sendmsg(fd, message, flags, d1, d2, d3) {\n                message >>>= 0;\n                d1 >>>= 0;\n                d2 >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    var iov = HEAPU32[message + 8 >>> 2 >>> 0];\n                    var num = HEAP32[message + 12 >>> 2 >>> 0];\n                    var addr, port;\n                    var name = HEAPU32[message >>> 2 >>> 0];\n                    var namelen = HEAP32[message + 4 >>> 2 >>> 0];\n                    if (name) {\n                        var info = getSocketAddress(name, namelen);\n                        port = info.port;\n                        addr = info.addr\n                    }\n                    var total = 0;\n                    for (var i = 0; i < num; i++) {\n                        total += HEAP32[iov + (8 * i + 4) >>> 2 >>> 0]\n                    }\n                    var view = new Uint8Array(total);\n                    var offset = 0;\n                    for (var i = 0; i < num; i++) {\n                        var iovbase = HEAPU32[iov + (8 * i + 0) >>> 2 >>> 0];\n                        var iovlen = HEAP32[iov + (8 * i + 4) >>> 2 >>> 0];\n                        for (var j = 0; j < iovlen; j++) {\n                            view[offset++] = HEAP8[iovbase + j >>> 0]\n                        }\n                    }\n                    return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_sendmsg.sig = \"iipippi\";\n\n            function ___syscall_sendto(fd, message, length, flags, addr, addr_len) {\n                message >>>= 0;\n                length >>>= 0;\n                addr >>>= 0;\n                addr_len >>>= 0;\n                try {\n                    var sock = getSocketFromFD(fd);\n                    if (!addr) {\n                        return FS.write(sock.stream, HEAP8, message, length)\n                    }\n                    var dest = getSocketAddress(addr, addr_len);\n                    return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_sendto.sig = \"iippipp\";\n\n            function ___syscall_socket(domain, type, protocol) {\n                try {\n                    var sock = SOCKFS.createSocket(domain, type, protocol);\n                    return sock.stream.fd\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_socket.sig = \"iiiiiii\";\n\n            function ___syscall_stat64(path, buf) {\n                path >>>= 0;\n                buf >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    return SYSCALLS.doStat(FS.stat, path, buf)\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_stat64.sig = \"ipp\";\n\n            function ___syscall_symlink(target, linkpath) {\n                target >>>= 0;\n                linkpath >>>= 0;\n                try {\n                    target = SYSCALLS.getStr(target);\n                    linkpath = SYSCALLS.getStr(linkpath);\n                    FS.symlink(target, linkpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_symlink.sig = \"ipp\";\n\n            function ___syscall_symlinkat(target, newdirfd, linkpath) {\n                target >>>= 0;\n                linkpath >>>= 0;\n                try {\n                    linkpath = SYSCALLS.calculateAt(newdirfd, linkpath);\n                    FS.symlink(target, linkpath);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_symlinkat.sig = \"ipip\";\n\n            function ___syscall_truncate64(path, length_low, length_high) {\n                path >>>= 0;\n                var length = convertI32PairToI53Checked(length_low, length_high);\n                try {\n                    if (isNaN(length)) return 61;\n                    path = SYSCALLS.getStr(path);\n                    FS.truncate(path, length);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_truncate64.sig = \"ipii\";\n\n            function ___syscall_unlinkat(dirfd, path, flags) {\n                path >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path);\n                    if (flags === 0) {\n                        FS.unlink(path)\n                    } else if (flags === 512) {\n                        FS.rmdir(path)\n                    } else {\n                        abort(\"Invalid flags passed to unlinkat\")\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_unlinkat.sig = \"iipi\";\n            var readI53FromI64 = ptr => HEAPU32[ptr >>> 2 >>> 0] + HEAP32[ptr + 4 >>> 2 >>> 0] * 4294967296;\n\n            function ___syscall_utimensat(dirfd, path, times, flags) {\n                path >>>= 0;\n                times >>>= 0;\n                try {\n                    path = SYSCALLS.getStr(path);\n                    path = SYSCALLS.calculateAt(dirfd, path, true);\n                    var now = Date.now(),\n                        atime, mtime;\n                    if (!times) {\n                        atime = now;\n                        mtime = now\n                    } else {\n                        var seconds = readI53FromI64(times);\n                        var nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n                        if (nanoseconds == 1073741823) {\n                            atime = now\n                        } else if (nanoseconds == 1073741822) {\n                            atime = -1\n                        } else {\n                            atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3)\n                        }\n                        times += 16;\n                        seconds = readI53FromI64(times);\n                        nanoseconds = HEAP32[times + 8 >>> 2 >>> 0];\n                        if (nanoseconds == 1073741823) {\n                            mtime = now\n                        } else if (nanoseconds == 1073741822) {\n                            mtime = -1\n                        } else {\n                            mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3)\n                        }\n                    }\n                    if (mtime != -1 || atime != -1) {\n                        FS.utime(path, atime, mtime)\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            ___syscall_utimensat.sig = \"iippi\";\n            var ___table_base = new WebAssembly.Global({\n                value: \"i32\",\n                mutable: false\n            }, 1);\n            var __abort_js = () => {\n                abort(\"\")\n            };\n            __abort_js.sig = \"v\";\n            var ENV = {};\n            var stackAlloc = sz => __emscripten_stack_alloc(sz);\n            Module[\"stackAlloc\"] = stackAlloc;\n            var stringToUTF8OnStack = str => {\n                var size = lengthBytesUTF8(str) + 1;\n                var ret = stackAlloc(size);\n                stringToUTF8(str, ret, size);\n                return ret\n            };\n            var stackSave = () => _emscripten_stack_get_current();\n            var stackRestore = val => __emscripten_stack_restore(val);\n            var dlSetError = msg => {\n                var sp = stackSave();\n                var cmsg = stringToUTF8OnStack(msg);\n                ___dl_seterr(cmsg, 0);\n                stackRestore(sp)\n            };\n            var dlopenInternal = (handle, jsflags) => {\n                var filename = UTF8ToString(handle + 36);\n                var flags = HEAP32[handle + 4 >>> 2 >>> 0];\n                filename = PATH.normalize(filename);\n                var searchpaths = [];\n                var global = Boolean(flags & 256);\n                var localScope = global ? null : {};\n                var combinedFlags = {\n                    global,\n                    nodelete: Boolean(flags & 4096),\n                    loadAsync: jsflags.loadAsync\n                };\n                if (jsflags.loadAsync) {\n                    return loadDynamicLibrary(filename, combinedFlags, localScope, handle)\n                }\n                try {\n                    return loadDynamicLibrary(filename, combinedFlags, localScope, handle)\n                } catch (e) {\n                    dlSetError(`Could not load dynamic lib: ${filename}\\n${e}`);\n                    return 0\n                }\n            };\n\n            function __dlopen_js(handle) {\n                handle >>>= 0;\n                return dlopenInternal(handle, {\n                    loadAsync: false\n                })\n            }\n            __dlopen_js.sig = \"pp\";\n\n            function __dlsym_js(handle, symbol, symbolIndex) {\n                handle >>>= 0;\n                symbol >>>= 0;\n                symbolIndex >>>= 0;\n                symbol = UTF8ToString(symbol);\n                var result;\n                var newSymIndex;\n                var lib = LDSO.loadedLibsByHandle[handle];\n                if (!lib.exports.hasOwnProperty(symbol) || lib.exports[symbol].stub) {\n                    dlSetError(`Tried to lookup unknown symbol \"${symbol}\" in dynamic lib: ${lib.name}`);\n                    return 0\n                }\n                newSymIndex = Object.keys(lib.exports).indexOf(symbol);\n                var origSym = \"orig$\" + symbol;\n                result = lib.exports[origSym];\n                if (result) {\n                    newSymIndex = Object.keys(lib.exports).indexOf(origSym)\n                } else result = lib.exports[symbol];\n                if (typeof result == \"function\") {\n                    var addr = getFunctionAddress(result);\n                    if (addr) {\n                        result = addr\n                    } else {\n                        result = addFunction(result, result.sig);\n                        HEAPU32[symbolIndex >>> 2 >>> 0] = newSymIndex\n                    }\n                }\n                return result\n            }\n            __dlsym_js.sig = \"pppp\";\n\n            function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {\n                primitiveType >>>= 0;\n                name >>>= 0;\n                size >>>= 0\n            }\n            __embind_register_bigint.sig = \"vpppiiii\";\n            var embind_init_charCodes = () => {\n                var codes = new Array(256);\n                for (var i = 0; i < 256; ++i) {\n                    codes[i] = String.fromCharCode(i)\n                }\n                embind_charCodes = codes\n            };\n            var embind_charCodes;\n            var readLatin1String = ptr => {\n                var ret = \"\";\n                var c = ptr;\n                while (HEAPU8[c >>> 0]) {\n                    ret += embind_charCodes[HEAPU8[c++ >>> 0]]\n                }\n                return ret\n            };\n            var awaitingDependencies = {};\n            var registeredTypes = {};\n            var typeDependencies = {};\n            var BindingError;\n            var throwBindingError = message => {\n                throw new BindingError(message)\n            };\n            var InternalError;\n            var throwInternalError = message => {\n                throw new InternalError(message)\n            };\n            var whenDependentTypesAreResolved = (myTypes, dependentTypes, getTypeConverters) => {\n                myTypes.forEach(type => typeDependencies[type] = dependentTypes);\n\n                function onComplete(typeConverters) {\n                    var myTypeConverters = getTypeConverters(typeConverters);\n                    if (myTypeConverters.length !== myTypes.length) {\n                        throwInternalError(\"Mismatched type converter count\")\n                    }\n                    for (var i = 0; i < myTypes.length; ++i) {\n                        registerType(myTypes[i], myTypeConverters[i])\n                    }\n                }\n                var typeConverters = new Array(dependentTypes.length);\n                var unregisteredTypes = [];\n                var registered = 0;\n                dependentTypes.forEach((dt, i) => {\n                    if (registeredTypes.hasOwnProperty(dt)) {\n                        typeConverters[i] = registeredTypes[dt]\n                    } else {\n                        unregisteredTypes.push(dt);\n                        if (!awaitingDependencies.hasOwnProperty(dt)) {\n                            awaitingDependencies[dt] = []\n                        }\n                        awaitingDependencies[dt].push(() => {\n                            typeConverters[i] = registeredTypes[dt];\n                            ++registered;\n                            if (registered === unregisteredTypes.length) {\n                                onComplete(typeConverters)\n                            }\n                        })\n                    }\n                });\n                if (0 === unregisteredTypes.length) {\n                    onComplete(typeConverters)\n                }\n            };\n\n            function sharedRegisterType(rawType, registeredInstance, options = {}) {\n                var name = registeredInstance.name;\n                if (!rawType) {\n                    throwBindingError(`type \"${name}\" must have a positive integer typeid pointer`)\n                }\n                if (registeredTypes.hasOwnProperty(rawType)) {\n                    if (options.ignoreDuplicateRegistrations) {\n                        return\n                    } else {\n                        throwBindingError(`Cannot register type '${name}' twice`)\n                    }\n                }\n                registeredTypes[rawType] = registeredInstance;\n                delete typeDependencies[rawType];\n                if (awaitingDependencies.hasOwnProperty(rawType)) {\n                    var callbacks = awaitingDependencies[rawType];\n                    delete awaitingDependencies[rawType];\n                    callbacks.forEach(cb => cb())\n                }\n            }\n\n            function registerType(rawType, registeredInstance, options = {}) {\n                return sharedRegisterType(rawType, registeredInstance, options)\n            }\n            var GenericWireTypeSize = 8;\n\n            function __embind_register_bool(rawType, name, trueValue, falseValue) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: function(wt) {\n                        return !!wt\n                    },\n                    toWireType: function(destructors, o) {\n                        return o ? trueValue : falseValue\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: function(pointer) {\n                        return this[\"fromWireType\"](HEAPU8[pointer >>> 0])\n                    },\n                    destructorFunction: null\n                })\n            }\n            __embind_register_bool.sig = \"vppii\";\n            var emval_freelist = [];\n            var emval_handles = [];\n\n            function __emval_decref(handle) {\n                handle >>>= 0;\n                if (handle > 9 && 0 === --emval_handles[handle + 1]) {\n                    emval_handles[handle] = undefined;\n                    emval_freelist.push(handle)\n                }\n            }\n            __emval_decref.sig = \"vp\";\n            var count_emval_handles = () => emval_handles.length / 2 - 5 - emval_freelist.length;\n            var init_emval = () => {\n                emval_handles.push(0, 1, undefined, 1, null, 1, true, 1, false, 1);\n                Module[\"count_emval_handles\"] = count_emval_handles\n            };\n            var Emval = {\n                toValue: handle => {\n                    if (!handle) {\n                        throwBindingError(\"Cannot use deleted val. handle = \" + handle)\n                    }\n                    return emval_handles[handle]\n                },\n                toHandle: value => {\n                    switch (value) {\n                        case undefined:\n                            return 2;\n                        case null:\n                            return 4;\n                        case true:\n                            return 6;\n                        case false:\n                            return 8;\n                        default: {\n                            const handle = emval_freelist.pop() || emval_handles.length;\n                            emval_handles[handle] = value;\n                            emval_handles[handle + 1] = 1;\n                            return handle\n                        }\n                    }\n                }\n            };\n\n            function readPointer(pointer) {\n                return this[\"fromWireType\"](HEAPU32[pointer >>> 2 >>> 0])\n            }\n            var EmValType = {\n                name: \"emscripten::val\",\n                fromWireType: handle => {\n                    var rv = Emval.toValue(handle);\n                    __emval_decref(handle);\n                    return rv\n                },\n                toWireType: (destructors, value) => Emval.toHandle(value),\n                argPackAdvance: GenericWireTypeSize,\n                readValueFromPointer: readPointer,\n                destructorFunction: null\n            };\n\n            function __embind_register_emval(rawType) {\n                rawType >>>= 0;\n                return registerType(rawType, EmValType)\n            }\n            __embind_register_emval.sig = \"vp\";\n            var embindRepr = v => {\n                if (v === null) {\n                    return \"null\"\n                }\n                var t = typeof v;\n                if (t === \"object\" || t === \"array\" || t === \"function\") {\n                    return v.toString()\n                } else {\n                    return \"\" + v\n                }\n            };\n            var floatReadValueFromPointer = (name, width) => {\n                switch (width) {\n                    case 4:\n                        return function(pointer) {\n                            return this[\"fromWireType\"](HEAPF32[pointer >>> 2 >>> 0])\n                        };\n                    case 8:\n                        return function(pointer) {\n                            return this[\"fromWireType\"](HEAPF64[pointer >>> 3 >>> 0])\n                        };\n                    default:\n                        throw new TypeError(`invalid float width (${width}): ${name}`)\n                }\n            };\n            var __embind_register_float = function(rawType, name, size) {\n                rawType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: value => value,\n                    toWireType: (destructors, value) => value,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: floatReadValueFromPointer(name, size),\n                    destructorFunction: null\n                })\n            };\n            __embind_register_float.sig = \"vppp\";\n            var integerReadValueFromPointer = (name, width, signed) => {\n                switch (width) {\n                    case 1:\n                        return signed ? pointer => HEAP8[pointer >>> 0] : pointer => HEAPU8[pointer >>> 0];\n                    case 2:\n                        return signed ? pointer => HEAP16[pointer >>> 1 >>> 0] : pointer => HEAPU16[pointer >>> 1 >>> 0];\n                    case 4:\n                        return signed ? pointer => HEAP32[pointer >>> 2 >>> 0] : pointer => HEAPU32[pointer >>> 2 >>> 0];\n                    default:\n                        throw new TypeError(`invalid integer width (${width}): ${name}`)\n                }\n            };\n\n            function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {\n                primitiveType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n                if (maxRange === -1) {\n                    maxRange = 4294967295\n                }\n                var fromWireType = value => value;\n                if (minRange === 0) {\n                    var bitshift = 32 - 8 * size;\n                    fromWireType = value => value << bitshift >>> bitshift\n                }\n                var isUnsignedType = name.includes(\"unsigned\");\n                var checkAssertions = (value, toTypeName) => {};\n                var toWireType;\n                if (isUnsignedType) {\n                    toWireType = function(destructors, value) {\n                        checkAssertions(value, this.name);\n                        return value >>> 0\n                    }\n                } else {\n                    toWireType = function(destructors, value) {\n                        checkAssertions(value, this.name);\n                        return value\n                    }\n                }\n                registerType(primitiveType, {\n                    name,\n                    fromWireType,\n                    toWireType,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: integerReadValueFromPointer(name, size, minRange !== 0),\n                    destructorFunction: null\n                })\n            }\n            __embind_register_integer.sig = \"vpppii\";\n\n            function __embind_register_memory_view(rawType, dataTypeIndex, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];\n                var TA = typeMapping[dataTypeIndex];\n\n                function decodeMemoryView(handle) {\n                    var size = HEAPU32[handle >>> 2 >>> 0];\n                    var data = HEAPU32[handle + 4 >>> 2 >>> 0];\n                    return new TA(HEAP8.buffer, data, size)\n                }\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    name,\n                    fromWireType: decodeMemoryView,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: decodeMemoryView\n                }, {\n                    ignoreDuplicateRegistrations: true\n                })\n            }\n            __embind_register_memory_view.sig = \"vpip\";\n\n            function __embind_register_std_string(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                var stdStringIsUTF8 = name === \"std::string\";\n                registerType(rawType, {\n                    name,\n                    fromWireType(value) {\n                        var length = HEAPU32[value >>> 2 >>> 0];\n                        var payload = value + 4;\n                        var str;\n                        if (stdStringIsUTF8) {\n                            var decodeStartPtr = payload;\n                            for (var i = 0; i <= length; ++i) {\n                                var currentBytePtr = payload + i;\n                                if (i == length || HEAPU8[currentBytePtr >>> 0] == 0) {\n                                    var maxRead = currentBytePtr - decodeStartPtr;\n                                    var stringSegment = UTF8ToString(decodeStartPtr, maxRead);\n                                    if (str === undefined) {\n                                        str = stringSegment\n                                    } else {\n                                        str += String.fromCharCode(0);\n                                        str += stringSegment\n                                    }\n                                    decodeStartPtr = currentBytePtr + 1\n                                }\n                            }\n                        } else {\n                            var a = new Array(length);\n                            for (var i = 0; i < length; ++i) {\n                                a[i] = String.fromCharCode(HEAPU8[payload + i >>> 0])\n                            }\n                            str = a.join(\"\")\n                        }\n                        _free(value);\n                        return str\n                    },\n                    toWireType(destructors, value) {\n                        if (value instanceof ArrayBuffer) {\n                            value = new Uint8Array(value)\n                        }\n                        var length;\n                        var valueIsOfTypeString = typeof value == \"string\";\n                        if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {\n                            throwBindingError(\"Cannot pass non-string to std::string\")\n                        }\n                        if (stdStringIsUTF8 && valueIsOfTypeString) {\n                            length = lengthBytesUTF8(value)\n                        } else {\n                            length = value.length\n                        }\n                        var base = _malloc(4 + length + 1);\n                        var ptr = base + 4;\n                        HEAPU32[base >>> 2 >>> 0] = length;\n                        if (stdStringIsUTF8 && valueIsOfTypeString) {\n                            stringToUTF8(value, ptr, length + 1)\n                        } else {\n                            if (valueIsOfTypeString) {\n                                for (var i = 0; i < length; ++i) {\n                                    var charCode = value.charCodeAt(i);\n                                    if (charCode > 255) {\n                                        _free(ptr);\n                                        throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")\n                                    }\n                                    HEAPU8[ptr + i >>> 0] = charCode\n                                }\n                            } else {\n                                for (var i = 0; i < length; ++i) {\n                                    HEAPU8[ptr + i >>> 0] = value[i]\n                                }\n                            }\n                        }\n                        if (destructors !== null) {\n                            destructors.push(_free, base)\n                        }\n                        return base\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    destructorFunction(ptr) {\n                        _free(ptr)\n                    }\n                })\n            }\n            __embind_register_std_string.sig = \"vpp\";\n            var UTF16Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n            var UTF16ToString = (ptr, maxBytesToRead) => {\n                var endPtr = ptr;\n                var idx = endPtr >> 1;\n                var maxIdx = idx + maxBytesToRead / 2;\n                while (!(idx >= maxIdx) && HEAPU16[idx >>> 0]) ++idx;\n                endPtr = idx << 1;\n                if (endPtr - ptr > 32 && UTF16Decoder) return UTF16Decoder.decode(HEAPU8.subarray(ptr >>> 0, endPtr >>> 0));\n                var str = \"\";\n                for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {\n                    var codeUnit = HEAP16[ptr + i * 2 >>> 1 >>> 0];\n                    if (codeUnit == 0) break;\n                    str += String.fromCharCode(codeUnit)\n                }\n                return str\n            };\n            var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {\n                maxBytesToWrite ??= 2147483647;\n                if (maxBytesToWrite < 2) return 0;\n                maxBytesToWrite -= 2;\n                var startPtr = outPtr;\n                var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n                for (var i = 0; i < numCharsToWrite; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    HEAP16[outPtr >>> 1 >>> 0] = codeUnit;\n                    outPtr += 2\n                }\n                HEAP16[outPtr >>> 1 >>> 0] = 0;\n                return outPtr - startPtr\n            };\n            var lengthBytesUTF16 = str => str.length * 2;\n            var UTF32ToString = (ptr, maxBytesToRead) => {\n                var i = 0;\n                var str = \"\";\n                while (!(i >= maxBytesToRead / 4)) {\n                    var utf32 = HEAP32[ptr + i * 4 >>> 2 >>> 0];\n                    if (utf32 == 0) break;\n                    ++i;\n                    if (utf32 >= 65536) {\n                        var ch = utf32 - 65536;\n                        str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)\n                    } else {\n                        str += String.fromCharCode(utf32)\n                    }\n                }\n                return str\n            };\n            var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {\n                outPtr >>>= 0;\n                maxBytesToWrite ??= 2147483647;\n                if (maxBytesToWrite < 4) return 0;\n                var startPtr = outPtr;\n                var endPtr = startPtr + maxBytesToWrite - 4;\n                for (var i = 0; i < str.length; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    if (codeUnit >= 55296 && codeUnit <= 57343) {\n                        var trailSurrogate = str.charCodeAt(++i);\n                        codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023\n                    }\n                    HEAP32[outPtr >>> 2 >>> 0] = codeUnit;\n                    outPtr += 4;\n                    if (outPtr + 4 > endPtr) break\n                }\n                HEAP32[outPtr >>> 2 >>> 0] = 0;\n                return outPtr - startPtr\n            };\n            var lengthBytesUTF32 = str => {\n                var len = 0;\n                for (var i = 0; i < str.length; ++i) {\n                    var codeUnit = str.charCodeAt(i);\n                    if (codeUnit >= 55296 && codeUnit <= 57343) ++i;\n                    len += 4\n                }\n                return len\n            };\n            var __embind_register_std_wstring = function(rawType, charSize, name) {\n                rawType >>>= 0;\n                charSize >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                var decodeString, encodeString, readCharAt, lengthBytesUTF;\n                if (charSize === 2) {\n                    decodeString = UTF16ToString;\n                    encodeString = stringToUTF16;\n                    lengthBytesUTF = lengthBytesUTF16;\n                    readCharAt = pointer => HEAPU16[pointer >>> 1 >>> 0]\n                } else if (charSize === 4) {\n                    decodeString = UTF32ToString;\n                    encodeString = stringToUTF32;\n                    lengthBytesUTF = lengthBytesUTF32;\n                    readCharAt = pointer => HEAPU32[pointer >>> 2 >>> 0]\n                }\n                registerType(rawType, {\n                    name,\n                    fromWireType: value => {\n                        var length = HEAPU32[value >>> 2 >>> 0];\n                        var str;\n                        var decodeStartPtr = value + 4;\n                        for (var i = 0; i <= length; ++i) {\n                            var currentBytePtr = value + 4 + i * charSize;\n                            if (i == length || readCharAt(currentBytePtr) == 0) {\n                                var maxReadBytes = currentBytePtr - decodeStartPtr;\n                                var stringSegment = decodeString(decodeStartPtr, maxReadBytes);\n                                if (str === undefined) {\n                                    str = stringSegment\n                                } else {\n                                    str += String.fromCharCode(0);\n                                    str += stringSegment\n                                }\n                                decodeStartPtr = currentBytePtr + charSize\n                            }\n                        }\n                        _free(value);\n                        return str\n                    },\n                    toWireType: (destructors, value) => {\n                        if (!(typeof value == \"string\")) {\n                            throwBindingError(`Cannot pass non-string to C++ string type ${name}`)\n                        }\n                        var length = lengthBytesUTF(value);\n                        var ptr = _malloc(4 + length + charSize);\n                        HEAPU32[ptr >>> 2 >>> 0] = length / charSize;\n                        encodeString(value, ptr + 4, length + charSize);\n                        if (destructors !== null) {\n                            destructors.push(_free, ptr)\n                        }\n                        return ptr\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    destructorFunction(ptr) {\n                        _free(ptr)\n                    }\n                })\n            };\n            __embind_register_std_wstring.sig = \"vppp\";\n            var __embind_register_void = function(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                name = readLatin1String(name);\n                registerType(rawType, {\n                    isVoid: true,\n                    name,\n                    argPackAdvance: 0,\n                    fromWireType: () => undefined,\n                    toWireType: (destructors, o) => undefined\n                })\n            };\n            __embind_register_void.sig = \"vpp\";\n            var handleException = e => {\n                if (e instanceof ExitStatus || e == \"unwind\") {\n                    return EXITSTATUS\n                }\n                quit_(1, e)\n            };\n            var runtimeKeepaliveCounter = 0;\n            var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n            var _proc_exit = code => {\n                EXITSTATUS = code;\n                if (!keepRuntimeAlive()) {\n                    Module[\"onExit\"]?.(code);\n                    ABORT = true\n                }\n                quit_(code, new ExitStatus(code))\n            };\n            _proc_exit.sig = \"vi\";\n            var exitJS = (status, implicit) => {\n                EXITSTATUS = status;\n                _proc_exit(status)\n            };\n            var _exit = exitJS;\n            _exit.sig = \"vi\";\n            var maybeExit = () => {\n                if (!keepRuntimeAlive()) {\n                    try {\n                        _exit(EXITSTATUS)\n                    } catch (e) {\n                        handleException(e)\n                    }\n                }\n            };\n            var callUserCallback = func => {\n                if (ABORT) {\n                    return\n                }\n                try {\n                    func();\n                    maybeExit()\n                } catch (e) {\n                    handleException(e)\n                }\n            };\n\n            function __emscripten_dlopen_js(handle, onsuccess, onerror, user_data) {\n                handle >>>= 0;\n                onsuccess >>>= 0;\n                onerror >>>= 0;\n                user_data >>>= 0;\n\n                function errorCallback(e) {\n                    var filename = UTF8ToString(handle + 36);\n                    dlSetError(`'Could not load dynamic lib: ${filename}\\n${e}`);\n                    callUserCallback(() => getWasmTableEntry(onerror)(handle, user_data))\n                }\n\n                function successCallback() {\n                    callUserCallback(() => getWasmTableEntry(onsuccess)(handle, user_data))\n                }\n                var promise = dlopenInternal(handle, {\n                    loadAsync: true\n                });\n                if (promise) {\n                    promise.then(successCallback, errorCallback)\n                } else {\n                    errorCallback()\n                }\n            }\n            __emscripten_dlopen_js.sig = \"vpppp\";\n            var nowIsMonotonic = 1;\n            var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;\n            __emscripten_get_now_is_monotonic.sig = \"i\";\n            var getExecutableName = () => thisProgram || \"./this.program\";\n\n            function __emscripten_get_progname(str, len) {\n                str >>>= 0;\n                stringToUTF8(getExecutableName(), str, len)\n            }\n            __emscripten_get_progname.sig = \"vpi\";\n\n            function __emscripten_lookup_name(name) {\n                name >>>= 0;\n                var nameString = UTF8ToString(name);\n                return inetPton4(DNS.lookup_name(nameString))\n            }\n            __emscripten_lookup_name.sig = \"ip\";\n\n            function __emscripten_memcpy_js(dest, src, num) {\n                dest >>>= 0;\n                src >>>= 0;\n                num >>>= 0;\n                return HEAPU8.copyWithin(dest >>> 0, src >>> 0, src + num >>> 0)\n            }\n            __emscripten_memcpy_js.sig = \"vppp\";\n            var __emscripten_runtime_keepalive_clear = () => {\n                noExitRuntime = false;\n                runtimeKeepaliveCounter = 0\n            };\n            __emscripten_runtime_keepalive_clear.sig = \"v\";\n\n            function __emscripten_set_offscreencanvas_size(target, width, height) {\n                target >>>= 0;\n                return -1\n            }\n            __emscripten_set_offscreencanvas_size.sig = \"ipii\";\n\n            function __emscripten_system(command) {\n                command >>>= 0;\n                if (ENVIRONMENT_IS_NODE) {\n                    if (!command) return 1;\n                    var cmdstr = UTF8ToString(command);\n                    if (!cmdstr.length) return 0;\n                    var cp = [\"child_process\"].map(require);\n                    var ret = cp.spawnSync(cmdstr, [], {\n                        shell: true,\n                        stdio: \"inherit\"\n                    });\n                    var _W_EXITCODE = (ret, sig) => ret << 8 | sig;\n                    if (ret.status === null) {\n                        var signalToNumber = sig => {\n                            switch (sig) {\n                                case \"SIGHUP\":\n                                    return 1;\n                                case \"SIGQUIT\":\n                                    return 3;\n                                case \"SIGFPE\":\n                                    return 8;\n                                case \"SIGKILL\":\n                                    return 9;\n                                case \"SIGALRM\":\n                                    return 14;\n                                case \"SIGTERM\":\n                                    return 15;\n                                default:\n                                    return 2\n                            }\n                        };\n                        return _W_EXITCODE(0, signalToNumber(ret.signal))\n                    }\n                    return _W_EXITCODE(ret.status, 0)\n                }\n                if (!command) return 0;\n                return -52\n            }\n            __emscripten_system.sig = \"ip\";\n            var emval_symbols = {};\n            var getStringOrSymbol = address => {\n                var symbol = emval_symbols[address];\n                if (symbol === undefined) {\n                    return readLatin1String(address)\n                }\n                return symbol\n            };\n            var emval_methodCallers = [];\n\n            function __emval_call_method(caller, objHandle, methodName, destructorsRef, args) {\n                caller >>>= 0;\n                objHandle >>>= 0;\n                methodName >>>= 0;\n                destructorsRef >>>= 0;\n                args >>>= 0;\n                caller = emval_methodCallers[caller];\n                objHandle = Emval.toValue(objHandle);\n                methodName = getStringOrSymbol(methodName);\n                return caller(objHandle, objHandle[methodName], destructorsRef, args)\n            }\n            __emval_call_method.sig = \"dppppp\";\n            var emval_get_global = () => {\n                if (typeof globalThis == \"object\") {\n                    return globalThis\n                }\n                return function() {\n                    return Function\n                }()(\"return this\")()\n            };\n\n            function __emval_get_global(name) {\n                name >>>= 0;\n                if (name === 0) {\n                    return Emval.toHandle(emval_get_global())\n                } else {\n                    name = getStringOrSymbol(name);\n                    return Emval.toHandle(emval_get_global()[name])\n                }\n            }\n            __emval_get_global.sig = \"pp\";\n            var emval_addMethodCaller = caller => {\n                var id = emval_methodCallers.length;\n                emval_methodCallers.push(caller);\n                return id\n            };\n            var getTypeName = type => {\n                var ptr = ___getTypeName(type);\n                var rv = readLatin1String(ptr);\n                _free(ptr);\n                return rv\n            };\n            var requireRegisteredType = (rawType, humanName) => {\n                var impl = registeredTypes[rawType];\n                if (undefined === impl) {\n                    throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)\n                }\n                return impl\n            };\n            var emval_lookupTypes = (argCount, argTypes) => {\n                var a = new Array(argCount);\n                for (var i = 0; i < argCount; ++i) {\n                    a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >>> 2 >>> 0], \"parameter \" + i)\n                }\n                return a\n            };\n            var createNamedFunction = (name, body) => Object.defineProperty(body, \"name\", {\n                value: name\n            });\n            var reflectConstruct = Reflect.construct;\n            var emval_returnValue = (returnType, destructorsRef, handle) => {\n                var destructors = [];\n                var result = returnType[\"toWireType\"](destructors, handle);\n                if (destructors.length) {\n                    HEAPU32[destructorsRef >>> 2 >>> 0] = Emval.toHandle(destructors)\n                }\n                return result\n            };\n\n            function newFunc(constructor, argumentList) {\n                if (!(constructor instanceof Function)) {\n                    throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)\n                }\n                var dummy = createNamedFunction(constructor.name || \"unknownFunctionName\", function() {});\n                dummy.prototype = constructor.prototype;\n                var obj = new dummy;\n                var r = constructor.apply(obj, argumentList);\n                return r instanceof Object ? r : obj\n            }\n\n            function __emval_get_method_caller(argCount, argTypes, kind) {\n                argTypes >>>= 0;\n                var types = emval_lookupTypes(argCount, argTypes);\n                var retType = types.shift();\n                argCount--;\n                var functionBody = `return function (obj, func, destructorsRef, args) {\\n`;\n                var offset = 0;\n                var argsList = [];\n                if (kind === 0) {\n                    argsList.push(\"obj\")\n                }\n                var params = [\"retType\"];\n                var args = [retType];\n                for (var i = 0; i < argCount; ++i) {\n                    argsList.push(\"arg\" + i);\n                    params.push(\"argType\" + i);\n                    args.push(types[i]);\n                    functionBody += `  var arg${i} = argType${i}.readValueFromPointer(args${offset?\"+\"+offset:\"\"});\\n`;\n                    offset += types[i].argPackAdvance\n                }\n                var invoker = kind === 1 ? \"new func\" : \"func.call\";\n                functionBody += `  var rv = ${invoker}(${argsList.join(\", \")});\\n`;\n                if (!retType.isVoid) {\n                    params.push(\"emval_returnValue\");\n                    args.push(emval_returnValue);\n                    functionBody += \"  return emval_returnValue(retType, destructorsRef, rv);\\n\"\n                }\n                functionBody += \"};\\n\";\n                params.push(functionBody);\n                var invokerFunction = newFunc(Function, params)(...args);\n                var functionName = `methodCaller<(${types.map(t=>t.name).join(\", \")}) => ${retType.name}>`;\n                return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction))\n            }\n            __emval_get_method_caller.sig = \"pipi\";\n            var runDestructors = destructors => {\n                while (destructors.length) {\n                    var ptr = destructors.pop();\n                    var del = destructors.pop();\n                    del(ptr)\n                }\n            };\n\n            function __emval_run_destructors(handle) {\n                handle >>>= 0;\n                var destructors = Emval.toValue(handle);\n                runDestructors(destructors);\n                __emval_decref(handle)\n            }\n            __emval_run_destructors.sig = \"vp\";\n\n            function __gmtime_js(time_low, time_high, tmPtr) {\n                var time = convertI32PairToI53Checked(time_low, time_high);\n                tmPtr >>>= 0;\n                var date = new Date(time * 1e3);\n                HEAP32[tmPtr >>> 2 >>> 0] = date.getUTCSeconds();\n                HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getUTCMinutes();\n                HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getUTCHours();\n                HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getUTCDate();\n                HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getUTCMonth();\n                HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getUTCFullYear() - 1900;\n                HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n                var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n                var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n                HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday\n            }\n            __gmtime_js.sig = \"viip\";\n            var isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n            var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n            var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n            var ydayFromDate = date => {\n                var leap = isLeapYear(date.getFullYear());\n                var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;\n                var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;\n                return yday\n            };\n\n            function __localtime_js(time_low, time_high, tmPtr) {\n                var time = convertI32PairToI53Checked(time_low, time_high);\n                tmPtr >>>= 0;\n                var date = new Date(time * 1e3);\n                HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n                HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n                HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n                HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n                HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n                HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getFullYear() - 1900;\n                HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n                var yday = ydayFromDate(date) | 0;\n                HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                HEAP32[tmPtr + 36 >>> 2 >>> 0] = -(date.getTimezoneOffset() * 60);\n                var start = new Date(date.getFullYear(), 0, 1);\n                var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n                var winterOffset = start.getTimezoneOffset();\n                var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n                HEAP32[tmPtr + 32 >>> 2 >>> 0] = dst\n            }\n            __localtime_js.sig = \"viip\";\n            var setTempRet0 = val => __emscripten_tempret_set(val);\n            var _setTempRet0 = setTempRet0;\n            Module[\"_setTempRet0\"] = _setTempRet0;\n            var __mktime_js = function(tmPtr) {\n                tmPtr >>>= 0;\n                var ret = (() => {\n                    var date = new Date(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n                    var dst = HEAP32[tmPtr + 32 >>> 2 >>> 0];\n                    var guessedOffset = date.getTimezoneOffset();\n                    var start = new Date(date.getFullYear(), 0, 1);\n                    var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n                    var winterOffset = start.getTimezoneOffset();\n                    var dstOffset = Math.min(winterOffset, summerOffset);\n                    if (dst < 0) {\n                        HEAP32[tmPtr + 32 >>> 2 >>> 0] = Number(summerOffset != winterOffset && dstOffset == guessedOffset)\n                    } else if (dst > 0 != (dstOffset == guessedOffset)) {\n                        var nonDstOffset = Math.max(winterOffset, summerOffset);\n                        var trueOffset = dst > 0 ? dstOffset : nonDstOffset;\n                        date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4)\n                    }\n                    HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getDay();\n                    var yday = ydayFromDate(date) | 0;\n                    HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                    HEAP32[tmPtr >>> 2 >>> 0] = date.getSeconds();\n                    HEAP32[tmPtr + 4 >>> 2 >>> 0] = date.getMinutes();\n                    HEAP32[tmPtr + 8 >>> 2 >>> 0] = date.getHours();\n                    HEAP32[tmPtr + 12 >>> 2 >>> 0] = date.getDate();\n                    HEAP32[tmPtr + 16 >>> 2 >>> 0] = date.getMonth();\n                    HEAP32[tmPtr + 20 >>> 2 >>> 0] = date.getYear();\n                    var timeMs = date.getTime();\n                    if (isNaN(timeMs)) {\n                        return -1\n                    }\n                    return timeMs / 1e3\n                })();\n                return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0\n            };\n            __mktime_js.sig = \"ip\";\n\n            function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                allocated >>>= 0;\n                addr >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var res = FS.mmap(stream, len, offset, prot, flags);\n                    var ptr = res.ptr;\n                    HEAP32[allocated >>> 2 >>> 0] = res.allocated;\n                    HEAPU32[addr >>> 2 >>> 0] = ptr;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __mmap_js.sig = \"ipiiiiipp\";\n\n            function __msync_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n                addr >>>= 0;\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                try {\n                    if (isNaN(offset)) return 61;\n                    SYSCALLS.doMsync(addr, SYSCALLS.getStreamFromFD(fd), len, flags, offset);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __msync_js.sig = \"ippiiiii\";\n\n            function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {\n                addr >>>= 0;\n                len >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    if (prot & 2) {\n                        SYSCALLS.doMsync(addr, stream, len, flags, offset)\n                    }\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            __munmap_js.sig = \"ippiiiii\";\n            var timers = {};\n            var _emscripten_get_now = () => performance.now();\n            _emscripten_get_now.sig = \"d\";\n            var __setitimer_js = (which, timeout_ms) => {\n                if (timers[which]) {\n                    clearTimeout(timers[which].id);\n                    delete timers[which]\n                }\n                if (!timeout_ms) return 0;\n                var id = setTimeout(() => {\n                    delete timers[which];\n                    callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()))\n                }, timeout_ms);\n                timers[which] = {\n                    id,\n                    timeout_ms\n                };\n                return 0\n            };\n            __setitimer_js.sig = \"iid\";\n            var __timegm_js = function(tmPtr) {\n                tmPtr >>>= 0;\n                var ret = (() => {\n                    var time = Date.UTC(HEAP32[tmPtr + 20 >>> 2 >>> 0] + 1900, HEAP32[tmPtr + 16 >>> 2 >>> 0], HEAP32[tmPtr + 12 >>> 2 >>> 0], HEAP32[tmPtr + 8 >>> 2 >>> 0], HEAP32[tmPtr + 4 >>> 2 >>> 0], HEAP32[tmPtr >>> 2 >>> 0], 0);\n                    var date = new Date(time);\n                    HEAP32[tmPtr + 24 >>> 2 >>> 0] = date.getUTCDay();\n                    var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);\n                    var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;\n                    HEAP32[tmPtr + 28 >>> 2 >>> 0] = yday;\n                    return date.getTime() / 1e3\n                })();\n                return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0\n            };\n            __timegm_js.sig = \"ip\";\n            var __tzset_js = function(timezone, daylight, std_name, dst_name) {\n                timezone >>>= 0;\n                daylight >>>= 0;\n                std_name >>>= 0;\n                dst_name >>>= 0;\n                var currentYear = (new Date).getFullYear();\n                var winter = new Date(currentYear, 0, 1);\n                var summer = new Date(currentYear, 6, 1);\n                var winterOffset = winter.getTimezoneOffset();\n                var summerOffset = summer.getTimezoneOffset();\n                var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n                HEAPU32[timezone >>> 2 >>> 0] = stdTimezoneOffset * 60;\n                HEAP32[daylight >>> 2 >>> 0] = Number(winterOffset != summerOffset);\n                var extractZone = timezoneOffset => {\n                    var sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n                    var absOffset = Math.abs(timezoneOffset);\n                    var hours = String(Math.floor(absOffset / 60)).padStart(2, \"0\");\n                    var minutes = String(absOffset % 60).padStart(2, \"0\");\n                    return `UTC${sign}${hours}${minutes}`\n                };\n                var winterName = extractZone(winterOffset);\n                var summerName = extractZone(summerOffset);\n                if (summerOffset < winterOffset) {\n                    stringToUTF8(winterName, std_name, 17);\n                    stringToUTF8(summerName, dst_name, 17)\n                } else {\n                    stringToUTF8(winterName, dst_name, 17);\n                    stringToUTF8(summerName, std_name, 17)\n                }\n            };\n            __tzset_js.sig = \"vpppp\";\n            var _emscripten_set_main_loop_timing = (mode, value) => {\n                MainLoop.timingMode = mode;\n                MainLoop.timingValue = value;\n                if (!MainLoop.func) {\n                    return 1\n                }\n                if (!MainLoop.running) {\n                    MainLoop.running = true\n                }\n                if (mode == 0) {\n                    MainLoop.scheduler = function MainLoop_scheduler_setTimeout() {\n                        var timeUntilNextTick = Math.max(0, MainLoop.tickStartTime + value - _emscripten_get_now()) | 0;\n                        setTimeout(MainLoop.runner, timeUntilNextTick)\n                    };\n                    MainLoop.method = \"timeout\"\n                } else if (mode == 1) {\n                    MainLoop.scheduler = function MainLoop_scheduler_rAF() {\n                        MainLoop.requestAnimationFrame(MainLoop.runner)\n                    };\n                    MainLoop.method = \"rAF\"\n                } else if (mode == 2) {\n                    if (typeof MainLoop.setImmediate == \"undefined\") {\n                        if (typeof setImmediate == \"undefined\") {\n                            var setImmediates = [];\n                            var emscriptenMainLoopMessageId = \"setimmediate\";\n                            var MainLoop_setImmediate_messageHandler = event => {\n                                if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) {\n                                    event.stopPropagation();\n                                    setImmediates.shift()()\n                                }\n                            };\n                            addEventListener(\"message\", MainLoop_setImmediate_messageHandler, true);\n                            MainLoop.setImmediate = func => {\n                                setImmediates.push(func);\n                                if (ENVIRONMENT_IS_WORKER) {\n                                    Module[\"setImmediates\"] ??= [];\n                                    Module[\"setImmediates\"].push(func);\n                                    postMessage({\n                                        target: emscriptenMainLoopMessageId\n                                    })\n                                } else postMessage(emscriptenMainLoopMessageId, \"*\")\n                            }\n                        } else {\n                            MainLoop.setImmediate = setImmediate\n                        }\n                    }\n                    MainLoop.scheduler = function MainLoop_scheduler_setImmediate() {\n                        MainLoop.setImmediate(MainLoop.runner)\n                    };\n                    MainLoop.method = \"immediate\"\n                }\n                return 0\n            };\n            _emscripten_set_main_loop_timing.sig = \"iii\";\n            var setMainLoop = (iterFunc, fps, simulateInfiniteLoop, arg, noSetTiming) => {\n                MainLoop.func = iterFunc;\n                MainLoop.arg = arg;\n                var thisMainLoopId = MainLoop.currentlyRunningMainloop;\n\n                function checkIsRunning() {\n                    if (thisMainLoopId < MainLoop.currentlyRunningMainloop) {\n                        maybeExit();\n                        return false\n                    }\n                    return true\n                }\n                MainLoop.running = false;\n                MainLoop.runner = function MainLoop_runner() {\n                    if (ABORT) return;\n                    if (MainLoop.queue.length > 0) {\n                        var start = Date.now();\n                        var blocker = MainLoop.queue.shift();\n                        blocker.func(blocker.arg);\n                        if (MainLoop.remainingBlockers) {\n                            var remaining = MainLoop.remainingBlockers;\n                            var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);\n                            if (blocker.counted) {\n                                MainLoop.remainingBlockers = next\n                            } else {\n                                next = next + .5;\n                                MainLoop.remainingBlockers = (8 * remaining + next) / 9\n                            }\n                        }\n                        MainLoop.updateStatus();\n                        if (!checkIsRunning()) return;\n                        setTimeout(MainLoop.runner, 0);\n                        return\n                    }\n                    if (!checkIsRunning()) return;\n                    MainLoop.currentFrameNumber = MainLoop.currentFrameNumber + 1 | 0;\n                    if (MainLoop.timingMode == 1 && MainLoop.timingValue > 1 && MainLoop.currentFrameNumber % MainLoop.timingValue != 0) {\n                        MainLoop.scheduler();\n                        return\n                    } else if (MainLoop.timingMode == 0) {\n                        MainLoop.tickStartTime = _emscripten_get_now()\n                    }\n                    MainLoop.runIter(iterFunc);\n                    if (!checkIsRunning()) return;\n                    MainLoop.scheduler()\n                };\n                if (!noSetTiming) {\n                    if (fps && fps > 0) {\n                        _emscripten_set_main_loop_timing(0, 1e3 / fps)\n                    } else {\n                        _emscripten_set_main_loop_timing(1, 1)\n                    }\n                    MainLoop.scheduler()\n                }\n                if (simulateInfiniteLoop) {\n                    throw \"unwind\"\n                }\n            };\n            var MainLoop = {\n                running: false,\n                scheduler: null,\n                method: \"\",\n                currentlyRunningMainloop: 0,\n                func: null,\n                arg: 0,\n                timingMode: 0,\n                timingValue: 0,\n                currentFrameNumber: 0,\n                queue: [],\n                preMainLoop: [],\n                postMainLoop: [],\n                pause() {\n                    MainLoop.scheduler = null;\n                    MainLoop.currentlyRunningMainloop++\n                },\n                resume() {\n                    MainLoop.currentlyRunningMainloop++;\n                    var timingMode = MainLoop.timingMode;\n                    var timingValue = MainLoop.timingValue;\n                    var func = MainLoop.func;\n                    MainLoop.func = null;\n                    setMainLoop(func, 0, false, MainLoop.arg, true);\n                    _emscripten_set_main_loop_timing(timingMode, timingValue);\n                    MainLoop.scheduler()\n                },\n                updateStatus() {\n                    if (Module[\"setStatus\"]) {\n                        var message = Module[\"statusMessage\"] || \"Please wait...\";\n                        var remaining = MainLoop.remainingBlockers ?? 0;\n                        var expected = MainLoop.expectedBlockers ?? 0;\n                        if (remaining) {\n                            if (remaining < expected) {\n                                Module[\"setStatus\"](`{message} ({expected - remaining}/{expected})`)\n                            } else {\n                                Module[\"setStatus\"](message)\n                            }\n                        } else {\n                            Module[\"setStatus\"](\"\")\n                        }\n                    }\n                },\n                init() {\n                    Module[\"preMainLoop\"] && MainLoop.preMainLoop.push(Module[\"preMainLoop\"]);\n                    Module[\"postMainLoop\"] && MainLoop.postMainLoop.push(Module[\"postMainLoop\"])\n                },\n                runIter(func) {\n                    if (ABORT) return;\n                    for (var pre of MainLoop.preMainLoop) {\n                        if (pre() === false) {\n                            return\n                        }\n                    }\n                    callUserCallback(func);\n                    for (var post of MainLoop.postMainLoop) {\n                        post()\n                    }\n                },\n                nextRAF: 0,\n                fakeRequestAnimationFrame(func) {\n                    var now = Date.now();\n                    if (MainLoop.nextRAF === 0) {\n                        MainLoop.nextRAF = now + 1e3 / 60\n                    } else {\n                        while (now + 2 >= MainLoop.nextRAF) {\n                            MainLoop.nextRAF += 1e3 / 60\n                        }\n                    }\n                    var delay = Math.max(MainLoop.nextRAF - now, 0);\n                    setTimeout(func, delay)\n                },\n                requestAnimationFrame(func) {\n                    if (typeof requestAnimationFrame == \"function\") {\n                        requestAnimationFrame(func);\n                        return\n                    }\n                    var RAF = MainLoop.fakeRequestAnimationFrame;\n                    RAF(func)\n                }\n            };\n            var AL = {\n                QUEUE_INTERVAL: 25,\n                QUEUE_LOOKAHEAD: .1,\n                DEVICE_NAME: \"Emscripten OpenAL\",\n                CAPTURE_DEVICE_NAME: \"Emscripten OpenAL capture\",\n                ALC_EXTENSIONS: {\n                    ALC_SOFT_pause_device: true,\n                    ALC_SOFT_HRTF: true\n                },\n                AL_EXTENSIONS: {\n                    AL_EXT_float32: true,\n                    AL_SOFT_loop_points: true,\n                    AL_SOFT_source_length: true,\n                    AL_EXT_source_distance_model: true,\n                    AL_SOFT_source_spatialize: true\n                },\n                _alcErr: 0,\n                alcErr: 0,\n                deviceRefCounts: {},\n                alcStringCache: {},\n                paused: false,\n                stringCache: {},\n                contexts: {},\n                currentCtx: null,\n                buffers: {\n                    0: {\n                        id: 0,\n                        refCount: 0,\n                        audioBuf: null,\n                        frequency: 0,\n                        bytesPerSample: 2,\n                        channels: 1,\n                        length: 0\n                    }\n                },\n                paramArray: [],\n                _nextId: 1,\n                newId: () => AL.freeIds.length > 0 ? AL.freeIds.pop() : AL._nextId++,\n                freeIds: [],\n                scheduleContextAudio: ctx => {\n                    if (MainLoop.timingMode === 1 && document[\"visibilityState\"] != \"visible\") {\n                        return\n                    }\n                    for (var i in ctx.sources) {\n                        AL.scheduleSourceAudio(ctx.sources[i])\n                    }\n                },\n                scheduleSourceAudio: (src, lookahead) => {\n                    if (MainLoop.timingMode === 1 && document[\"visibilityState\"] != \"visible\") {\n                        return\n                    }\n                    if (src.state !== 4114) {\n                        return\n                    }\n                    var currentTime = AL.updateSourceTime(src);\n                    var startTime = src.bufStartTime;\n                    var startOffset = src.bufOffset;\n                    var bufCursor = src.bufsProcessed;\n                    for (var i = 0; i < src.audioQueue.length; i++) {\n                        var audioSrc = src.audioQueue[i];\n                        startTime = audioSrc._startTime + audioSrc._duration;\n                        startOffset = 0;\n                        bufCursor += audioSrc._skipCount + 1\n                    }\n                    if (!lookahead) {\n                        lookahead = AL.QUEUE_LOOKAHEAD\n                    }\n                    var lookaheadTime = currentTime + lookahead;\n                    var skipCount = 0;\n                    while (startTime < lookaheadTime) {\n                        if (bufCursor >= src.bufQueue.length) {\n                            if (src.looping) {\n                                bufCursor %= src.bufQueue.length\n                            } else {\n                                break\n                            }\n                        }\n                        var buf = src.bufQueue[bufCursor % src.bufQueue.length];\n                        if (buf.length === 0) {\n                            skipCount++;\n                            if (skipCount === src.bufQueue.length) {\n                                break\n                            }\n                        } else {\n                            var audioSrc = src.context.audioCtx.createBufferSource();\n                            audioSrc.buffer = buf.audioBuf;\n                            audioSrc.playbackRate.value = src.playbackRate;\n                            if (buf.audioBuf._loopStart || buf.audioBuf._loopEnd) {\n                                audioSrc.loopStart = buf.audioBuf._loopStart;\n                                audioSrc.loopEnd = buf.audioBuf._loopEnd\n                            }\n                            var duration = 0;\n                            if (src.type === 4136 && src.looping) {\n                                duration = Number.POSITIVE_INFINITY;\n                                audioSrc.loop = true;\n                                if (buf.audioBuf._loopStart) {\n                                    audioSrc.loopStart = buf.audioBuf._loopStart\n                                }\n                                if (buf.audioBuf._loopEnd) {\n                                    audioSrc.loopEnd = buf.audioBuf._loopEnd\n                                }\n                            } else {\n                                duration = (buf.audioBuf.duration - startOffset) / src.playbackRate\n                            }\n                            audioSrc._startOffset = startOffset;\n                            audioSrc._duration = duration;\n                            audioSrc._skipCount = skipCount;\n                            skipCount = 0;\n                            audioSrc.connect(src.gain);\n                            if (typeof audioSrc.start != \"undefined\") {\n                                startTime = Math.max(startTime, src.context.audioCtx.currentTime);\n                                audioSrc.start(startTime, startOffset)\n                            } else if (typeof audioSrc.noteOn != \"undefined\") {\n                                startTime = Math.max(startTime, src.context.audioCtx.currentTime);\n                                audioSrc.noteOn(startTime)\n                            }\n                            audioSrc._startTime = startTime;\n                            src.audioQueue.push(audioSrc);\n                            startTime += duration\n                        }\n                        startOffset = 0;\n                        bufCursor++\n                    }\n                },\n                updateSourceTime: src => {\n                    var currentTime = src.context.audioCtx.currentTime;\n                    if (src.state !== 4114) {\n                        return currentTime\n                    }\n                    if (!isFinite(src.bufStartTime)) {\n                        src.bufStartTime = currentTime - src.bufOffset / src.playbackRate;\n                        src.bufOffset = 0\n                    }\n                    var nextStartTime = 0;\n                    while (src.audioQueue.length) {\n                        var audioSrc = src.audioQueue[0];\n                        src.bufsProcessed += audioSrc._skipCount;\n                        nextStartTime = audioSrc._startTime + audioSrc._duration;\n                        if (currentTime < nextStartTime) {\n                            break\n                        }\n                        src.audioQueue.shift();\n                        src.bufStartTime = nextStartTime;\n                        src.bufOffset = 0;\n                        src.bufsProcessed++\n                    }\n                    if (src.bufsProcessed >= src.bufQueue.length && !src.looping) {\n                        AL.setSourceState(src, 4116)\n                    } else if (src.type === 4136 && src.looping) {\n                        var buf = src.bufQueue[0];\n                        if (buf.length === 0) {\n                            src.bufOffset = 0\n                        } else {\n                            var delta = (currentTime - src.bufStartTime) * src.playbackRate;\n                            var loopStart = buf.audioBuf._loopStart || 0;\n                            var loopEnd = buf.audioBuf._loopEnd || buf.audioBuf.duration;\n                            if (loopEnd <= loopStart) {\n                                loopEnd = buf.audioBuf.duration\n                            }\n                            if (delta < loopEnd) {\n                                src.bufOffset = delta\n                            } else {\n                                src.bufOffset = loopStart + (delta - loopStart) % (loopEnd - loopStart)\n                            }\n                        }\n                    } else if (src.audioQueue[0]) {\n                        src.bufOffset = (currentTime - src.audioQueue[0]._startTime) * src.playbackRate\n                    } else {\n                        if (src.type !== 4136 && src.looping) {\n                            var srcDuration = AL.sourceDuration(src) / src.playbackRate;\n                            if (srcDuration > 0) {\n                                src.bufStartTime += Math.floor((currentTime - src.bufStartTime) / srcDuration) * srcDuration\n                            }\n                        }\n                        for (var i = 0; i < src.bufQueue.length; i++) {\n                            if (src.bufsProcessed >= src.bufQueue.length) {\n                                if (src.looping) {\n                                    src.bufsProcessed %= src.bufQueue.length\n                                } else {\n                                    AL.setSourceState(src, 4116);\n                                    break\n                                }\n                            }\n                            var buf = src.bufQueue[src.bufsProcessed];\n                            if (buf.length > 0) {\n                                nextStartTime = src.bufStartTime + buf.audioBuf.duration / src.playbackRate;\n                                if (currentTime < nextStartTime) {\n                                    src.bufOffset = (currentTime - src.bufStartTime) * src.playbackRate;\n                                    break\n                                }\n                                src.bufStartTime = nextStartTime\n                            }\n                            src.bufOffset = 0;\n                            src.bufsProcessed++\n                        }\n                    }\n                    return currentTime\n                },\n                cancelPendingSourceAudio: src => {\n                    AL.updateSourceTime(src);\n                    for (var i = 1; i < src.audioQueue.length; i++) {\n                        var audioSrc = src.audioQueue[i];\n                        audioSrc.stop()\n                    }\n                    if (src.audioQueue.length > 1) {\n                        src.audioQueue.length = 1\n                    }\n                },\n                stopSourceAudio: src => {\n                    for (var i = 0; i < src.audioQueue.length; i++) {\n                        src.audioQueue[i].stop()\n                    }\n                    src.audioQueue.length = 0\n                },\n                setSourceState: (src, state) => {\n                    if (state === 4114) {\n                        if (src.state === 4114 || src.state == 4116) {\n                            src.bufsProcessed = 0;\n                            src.bufOffset = 0\n                        } else {}\n                        AL.stopSourceAudio(src);\n                        src.state = 4114;\n                        src.bufStartTime = Number.NEGATIVE_INFINITY;\n                        AL.scheduleSourceAudio(src)\n                    } else if (state === 4115) {\n                        if (src.state === 4114) {\n                            AL.updateSourceTime(src);\n                            AL.stopSourceAudio(src);\n                            src.state = 4115\n                        }\n                    } else if (state === 4116) {\n                        if (src.state !== 4113) {\n                            src.state = 4116;\n                            src.bufsProcessed = src.bufQueue.length;\n                            src.bufStartTime = Number.NEGATIVE_INFINITY;\n                            src.bufOffset = 0;\n                            AL.stopSourceAudio(src)\n                        }\n                    } else if (state === 4113) {\n                        if (src.state !== 4113) {\n                            src.state = 4113;\n                            src.bufsProcessed = 0;\n                            src.bufStartTime = Number.NEGATIVE_INFINITY;\n                            src.bufOffset = 0;\n                            AL.stopSourceAudio(src)\n                        }\n                    }\n                },\n                initSourcePanner: src => {\n                    if (src.type === 4144) {\n                        return\n                    }\n                    var templateBuf = AL.buffers[0];\n                    for (var i = 0; i < src.bufQueue.length; i++) {\n                        if (src.bufQueue[i].id !== 0) {\n                            templateBuf = src.bufQueue[i];\n                            break\n                        }\n                    }\n                    if (src.spatialize === 1 || src.spatialize === 2 && templateBuf.channels === 1) {\n                        if (src.panner) {\n                            return\n                        }\n                        src.panner = src.context.audioCtx.createPanner();\n                        AL.updateSourceGlobal(src);\n                        AL.updateSourceSpace(src);\n                        src.panner.connect(src.context.gain);\n                        src.gain.disconnect();\n                        src.gain.connect(src.panner)\n                    } else {\n                        if (!src.panner) {\n                            return\n                        }\n                        src.panner.disconnect();\n                        src.gain.disconnect();\n                        src.gain.connect(src.context.gain);\n                        src.panner = null\n                    }\n                },\n                updateContextGlobal: ctx => {\n                    for (var i in ctx.sources) {\n                        AL.updateSourceGlobal(ctx.sources[i])\n                    }\n                },\n                updateSourceGlobal: src => {\n                    var panner = src.panner;\n                    if (!panner) {\n                        return\n                    }\n                    panner.refDistance = src.refDistance;\n                    panner.maxDistance = src.maxDistance;\n                    panner.rolloffFactor = src.rolloffFactor;\n                    panner.panningModel = src.context.hrtf ? \"HRTF\" : \"equalpower\";\n                    var distanceModel = src.context.sourceDistanceModel ? src.distanceModel : src.context.distanceModel;\n                    switch (distanceModel) {\n                        case 0:\n                            panner.distanceModel = \"inverse\";\n                            panner.refDistance = 340282e33;\n                            break;\n                        case 53249:\n                        case 53250:\n                            panner.distanceModel = \"inverse\";\n                            break;\n                        case 53251:\n                        case 53252:\n                            panner.distanceModel = \"linear\";\n                            break;\n                        case 53253:\n                        case 53254:\n                            panner.distanceModel = \"exponential\";\n                            break\n                    }\n                },\n                updateListenerSpace: ctx => {\n                    var listener = ctx.audioCtx.listener;\n                    if (listener.positionX) {\n                        listener.positionX.value = ctx.listener.position[0];\n                        listener.positionY.value = ctx.listener.position[1];\n                        listener.positionZ.value = ctx.listener.position[2]\n                    } else {\n                        listener.setPosition(ctx.listener.position[0], ctx.listener.position[1], ctx.listener.position[2])\n                    }\n                    if (listener.forwardX) {\n                        listener.forwardX.value = ctx.listener.direction[0];\n                        listener.forwardY.value = ctx.listener.direction[1];\n                        listener.forwardZ.value = ctx.listener.direction[2];\n                        listener.upX.value = ctx.listener.up[0];\n                        listener.upY.value = ctx.listener.up[1];\n                        listener.upZ.value = ctx.listener.up[2]\n                    } else {\n                        listener.setOrientation(ctx.listener.direction[0], ctx.listener.direction[1], ctx.listener.direction[2], ctx.listener.up[0], ctx.listener.up[1], ctx.listener.up[2])\n                    }\n                    for (var i in ctx.sources) {\n                        AL.updateSourceSpace(ctx.sources[i])\n                    }\n                },\n                updateSourceSpace: src => {\n                    if (!src.panner) {\n                        return\n                    }\n                    var panner = src.panner;\n                    var posX = src.position[0];\n                    var posY = src.position[1];\n                    var posZ = src.position[2];\n                    var dirX = src.direction[0];\n                    var dirY = src.direction[1];\n                    var dirZ = src.direction[2];\n                    var listener = src.context.listener;\n                    var lPosX = listener.position[0];\n                    var lPosY = listener.position[1];\n                    var lPosZ = listener.position[2];\n                    if (src.relative) {\n                        var lBackX = -listener.direction[0];\n                        var lBackY = -listener.direction[1];\n                        var lBackZ = -listener.direction[2];\n                        var lUpX = listener.up[0];\n                        var lUpY = listener.up[1];\n                        var lUpZ = listener.up[2];\n                        var inverseMagnitude = (x, y, z) => {\n                            var length = Math.sqrt(x * x + y * y + z * z);\n                            if (length < Number.EPSILON) {\n                                return 0\n                            }\n                            return 1 / length\n                        };\n                        var invMag = inverseMagnitude(lBackX, lBackY, lBackZ);\n                        lBackX *= invMag;\n                        lBackY *= invMag;\n                        lBackZ *= invMag;\n                        invMag = inverseMagnitude(lUpX, lUpY, lUpZ);\n                        lUpX *= invMag;\n                        lUpY *= invMag;\n                        lUpZ *= invMag;\n                        var lRightX = lUpY * lBackZ - lUpZ * lBackY;\n                        var lRightY = lUpZ * lBackX - lUpX * lBackZ;\n                        var lRightZ = lUpX * lBackY - lUpY * lBackX;\n                        invMag = inverseMagnitude(lRightX, lRightY, lRightZ);\n                        lRightX *= invMag;\n                        lRightY *= invMag;\n                        lRightZ *= invMag;\n                        lUpX = lBackY * lRightZ - lBackZ * lRightY;\n                        lUpY = lBackZ * lRightX - lBackX * lRightZ;\n                        lUpZ = lBackX * lRightY - lBackY * lRightX;\n                        var oldX = dirX;\n                        var oldY = dirY;\n                        var oldZ = dirZ;\n                        dirX = oldX * lRightX + oldY * lUpX + oldZ * lBackX;\n                        dirY = oldX * lRightY + oldY * lUpY + oldZ * lBackY;\n                        dirZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ;\n                        oldX = posX;\n                        oldY = posY;\n                        oldZ = posZ;\n                        posX = oldX * lRightX + oldY * lUpX + oldZ * lBackX;\n                        posY = oldX * lRightY + oldY * lUpY + oldZ * lBackY;\n                        posZ = oldX * lRightZ + oldY * lUpZ + oldZ * lBackZ;\n                        posX += lPosX;\n                        posY += lPosY;\n                        posZ += lPosZ\n                    }\n                    if (panner.positionX) {\n                        if (posX != panner.positionX.value) panner.positionX.value = posX;\n                        if (posY != panner.positionY.value) panner.positionY.value = posY;\n                        if (posZ != panner.positionZ.value) panner.positionZ.value = posZ\n                    } else {\n                        panner.setPosition(posX, posY, posZ)\n                    }\n                    if (panner.orientationX) {\n                        if (dirX != panner.orientationX.value) panner.orientationX.value = dirX;\n                        if (dirY != panner.orientationY.value) panner.orientationY.value = dirY;\n                        if (dirZ != panner.orientationZ.value) panner.orientationZ.value = dirZ\n                    } else {\n                        panner.setOrientation(dirX, dirY, dirZ)\n                    }\n                    var oldShift = src.dopplerShift;\n                    var velX = src.velocity[0];\n                    var velY = src.velocity[1];\n                    var velZ = src.velocity[2];\n                    var lVelX = listener.velocity[0];\n                    var lVelY = listener.velocity[1];\n                    var lVelZ = listener.velocity[2];\n                    if (posX === lPosX && posY === lPosY && posZ === lPosZ || velX === lVelX && velY === lVelY && velZ === lVelZ) {\n                        src.dopplerShift = 1\n                    } else {\n                        var speedOfSound = src.context.speedOfSound;\n                        var dopplerFactor = src.context.dopplerFactor;\n                        var slX = lPosX - posX;\n                        var slY = lPosY - posY;\n                        var slZ = lPosZ - posZ;\n                        var magSl = Math.sqrt(slX * slX + slY * slY + slZ * slZ);\n                        var vls = (slX * lVelX + slY * lVelY + slZ * lVelZ) / magSl;\n                        var vss = (slX * velX + slY * velY + slZ * velZ) / magSl;\n                        vls = Math.min(vls, speedOfSound / dopplerFactor);\n                        vss = Math.min(vss, speedOfSound / dopplerFactor);\n                        src.dopplerShift = (speedOfSound - dopplerFactor * vls) / (speedOfSound - dopplerFactor * vss)\n                    }\n                    if (src.dopplerShift !== oldShift) {\n                        AL.updateSourceRate(src)\n                    }\n                },\n                updateSourceRate: src => {\n                    if (src.state === 4114) {\n                        AL.cancelPendingSourceAudio(src);\n                        var audioSrc = src.audioQueue[0];\n                        if (!audioSrc) {\n                            return\n                        }\n                        var duration;\n                        if (src.type === 4136 && src.looping) {\n                            duration = Number.POSITIVE_INFINITY\n                        } else {\n                            duration = (audioSrc.buffer.duration - audioSrc._startOffset) / src.playbackRate\n                        }\n                        audioSrc._duration = duration;\n                        audioSrc.playbackRate.value = src.playbackRate;\n                        AL.scheduleSourceAudio(src)\n                    }\n                },\n                sourceDuration: src => {\n                    var length = 0;\n                    for (var i = 0; i < src.bufQueue.length; i++) {\n                        var audioBuf = src.bufQueue[i].audioBuf;\n                        length += audioBuf ? audioBuf.duration : 0\n                    }\n                    return length\n                },\n                sourceTell: src => {\n                    AL.updateSourceTime(src);\n                    var offset = 0;\n                    for (var i = 0; i < src.bufsProcessed; i++) {\n                        if (src.bufQueue[i].audioBuf) {\n                            offset += src.bufQueue[i].audioBuf.duration\n                        }\n                    }\n                    offset += src.bufOffset;\n                    return offset\n                },\n                sourceSeek: (src, offset) => {\n                    var playing = src.state == 4114;\n                    if (playing) {\n                        AL.setSourceState(src, 4113)\n                    }\n                    if (src.bufQueue[src.bufsProcessed].audioBuf !== null) {\n                        src.bufsProcessed = 0;\n                        while (offset > src.bufQueue[src.bufsProcessed].audioBuf.duration) {\n                            offset -= src.bufQueue[src.bufsProcessed].audioBuf.duration;\n                            src.bufsProcessed++\n                        }\n                        src.bufOffset = offset\n                    }\n                    if (playing) {\n                        AL.setSourceState(src, 4114)\n                    }\n                },\n                getGlobalParam: (funcname, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    switch (param) {\n                        case 49152:\n                            return AL.currentCtx.dopplerFactor;\n                        case 49155:\n                            return AL.currentCtx.speedOfSound;\n                        case 53248:\n                            return AL.currentCtx.distanceModel;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setGlobalParam: (funcname, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    switch (param) {\n                        case 49152:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.dopplerFactor = value;\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 49155:\n                            if (!Number.isFinite(value) || value <= 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.speedOfSound = value;\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 53248:\n                            switch (value) {\n                                case 0:\n                                case 53249:\n                                case 53250:\n                                case 53251:\n                                case 53252:\n                                case 53253:\n                                case 53254:\n                                    AL.currentCtx.distanceModel = value;\n                                    AL.updateContextGlobal(AL.currentCtx);\n                                    break;\n                                default:\n                                    AL.currentCtx.err = 40963;\n                                    return\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getListenerParam: (funcname, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    switch (param) {\n                        case 4100:\n                            return AL.currentCtx.listener.position;\n                        case 4102:\n                            return AL.currentCtx.listener.velocity;\n                        case 4111:\n                            return AL.currentCtx.listener.direction.concat(AL.currentCtx.listener.up);\n                        case 4106:\n                            return AL.currentCtx.gain.gain.value;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setListenerParam: (funcname, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    var listener = AL.currentCtx.listener;\n                    switch (param) {\n                        case 4100:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.position[0] = value[0];\n                            listener.position[1] = value[1];\n                            listener.position[2] = value[2];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 4102:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.velocity[0] = value[0];\n                            listener.velocity[1] = value[1];\n                            listener.velocity[2] = value[2];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        case 4106:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.currentCtx.gain.gain.value = value;\n                            break;\n                        case 4111:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2]) || !Number.isFinite(value[3]) || !Number.isFinite(value[4]) || !Number.isFinite(value[5])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            listener.direction[0] = value[0];\n                            listener.direction[1] = value[1];\n                            listener.direction[2] = value[2];\n                            listener.up[0] = value[3];\n                            listener.up[1] = value[4];\n                            listener.up[2] = value[5];\n                            AL.updateListenerSpace(AL.currentCtx);\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getBufferParam: (funcname, bufferId, param) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var buf = AL.buffers[bufferId];\n                    if (!buf || bufferId === 0) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    switch (param) {\n                        case 8193:\n                            return buf.frequency;\n                        case 8194:\n                            return buf.bytesPerSample * 8;\n                        case 8195:\n                            return buf.channels;\n                        case 8196:\n                            return buf.length * buf.bytesPerSample * buf.channels;\n                        case 8213:\n                            if (buf.length === 0) {\n                                return [0, 0]\n                            }\n                            return [(buf.audioBuf._loopStart || 0) * buf.frequency, (buf.audioBuf._loopEnd || buf.length) * buf.frequency];\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setBufferParam: (funcname, bufferId, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var buf = AL.buffers[bufferId];\n                    if (!buf || bufferId === 0) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    switch (param) {\n                        case 8196:\n                            if (value !== 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 8213:\n                            if (value[0] < 0 || value[0] > buf.length || value[1] < 0 || value[1] > buf.Length || value[0] >= value[1]) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            if (buf.refCount > 0) {\n                                AL.currentCtx.err = 40964;\n                                return\n                            }\n                            if (buf.audioBuf) {\n                                buf.audioBuf._loopStart = value[0] / buf.frequency;\n                                buf.audioBuf._loopEnd = value[1] / buf.frequency\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                getSourceParam: (funcname, sourceId, param) => {\n                    if (!AL.currentCtx) {\n                        return null\n                    }\n                    var src = AL.currentCtx.sources[sourceId];\n                    if (!src) {\n                        AL.currentCtx.err = 40961;\n                        return null\n                    }\n                    switch (param) {\n                        case 514:\n                            return src.relative;\n                        case 4097:\n                            return src.coneInnerAngle;\n                        case 4098:\n                            return src.coneOuterAngle;\n                        case 4099:\n                            return src.pitch;\n                        case 4100:\n                            return src.position;\n                        case 4101:\n                            return src.direction;\n                        case 4102:\n                            return src.velocity;\n                        case 4103:\n                            return src.looping;\n                        case 4105:\n                            if (src.type === 4136) {\n                                return src.bufQueue[0].id\n                            }\n                            return 0;\n                        case 4106:\n                            return src.gain.gain.value;\n                        case 4109:\n                            return src.minGain;\n                        case 4110:\n                            return src.maxGain;\n                        case 4112:\n                            return src.state;\n                        case 4117:\n                            if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) {\n                                return 0\n                            }\n                            return src.bufQueue.length;\n                        case 4118:\n                            if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 || src.looping) {\n                                return 0\n                            }\n                            return src.bufsProcessed;\n                        case 4128:\n                            return src.refDistance;\n                        case 4129:\n                            return src.rolloffFactor;\n                        case 4130:\n                            return src.coneOuterGain;\n                        case 4131:\n                            return src.maxDistance;\n                        case 4132:\n                            return AL.sourceTell(src);\n                        case 4133:\n                            var offset = AL.sourceTell(src);\n                            if (offset > 0) {\n                                offset *= src.bufQueue[0].frequency\n                            }\n                            return offset;\n                        case 4134:\n                            var offset = AL.sourceTell(src);\n                            if (offset > 0) {\n                                offset *= src.bufQueue[0].frequency * src.bufQueue[0].bytesPerSample\n                            }\n                            return offset;\n                        case 4135:\n                            return src.type;\n                        case 4628:\n                            return src.spatialize;\n                        case 8201:\n                            var length = 0;\n                            var bytesPerFrame = 0;\n                            for (var i = 0; i < src.bufQueue.length; i++) {\n                                length += src.bufQueue[i].length;\n                                if (src.bufQueue[i].id !== 0) {\n                                    bytesPerFrame = src.bufQueue[i].bytesPerSample * src.bufQueue[i].channels\n                                }\n                            }\n                            return length * bytesPerFrame;\n                        case 8202:\n                            var length = 0;\n                            for (var i = 0; i < src.bufQueue.length; i++) {\n                                length += src.bufQueue[i].length\n                            }\n                            return length;\n                        case 8203:\n                            return AL.sourceDuration(src);\n                        case 53248:\n                            return src.distanceModel;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return null\n                    }\n                },\n                setSourceParam: (funcname, sourceId, param, value) => {\n                    if (!AL.currentCtx) {\n                        return\n                    }\n                    var src = AL.currentCtx.sources[sourceId];\n                    if (!src) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (value === null) {\n                        AL.currentCtx.err = 40962;\n                        return\n                    }\n                    switch (param) {\n                        case 514:\n                            if (value === 1) {\n                                src.relative = true;\n                                AL.updateSourceSpace(src)\n                            } else if (value === 0) {\n                                src.relative = false;\n                                AL.updateSourceSpace(src)\n                            } else {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 4097:\n                            if (!Number.isFinite(value)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneInnerAngle = value;\n                            if (src.panner) {\n                                src.panner.coneInnerAngle = value % 360\n                            }\n                            break;\n                        case 4098:\n                            if (!Number.isFinite(value)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneOuterAngle = value;\n                            if (src.panner) {\n                                src.panner.coneOuterAngle = value % 360\n                            }\n                            break;\n                        case 4099:\n                            if (!Number.isFinite(value) || value <= 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            if (src.pitch === value) {\n                                break\n                            }\n                            src.pitch = value;\n                            AL.updateSourceRate(src);\n                            break;\n                        case 4100:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.position[0] = value[0];\n                            src.position[1] = value[1];\n                            src.position[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4101:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.direction[0] = value[0];\n                            src.direction[1] = value[1];\n                            src.direction[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4102:\n                            if (!Number.isFinite(value[0]) || !Number.isFinite(value[1]) || !Number.isFinite(value[2])) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.velocity[0] = value[0];\n                            src.velocity[1] = value[1];\n                            src.velocity[2] = value[2];\n                            AL.updateSourceSpace(src);\n                            break;\n                        case 4103:\n                            if (value === 1) {\n                                src.looping = true;\n                                AL.updateSourceTime(src);\n                                if (src.type === 4136 && src.audioQueue.length > 0) {\n                                    var audioSrc = src.audioQueue[0];\n                                    audioSrc.loop = true;\n                                    audioSrc._duration = Number.POSITIVE_INFINITY\n                                }\n                            } else if (value === 0) {\n                                src.looping = false;\n                                var currentTime = AL.updateSourceTime(src);\n                                if (src.type === 4136 && src.audioQueue.length > 0) {\n                                    var audioSrc = src.audioQueue[0];\n                                    audioSrc.loop = false;\n                                    audioSrc._duration = src.bufQueue[0].audioBuf.duration / src.playbackRate;\n                                    audioSrc._startTime = currentTime - src.bufOffset / src.playbackRate\n                                }\n                            } else {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            break;\n                        case 4105:\n                            if (src.state === 4114 || src.state === 4115) {\n                                AL.currentCtx.err = 40964;\n                                return\n                            }\n                            if (value === 0) {\n                                for (var i in src.bufQueue) {\n                                    src.bufQueue[i].refCount--\n                                }\n                                src.bufQueue.length = 1;\n                                src.bufQueue[0] = AL.buffers[0];\n                                src.bufsProcessed = 0;\n                                src.type = 4144\n                            } else {\n                                var buf = AL.buffers[value];\n                                if (!buf) {\n                                    AL.currentCtx.err = 40963;\n                                    return\n                                }\n                                for (var i in src.bufQueue) {\n                                    src.bufQueue[i].refCount--\n                                }\n                                src.bufQueue.length = 0;\n                                buf.refCount++;\n                                src.bufQueue = [buf];\n                                src.bufsProcessed = 0;\n                                src.type = 4136\n                            }\n                            AL.initSourcePanner(src);\n                            AL.scheduleSourceAudio(src);\n                            break;\n                        case 4106:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.gain.gain.value = value;\n                            break;\n                        case 4109:\n                            if (!Number.isFinite(value) || value < 0 || value > Math.min(src.maxGain, 1)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.minGain = value;\n                            break;\n                        case 4110:\n                            if (!Number.isFinite(value) || value < Math.max(0, src.minGain) || value > 1) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.maxGain = value;\n                            break;\n                        case 4128:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.refDistance = value;\n                            if (src.panner) {\n                                src.panner.refDistance = value\n                            }\n                            break;\n                        case 4129:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.rolloffFactor = value;\n                            if (src.panner) {\n                                src.panner.rolloffFactor = value\n                            }\n                            break;\n                        case 4130:\n                            if (!Number.isFinite(value) || value < 0 || value > 1) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.coneOuterGain = value;\n                            if (src.panner) {\n                                src.panner.coneOuterGain = value\n                            }\n                            break;\n                        case 4131:\n                            if (!Number.isFinite(value) || value < 0) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.maxDistance = value;\n                            if (src.panner) {\n                                src.panner.maxDistance = value\n                            }\n                            break;\n                        case 4132:\n                            if (value < 0 || value > AL.sourceDuration(src)) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4133:\n                            var srcLen = AL.sourceDuration(src);\n                            if (srcLen > 0) {\n                                var frequency;\n                                for (var bufId in src.bufQueue) {\n                                    if (bufId) {\n                                        frequency = src.bufQueue[bufId].frequency;\n                                        break\n                                    }\n                                }\n                                value /= frequency\n                            }\n                            if (value < 0 || value > srcLen) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4134:\n                            var srcLen = AL.sourceDuration(src);\n                            if (srcLen > 0) {\n                                var bytesPerSec;\n                                for (var bufId in src.bufQueue) {\n                                    if (bufId) {\n                                        var buf = src.bufQueue[bufId];\n                                        bytesPerSec = buf.frequency * buf.bytesPerSample * buf.channels;\n                                        break\n                                    }\n                                }\n                                value /= bytesPerSec\n                            }\n                            if (value < 0 || value > srcLen) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            AL.sourceSeek(src, value);\n                            break;\n                        case 4628:\n                            if (value !== 0 && value !== 1 && value !== 2) {\n                                AL.currentCtx.err = 40963;\n                                return\n                            }\n                            src.spatialize = value;\n                            AL.initSourcePanner(src);\n                            break;\n                        case 8201:\n                        case 8202:\n                        case 8203:\n                            AL.currentCtx.err = 40964;\n                            break;\n                        case 53248:\n                            switch (value) {\n                                case 0:\n                                case 53249:\n                                case 53250:\n                                case 53251:\n                                case 53252:\n                                case 53253:\n                                case 53254:\n                                    src.distanceModel = value;\n                                    if (AL.currentCtx.sourceDistanceModel) {\n                                        AL.updateContextGlobal(AL.currentCtx)\n                                    }\n                                    break;\n                                default:\n                                    AL.currentCtx.err = 40963;\n                                    return\n                            }\n                            break;\n                        default:\n                            AL.currentCtx.err = 40962;\n                            return\n                    }\n                },\n                captures: {},\n                sharedCaptureAudioCtx: null,\n                requireValidCaptureDevice: (deviceId, funcname) => {\n                    if (deviceId === 0) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    var c = AL.captures[deviceId];\n                    if (!c) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    var err = c.mediaStreamError;\n                    if (err) {\n                        AL.alcErr = 40961;\n                        return null\n                    }\n                    return c\n                }\n            };\n            var _alBuffer3f = (bufferId, param, value0, value1, value2) => {\n                AL.setBufferParam(\"alBuffer3f\", bufferId, param, null)\n            };\n            _alBuffer3f.sig = \"viifff\";\n            var _alBuffer3i = (bufferId, param, value0, value1, value2) => {\n                AL.setBufferParam(\"alBuffer3i\", bufferId, param, null)\n            };\n            _alBuffer3i.sig = \"viiiii\";\n\n            function _alBufferData(bufferId, format, pData, size, freq) {\n                pData >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var buf = AL.buffers[bufferId];\n                if (!buf) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                if (freq <= 0) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                var audioBuf = null;\n                try {\n                    switch (format) {\n                        case 4352:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                for (var i = 0; i < size; ++i) {\n                                    channel0[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1\n                                }\n                            }\n                            buf.bytesPerSample = 1;\n                            buf.channels = 1;\n                            buf.length = size;\n                            break;\n                        case 4353:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 1, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                pData >>= 1;\n                                for (var i = 0; i < size >> 1; ++i) {\n                                    channel0[i] = HEAP16[pData++ >>> 0] * 30517578125e-15\n                                }\n                            }\n                            buf.bytesPerSample = 2;\n                            buf.channels = 1;\n                            buf.length = size >> 1;\n                            break;\n                        case 4354:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 1, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                for (var i = 0; i < size >> 1; ++i) {\n                                    channel0[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1;\n                                    channel1[i] = HEAPU8[pData++ >>> 0] * .0078125 - 1\n                                }\n                            }\n                            buf.bytesPerSample = 1;\n                            buf.channels = 2;\n                            buf.length = size >> 1;\n                            break;\n                        case 4355:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 2, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                pData >>= 1;\n                                for (var i = 0; i < size >> 2; ++i) {\n                                    channel0[i] = HEAP16[pData++ >>> 0] * 30517578125e-15;\n                                    channel1[i] = HEAP16[pData++ >>> 0] * 30517578125e-15\n                                }\n                            }\n                            buf.bytesPerSample = 2;\n                            buf.channels = 2;\n                            buf.length = size >> 2;\n                            break;\n                        case 65552:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(1, size >> 2, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                pData >>= 2;\n                                for (var i = 0; i < size >> 2; ++i) {\n                                    channel0[i] = HEAPF32[pData++ >>> 0]\n                                }\n                            }\n                            buf.bytesPerSample = 4;\n                            buf.channels = 1;\n                            buf.length = size >> 2;\n                            break;\n                        case 65553:\n                            if (size > 0) {\n                                audioBuf = AL.currentCtx.audioCtx.createBuffer(2, size >> 3, freq);\n                                var channel0 = audioBuf.getChannelData(0);\n                                var channel1 = audioBuf.getChannelData(1);\n                                pData >>= 2;\n                                for (var i = 0; i < size >> 3; ++i) {\n                                    channel0[i] = HEAPF32[pData++ >>> 0];\n                                    channel1[i] = HEAPF32[pData++ >>> 0]\n                                }\n                            }\n                            buf.bytesPerSample = 4;\n                            buf.channels = 2;\n                            buf.length = size >> 3;\n                            break;\n                        default:\n                            AL.currentCtx.err = 40963;\n                            return\n                    }\n                    buf.frequency = freq;\n                    buf.audioBuf = audioBuf\n                } catch (e) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n            }\n            _alBufferData.sig = \"viipii\";\n            var _alBufferf = (bufferId, param, value) => {\n                AL.setBufferParam(\"alBufferf\", bufferId, param, null)\n            };\n            _alBufferf.sig = \"viif\";\n\n            function _alBufferfv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.setBufferParam(\"alBufferfv\", bufferId, param, null)\n            }\n            _alBufferfv.sig = \"viip\";\n            var _alBufferi = (bufferId, param, value) => {\n                AL.setBufferParam(\"alBufferi\", bufferId, param, null)\n            };\n            _alBufferi.sig = \"viii\";\n\n            function _alBufferiv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8213:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.setBufferParam(\"alBufferiv\", bufferId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setBufferParam(\"alBufferiv\", bufferId, param, null);\n                        break\n                }\n            }\n            _alBufferiv.sig = \"viip\";\n\n            function _alDeleteBuffers(count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    if (bufId === 0) {\n                        continue\n                    }\n                    if (!AL.buffers[bufId]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (AL.buffers[bufId].refCount) {\n                        AL.currentCtx.err = 40964;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    if (bufId === 0) {\n                        continue\n                    }\n                    AL.deviceRefCounts[AL.buffers[bufId].deviceId]--;\n                    delete AL.buffers[bufId];\n                    AL.freeIds.push(bufId)\n                }\n            }\n            _alDeleteBuffers.sig = \"vip\";\n            var _alSourcei = (sourceId, param, value) => {\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        AL.setSourceParam(\"alSourcei\", sourceId, param, value);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcei\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSourcei.sig = \"viii\";\n\n            function _alDeleteSources(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    if (!AL.currentCtx.sources[srcId]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4116);\n                    _alSourcei(srcId, 4105, 0);\n                    delete AL.currentCtx.sources[srcId];\n                    AL.freeIds.push(srcId)\n                }\n            }\n            _alDeleteSources.sig = \"vip\";\n            var _alDisable = param => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                switch (param) {\n                    case 512:\n                        AL.currentCtx.sourceDistanceModel = false;\n                        AL.updateContextGlobal(AL.currentCtx);\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            };\n            _alDisable.sig = \"vi\";\n            var _alDistanceModel = model => {\n                AL.setGlobalParam(\"alDistanceModel\", 53248, model)\n            };\n            _alDistanceModel.sig = \"vi\";\n            var _alDopplerFactor = value => {\n                AL.setGlobalParam(\"alDopplerFactor\", 49152, value)\n            };\n            _alDopplerFactor.sig = \"vf\";\n            var _alDopplerVelocity = value => {\n                warnOnce(\"alDopplerVelocity() is deprecated, and only kept for compatibility with OpenAL 1.0. Use alSpeedOfSound() instead.\");\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (value <= 0) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n            };\n            _alDopplerVelocity.sig = \"vf\";\n            var _alEnable = param => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                switch (param) {\n                    case 512:\n                        AL.currentCtx.sourceDistanceModel = true;\n                        AL.updateContextGlobal(AL.currentCtx);\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            };\n            _alEnable.sig = \"vi\";\n\n            function _alGenBuffers(count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var buf = {\n                        deviceId: AL.currentCtx.deviceId,\n                        id: AL.newId(),\n                        refCount: 0,\n                        audioBuf: null,\n                        frequency: 0,\n                        bytesPerSample: 2,\n                        channels: 1,\n                        length: 0\n                    };\n                    AL.deviceRefCounts[buf.deviceId]++;\n                    AL.buffers[buf.id] = buf;\n                    HEAP32[pBufferIds + i * 4 >>> 2 >>> 0] = buf.id\n                }\n            }\n            _alGenBuffers.sig = \"vip\";\n\n            function _alGenSources(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                for (var i = 0; i < count; ++i) {\n                    var gain = AL.currentCtx.audioCtx.createGain();\n                    gain.connect(AL.currentCtx.gain);\n                    var src = {\n                        context: AL.currentCtx,\n                        id: AL.newId(),\n                        type: 4144,\n                        state: 4113,\n                        bufQueue: [AL.buffers[0]],\n                        audioQueue: [],\n                        looping: false,\n                        pitch: 1,\n                        dopplerShift: 1,\n                        gain,\n                        minGain: 0,\n                        maxGain: 1,\n                        panner: null,\n                        bufsProcessed: 0,\n                        bufStartTime: Number.NEGATIVE_INFINITY,\n                        bufOffset: 0,\n                        relative: false,\n                        refDistance: 1,\n                        maxDistance: 340282e33,\n                        rolloffFactor: 1,\n                        position: [0, 0, 0],\n                        velocity: [0, 0, 0],\n                        direction: [0, 0, 0],\n                        coneOuterGain: 0,\n                        coneInnerAngle: 360,\n                        coneOuterAngle: 360,\n                        distanceModel: 53250,\n                        spatialize: 2,\n                        get playbackRate() {\n                            return this.pitch * this.dopplerShift\n                        }\n                    };\n                    AL.currentCtx.sources[src.id] = src;\n                    HEAP32[pSourceIds + i * 4 >>> 2 >>> 0] = src.id\n                }\n            }\n            _alGenSources.sig = \"vip\";\n            var _alGetBoolean = param => {\n                var val = AL.getGlobalParam(\"alGetBoolean\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val !== 0 ? 1 : 0;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetBoolean.sig = \"ii\";\n\n            function _alGetBooleanv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetBooleanv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAP8[pValues >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBooleanv.sig = \"vip\";\n\n            function _alGetBuffer3f(bufferId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getBufferParam(\"alGetBuffer3f\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBuffer3f.sig = \"viippp\";\n\n            function _alGetBuffer3i(bufferId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getBufferParam(\"alGetBuffer3i\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBuffer3i.sig = \"viippp\";\n\n            function _alGetBufferf(bufferId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferf\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBufferf.sig = \"viip\";\n\n            function _alGetBufferfv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferfv\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetBufferfv.sig = \"viip\";\n\n            function _alGetBufferi(bufferId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferi\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8193:\n                    case 8194:\n                    case 8195:\n                    case 8196:\n                        HEAP32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBufferi.sig = \"viip\";\n\n            function _alGetBufferiv(bufferId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getBufferParam(\"alGetBufferiv\", bufferId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 8193:\n                    case 8194:\n                    case 8195:\n                    case 8196:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    case 8213:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetBufferiv.sig = \"viip\";\n            var _alGetDouble = param => {\n                var val = AL.getGlobalParam(\"alGetDouble\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetDouble.sig = \"di\";\n\n            function _alGetDoublev(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetDoublev\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAPF64[pValues >>> 3 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetDoublev.sig = \"vip\";\n\n            function _alGetEnumValue(pEnumName) {\n                pEnumName >>>= 0;\n                if (!AL.currentCtx) {\n                    return 0\n                }\n                if (!pEnumName) {\n                    AL.currentCtx.err = 40963;\n                    return 0\n                }\n                var name = UTF8ToString(pEnumName);\n                switch (name) {\n                    case \"AL_BITS\":\n                        return 8194;\n                    case \"AL_BUFFER\":\n                        return 4105;\n                    case \"AL_BUFFERS_PROCESSED\":\n                        return 4118;\n                    case \"AL_BUFFERS_QUEUED\":\n                        return 4117;\n                    case \"AL_BYTE_OFFSET\":\n                        return 4134;\n                    case \"AL_CHANNELS\":\n                        return 8195;\n                    case \"AL_CONE_INNER_ANGLE\":\n                        return 4097;\n                    case \"AL_CONE_OUTER_ANGLE\":\n                        return 4098;\n                    case \"AL_CONE_OUTER_GAIN\":\n                        return 4130;\n                    case \"AL_DIRECTION\":\n                        return 4101;\n                    case \"AL_DISTANCE_MODEL\":\n                        return 53248;\n                    case \"AL_DOPPLER_FACTOR\":\n                        return 49152;\n                    case \"AL_DOPPLER_VELOCITY\":\n                        return 49153;\n                    case \"AL_EXPONENT_DISTANCE\":\n                        return 53253;\n                    case \"AL_EXPONENT_DISTANCE_CLAMPED\":\n                        return 53254;\n                    case \"AL_EXTENSIONS\":\n                        return 45060;\n                    case \"AL_FORMAT_MONO16\":\n                        return 4353;\n                    case \"AL_FORMAT_MONO8\":\n                        return 4352;\n                    case \"AL_FORMAT_STEREO16\":\n                        return 4355;\n                    case \"AL_FORMAT_STEREO8\":\n                        return 4354;\n                    case \"AL_FREQUENCY\":\n                        return 8193;\n                    case \"AL_GAIN\":\n                        return 4106;\n                    case \"AL_INITIAL\":\n                        return 4113;\n                    case \"AL_INVALID\":\n                        return -1;\n                    case \"AL_ILLEGAL_ENUM\":\n                    case \"AL_INVALID_ENUM\":\n                        return 40962;\n                    case \"AL_INVALID_NAME\":\n                        return 40961;\n                    case \"AL_ILLEGAL_COMMAND\":\n                    case \"AL_INVALID_OPERATION\":\n                        return 40964;\n                    case \"AL_INVALID_VALUE\":\n                        return 40963;\n                    case \"AL_INVERSE_DISTANCE\":\n                        return 53249;\n                    case \"AL_INVERSE_DISTANCE_CLAMPED\":\n                        return 53250;\n                    case \"AL_LINEAR_DISTANCE\":\n                        return 53251;\n                    case \"AL_LINEAR_DISTANCE_CLAMPED\":\n                        return 53252;\n                    case \"AL_LOOPING\":\n                        return 4103;\n                    case \"AL_MAX_DISTANCE\":\n                        return 4131;\n                    case \"AL_MAX_GAIN\":\n                        return 4110;\n                    case \"AL_MIN_GAIN\":\n                        return 4109;\n                    case \"AL_NONE\":\n                        return 0;\n                    case \"AL_NO_ERROR\":\n                        return 0;\n                    case \"AL_ORIENTATION\":\n                        return 4111;\n                    case \"AL_OUT_OF_MEMORY\":\n                        return 40965;\n                    case \"AL_PAUSED\":\n                        return 4115;\n                    case \"AL_PENDING\":\n                        return 8209;\n                    case \"AL_PITCH\":\n                        return 4099;\n                    case \"AL_PLAYING\":\n                        return 4114;\n                    case \"AL_POSITION\":\n                        return 4100;\n                    case \"AL_PROCESSED\":\n                        return 8210;\n                    case \"AL_REFERENCE_DISTANCE\":\n                        return 4128;\n                    case \"AL_RENDERER\":\n                        return 45059;\n                    case \"AL_ROLLOFF_FACTOR\":\n                        return 4129;\n                    case \"AL_SAMPLE_OFFSET\":\n                        return 4133;\n                    case \"AL_SEC_OFFSET\":\n                        return 4132;\n                    case \"AL_SIZE\":\n                        return 8196;\n                    case \"AL_SOURCE_RELATIVE\":\n                        return 514;\n                    case \"AL_SOURCE_STATE\":\n                        return 4112;\n                    case \"AL_SOURCE_TYPE\":\n                        return 4135;\n                    case \"AL_SPEED_OF_SOUND\":\n                        return 49155;\n                    case \"AL_STATIC\":\n                        return 4136;\n                    case \"AL_STOPPED\":\n                        return 4116;\n                    case \"AL_STREAMING\":\n                        return 4137;\n                    case \"AL_UNDETERMINED\":\n                        return 4144;\n                    case \"AL_UNUSED\":\n                        return 8208;\n                    case \"AL_VELOCITY\":\n                        return 4102;\n                    case \"AL_VENDOR\":\n                        return 45057;\n                    case \"AL_VERSION\":\n                        return 45058;\n                    case \"AL_AUTO_SOFT\":\n                        return 2;\n                    case \"AL_SOURCE_DISTANCE_MODEL\":\n                        return 512;\n                    case \"AL_SOURCE_SPATIALIZE_SOFT\":\n                        return 4628;\n                    case \"AL_LOOP_POINTS_SOFT\":\n                        return 8213;\n                    case \"AL_BYTE_LENGTH_SOFT\":\n                        return 8201;\n                    case \"AL_SAMPLE_LENGTH_SOFT\":\n                        return 8202;\n                    case \"AL_SEC_LENGTH_SOFT\":\n                        return 8203;\n                    case \"AL_FORMAT_MONO_FLOAT32\":\n                        return 65552;\n                    case \"AL_FORMAT_STEREO_FLOAT32\":\n                        return 65553;\n                    default:\n                        AL.currentCtx.err = 40963;\n                        return 0\n                }\n            }\n            _alGetEnumValue.sig = \"ip\";\n            var _alGetError = () => {\n                if (!AL.currentCtx) {\n                    return 40964\n                }\n                var err = AL.currentCtx.err;\n                AL.currentCtx.err = 0;\n                return err\n            };\n            _alGetError.sig = \"i\";\n            var _alGetFloat = param => {\n                var val = AL.getGlobalParam(\"alGetFloat\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        return 0\n                }\n            };\n            _alGetFloat.sig = \"fi\";\n\n            function _alGetFloatv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetFloatv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAPF32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetFloatv.sig = \"vip\";\n            var _alGetInteger = param => {\n                var val = AL.getGlobalParam(\"alGetInteger\", param);\n                if (val === null) {\n                    return 0\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        return val;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alGetInteger.sig = \"ii\";\n\n            function _alGetIntegerv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getGlobalParam(\"alGetIntegerv\", param);\n                if (val === null || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 49152:\n                    case 49155:\n                    case 53248:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetIntegerv.sig = \"vip\";\n\n            function _alGetListener3f(param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getListenerParam(\"alGetListener3f\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAPF32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListener3f.sig = \"vippp\";\n\n            function _alGetListener3i(param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getListenerParam(\"alGetListener3i\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAP32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAP32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListener3i.sig = \"vippp\";\n\n            function _alGetListenerf(param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getListenerParam(\"alGetListenerf\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4106:\n                        HEAPF32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListenerf.sig = \"vip\";\n\n            function _alGetListenerfv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getListenerParam(\"alGetListenerfv\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    case 4111:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        HEAPF32[pValues + 12 >>> 2 >>> 0] = val[3];\n                        HEAPF32[pValues + 16 >>> 2 >>> 0] = val[4];\n                        HEAPF32[pValues + 20 >>> 2 >>> 0] = val[5];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListenerfv.sig = \"vip\";\n\n            function _alGetListeneri(param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getListenerParam(\"alGetListeneri\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                AL.currentCtx.err = 40962\n            }\n            _alGetListeneri.sig = \"vip\";\n\n            function _alGetListeneriv(param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getListenerParam(\"alGetListeneriv\", param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    case 4111:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        HEAP32[pValues + 12 >>> 2 >>> 0] = val[3];\n                        HEAP32[pValues + 16 >>> 2 >>> 0] = val[4];\n                        HEAP32[pValues + 20 >>> 2 >>> 0] = val[5];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetListeneriv.sig = \"vip\";\n\n            function _alGetSource3f(sourceId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getSourceParam(\"alGetSource3f\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAPF32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSource3f.sig = \"viippp\";\n\n            function _alGetSource3i(sourceId, param, pValue0, pValue1, pValue2) {\n                pValue0 >>>= 0;\n                pValue1 >>>= 0;\n                pValue2 >>>= 0;\n                var val = AL.getSourceParam(\"alGetSource3i\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue0 || !pValue1 || !pValue2) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAP32[pValue0 >>> 2 >>> 0] = val[0];\n                        HEAP32[pValue1 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValue2 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSource3i.sig = \"viippp\";\n\n            function _alGetSourcef(sourceId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcef\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        HEAPF32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcef.sig = \"viip\";\n\n            function _alGetSourcefv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcefv\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAPF32[pValues >>> 2 >>> 0] = val[0];\n                        HEAPF32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAPF32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcefv.sig = \"viip\";\n\n            function _alGetSourcei(sourceId, param, pValue) {\n                pValue >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourcei\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValue) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4112:\n                    case 4117:\n                    case 4118:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4135:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        HEAP32[pValue >>> 2 >>> 0] = val;\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourcei.sig = \"viip\";\n\n            function _alGetSourceiv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                var val = AL.getSourceParam(\"alGetSourceiv\", sourceId, param);\n                if (val === null) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4112:\n                    case 4117:\n                    case 4118:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4135:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        HEAP32[pValues >>> 2 >>> 0] = val;\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        HEAP32[pValues >>> 2 >>> 0] = val[0];\n                        HEAP32[pValues + 4 >>> 2 >>> 0] = val[1];\n                        HEAP32[pValues + 8 >>> 2 >>> 0] = val[2];\n                        break;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return\n                }\n            }\n            _alGetSourceiv.sig = \"viip\";\n            var stringToNewUTF8 = str => {\n                var size = lengthBytesUTF8(str) + 1;\n                var ret = _malloc(size);\n                if (ret) stringToUTF8(str, ret, size);\n                return ret\n            };\n\n            function _alGetString(param) {\n                if (AL.stringCache[param]) {\n                    return AL.stringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 0:\n                        ret = \"No Error\";\n                        break;\n                    case 40961:\n                        ret = \"Invalid Name\";\n                        break;\n                    case 40962:\n                        ret = \"Invalid Enum\";\n                        break;\n                    case 40963:\n                        ret = \"Invalid Value\";\n                        break;\n                    case 40964:\n                        ret = \"Invalid Operation\";\n                        break;\n                    case 40965:\n                        ret = \"Out of Memory\";\n                        break;\n                    case 45057:\n                        ret = \"Emscripten\";\n                        break;\n                    case 45058:\n                        ret = \"1.1\";\n                        break;\n                    case 45059:\n                        ret = \"WebAudio\";\n                        break;\n                    case 45060:\n                        ret = Object.keys(AL.AL_EXTENSIONS).join(\" \");\n                        break;\n                    default:\n                        if (AL.currentCtx) {\n                            AL.currentCtx.err = 40962\n                        } else {}\n                        return 0\n                }\n                ret = stringToNewUTF8(ret);\n                AL.stringCache[param] = ret;\n                return ret\n            }\n            _alGetString.sig = \"pi\";\n            var _alIsBuffer = bufferId => {\n                if (!AL.currentCtx) {\n                    return false\n                }\n                if (bufferId > AL.buffers.length) {\n                    return false\n                }\n                if (!AL.buffers[bufferId]) {\n                    return false\n                }\n                return true\n            };\n            _alIsBuffer.sig = \"ii\";\n            var _alIsEnabled = param => {\n                if (!AL.currentCtx) {\n                    return 0\n                }\n                switch (param) {\n                    case 512:\n                        return AL.currentCtx.sourceDistanceModel ? 0 : 1;\n                    default:\n                        AL.currentCtx.err = 40962;\n                        return 0\n                }\n            };\n            _alIsEnabled.sig = \"ii\";\n\n            function _alIsExtensionPresent(pExtName) {\n                pExtName >>>= 0;\n                var name = UTF8ToString(pExtName);\n                return AL.AL_EXTENSIONS[name] ? 1 : 0\n            }\n            _alIsExtensionPresent.sig = \"ip\";\n            var _alIsSource = sourceId => {\n                if (!AL.currentCtx) {\n                    return false\n                }\n                if (!AL.currentCtx.sources[sourceId]) {\n                    return false\n                }\n                return true\n            };\n            _alIsSource.sig = \"ii\";\n            var _alListener3f = (param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setListenerParam(\"alListener3f\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListener3f\", param, null);\n                        break\n                }\n            };\n            _alListener3f.sig = \"vifff\";\n            var _alListener3i = (param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setListenerParam(\"alListener3i\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListener3i\", param, null);\n                        break\n                }\n            };\n            _alListener3i.sig = \"viiii\";\n            var _alListenerf = (param, value) => {\n                switch (param) {\n                    case 4106:\n                        AL.setListenerParam(\"alListenerf\", param, value);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListenerf\", param, null);\n                        break\n                }\n            };\n            _alListenerf.sig = \"vif\";\n\n            function _alListenerfv(param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListenerfv\", param, AL.paramArray);\n                        break;\n                    case 4111:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.paramArray[3] = HEAPF32[pValues + 12 >>> 2 >>> 0];\n                        AL.paramArray[4] = HEAPF32[pValues + 16 >>> 2 >>> 0];\n                        AL.paramArray[5] = HEAPF32[pValues + 20 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListenerfv\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListenerfv\", param, null);\n                        break\n                }\n            }\n            _alListenerfv.sig = \"vip\";\n            var _alListeneri = (param, value) => {\n                AL.setListenerParam(\"alListeneri\", param, null)\n            };\n            _alListeneri.sig = \"vii\";\n\n            function _alListeneriv(param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4100:\n                    case 4102:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListeneriv\", param, AL.paramArray);\n                        break;\n                    case 4111:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.paramArray[3] = HEAP32[pValues + 12 >>> 2 >>> 0];\n                        AL.paramArray[4] = HEAP32[pValues + 16 >>> 2 >>> 0];\n                        AL.paramArray[5] = HEAP32[pValues + 20 >>> 2 >>> 0];\n                        AL.setListenerParam(\"alListeneriv\", param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setListenerParam(\"alListeneriv\", param, null);\n                        break\n                }\n            }\n            _alListeneriv.sig = \"vip\";\n            var _alSource3f = (sourceId, param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setSourceParam(\"alSource3f\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSource3f\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSource3f.sig = \"viifff\";\n            var _alSource3i = (sourceId, param, value0, value1, value2) => {\n                switch (param) {\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = value0;\n                        AL.paramArray[1] = value1;\n                        AL.paramArray[2] = value2;\n                        AL.setSourceParam(\"alSource3i\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSource3i\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSource3i.sig = \"viiiii\";\n            var _alSourcePause = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4115)\n            };\n            _alSourcePause.sig = \"vi\";\n\n            function _alSourcePausev(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4115)\n                }\n            }\n            _alSourcePausev.sig = \"vip\";\n            var _alSourcePlay = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4114)\n            };\n            _alSourcePlay.sig = \"vi\";\n\n            function _alSourcePlayv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4114)\n                }\n            }\n            _alSourcePlayv.sig = \"vip\";\n\n            function _alSourceQueueBuffers(sourceId, count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                if (src.type === 4136) {\n                    AL.currentCtx.err = 40964;\n                    return\n                }\n                if (count === 0) {\n                    return\n                }\n                var templateBuf = AL.buffers[0];\n                for (var i = 0; i < src.bufQueue.length; i++) {\n                    if (src.bufQueue[i].id !== 0) {\n                        templateBuf = src.bufQueue[i];\n                        break\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    var buf = AL.buffers[bufId];\n                    if (!buf) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                    if (templateBuf.id !== 0 && (buf.frequency !== templateBuf.frequency || buf.bytesPerSample !== templateBuf.bytesPerSample || buf.channels !== templateBuf.channels)) {\n                        AL.currentCtx.err = 40964\n                    }\n                }\n                if (src.bufQueue.length === 1 && src.bufQueue[0].id === 0) {\n                    src.bufQueue.length = 0\n                }\n                src.type = 4137;\n                for (var i = 0; i < count; ++i) {\n                    var bufId = HEAP32[pBufferIds + i * 4 >>> 2 >>> 0];\n                    var buf = AL.buffers[bufId];\n                    buf.refCount++;\n                    src.bufQueue.push(buf)\n                }\n                if (src.looping) {\n                    AL.cancelPendingSourceAudio(src)\n                }\n                AL.initSourcePanner(src);\n                AL.scheduleSourceAudio(src)\n            }\n            _alSourceQueueBuffers.sig = \"viip\";\n            var _alSourceRewind = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4116);\n                AL.setSourceState(src, 4113)\n            };\n            _alSourceRewind.sig = \"vi\";\n\n            function _alSourceRewindv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4113)\n                }\n            }\n            _alSourceRewindv.sig = \"vip\";\n            var _alSourceStop = sourceId => {\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                AL.setSourceState(src, 4116)\n            };\n            _alSourceStop.sig = \"vi\";\n\n            function _alSourceStopv(count, pSourceIds) {\n                pSourceIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pSourceIds) {\n                    AL.currentCtx.err = 40963\n                }\n                for (var i = 0; i < count; ++i) {\n                    if (!AL.currentCtx.sources[HEAP32[pSourceIds + i * 4 >>> 2 >>> 0]]) {\n                        AL.currentCtx.err = 40961;\n                        return\n                    }\n                }\n                for (var i = 0; i < count; ++i) {\n                    var srcId = HEAP32[pSourceIds + i * 4 >>> 2 >>> 0];\n                    AL.setSourceState(AL.currentCtx.sources[srcId], 4116)\n                }\n            }\n            _alSourceStopv.sig = \"vip\";\n\n            function _alSourceUnqueueBuffers(sourceId, count, pBufferIds) {\n                pBufferIds >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                var src = AL.currentCtx.sources[sourceId];\n                if (!src) {\n                    AL.currentCtx.err = 40961;\n                    return\n                }\n                if (count > (src.bufQueue.length === 1 && src.bufQueue[0].id === 0 ? 0 : src.bufsProcessed)) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                if (count === 0) {\n                    return\n                }\n                for (var i = 0; i < count; i++) {\n                    var buf = src.bufQueue.shift();\n                    buf.refCount--;\n                    HEAP32[pBufferIds + i * 4 >>> 2 >>> 0] = buf.id;\n                    src.bufsProcessed--\n                }\n                if (src.bufQueue.length === 0) {\n                    src.bufQueue.push(AL.buffers[0])\n                }\n                AL.initSourcePanner(src);\n                AL.scheduleSourceAudio(src)\n            }\n            _alSourceUnqueueBuffers.sig = \"viip\";\n            var _alSourcef = (sourceId, param, value) => {\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        AL.setSourceParam(\"alSourcef\", sourceId, param, value);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcef\", sourceId, param, null);\n                        break\n                }\n            };\n            _alSourcef.sig = \"viif\";\n\n            function _alSourcefv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 4097:\n                    case 4098:\n                    case 4099:\n                    case 4106:\n                    case 4109:\n                    case 4110:\n                    case 4128:\n                    case 4129:\n                    case 4130:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 8203:\n                        var val = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, val);\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = HEAPF32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAPF32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAPF32[pValues + 8 >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourcefv\", sourceId, param, null);\n                        break\n                }\n            }\n            _alSourcefv.sig = \"viip\";\n\n            function _alSourceiv(sourceId, param, pValues) {\n                pValues >>>= 0;\n                if (!AL.currentCtx) {\n                    return\n                }\n                if (!pValues) {\n                    AL.currentCtx.err = 40963;\n                    return\n                }\n                switch (param) {\n                    case 514:\n                    case 4097:\n                    case 4098:\n                    case 4103:\n                    case 4105:\n                    case 4128:\n                    case 4129:\n                    case 4131:\n                    case 4132:\n                    case 4133:\n                    case 4134:\n                    case 4628:\n                    case 8201:\n                    case 8202:\n                    case 53248:\n                        var val = HEAP32[pValues >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, val);\n                        break;\n                    case 4100:\n                    case 4101:\n                    case 4102:\n                        AL.paramArray[0] = HEAP32[pValues >>> 2 >>> 0];\n                        AL.paramArray[1] = HEAP32[pValues + 4 >>> 2 >>> 0];\n                        AL.paramArray[2] = HEAP32[pValues + 8 >>> 2 >>> 0];\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, AL.paramArray);\n                        break;\n                    default:\n                        AL.setSourceParam(\"alSourceiv\", sourceId, param, null);\n                        break\n                }\n            }\n            _alSourceiv.sig = \"viip\";\n            var _alSpeedOfSound = value => {\n                AL.setGlobalParam(\"alSpeedOfSound\", 49155, value)\n            };\n            _alSpeedOfSound.sig = \"vf\";\n            var _alcCaptureCloseDevice = function(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureCloseDevice\");\n                if (!c) return false;\n                delete AL.captures[deviceId];\n                AL.freeIds.push(deviceId);\n                c.mediaStreamSourceNode?.disconnect();\n                c.mergerNode?.disconnect();\n                c.splitterNode?.disconnect();\n                c.scriptProcessorNode?.disconnect();\n                if (c.mediaStream) {\n                    c.mediaStream.getTracks().forEach(track => track.stop())\n                }\n                delete c.buffers;\n                c.capturedFrameCount = 0;\n                c.isCapturing = false;\n                return true\n            };\n            _alcCaptureCloseDevice.sig = \"ip\";\n            var listenOnce = (object, event, func) => {\n                object.addEventListener(event, func, {\n                    once: true\n                })\n            };\n            var autoResumeAudioContext = (ctx, elements) => {\n                if (!elements) {\n                    elements = [document, document.getElementById(\"canvas\")]\n                } [\"keydown\", \"mousedown\", \"touchstart\"].forEach(event => {\n                    elements.forEach(element => {\n                        if (element) {\n                            listenOnce(element, event, () => {\n                                if (ctx.state === \"suspended\") ctx.resume()\n                            })\n                        }\n                    })\n                })\n            };\n\n            function _alcCaptureOpenDevice(pDeviceName, requestedSampleRate, format, bufferFrameCapacity) {\n                pDeviceName >>>= 0;\n                var resolvedDeviceName = AL.CAPTURE_DEVICE_NAME;\n                if (pDeviceName !== 0) {\n                    resolvedDeviceName = UTF8ToString(pDeviceName);\n                    if (resolvedDeviceName !== AL.CAPTURE_DEVICE_NAME) {\n                        AL.alcErr = 40965;\n                        return 0\n                    }\n                }\n                if (bufferFrameCapacity < 0) {\n                    AL.alcErr = 40964;\n                    return 0\n                }\n                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;\n                var has_getUserMedia = navigator.getUserMedia || navigator.mediaDevices && navigator.mediaDevices.getUserMedia;\n                if (!has_getUserMedia) {\n                    AL.alcErr = 40965;\n                    return 0\n                }\n                var AudioContext = window.AudioContext || window.webkitAudioContext;\n                if (!AL.sharedCaptureAudioCtx) {\n                    try {\n                        AL.sharedCaptureAudioCtx = new AudioContext\n                    } catch (e) {\n                        AL.alcErr = 40965;\n                        return 0\n                    }\n                }\n                autoResumeAudioContext(AL.sharedCaptureAudioCtx);\n                var outputChannelCount;\n                switch (format) {\n                    case 65552:\n                    case 4353:\n                    case 4352:\n                        outputChannelCount = 1;\n                        break;\n                    case 65553:\n                    case 4355:\n                    case 4354:\n                        outputChannelCount = 2;\n                        break;\n                    default:\n                        AL.alcErr = 40964;\n                        return 0\n                }\n\n                function newF32Array(cap) {\n                    return new Float32Array(cap)\n                }\n\n                function newI16Array(cap) {\n                    return new Int16Array(cap)\n                }\n\n                function newU8Array(cap) {\n                    return new Uint8Array(cap)\n                }\n                var requestedSampleType;\n                var newSampleArray;\n                switch (format) {\n                    case 65552:\n                    case 65553:\n                        requestedSampleType = \"f32\";\n                        newSampleArray = newF32Array;\n                        break;\n                    case 4353:\n                    case 4355:\n                        requestedSampleType = \"i16\";\n                        newSampleArray = newI16Array;\n                        break;\n                    case 4352:\n                    case 4354:\n                        requestedSampleType = \"u8\";\n                        newSampleArray = newU8Array;\n                        break\n                }\n                var buffers = [];\n                try {\n                    for (var chan = 0; chan < outputChannelCount; ++chan) {\n                        buffers[chan] = newSampleArray(bufferFrameCapacity)\n                    }\n                } catch (e) {\n                    AL.alcErr = 40965;\n                    return 0\n                }\n                var newCapture = {\n                    audioCtx: AL.sharedCaptureAudioCtx,\n                    deviceName: resolvedDeviceName,\n                    requestedSampleRate,\n                    requestedSampleType,\n                    outputChannelCount,\n                    inputChannelCount: null,\n                    mediaStreamError: null,\n                    mediaStreamSourceNode: null,\n                    mediaStream: null,\n                    mergerNode: null,\n                    splitterNode: null,\n                    scriptProcessorNode: null,\n                    isCapturing: false,\n                    buffers,\n                    get bufferFrameCapacity() {\n                        return buffers[0].length\n                    },\n                    capturePlayhead: 0,\n                    captureReadhead: 0,\n                    capturedFrameCount: 0\n                };\n                var onError = mediaStreamError => {\n                    newCapture.mediaStreamError = mediaStreamError\n                };\n                var onSuccess = mediaStream => {\n                    newCapture.mediaStreamSourceNode = newCapture.audioCtx.createMediaStreamSource(mediaStream);\n                    newCapture.mediaStream = mediaStream;\n                    var inputChannelCount = 1;\n                    switch (newCapture.mediaStreamSourceNode.channelCountMode) {\n                        case \"max\":\n                            inputChannelCount = outputChannelCount;\n                            break;\n                        case \"clamped-max\":\n                            inputChannelCount = Math.min(outputChannelCount, newCapture.mediaStreamSourceNode.channelCount);\n                            break;\n                        case \"explicit\":\n                            inputChannelCount = newCapture.mediaStreamSourceNode.channelCount;\n                            break\n                    }\n                    newCapture.inputChannelCount = inputChannelCount;\n                    var processorFrameCount = 512;\n                    newCapture.scriptProcessorNode = newCapture.audioCtx.createScriptProcessor(processorFrameCount, inputChannelCount, outputChannelCount);\n                    if (inputChannelCount > outputChannelCount) {\n                        newCapture.mergerNode = newCapture.audioCtx.createChannelMerger(inputChannelCount);\n                        newCapture.mediaStreamSourceNode.connect(newCapture.mergerNode);\n                        newCapture.mergerNode.connect(newCapture.scriptProcessorNode)\n                    } else if (inputChannelCount < outputChannelCount) {\n                        newCapture.splitterNode = newCapture.audioCtx.createChannelSplitter(outputChannelCount);\n                        newCapture.mediaStreamSourceNode.connect(newCapture.splitterNode);\n                        newCapture.splitterNode.connect(newCapture.scriptProcessorNode)\n                    } else {\n                        newCapture.mediaStreamSourceNode.connect(newCapture.scriptProcessorNode)\n                    }\n                    newCapture.scriptProcessorNode.connect(newCapture.audioCtx.destination);\n                    newCapture.scriptProcessorNode.onaudioprocess = audioProcessingEvent => {\n                        if (!newCapture.isCapturing) {\n                            return\n                        }\n                        var c = newCapture;\n                        var srcBuf = audioProcessingEvent.inputBuffer;\n                        switch (format) {\n                            case 65552:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i]\n                                }\n                                break;\n                            case 65553:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i];\n                                    c.buffers[1][wi] = channel1[i]\n                                }\n                                break;\n                            case 4353:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i] * 32767\n                                }\n                                break;\n                            case 4355:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = channel0[i] * 32767;\n                                    c.buffers[1][wi] = channel1[i] * 32767\n                                }\n                                break;\n                            case 4352:\n                                var channel0 = srcBuf.getChannelData(0);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = (channel0[i] + 1) * 127\n                                }\n                                break;\n                            case 4354:\n                                var channel0 = srcBuf.getChannelData(0);\n                                var channel1 = srcBuf.getChannelData(1);\n                                for (var i = 0; i < srcBuf.length; ++i) {\n                                    var wi = (c.capturePlayhead + i) % c.bufferFrameCapacity;\n                                    c.buffers[0][wi] = (channel0[i] + 1) * 127;\n                                    c.buffers[1][wi] = (channel1[i] + 1) * 127\n                                }\n                                break\n                        }\n                        c.capturePlayhead += srcBuf.length;\n                        c.capturePlayhead %= c.bufferFrameCapacity;\n                        c.capturedFrameCount += srcBuf.length;\n                        c.capturedFrameCount = Math.min(c.capturedFrameCount, c.bufferFrameCapacity)\n                    }\n                };\n                if (navigator.mediaDevices?.getUserMedia) {\n                    navigator.mediaDevices.getUserMedia({\n                        audio: true\n                    }).then(onSuccess).catch(onError)\n                } else {\n                    navigator.getUserMedia({\n                        audio: true\n                    }, onSuccess, onError)\n                }\n                var id = AL.newId();\n                AL.captures[id] = newCapture;\n                return id\n            }\n            _alcCaptureOpenDevice.sig = \"ppiii\";\n\n            function _alcCaptureSamples(deviceId, pFrames, requestedFrameCount) {\n                deviceId >>>= 0;\n                pFrames >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureSamples\");\n                if (!c) return;\n                var dstfreq = c.requestedSampleRate;\n                var srcfreq = c.audioCtx.sampleRate;\n                var fratio = srcfreq / dstfreq;\n                if (requestedFrameCount < 0 || requestedFrameCount > c.capturedFrameCount / fratio) {\n                    AL.alcErr = 40964;\n                    return\n                }\n\n                function setF32Sample(i, sample) {\n                    HEAPF32[pFrames + 4 * i >>> 2 >>> 0] = sample\n                }\n\n                function setI16Sample(i, sample) {\n                    HEAP16[pFrames + 2 * i >>> 1 >>> 0] = sample\n                }\n\n                function setU8Sample(i, sample) {\n                    HEAP8[pFrames + i >>> 0] = sample\n                }\n                var setSample;\n                switch (c.requestedSampleType) {\n                    case \"f32\":\n                        setSample = setF32Sample;\n                        break;\n                    case \"i16\":\n                        setSample = setI16Sample;\n                        break;\n                    case \"u8\":\n                        setSample = setU8Sample;\n                        break;\n                    default:\n                        return\n                }\n                if (Math.floor(fratio) == fratio) {\n                    for (var i = 0, frame_i = 0; frame_i < requestedFrameCount; ++frame_i) {\n                        for (var chan = 0; chan < c.buffers.length; ++chan, ++i) {\n                            setSample(i, c.buffers[chan][c.captureReadhead])\n                        }\n                        c.captureReadhead = (fratio + c.captureReadhead) % c.bufferFrameCapacity\n                    }\n                } else {\n                    for (var i = 0, frame_i = 0; frame_i < requestedFrameCount; ++frame_i) {\n                        var lefti = Math.floor(c.captureReadhead);\n                        var righti = Math.ceil(c.captureReadhead);\n                        var d = c.captureReadhead - lefti;\n                        for (var chan = 0; chan < c.buffers.length; ++chan, ++i) {\n                            var lefts = c.buffers[chan][lefti];\n                            var rights = c.buffers[chan][righti];\n                            setSample(i, (1 - d) * lefts + d * rights)\n                        }\n                        c.captureReadhead = (c.captureReadhead + fratio) % c.bufferFrameCapacity\n                    }\n                }\n                c.capturedFrameCount = 0\n            }\n            _alcCaptureSamples.sig = \"vppi\";\n\n            function _alcCaptureStart(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureStart\");\n                if (!c) return;\n                if (c.isCapturing) {\n                    return\n                }\n                c.isCapturing = true;\n                c.capturedFrameCount = 0;\n                c.capturePlayhead = 0\n            }\n            _alcCaptureStart.sig = \"vp\";\n\n            function _alcCaptureStop(deviceId) {\n                deviceId >>>= 0;\n                var c = AL.requireValidCaptureDevice(deviceId, \"alcCaptureStop\");\n                if (!c) return;\n                c.isCapturing = false\n            }\n            _alcCaptureStop.sig = \"vp\";\n\n            function _alcCloseDevice(deviceId) {\n                deviceId >>>= 0;\n                if (!(deviceId in AL.deviceRefCounts) || AL.deviceRefCounts[deviceId] > 0) {\n                    return 0\n                }\n                delete AL.deviceRefCounts[deviceId];\n                AL.freeIds.push(deviceId);\n                return 1\n            }\n            _alcCloseDevice.sig = \"ip\";\n\n            function _alcCreateContext(deviceId, pAttrList) {\n                deviceId >>>= 0;\n                pAttrList >>>= 0;\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                var options = null;\n                var attrs = [];\n                var hrtf = null;\n                pAttrList >>= 2;\n                if (pAttrList) {\n                    var attr = 0;\n                    var val = 0;\n                    while (true) {\n                        attr = HEAP32[pAttrList++ >>> 0];\n                        attrs.push(attr);\n                        if (attr === 0) {\n                            break\n                        }\n                        val = HEAP32[pAttrList++ >>> 0];\n                        attrs.push(val);\n                        switch (attr) {\n                            case 4103:\n                                if (!options) {\n                                    options = {}\n                                }\n                                options.sampleRate = val;\n                                break;\n                            case 4112:\n                            case 4113:\n                                break;\n                            case 6546:\n                                switch (val) {\n                                    case 0:\n                                        hrtf = false;\n                                        break;\n                                    case 1:\n                                        hrtf = true;\n                                        break;\n                                    case 2:\n                                        break;\n                                    default:\n                                        AL.alcErr = 40964;\n                                        return 0\n                                }\n                                break;\n                            case 6550:\n                                if (val !== 0) {\n                                    AL.alcErr = 40964;\n                                    return 0\n                                }\n                                break;\n                            default:\n                                AL.alcErr = 40964;\n                                return 0\n                        }\n                    }\n                }\n                var AudioContext = window.AudioContext || window.webkitAudioContext;\n                var ac = null;\n                try {\n                    if (options) {\n                        ac = new AudioContext(options)\n                    } else {\n                        ac = new AudioContext\n                    }\n                } catch (e) {\n                    if (e.name === \"NotSupportedError\") {\n                        AL.alcErr = 40964\n                    } else {\n                        AL.alcErr = 40961\n                    }\n                    return 0\n                }\n                autoResumeAudioContext(ac);\n                if (typeof ac.createGain == \"undefined\") {\n                    ac.createGain = ac.createGainNode\n                }\n                var gain = ac.createGain();\n                gain.connect(ac.destination);\n                var ctx = {\n                    deviceId,\n                    id: AL.newId(),\n                    attrs,\n                    audioCtx: ac,\n                    listener: {\n                        position: [0, 0, 0],\n                        velocity: [0, 0, 0],\n                        direction: [0, 0, 0],\n                        up: [0, 0, 0]\n                    },\n                    sources: [],\n                    interval: setInterval(() => AL.scheduleContextAudio(ctx), AL.QUEUE_INTERVAL),\n                    gain,\n                    distanceModel: 53250,\n                    speedOfSound: 343.3,\n                    dopplerFactor: 1,\n                    sourceDistanceModel: false,\n                    hrtf: hrtf || false,\n                    _err: 0,\n                    get err() {\n                        return this._err\n                    },\n                    set err(val) {\n                        if (this._err === 0 || val === 0) {\n                            this._err = val\n                        }\n                    }\n                };\n                AL.deviceRefCounts[deviceId]++;\n                AL.contexts[ctx.id] = ctx;\n                if (hrtf !== null) {\n                    for (var ctxId in AL.contexts) {\n                        var c = AL.contexts[ctxId];\n                        if (c.deviceId === deviceId) {\n                            c.hrtf = hrtf;\n                            AL.updateContextGlobal(c)\n                        }\n                    }\n                }\n                return ctx.id\n            }\n            _alcCreateContext.sig = \"ppp\";\n\n            function _alcDestroyContext(contextId) {\n                contextId >>>= 0;\n                var ctx = AL.contexts[contextId];\n                if (AL.currentCtx === ctx) {\n                    AL.alcErr = 40962;\n                    return\n                }\n                if (AL.contexts[contextId].interval) {\n                    clearInterval(AL.contexts[contextId].interval)\n                }\n                AL.deviceRefCounts[ctx.deviceId]--;\n                delete AL.contexts[contextId];\n                AL.freeIds.push(contextId)\n            }\n            _alcDestroyContext.sig = \"vp\";\n\n            function _alcGetContextsDevice(contextId) {\n                contextId >>>= 0;\n                if (contextId in AL.contexts) {\n                    return AL.contexts[contextId].deviceId\n                }\n                return 0\n            }\n            _alcGetContextsDevice.sig = \"pp\";\n\n            function _alcGetCurrentContext() {\n                if (AL.currentCtx !== null) {\n                    return AL.currentCtx.id\n                }\n                return 0\n            }\n            _alcGetCurrentContext.sig = \"p\";\n\n            function _alcGetEnumValue(deviceId, pEnumName) {\n                deviceId >>>= 0;\n                pEnumName >>>= 0;\n                if (deviceId !== 0 && !(deviceId in AL.deviceRefCounts)) {\n                    return 0\n                } else if (!pEnumName) {\n                    AL.alcErr = 40964;\n                    return 0\n                }\n                var name = UTF8ToString(pEnumName);\n                switch (name) {\n                    case \"ALC_NO_ERROR\":\n                        return 0;\n                    case \"ALC_INVALID_DEVICE\":\n                        return 40961;\n                    case \"ALC_INVALID_CONTEXT\":\n                        return 40962;\n                    case \"ALC_INVALID_ENUM\":\n                        return 40963;\n                    case \"ALC_INVALID_VALUE\":\n                        return 40964;\n                    case \"ALC_OUT_OF_MEMORY\":\n                        return 40965;\n                    case \"ALC_MAJOR_VERSION\":\n                        return 4096;\n                    case \"ALC_MINOR_VERSION\":\n                        return 4097;\n                    case \"ALC_ATTRIBUTES_SIZE\":\n                        return 4098;\n                    case \"ALC_ALL_ATTRIBUTES\":\n                        return 4099;\n                    case \"ALC_DEFAULT_DEVICE_SPECIFIER\":\n                        return 4100;\n                    case \"ALC_DEVICE_SPECIFIER\":\n                        return 4101;\n                    case \"ALC_EXTENSIONS\":\n                        return 4102;\n                    case \"ALC_FREQUENCY\":\n                        return 4103;\n                    case \"ALC_REFRESH\":\n                        return 4104;\n                    case \"ALC_SYNC\":\n                        return 4105;\n                    case \"ALC_MONO_SOURCES\":\n                        return 4112;\n                    case \"ALC_STEREO_SOURCES\":\n                        return 4113;\n                    case \"ALC_CAPTURE_DEVICE_SPECIFIER\":\n                        return 784;\n                    case \"ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER\":\n                        return 785;\n                    case \"ALC_CAPTURE_SAMPLES\":\n                        return 786;\n                    case \"ALC_HRTF_SOFT\":\n                        return 6546;\n                    case \"ALC_HRTF_ID_SOFT\":\n                        return 6550;\n                    case \"ALC_DONT_CARE_SOFT\":\n                        return 2;\n                    case \"ALC_HRTF_STATUS_SOFT\":\n                        return 6547;\n                    case \"ALC_NUM_HRTF_SPECIFIERS_SOFT\":\n                        return 6548;\n                    case \"ALC_HRTF_SPECIFIER_SOFT\":\n                        return 6549;\n                    case \"ALC_HRTF_DISABLED_SOFT\":\n                        return 0;\n                    case \"ALC_HRTF_ENABLED_SOFT\":\n                        return 1;\n                    case \"ALC_HRTF_DENIED_SOFT\":\n                        return 2;\n                    case \"ALC_HRTF_REQUIRED_SOFT\":\n                        return 3;\n                    case \"ALC_HRTF_HEADPHONES_DETECTED_SOFT\":\n                        return 4;\n                    case \"ALC_HRTF_UNSUPPORTED_FORMAT_SOFT\":\n                        return 5;\n                    default:\n                        AL.alcErr = 40964;\n                        return 0\n                }\n            }\n            _alcGetEnumValue.sig = \"ipp\";\n\n            function _alcGetError(deviceId) {\n                deviceId >>>= 0;\n                var err = AL.alcErr;\n                AL.alcErr = 0;\n                return err\n            }\n            _alcGetError.sig = \"ip\";\n\n            function _alcGetIntegerv(deviceId, param, size, pValues) {\n                deviceId >>>= 0;\n                pValues >>>= 0;\n                if (size === 0 || !pValues) {\n                    return\n                }\n                switch (param) {\n                    case 4096:\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 4097:\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 4098:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = AL.currentCtx.attrs.length;\n                        break;\n                    case 4099:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        for (var i = 0; i < AL.currentCtx.attrs.length; i++) {\n                            HEAP32[pValues + i * 4 >>> 2 >>> 0] = AL.currentCtx.attrs[i]\n                        }\n                        break;\n                    case 4103:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = AL.currentCtx.audioCtx.sampleRate;\n                        break;\n                    case 4112:\n                    case 4113:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 2147483647;\n                        break;\n                    case 6546:\n                    case 6547:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        var hrtfStatus = 0;\n                        for (var ctxId in AL.contexts) {\n                            var ctx = AL.contexts[ctxId];\n                            if (ctx.deviceId === deviceId) {\n                                hrtfStatus = ctx.hrtf ? 1 : 0\n                            }\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = hrtfStatus;\n                        break;\n                    case 6548:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                        break;\n                    case 131075:\n                        if (!(deviceId in AL.deviceRefCounts)) {\n                            AL.alcErr = 40961;\n                            return\n                        }\n                        if (!AL.currentCtx) {\n                            AL.alcErr = 40962;\n                            return\n                        }\n                        HEAP32[pValues >>> 2 >>> 0] = 1;\n                    case 786:\n                        var c = AL.requireValidCaptureDevice(deviceId, \"alcGetIntegerv\");\n                        if (!c) {\n                            return\n                        }\n                        var n = c.capturedFrameCount;\n                        var dstfreq = c.requestedSampleRate;\n                        var srcfreq = c.audioCtx.sampleRate;\n                        var nsamples = Math.floor(n * (dstfreq / srcfreq));\n                        HEAP32[pValues >>> 2 >>> 0] = nsamples;\n                        break;\n                    default:\n                        AL.alcErr = 40963;\n                        return\n                }\n            }\n            _alcGetIntegerv.sig = \"vpiip\";\n\n            function _alcGetString(deviceId, param) {\n                deviceId >>>= 0;\n                if (AL.alcStringCache[param]) {\n                    return AL.alcStringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 0:\n                        ret = \"No Error\";\n                        break;\n                    case 40961:\n                        ret = \"Invalid Device\";\n                        break;\n                    case 40962:\n                        ret = \"Invalid Context\";\n                        break;\n                    case 40963:\n                        ret = \"Invalid Enum\";\n                        break;\n                    case 40964:\n                        ret = \"Invalid Value\";\n                        break;\n                    case 40965:\n                        ret = \"Out of Memory\";\n                        break;\n                    case 4100:\n                        if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                            ret = AL.DEVICE_NAME\n                        } else {\n                            return 0\n                        }\n                        break;\n                    case 4101:\n                        if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                            ret = AL.DEVICE_NAME + \"\\0\"\n                        } else {\n                            ret = \"\\0\"\n                        }\n                        break;\n                    case 785:\n                        ret = AL.CAPTURE_DEVICE_NAME;\n                        break;\n                    case 784:\n                        if (deviceId === 0) {\n                            ret = AL.CAPTURE_DEVICE_NAME + \"\\0\"\n                        } else {\n                            var c = AL.requireValidCaptureDevice(deviceId, \"alcGetString\");\n                            if (!c) {\n                                return 0\n                            }\n                            ret = c.deviceName\n                        }\n                        break;\n                    case 4102:\n                        if (!deviceId) {\n                            AL.alcErr = 40961;\n                            return 0\n                        }\n                        ret = Object.keys(AL.ALC_EXTENSIONS).join(\" \");\n                        break;\n                    default:\n                        AL.alcErr = 40963;\n                        return 0\n                }\n                ret = stringToNewUTF8(ret);\n                AL.alcStringCache[param] = ret;\n                return ret\n            }\n            _alcGetString.sig = \"ppi\";\n\n            function _alcIsExtensionPresent(deviceId, pExtName) {\n                deviceId >>>= 0;\n                pExtName >>>= 0;\n                var name = UTF8ToString(pExtName);\n                return AL.ALC_EXTENSIONS[name] ? 1 : 0\n            }\n            _alcIsExtensionPresent.sig = \"ipp\";\n\n            function _alcMakeContextCurrent(contextId) {\n                contextId >>>= 0;\n                if (contextId === 0) {\n                    AL.currentCtx = null\n                } else {\n                    AL.currentCtx = AL.contexts[contextId]\n                }\n                return 1\n            }\n            _alcMakeContextCurrent.sig = \"ip\";\n\n            function _alcOpenDevice(pDeviceName) {\n                pDeviceName >>>= 0;\n                if (pDeviceName) {\n                    var name = UTF8ToString(pDeviceName);\n                    if (name !== AL.DEVICE_NAME) {\n                        return 0\n                    }\n                }\n                if (typeof AudioContext != \"undefined\" || typeof webkitAudioContext != \"undefined\") {\n                    var deviceId = AL.newId();\n                    AL.deviceRefCounts[deviceId] = 0;\n                    return deviceId\n                }\n                return 0\n            }\n            _alcOpenDevice.sig = \"pp\";\n\n            function _alcProcessContext(contextId) {\n                contextId >>>= 0\n            }\n            _alcProcessContext.sig = \"vp\";\n\n            function _alcSuspendContext(contextId) {\n                contextId >>>= 0\n            }\n            _alcSuspendContext.sig = \"vp\";\n\n            function _duckdb_web_fs_directory_create(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.createDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_create.sig = \"vpi\";\n\n            function _duckdb_web_fs_directory_exists(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.checkDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_exists.sig = \"ipi\";\n\n            function _duckdb_web_fs_directory_list_files(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.listDirectoryEntries(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_list_files.sig = \"ipi\";\n\n            function _duckdb_web_fs_directory_remove(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.removeDirectory(Module, path, pathLen)\n            }\n            _duckdb_web_fs_directory_remove.sig = \"vpi\";\n\n            function _duckdb_web_fs_file_close(fileId) {\n                return globalThis.DUCKDB_RUNTIME.closeFile(Module, fileId)\n            }\n            _duckdb_web_fs_file_close.sig = \"vi\";\n\n            function _duckdb_web_fs_file_drop_file(fileName, fileNameLen) {\n                fileName >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.dropFile(Module, fileName, fileNameLen)\n            }\n            _duckdb_web_fs_file_drop_file.sig = \"vpi\";\n\n            function _duckdb_web_fs_file_exists(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.checkFile(Module, path, pathLen)\n            }\n            _duckdb_web_fs_file_exists.sig = \"ipi\";\n\n            function _duckdb_web_fs_file_move(from, fromLen, to, toLen) {\n                from >>>= 0;\n                to >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.moveFile(Module, from, fromLen, to, toLen)\n            }\n            _duckdb_web_fs_file_move.sig = \"vpipi\";\n\n            function _duckdb_web_fs_file_open(fileId, flags) {\n                return globalThis.DUCKDB_RUNTIME.openFile(Module, fileId, flags)\n            }\n            _duckdb_web_fs_file_open.sig = \"pii\";\n\n            function _duckdb_web_fs_file_read(fileId, buf, size, location) {\n                buf >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.readFile(Module, fileId, buf, size, location)\n            }\n            _duckdb_web_fs_file_read.sig = \"iipid\";\n\n            function _duckdb_web_fs_file_truncate(fileId, newSize) {\n                return globalThis.DUCKDB_RUNTIME.truncateFile(Module, fileId, newSize)\n            }\n            _duckdb_web_fs_file_truncate.sig = \"vid\";\n\n            function _duckdb_web_fs_file_write(fileId, buf, size, location) {\n                buf >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.writeFile(Module, fileId, buf, size, location)\n            }\n            _duckdb_web_fs_file_write.sig = \"iipid\";\n\n            function _duckdb_web_fs_get_default_data_protocol(Module) {\n                return globalThis.DUCKDB_RUNTIME.getDefaultDataProtocol(Module)\n            }\n            _duckdb_web_fs_get_default_data_protocol.sig = \"i\";\n\n            function _duckdb_web_fs_glob(path, pathLen) {\n                path >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.glob(Module, path, pathLen)\n            }\n            _duckdb_web_fs_glob.sig = \"vpi\";\n\n            function _duckdb_web_test_platform_feature(feature) {\n                return globalThis.DUCKDB_RUNTIME.testPlatformFeature(Module, feature)\n            }\n            _duckdb_web_test_platform_feature.sig = \"ii\";\n\n            function _duckdb_web_udf_scalar_call(funcId, descPtr, descSize, ptrsPtr, ptrsSize, response) {\n                funcId >>>= 0;\n                descSize >>>= 0;\n                ptrsSize >>>= 0;\n                return globalThis.DUCKDB_RUNTIME.callScalarUDF(Module, funcId, descPtr, descSize, ptrsPtr, ptrsSize, response)\n            }\n            _duckdb_web_udf_scalar_call.sig = \"vpipipi\";\n            var _emscripten_alcDevicePauseSOFT = deviceId => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return\n                }\n                if (AL.paused) {\n                    return\n                }\n                AL.paused = true;\n                for (var ctxId in AL.contexts) {\n                    var ctx = AL.contexts[ctxId];\n                    if (ctx.deviceId !== deviceId) {\n                        continue\n                    }\n                    ctx.audioCtx.suspend();\n                    clearInterval(ctx.interval);\n                    ctx.interval = null\n                }\n            };\n            _emscripten_alcDevicePauseSOFT.sig = \"vi\";\n            var _emscripten_alcDeviceResumeSOFT = deviceId => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return\n                }\n                if (!AL.paused) {\n                    return\n                }\n                AL.paused = false;\n                for (var ctxId in AL.contexts) {\n                    var ctx = AL.contexts[ctxId];\n                    if (ctx.deviceId !== deviceId) {\n                        continue\n                    }\n                    ctx.interval = setInterval(() => AL.scheduleContextAudio(ctx), AL.QUEUE_INTERVAL);\n                    ctx.audioCtx.resume()\n                }\n            };\n            _emscripten_alcDeviceResumeSOFT.sig = \"vi\";\n            var _emscripten_alcGetStringiSOFT = (deviceId, param, index) => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                if (AL.alcStringCache[param]) {\n                    return AL.alcStringCache[param]\n                }\n                var ret;\n                switch (param) {\n                    case 6549:\n                        if (index === 0) {\n                            ret = \"Web Audio HRTF\"\n                        } else {\n                            AL.alcErr = 40964;\n                            return 0\n                        }\n                        break;\n                    default:\n                        if (index !== 0) {\n                            AL.alcErr = 40963;\n                            return 0\n                        }\n                        return _alcGetString(deviceId, param)\n                }\n                ret = stringToNewUTF8(ret);\n                AL.alcStringCache[param] = ret;\n                return ret\n            };\n            _emscripten_alcGetStringiSOFT.sig = \"iiii\";\n            var _emscripten_alcResetDeviceSOFT = (deviceId, pAttrList) => {\n                if (!(deviceId in AL.deviceRefCounts)) {\n                    AL.alcErr = 40961;\n                    return 0\n                }\n                var hrtf = null;\n                pAttrList >>= 2;\n                if (pAttrList) {\n                    var attr = 0;\n                    var val = 0;\n                    while (true) {\n                        attr = HEAP32[pAttrList++ >>> 0];\n                        if (attr === 0) {\n                            break\n                        }\n                        val = HEAP32[pAttrList++ >>> 0];\n                        switch (attr) {\n                            case 6546:\n                                if (val === 1) {\n                                    hrtf = true\n                                } else if (val === 0) {\n                                    hrtf = false\n                                }\n                                break\n                        }\n                    }\n                }\n                if (hrtf !== null) {\n                    for (var ctxId in AL.contexts) {\n                        var ctx = AL.contexts[ctxId];\n                        if (ctx.deviceId === deviceId) {\n                            ctx.hrtf = hrtf;\n                            AL.updateContextGlobal(ctx)\n                        }\n                    }\n                }\n                return 1\n            };\n            _emscripten_alcResetDeviceSOFT.sig = \"iii\";\n            var readEmAsmArgsArray = [];\n            var readEmAsmArgs = (sigPtr, buf) => {\n                readEmAsmArgsArray.length = 0;\n                var ch;\n                while (ch = HEAPU8[sigPtr++ >>> 0]) {\n                    var wide = ch != 105;\n                    wide &= ch != 112;\n                    buf += wide && buf % 8 ? 4 : 0;\n                    readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >>> 2 >>> 0] : ch == 105 ? HEAP32[buf >>> 2 >>> 0] : HEAPF64[buf >>> 3 >>> 0]);\n                    buf += wide ? 8 : 4\n                }\n                return readEmAsmArgsArray\n            };\n            var runEmAsmFunction = (code, sigPtr, argbuf) => {\n                var args = readEmAsmArgs(sigPtr, argbuf);\n                return ASM_CONSTS[code](...args)\n            };\n\n            function _emscripten_asm_const_int(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_int.sig = \"ippp\";\n\n            function _emscripten_asm_const_ptr(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_ptr.sig = \"pppp\";\n\n            function _emscripten_console_error(str) {\n                str >>>= 0;\n                console.error(UTF8ToString(str))\n            }\n            _emscripten_console_error.sig = \"vp\";\n\n            function _emscripten_console_log(str) {\n                str >>>= 0;\n                console.log(UTF8ToString(str))\n            }\n            _emscripten_console_log.sig = \"vp\";\n\n            function _emscripten_console_trace(str) {\n                str >>>= 0;\n                console.trace(UTF8ToString(str))\n            }\n            _emscripten_console_trace.sig = \"vp\";\n\n            function _emscripten_console_warn(str) {\n                str >>>= 0;\n                console.warn(UTF8ToString(str))\n            }\n            _emscripten_console_warn.sig = \"vp\";\n            var _emscripten_date_now = () => Date.now();\n            _emscripten_date_now.sig = \"d\";\n\n            function _emscripten_err(str) {\n                str >>>= 0;\n                return err(UTF8ToString(str))\n            }\n            _emscripten_err.sig = \"vp\";\n            var getHeapMax = () => 4294901760;\n\n            function _emscripten_get_heap_max() {\n                return getHeapMax()\n            }\n            _emscripten_get_heap_max.sig = \"p\";\n            var _emscripten_get_now_res = () => {\n                if (ENVIRONMENT_IS_NODE) {\n                    return 1\n                }\n                return 1e3\n            };\n            _emscripten_get_now_res.sig = \"d\";\n            var GLctx;\n            var webgl_enable_ANGLE_instanced_arrays = ctx => {\n                var ext = ctx.getExtension(\"ANGLE_instanced_arrays\");\n                if (ext) {\n                    ctx[\"vertexAttribDivisor\"] = (index, divisor) => ext[\"vertexAttribDivisorANGLE\"](index, divisor);\n                    ctx[\"drawArraysInstanced\"] = (mode, first, count, primcount) => ext[\"drawArraysInstancedANGLE\"](mode, first, count, primcount);\n                    ctx[\"drawElementsInstanced\"] = (mode, count, type, indices, primcount) => ext[\"drawElementsInstancedANGLE\"](mode, count, type, indices, primcount);\n                    return 1\n                }\n            };\n            var webgl_enable_OES_vertex_array_object = ctx => {\n                var ext = ctx.getExtension(\"OES_vertex_array_object\");\n                if (ext) {\n                    ctx[\"createVertexArray\"] = () => ext[\"createVertexArrayOES\"]();\n                    ctx[\"deleteVertexArray\"] = vao => ext[\"deleteVertexArrayOES\"](vao);\n                    ctx[\"bindVertexArray\"] = vao => ext[\"bindVertexArrayOES\"](vao);\n                    ctx[\"isVertexArray\"] = vao => ext[\"isVertexArrayOES\"](vao);\n                    return 1\n                }\n            };\n            var webgl_enable_WEBGL_draw_buffers = ctx => {\n                var ext = ctx.getExtension(\"WEBGL_draw_buffers\");\n                if (ext) {\n                    ctx[\"drawBuffers\"] = (n, bufs) => ext[\"drawBuffersWEBGL\"](n, bufs);\n                    return 1\n                }\n            };\n            var webgl_enable_EXT_polygon_offset_clamp = ctx => !!(ctx.extPolygonOffsetClamp = ctx.getExtension(\"EXT_polygon_offset_clamp\"));\n            var webgl_enable_EXT_clip_control = ctx => !!(ctx.extClipControl = ctx.getExtension(\"EXT_clip_control\"));\n            var webgl_enable_WEBGL_polygon_mode = ctx => !!(ctx.webglPolygonMode = ctx.getExtension(\"WEBGL_polygon_mode\"));\n            var webgl_enable_WEBGL_multi_draw = ctx => !!(ctx.multiDrawWebgl = ctx.getExtension(\"WEBGL_multi_draw\"));\n            var getEmscriptenSupportedExtensions = ctx => {\n                var supportedExtensions = [\"ANGLE_instanced_arrays\", \"EXT_blend_minmax\", \"EXT_disjoint_timer_query\", \"EXT_frag_depth\", \"EXT_shader_texture_lod\", \"EXT_sRGB\", \"OES_element_index_uint\", \"OES_fbo_render_mipmap\", \"OES_standard_derivatives\", \"OES_texture_float\", \"OES_texture_half_float\", \"OES_texture_half_float_linear\", \"OES_vertex_array_object\", \"WEBGL_color_buffer_float\", \"WEBGL_depth_texture\", \"WEBGL_draw_buffers\", \"EXT_clip_control\", \"EXT_color_buffer_half_float\", \"EXT_depth_clamp\", \"EXT_float_blend\", \"EXT_polygon_offset_clamp\", \"EXT_texture_compression_bptc\", \"EXT_texture_compression_rgtc\", \"EXT_texture_filter_anisotropic\", \"KHR_parallel_shader_compile\", \"OES_texture_float_linear\", \"WEBGL_blend_func_extended\", \"WEBGL_compressed_texture_astc\", \"WEBGL_compressed_texture_etc\", \"WEBGL_compressed_texture_etc1\", \"WEBGL_compressed_texture_s3tc\", \"WEBGL_compressed_texture_s3tc_srgb\", \"WEBGL_debug_renderer_info\", \"WEBGL_debug_shaders\", \"WEBGL_lose_context\", \"WEBGL_multi_draw\", \"WEBGL_polygon_mode\"];\n                return (ctx.getSupportedExtensions() || []).filter(ext => supportedExtensions.includes(ext))\n            };\n            var GL = {\n                counter: 1,\n                buffers: [],\n                programs: [],\n                framebuffers: [],\n                renderbuffers: [],\n                textures: [],\n                shaders: [],\n                vaos: [],\n                contexts: [],\n                offscreenCanvases: {},\n                queries: [],\n                stringCache: {},\n                unpackAlignment: 4,\n                unpackRowLength: 0,\n                recordError: errorCode => {\n                    if (!GL.lastError) {\n                        GL.lastError = errorCode\n                    }\n                },\n                getNewId: table => {\n                    var ret = GL.counter++;\n                    for (var i = table.length; i < ret; i++) {\n                        table[i] = null\n                    }\n                    return ret\n                },\n                genObject: (n, buffers, createFunction, objectTable) => {\n                    for (var i = 0; i < n; i++) {\n                        var buffer = GLctx[createFunction]();\n                        var id = buffer && GL.getNewId(objectTable);\n                        if (buffer) {\n                            buffer.name = id;\n                            objectTable[id] = buffer\n                        } else {\n                            GL.recordError(1282)\n                        }\n                        HEAP32[buffers + i * 4 >>> 2 >>> 0] = id\n                    }\n                },\n                getSource: (shader, count, string, length) => {\n                    var source = \"\";\n                    for (var i = 0; i < count; ++i) {\n                        var len = length ? HEAPU32[length + i * 4 >>> 2 >>> 0] : undefined;\n                        source += UTF8ToString(HEAPU32[string + i * 4 >>> 2 >>> 0], len)\n                    }\n                    return source\n                },\n                createContext: (canvas, webGLContextAttributes) => {\n                    if (!canvas.getContextSafariWebGL2Fixed) {\n                        canvas.getContextSafariWebGL2Fixed = canvas.getContext;\n\n                        function fixedGetContext(ver, attrs) {\n                            var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs);\n                            return ver == \"webgl\" == gl instanceof WebGLRenderingContext ? gl : null\n                        }\n                        canvas.getContext = fixedGetContext\n                    }\n                    var ctx = canvas.getContext(\"webgl\", webGLContextAttributes);\n                    if (!ctx) return 0;\n                    var handle = GL.registerContext(ctx, webGLContextAttributes);\n                    return handle\n                },\n                registerContext: (ctx, webGLContextAttributes) => {\n                    var handle = GL.getNewId(GL.contexts);\n                    var context = {\n                        handle,\n                        attributes: webGLContextAttributes,\n                        version: webGLContextAttributes.majorVersion,\n                        GLctx: ctx\n                    };\n                    if (ctx.canvas) ctx.canvas.GLctxObject = context;\n                    GL.contexts[handle] = context;\n                    if (typeof webGLContextAttributes.enableExtensionsByDefault == \"undefined\" || webGLContextAttributes.enableExtensionsByDefault) {\n                        GL.initExtensions(context)\n                    }\n                    return handle\n                },\n                makeContextCurrent: contextHandle => {\n                    GL.currentContext = GL.contexts[contextHandle];\n                    Module.ctx = GLctx = GL.currentContext?.GLctx;\n                    return !(contextHandle && !GLctx)\n                },\n                getContext: contextHandle => GL.contexts[contextHandle],\n                deleteContext: contextHandle => {\n                    if (GL.currentContext === GL.contexts[contextHandle]) {\n                        GL.currentContext = null\n                    }\n                    if (typeof JSEvents == \"object\") {\n                        JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)\n                    }\n                    if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) {\n                        GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined\n                    }\n                    GL.contexts[contextHandle] = null\n                },\n                initExtensions: context => {\n                    context ||= GL.currentContext;\n                    if (context.initExtensionsDone) return;\n                    context.initExtensionsDone = true;\n                    var GLctx = context.GLctx;\n                    webgl_enable_WEBGL_multi_draw(GLctx);\n                    webgl_enable_EXT_polygon_offset_clamp(GLctx);\n                    webgl_enable_EXT_clip_control(GLctx);\n                    webgl_enable_WEBGL_polygon_mode(GLctx);\n                    webgl_enable_ANGLE_instanced_arrays(GLctx);\n                    webgl_enable_OES_vertex_array_object(GLctx);\n                    webgl_enable_WEBGL_draw_buffers(GLctx);\n                    {\n                        GLctx.disjointTimerQueryExt = GLctx.getExtension(\"EXT_disjoint_timer_query\")\n                    }\n                    getEmscriptenSupportedExtensions(GLctx).forEach(ext => {\n                        if (!ext.includes(\"lose_context\") && !ext.includes(\"debug\")) {\n                            GLctx.getExtension(ext)\n                        }\n                    })\n                }\n            };\n            var _glActiveTexture = x0 => GLctx.activeTexture(x0);\n            _glActiveTexture.sig = \"vi\";\n            var _emscripten_glActiveTexture = _glActiveTexture;\n            _emscripten_glActiveTexture.sig = \"vi\";\n            var _glAttachShader = (program, shader) => {\n                GLctx.attachShader(GL.programs[program], GL.shaders[shader])\n            };\n            _glAttachShader.sig = \"vii\";\n            var _emscripten_glAttachShader = _glAttachShader;\n            _emscripten_glAttachShader.sig = \"vii\";\n            var _glBeginQueryEXT = (target, id) => {\n                GLctx.disjointTimerQueryExt[\"beginQueryEXT\"](target, GL.queries[id])\n            };\n            _glBeginQueryEXT.sig = \"vii\";\n            var _emscripten_glBeginQueryEXT = _glBeginQueryEXT;\n\n            function _glBindAttribLocation(program, index, name) {\n                name >>>= 0;\n                GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name))\n            }\n            _glBindAttribLocation.sig = \"viip\";\n            var _emscripten_glBindAttribLocation = _glBindAttribLocation;\n            _emscripten_glBindAttribLocation.sig = \"viip\";\n            var _glBindBuffer = (target, buffer) => {\n                GLctx.bindBuffer(target, GL.buffers[buffer])\n            };\n            _glBindBuffer.sig = \"vii\";\n            var _emscripten_glBindBuffer = _glBindBuffer;\n            _emscripten_glBindBuffer.sig = \"vii\";\n            var _glBindFramebuffer = (target, framebuffer) => {\n                GLctx.bindFramebuffer(target, GL.framebuffers[framebuffer])\n            };\n            _glBindFramebuffer.sig = \"vii\";\n            var _emscripten_glBindFramebuffer = _glBindFramebuffer;\n            _emscripten_glBindFramebuffer.sig = \"vii\";\n            var _glBindRenderbuffer = (target, renderbuffer) => {\n                GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer])\n            };\n            _glBindRenderbuffer.sig = \"vii\";\n            var _emscripten_glBindRenderbuffer = _glBindRenderbuffer;\n            _emscripten_glBindRenderbuffer.sig = \"vii\";\n            var _glBindTexture = (target, texture) => {\n                GLctx.bindTexture(target, GL.textures[texture])\n            };\n            _glBindTexture.sig = \"vii\";\n            var _emscripten_glBindTexture = _glBindTexture;\n            _emscripten_glBindTexture.sig = \"vii\";\n            var _glBindVertexArray = vao => {\n                GLctx.bindVertexArray(GL.vaos[vao])\n            };\n            _glBindVertexArray.sig = \"vi\";\n            var _glBindVertexArrayOES = _glBindVertexArray;\n            _glBindVertexArrayOES.sig = \"vi\";\n            var _emscripten_glBindVertexArrayOES = _glBindVertexArrayOES;\n            _emscripten_glBindVertexArrayOES.sig = \"vi\";\n            var _glBlendColor = (x0, x1, x2, x3) => GLctx.blendColor(x0, x1, x2, x3);\n            _glBlendColor.sig = \"vffff\";\n            var _emscripten_glBlendColor = _glBlendColor;\n            _emscripten_glBlendColor.sig = \"vffff\";\n            var _glBlendEquation = x0 => GLctx.blendEquation(x0);\n            _glBlendEquation.sig = \"vi\";\n            var _emscripten_glBlendEquation = _glBlendEquation;\n            _emscripten_glBlendEquation.sig = \"vi\";\n            var _glBlendEquationSeparate = (x0, x1) => GLctx.blendEquationSeparate(x0, x1);\n            _glBlendEquationSeparate.sig = \"vii\";\n            var _emscripten_glBlendEquationSeparate = _glBlendEquationSeparate;\n            _emscripten_glBlendEquationSeparate.sig = \"vii\";\n            var _glBlendFunc = (x0, x1) => GLctx.blendFunc(x0, x1);\n            _glBlendFunc.sig = \"vii\";\n            var _emscripten_glBlendFunc = _glBlendFunc;\n            _emscripten_glBlendFunc.sig = \"vii\";\n            var _glBlendFuncSeparate = (x0, x1, x2, x3) => GLctx.blendFuncSeparate(x0, x1, x2, x3);\n            _glBlendFuncSeparate.sig = \"viiii\";\n            var _emscripten_glBlendFuncSeparate = _glBlendFuncSeparate;\n            _emscripten_glBlendFuncSeparate.sig = \"viiii\";\n\n            function _glBufferData(target, size, data, usage) {\n                size >>>= 0;\n                data >>>= 0;\n                GLctx.bufferData(target, data ? HEAPU8.subarray(data >>> 0, data + size >>> 0) : size, usage)\n            }\n            _glBufferData.sig = \"vippi\";\n            var _emscripten_glBufferData = _glBufferData;\n            _emscripten_glBufferData.sig = \"vippi\";\n\n            function _glBufferSubData(target, offset, size, data) {\n                offset >>>= 0;\n                size >>>= 0;\n                data >>>= 0;\n                GLctx.bufferSubData(target, offset, HEAPU8.subarray(data >>> 0, data + size >>> 0))\n            }\n            _glBufferSubData.sig = \"vippp\";\n            var _emscripten_glBufferSubData = _glBufferSubData;\n            _emscripten_glBufferSubData.sig = \"vippp\";\n            var _glCheckFramebufferStatus = x0 => GLctx.checkFramebufferStatus(x0);\n            _glCheckFramebufferStatus.sig = \"ii\";\n            var _emscripten_glCheckFramebufferStatus = _glCheckFramebufferStatus;\n            _emscripten_glCheckFramebufferStatus.sig = \"ii\";\n            var _glClear = x0 => GLctx.clear(x0);\n            _glClear.sig = \"vi\";\n            var _emscripten_glClear = _glClear;\n            _emscripten_glClear.sig = \"vi\";\n            var _glClearColor = (x0, x1, x2, x3) => GLctx.clearColor(x0, x1, x2, x3);\n            _glClearColor.sig = \"vffff\";\n            var _emscripten_glClearColor = _glClearColor;\n            _emscripten_glClearColor.sig = \"vffff\";\n            var _glClearDepthf = x0 => GLctx.clearDepth(x0);\n            _glClearDepthf.sig = \"vf\";\n            var _emscripten_glClearDepthf = _glClearDepthf;\n            _emscripten_glClearDepthf.sig = \"vf\";\n            var _glClearStencil = x0 => GLctx.clearStencil(x0);\n            _glClearStencil.sig = \"vi\";\n            var _emscripten_glClearStencil = _glClearStencil;\n            _emscripten_glClearStencil.sig = \"vi\";\n            var _glClipControlEXT = (origin, depth) => {\n                GLctx.extClipControl[\"clipControlEXT\"](origin, depth)\n            };\n            _glClipControlEXT.sig = \"vii\";\n            var _emscripten_glClipControlEXT = _glClipControlEXT;\n            var _glColorMask = (red, green, blue, alpha) => {\n                GLctx.colorMask(!!red, !!green, !!blue, !!alpha)\n            };\n            _glColorMask.sig = \"viiii\";\n            var _emscripten_glColorMask = _glColorMask;\n            _emscripten_glColorMask.sig = \"viiii\";\n            var _glCompileShader = shader => {\n                GLctx.compileShader(GL.shaders[shader])\n            };\n            _glCompileShader.sig = \"vi\";\n            var _emscripten_glCompileShader = _glCompileShader;\n            _emscripten_glCompileShader.sig = \"vi\";\n\n            function _glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) {\n                data >>>= 0;\n                GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8.subarray(data >>> 0, data + imageSize >>> 0))\n            }\n            _glCompressedTexImage2D.sig = \"viiiiiiip\";\n            var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D;\n            _emscripten_glCompressedTexImage2D.sig = \"viiiiiiip\";\n\n            function _glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) {\n                data >>>= 0;\n                GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8.subarray(data >>> 0, data + imageSize >>> 0))\n            }\n            _glCompressedTexSubImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D;\n            _emscripten_glCompressedTexSubImage2D.sig = \"viiiiiiiip\";\n            var _glCopyTexImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n            _glCopyTexImage2D.sig = \"viiiiiiii\";\n            var _emscripten_glCopyTexImage2D = _glCopyTexImage2D;\n            _emscripten_glCopyTexImage2D.sig = \"viiiiiiii\";\n            var _glCopyTexSubImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7);\n            _glCopyTexSubImage2D.sig = \"viiiiiiii\";\n            var _emscripten_glCopyTexSubImage2D = _glCopyTexSubImage2D;\n            _emscripten_glCopyTexSubImage2D.sig = \"viiiiiiii\";\n            var _glCreateProgram = () => {\n                var id = GL.getNewId(GL.programs);\n                var program = GLctx.createProgram();\n                program.name = id;\n                program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;\n                program.uniformIdCounter = 1;\n                GL.programs[id] = program;\n                return id\n            };\n            _glCreateProgram.sig = \"i\";\n            var _emscripten_glCreateProgram = _glCreateProgram;\n            _emscripten_glCreateProgram.sig = \"i\";\n            var _glCreateShader = shaderType => {\n                var id = GL.getNewId(GL.shaders);\n                GL.shaders[id] = GLctx.createShader(shaderType);\n                return id\n            };\n            _glCreateShader.sig = \"ii\";\n            var _emscripten_glCreateShader = _glCreateShader;\n            _emscripten_glCreateShader.sig = \"ii\";\n            var _glCullFace = x0 => GLctx.cullFace(x0);\n            _glCullFace.sig = \"vi\";\n            var _emscripten_glCullFace = _glCullFace;\n            _emscripten_glCullFace.sig = \"vi\";\n\n            function _glDeleteBuffers(n, buffers) {\n                buffers >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[buffers + i * 4 >>> 2 >>> 0];\n                    var buffer = GL.buffers[id];\n                    if (!buffer) continue;\n                    GLctx.deleteBuffer(buffer);\n                    buffer.name = 0;\n                    GL.buffers[id] = null\n                }\n            }\n            _glDeleteBuffers.sig = \"vip\";\n            var _emscripten_glDeleteBuffers = _glDeleteBuffers;\n            _emscripten_glDeleteBuffers.sig = \"vip\";\n\n            function _glDeleteFramebuffers(n, framebuffers) {\n                framebuffers >>>= 0;\n                for (var i = 0; i < n; ++i) {\n                    var id = HEAP32[framebuffers + i * 4 >>> 2 >>> 0];\n                    var framebuffer = GL.framebuffers[id];\n                    if (!framebuffer) continue;\n                    GLctx.deleteFramebuffer(framebuffer);\n                    framebuffer.name = 0;\n                    GL.framebuffers[id] = null\n                }\n            }\n            _glDeleteFramebuffers.sig = \"vip\";\n            var _emscripten_glDeleteFramebuffers = _glDeleteFramebuffers;\n            _emscripten_glDeleteFramebuffers.sig = \"vip\";\n            var _glDeleteProgram = id => {\n                if (!id) return;\n                var program = GL.programs[id];\n                if (!program) {\n                    GL.recordError(1281);\n                    return\n                }\n                GLctx.deleteProgram(program);\n                program.name = 0;\n                GL.programs[id] = null\n            };\n            _glDeleteProgram.sig = \"vi\";\n            var _emscripten_glDeleteProgram = _glDeleteProgram;\n            _emscripten_glDeleteProgram.sig = \"vi\";\n\n            function _glDeleteQueriesEXT(n, ids) {\n                ids >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[ids + i * 4 >>> 2 >>> 0];\n                    var query = GL.queries[id];\n                    if (!query) continue;\n                    GLctx.disjointTimerQueryExt[\"deleteQueryEXT\"](query);\n                    GL.queries[id] = null\n                }\n            }\n            _glDeleteQueriesEXT.sig = \"vip\";\n            var _emscripten_glDeleteQueriesEXT = _glDeleteQueriesEXT;\n\n            function _glDeleteRenderbuffers(n, renderbuffers) {\n                renderbuffers >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[renderbuffers + i * 4 >>> 2 >>> 0];\n                    var renderbuffer = GL.renderbuffers[id];\n                    if (!renderbuffer) continue;\n                    GLctx.deleteRenderbuffer(renderbuffer);\n                    renderbuffer.name = 0;\n                    GL.renderbuffers[id] = null\n                }\n            }\n            _glDeleteRenderbuffers.sig = \"vip\";\n            var _emscripten_glDeleteRenderbuffers = _glDeleteRenderbuffers;\n            _emscripten_glDeleteRenderbuffers.sig = \"vip\";\n            var _glDeleteShader = id => {\n                if (!id) return;\n                var shader = GL.shaders[id];\n                if (!shader) {\n                    GL.recordError(1281);\n                    return\n                }\n                GLctx.deleteShader(shader);\n                GL.shaders[id] = null\n            };\n            _glDeleteShader.sig = \"vi\";\n            var _emscripten_glDeleteShader = _glDeleteShader;\n            _emscripten_glDeleteShader.sig = \"vi\";\n\n            function _glDeleteTextures(n, textures) {\n                textures >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[textures + i * 4 >>> 2 >>> 0];\n                    var texture = GL.textures[id];\n                    if (!texture) continue;\n                    GLctx.deleteTexture(texture);\n                    texture.name = 0;\n                    GL.textures[id] = null\n                }\n            }\n            _glDeleteTextures.sig = \"vip\";\n            var _emscripten_glDeleteTextures = _glDeleteTextures;\n            _emscripten_glDeleteTextures.sig = \"vip\";\n\n            function _glDeleteVertexArrays(n, vaos) {\n                vaos >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var id = HEAP32[vaos + i * 4 >>> 2 >>> 0];\n                    GLctx.deleteVertexArray(GL.vaos[id]);\n                    GL.vaos[id] = null\n                }\n            }\n            _glDeleteVertexArrays.sig = \"vip\";\n            var _glDeleteVertexArraysOES = _glDeleteVertexArrays;\n            _glDeleteVertexArraysOES.sig = \"vip\";\n            var _emscripten_glDeleteVertexArraysOES = _glDeleteVertexArraysOES;\n            _emscripten_glDeleteVertexArraysOES.sig = \"vip\";\n            var _glDepthFunc = x0 => GLctx.depthFunc(x0);\n            _glDepthFunc.sig = \"vi\";\n            var _emscripten_glDepthFunc = _glDepthFunc;\n            _emscripten_glDepthFunc.sig = \"vi\";\n            var _glDepthMask = flag => {\n                GLctx.depthMask(!!flag)\n            };\n            _glDepthMask.sig = \"vi\";\n            var _emscripten_glDepthMask = _glDepthMask;\n            _emscripten_glDepthMask.sig = \"vi\";\n            var _glDepthRangef = (x0, x1) => GLctx.depthRange(x0, x1);\n            _glDepthRangef.sig = \"vff\";\n            var _emscripten_glDepthRangef = _glDepthRangef;\n            _emscripten_glDepthRangef.sig = \"vff\";\n            var _glDetachShader = (program, shader) => {\n                GLctx.detachShader(GL.programs[program], GL.shaders[shader])\n            };\n            _glDetachShader.sig = \"vii\";\n            var _emscripten_glDetachShader = _glDetachShader;\n            _emscripten_glDetachShader.sig = \"vii\";\n            var _glDisable = x0 => GLctx.disable(x0);\n            _glDisable.sig = \"vi\";\n            var _emscripten_glDisable = _glDisable;\n            _emscripten_glDisable.sig = \"vi\";\n            var _glDisableVertexAttribArray = index => {\n                GLctx.disableVertexAttribArray(index)\n            };\n            _glDisableVertexAttribArray.sig = \"vi\";\n            var _emscripten_glDisableVertexAttribArray = _glDisableVertexAttribArray;\n            _emscripten_glDisableVertexAttribArray.sig = \"vi\";\n            var _glDrawArrays = (mode, first, count) => {\n                GLctx.drawArrays(mode, first, count)\n            };\n            _glDrawArrays.sig = \"viii\";\n            var _emscripten_glDrawArrays = _glDrawArrays;\n            _emscripten_glDrawArrays.sig = \"viii\";\n            var _glDrawArraysInstanced = (mode, first, count, primcount) => {\n                GLctx.drawArraysInstanced(mode, first, count, primcount)\n            };\n            _glDrawArraysInstanced.sig = \"viiii\";\n            var _glDrawArraysInstancedANGLE = _glDrawArraysInstanced;\n            var _emscripten_glDrawArraysInstancedANGLE = _glDrawArraysInstancedANGLE;\n            var tempFixedLengthArray = [];\n\n            function _glDrawBuffers(n, bufs) {\n                bufs >>>= 0;\n                var bufArray = tempFixedLengthArray[n];\n                for (var i = 0; i < n; i++) {\n                    bufArray[i] = HEAP32[bufs + i * 4 >>> 2 >>> 0]\n                }\n                GLctx.drawBuffers(bufArray)\n            }\n            _glDrawBuffers.sig = \"vip\";\n            var _glDrawBuffersWEBGL = _glDrawBuffers;\n            var _emscripten_glDrawBuffersWEBGL = _glDrawBuffersWEBGL;\n\n            function _glDrawElements(mode, count, type, indices) {\n                indices >>>= 0;\n                GLctx.drawElements(mode, count, type, indices)\n            }\n            _glDrawElements.sig = \"viiip\";\n            var _emscripten_glDrawElements = _glDrawElements;\n            _emscripten_glDrawElements.sig = \"viiip\";\n\n            function _glDrawElementsInstanced(mode, count, type, indices, primcount) {\n                indices >>>= 0;\n                GLctx.drawElementsInstanced(mode, count, type, indices, primcount)\n            }\n            _glDrawElementsInstanced.sig = \"viiipi\";\n            var _glDrawElementsInstancedANGLE = _glDrawElementsInstanced;\n            var _emscripten_glDrawElementsInstancedANGLE = _glDrawElementsInstancedANGLE;\n            var _glEnable = x0 => GLctx.enable(x0);\n            _glEnable.sig = \"vi\";\n            var _emscripten_glEnable = _glEnable;\n            _emscripten_glEnable.sig = \"vi\";\n            var _glEnableVertexAttribArray = index => {\n                GLctx.enableVertexAttribArray(index)\n            };\n            _glEnableVertexAttribArray.sig = \"vi\";\n            var _emscripten_glEnableVertexAttribArray = _glEnableVertexAttribArray;\n            _emscripten_glEnableVertexAttribArray.sig = \"vi\";\n            var _glEndQueryEXT = target => {\n                GLctx.disjointTimerQueryExt[\"endQueryEXT\"](target)\n            };\n            _glEndQueryEXT.sig = \"vi\";\n            var _emscripten_glEndQueryEXT = _glEndQueryEXT;\n            var _glFinish = () => GLctx.finish();\n            _glFinish.sig = \"v\";\n            var _emscripten_glFinish = _glFinish;\n            _emscripten_glFinish.sig = \"v\";\n            var _glFlush = () => GLctx.flush();\n            _glFlush.sig = \"v\";\n            var _emscripten_glFlush = _glFlush;\n            _emscripten_glFlush.sig = \"v\";\n            var _glFramebufferRenderbuffer = (target, attachment, renderbuffertarget, renderbuffer) => {\n                GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer])\n            };\n            _glFramebufferRenderbuffer.sig = \"viiii\";\n            var _emscripten_glFramebufferRenderbuffer = _glFramebufferRenderbuffer;\n            _emscripten_glFramebufferRenderbuffer.sig = \"viiii\";\n            var _glFramebufferTexture2D = (target, attachment, textarget, texture, level) => {\n                GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level)\n            };\n            _glFramebufferTexture2D.sig = \"viiiii\";\n            var _emscripten_glFramebufferTexture2D = _glFramebufferTexture2D;\n            _emscripten_glFramebufferTexture2D.sig = \"viiiii\";\n            var _glFrontFace = x0 => GLctx.frontFace(x0);\n            _glFrontFace.sig = \"vi\";\n            var _emscripten_glFrontFace = _glFrontFace;\n            _emscripten_glFrontFace.sig = \"vi\";\n\n            function _glGenBuffers(n, buffers) {\n                buffers >>>= 0;\n                GL.genObject(n, buffers, \"createBuffer\", GL.buffers)\n            }\n            _glGenBuffers.sig = \"vip\";\n            var _emscripten_glGenBuffers = _glGenBuffers;\n            _emscripten_glGenBuffers.sig = \"vip\";\n\n            function _glGenFramebuffers(n, ids) {\n                ids >>>= 0;\n                GL.genObject(n, ids, \"createFramebuffer\", GL.framebuffers)\n            }\n            _glGenFramebuffers.sig = \"vip\";\n            var _emscripten_glGenFramebuffers = _glGenFramebuffers;\n            _emscripten_glGenFramebuffers.sig = \"vip\";\n\n            function _glGenQueriesEXT(n, ids) {\n                ids >>>= 0;\n                for (var i = 0; i < n; i++) {\n                    var query = GLctx.disjointTimerQueryExt[\"createQueryEXT\"]();\n                    if (!query) {\n                        GL.recordError(1282);\n                        while (i < n) HEAP32[ids + i++ * 4 >>> 2 >>> 0] = 0;\n                        return\n                    }\n                    var id = GL.getNewId(GL.queries);\n                    query.name = id;\n                    GL.queries[id] = query;\n                    HEAP32[ids + i * 4 >>> 2 >>> 0] = id\n                }\n            }\n            _glGenQueriesEXT.sig = \"vip\";\n            var _emscripten_glGenQueriesEXT = _glGenQueriesEXT;\n\n            function _glGenRenderbuffers(n, renderbuffers) {\n                renderbuffers >>>= 0;\n                GL.genObject(n, renderbuffers, \"createRenderbuffer\", GL.renderbuffers)\n            }\n            _glGenRenderbuffers.sig = \"vip\";\n            var _emscripten_glGenRenderbuffers = _glGenRenderbuffers;\n            _emscripten_glGenRenderbuffers.sig = \"vip\";\n\n            function _glGenTextures(n, textures) {\n                textures >>>= 0;\n                GL.genObject(n, textures, \"createTexture\", GL.textures)\n            }\n            _glGenTextures.sig = \"vip\";\n            var _emscripten_glGenTextures = _glGenTextures;\n            _emscripten_glGenTextures.sig = \"vip\";\n\n            function _glGenVertexArrays(n, arrays) {\n                arrays >>>= 0;\n                GL.genObject(n, arrays, \"createVertexArray\", GL.vaos)\n            }\n            _glGenVertexArrays.sig = \"vip\";\n            var _glGenVertexArraysOES = _glGenVertexArrays;\n            _glGenVertexArraysOES.sig = \"vip\";\n            var _emscripten_glGenVertexArraysOES = _glGenVertexArraysOES;\n            _emscripten_glGenVertexArraysOES.sig = \"vip\";\n            var _glGenerateMipmap = x0 => GLctx.generateMipmap(x0);\n            _glGenerateMipmap.sig = \"vi\";\n            var _emscripten_glGenerateMipmap = _glGenerateMipmap;\n            _emscripten_glGenerateMipmap.sig = \"vi\";\n            var __glGetActiveAttribOrUniform = (funcName, program, index, bufSize, length, size, type, name) => {\n                program = GL.programs[program];\n                var info = GLctx[funcName](program, index);\n                if (info) {\n                    var numBytesWrittenExclNull = name && stringToUTF8(info.name, name, bufSize);\n                    if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull;\n                    if (size) HEAP32[size >>> 2 >>> 0] = info.size;\n                    if (type) HEAP32[type >>> 2 >>> 0] = info.type\n                }\n            };\n\n            function _glGetActiveAttrib(program, index, bufSize, length, size, type, name) {\n                length >>>= 0;\n                size >>>= 0;\n                type >>>= 0;\n                name >>>= 0;\n                __glGetActiveAttribOrUniform(\"getActiveAttrib\", program, index, bufSize, length, size, type, name)\n            }\n            _glGetActiveAttrib.sig = \"viiipppp\";\n            var _emscripten_glGetActiveAttrib = _glGetActiveAttrib;\n            _emscripten_glGetActiveAttrib.sig = \"viiipppp\";\n\n            function _glGetActiveUniform(program, index, bufSize, length, size, type, name) {\n                length >>>= 0;\n                size >>>= 0;\n                type >>>= 0;\n                name >>>= 0;\n                __glGetActiveAttribOrUniform(\"getActiveUniform\", program, index, bufSize, length, size, type, name)\n            }\n            _glGetActiveUniform.sig = \"viiipppp\";\n            var _emscripten_glGetActiveUniform = _glGetActiveUniform;\n            _emscripten_glGetActiveUniform.sig = \"viiipppp\";\n\n            function _glGetAttachedShaders(program, maxCount, count, shaders) {\n                count >>>= 0;\n                shaders >>>= 0;\n                var result = GLctx.getAttachedShaders(GL.programs[program]);\n                var len = result.length;\n                if (len > maxCount) {\n                    len = maxCount\n                }\n                HEAP32[count >>> 2 >>> 0] = len;\n                for (var i = 0; i < len; ++i) {\n                    var id = GL.shaders.indexOf(result[i]);\n                    HEAP32[shaders + i * 4 >>> 2 >>> 0] = id\n                }\n            }\n            _glGetAttachedShaders.sig = \"viipp\";\n            var _emscripten_glGetAttachedShaders = _glGetAttachedShaders;\n            _emscripten_glGetAttachedShaders.sig = \"viipp\";\n\n            function _glGetAttribLocation(program, name) {\n                name >>>= 0;\n                return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name))\n            }\n            _glGetAttribLocation.sig = \"iip\";\n            var _emscripten_glGetAttribLocation = _glGetAttribLocation;\n            _emscripten_glGetAttribLocation.sig = \"iip\";\n            var writeI53ToI64 = (ptr, num) => {\n                HEAPU32[ptr >>> 2 >>> 0] = num;\n                var lower = HEAPU32[ptr >>> 2 >>> 0];\n                HEAPU32[ptr + 4 >>> 2 >>> 0] = (num - lower) / 4294967296\n            };\n            var emscriptenWebGLGet = (name_, p, type) => {\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                var ret = undefined;\n                switch (name_) {\n                    case 36346:\n                        ret = 1;\n                        break;\n                    case 36344:\n                        if (type != 0 && type != 1) {\n                            GL.recordError(1280)\n                        }\n                        return;\n                    case 36345:\n                        ret = 0;\n                        break;\n                    case 34466:\n                        var formats = GLctx.getParameter(34467);\n                        ret = formats ? formats.length : 0;\n                        break\n                }\n                if (ret === undefined) {\n                    var result = GLctx.getParameter(name_);\n                    switch (typeof result) {\n                        case \"number\":\n                            ret = result;\n                            break;\n                        case \"boolean\":\n                            ret = result ? 1 : 0;\n                            break;\n                        case \"string\":\n                            GL.recordError(1280);\n                            return;\n                        case \"object\":\n                            if (result === null) {\n                                switch (name_) {\n                                    case 34964:\n                                    case 35725:\n                                    case 34965:\n                                    case 36006:\n                                    case 36007:\n                                    case 32873:\n                                    case 34229:\n                                    case 34068: {\n                                        ret = 0;\n                                        break\n                                    }\n                                    default: {\n                                        GL.recordError(1280);\n                                        return\n                                    }\n                                }\n                            } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {\n                                for (var i = 0; i < result.length; ++i) {\n                                    switch (type) {\n                                        case 0:\n                                            HEAP32[p + i * 4 >>> 2 >>> 0] = result[i];\n                                            break;\n                                        case 2:\n                                            HEAPF32[p + i * 4 >>> 2 >>> 0] = result[i];\n                                            break;\n                                        case 4:\n                                            HEAP8[p + i >>> 0] = result[i] ? 1 : 0;\n                                            break\n                                    }\n                                }\n                                return\n                            } else {\n                                try {\n                                    ret = result.name | 0\n                                } catch (e) {\n                                    GL.recordError(1280);\n                                    err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);\n                                    return\n                                }\n                            }\n                            break;\n                        default:\n                            GL.recordError(1280);\n                            err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);\n                            return\n                    }\n                }\n                switch (type) {\n                    case 1:\n                        writeI53ToI64(p, ret);\n                        break;\n                    case 0:\n                        HEAP32[p >>> 2 >>> 0] = ret;\n                        break;\n                    case 2:\n                        HEAPF32[p >>> 2 >>> 0] = ret;\n                        break;\n                    case 4:\n                        HEAP8[p >>> 0] = ret ? 1 : 0;\n                        break\n                }\n            };\n\n            function _glGetBooleanv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 4)\n            }\n            _glGetBooleanv.sig = \"vip\";\n            var _emscripten_glGetBooleanv = _glGetBooleanv;\n            _emscripten_glGetBooleanv.sig = \"vip\";\n\n            function _glGetBufferParameteriv(target, value, data) {\n                data >>>= 0;\n                if (!data) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[data >>> 2 >>> 0] = GLctx.getBufferParameter(target, value)\n            }\n            _glGetBufferParameteriv.sig = \"viip\";\n            var _emscripten_glGetBufferParameteriv = _glGetBufferParameteriv;\n            _emscripten_glGetBufferParameteriv.sig = \"viip\";\n            var _glGetError = () => {\n                var error = GLctx.getError() || GL.lastError;\n                GL.lastError = 0;\n                return error\n            };\n            _glGetError.sig = \"i\";\n            var _emscripten_glGetError = _glGetError;\n            _emscripten_glGetError.sig = \"i\";\n\n            function _glGetFloatv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 2)\n            }\n            _glGetFloatv.sig = \"vip\";\n            var _emscripten_glGetFloatv = _glGetFloatv;\n            _emscripten_glGetFloatv.sig = \"vip\";\n\n            function _glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) {\n                params >>>= 0;\n                var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);\n                if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) {\n                    result = result.name | 0\n                }\n                HEAP32[params >>> 2 >>> 0] = result\n            }\n            _glGetFramebufferAttachmentParameteriv.sig = \"viiip\";\n            var _emscripten_glGetFramebufferAttachmentParameteriv = _glGetFramebufferAttachmentParameteriv;\n            _emscripten_glGetFramebufferAttachmentParameteriv.sig = \"viiip\";\n\n            function _glGetIntegerv(name_, p) {\n                p >>>= 0;\n                return emscriptenWebGLGet(name_, p, 0)\n            }\n            _glGetIntegerv.sig = \"vip\";\n            var _emscripten_glGetIntegerv = _glGetIntegerv;\n            _emscripten_glGetIntegerv.sig = \"vip\";\n\n            function _glGetProgramInfoLog(program, maxLength, length, infoLog) {\n                length >>>= 0;\n                infoLog >>>= 0;\n                var log = GLctx.getProgramInfoLog(GL.programs[program]);\n                if (log === null) log = \"(unknown error)\";\n                var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetProgramInfoLog.sig = \"viipp\";\n            var _emscripten_glGetProgramInfoLog = _glGetProgramInfoLog;\n            _emscripten_glGetProgramInfoLog.sig = \"viipp\";\n\n            function _glGetProgramiv(program, pname, p) {\n                p >>>= 0;\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                if (program >= GL.counter) {\n                    GL.recordError(1281);\n                    return\n                }\n                program = GL.programs[program];\n                if (pname == 35716) {\n                    var log = GLctx.getProgramInfoLog(program);\n                    if (log === null) log = \"(unknown error)\";\n                    HEAP32[p >>> 2 >>> 0] = log.length + 1\n                } else if (pname == 35719) {\n                    if (!program.maxUniformLength) {\n                        var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n                        for (var i = 0; i < numActiveUniforms; ++i) {\n                            program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i).name.length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxUniformLength\n                } else if (pname == 35722) {\n                    if (!program.maxAttributeLength) {\n                        var numActiveAttributes = GLctx.getProgramParameter(program, 35721);\n                        for (var i = 0; i < numActiveAttributes; ++i) {\n                            program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i).name.length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxAttributeLength\n                } else if (pname == 35381) {\n                    if (!program.maxUniformBlockNameLength) {\n                        var numActiveUniformBlocks = GLctx.getProgramParameter(program, 35382);\n                        for (var i = 0; i < numActiveUniformBlocks; ++i) {\n                            program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i).length + 1)\n                        }\n                    }\n                    HEAP32[p >>> 2 >>> 0] = program.maxUniformBlockNameLength\n                } else {\n                    HEAP32[p >>> 2 >>> 0] = GLctx.getProgramParameter(program, pname)\n                }\n            }\n            _glGetProgramiv.sig = \"viip\";\n            var _emscripten_glGetProgramiv = _glGetProgramiv;\n            _emscripten_glGetProgramiv.sig = \"viip\";\n\n            function _glGetQueryObjecti64vEXT(id, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var query = GL.queries[id];\n                var param;\n                {\n                    param = GLctx.disjointTimerQueryExt[\"getQueryObjectEXT\"](query, pname)\n                }\n                var ret;\n                if (typeof param == \"boolean\") {\n                    ret = param ? 1 : 0\n                } else {\n                    ret = param\n                }\n                writeI53ToI64(params, ret)\n            }\n            _glGetQueryObjecti64vEXT.sig = \"viip\";\n            var _emscripten_glGetQueryObjecti64vEXT = _glGetQueryObjecti64vEXT;\n\n            function _glGetQueryObjectivEXT(id, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var query = GL.queries[id];\n                var param = GLctx.disjointTimerQueryExt[\"getQueryObjectEXT\"](query, pname);\n                var ret;\n                if (typeof param == \"boolean\") {\n                    ret = param ? 1 : 0\n                } else {\n                    ret = param\n                }\n                HEAP32[params >>> 2 >>> 0] = ret\n            }\n            _glGetQueryObjectivEXT.sig = \"viip\";\n            var _emscripten_glGetQueryObjectivEXT = _glGetQueryObjectivEXT;\n            var _glGetQueryObjectui64vEXT = _glGetQueryObjecti64vEXT;\n            var _emscripten_glGetQueryObjectui64vEXT = _glGetQueryObjectui64vEXT;\n            var _glGetQueryObjectuivEXT = _glGetQueryObjectivEXT;\n            var _emscripten_glGetQueryObjectuivEXT = _glGetQueryObjectuivEXT;\n\n            function _glGetQueryivEXT(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.disjointTimerQueryExt[\"getQueryEXT\"](target, pname)\n            }\n            _glGetQueryivEXT.sig = \"viip\";\n            var _emscripten_glGetQueryivEXT = _glGetQueryivEXT;\n\n            function _glGetRenderbufferParameteriv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.getRenderbufferParameter(target, pname)\n            }\n            _glGetRenderbufferParameteriv.sig = \"viip\";\n            var _emscripten_glGetRenderbufferParameteriv = _glGetRenderbufferParameteriv;\n            _emscripten_glGetRenderbufferParameteriv.sig = \"viip\";\n\n            function _glGetShaderInfoLog(shader, maxLength, length, infoLog) {\n                length >>>= 0;\n                infoLog >>>= 0;\n                var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n                if (log === null) log = \"(unknown error)\";\n                var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetShaderInfoLog.sig = \"viipp\";\n            var _emscripten_glGetShaderInfoLog = _glGetShaderInfoLog;\n            _emscripten_glGetShaderInfoLog.sig = \"viipp\";\n\n            function _glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) {\n                range >>>= 0;\n                precision >>>= 0;\n                var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);\n                HEAP32[range >>> 2 >>> 0] = result.rangeMin;\n                HEAP32[range + 4 >>> 2 >>> 0] = result.rangeMax;\n                HEAP32[precision >>> 2 >>> 0] = result.precision\n            }\n            _glGetShaderPrecisionFormat.sig = \"viipp\";\n            var _emscripten_glGetShaderPrecisionFormat = _glGetShaderPrecisionFormat;\n            _emscripten_glGetShaderPrecisionFormat.sig = \"viipp\";\n\n            function _glGetShaderSource(shader, bufSize, length, source) {\n                length >>>= 0;\n                source >>>= 0;\n                var result = GLctx.getShaderSource(GL.shaders[shader]);\n                if (!result) return;\n                var numBytesWrittenExclNull = bufSize > 0 && source ? stringToUTF8(result, source, bufSize) : 0;\n                if (length) HEAP32[length >>> 2 >>> 0] = numBytesWrittenExclNull\n            }\n            _glGetShaderSource.sig = \"viipp\";\n            var _emscripten_glGetShaderSource = _glGetShaderSource;\n            _emscripten_glGetShaderSource.sig = \"viipp\";\n\n            function _glGetShaderiv(shader, pname, p) {\n                p >>>= 0;\n                if (!p) {\n                    GL.recordError(1281);\n                    return\n                }\n                if (pname == 35716) {\n                    var log = GLctx.getShaderInfoLog(GL.shaders[shader]);\n                    if (log === null) log = \"(unknown error)\";\n                    var logLength = log ? log.length + 1 : 0;\n                    HEAP32[p >>> 2 >>> 0] = logLength\n                } else if (pname == 35720) {\n                    var source = GLctx.getShaderSource(GL.shaders[shader]);\n                    var sourceLength = source ? source.length + 1 : 0;\n                    HEAP32[p >>> 2 >>> 0] = sourceLength\n                } else {\n                    HEAP32[p >>> 2 >>> 0] = GLctx.getShaderParameter(GL.shaders[shader], pname)\n                }\n            }\n            _glGetShaderiv.sig = \"viip\";\n            var _emscripten_glGetShaderiv = _glGetShaderiv;\n            _emscripten_glGetShaderiv.sig = \"viip\";\n            var webglGetExtensions = function $webglGetExtensions() {\n                var exts = getEmscriptenSupportedExtensions(GLctx);\n                exts = exts.concat(exts.map(e => \"GL_\" + e));\n                return exts\n            };\n\n            function _glGetString(name_) {\n                var ret = GL.stringCache[name_];\n                if (!ret) {\n                    switch (name_) {\n                        case 7939:\n                            ret = stringToNewUTF8(webglGetExtensions().join(\" \"));\n                            break;\n                        case 7936:\n                        case 7937:\n                        case 37445:\n                        case 37446:\n                            var s = GLctx.getParameter(name_);\n                            if (!s) {\n                                GL.recordError(1280)\n                            }\n                            ret = s ? stringToNewUTF8(s) : 0;\n                            break;\n                        case 7938:\n                            var webGLVersion = GLctx.getParameter(7938);\n                            var glVersion = `OpenGL ES 2.0 (${webGLVersion})`;\n                            ret = stringToNewUTF8(glVersion);\n                            break;\n                        case 35724:\n                            var glslVersion = GLctx.getParameter(35724);\n                            var ver_re = /^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;\n                            var ver_num = glslVersion.match(ver_re);\n                            if (ver_num !== null) {\n                                if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + \"0\";\n                                glslVersion = `OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`\n                            }\n                            ret = stringToNewUTF8(glslVersion);\n                            break;\n                        default:\n                            GL.recordError(1280)\n                    }\n                    GL.stringCache[name_] = ret\n                }\n                return ret\n            }\n            _glGetString.sig = \"pi\";\n            var _emscripten_glGetString = _glGetString;\n            _emscripten_glGetString.sig = \"pi\";\n\n            function _glGetTexParameterfv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAPF32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname)\n            }\n            _glGetTexParameterfv.sig = \"viip\";\n            var _emscripten_glGetTexParameterfv = _glGetTexParameterfv;\n            _emscripten_glGetTexParameterfv.sig = \"viip\";\n\n            function _glGetTexParameteriv(target, pname, params) {\n                params >>>= 0;\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[params >>> 2 >>> 0] = GLctx.getTexParameter(target, pname)\n            }\n            _glGetTexParameteriv.sig = \"viip\";\n            var _emscripten_glGetTexParameteriv = _glGetTexParameteriv;\n            _emscripten_glGetTexParameteriv.sig = \"viip\";\n            var webglGetLeftBracePos = name => name.slice(-1) == \"]\" && name.lastIndexOf(\"[\");\n            var webglPrepareUniformLocationsBeforeFirstUse = program => {\n                var uniformLocsById = program.uniformLocsById,\n                    uniformSizeAndIdsByName = program.uniformSizeAndIdsByName,\n                    i, j;\n                if (!uniformLocsById) {\n                    program.uniformLocsById = uniformLocsById = {};\n                    program.uniformArrayNamesById = {};\n                    var numActiveUniforms = GLctx.getProgramParameter(program, 35718);\n                    for (i = 0; i < numActiveUniforms; ++i) {\n                        var u = GLctx.getActiveUniform(program, i);\n                        var nm = u.name;\n                        var sz = u.size;\n                        var lb = webglGetLeftBracePos(nm);\n                        var arrayName = lb > 0 ? nm.slice(0, lb) : nm;\n                        var id = program.uniformIdCounter;\n                        program.uniformIdCounter += sz;\n                        uniformSizeAndIdsByName[arrayName] = [sz, id];\n                        for (j = 0; j < sz; ++j) {\n                            uniformLocsById[id] = j;\n                            program.uniformArrayNamesById[id++] = arrayName\n                        }\n                    }\n                }\n            };\n\n            function _glGetUniformLocation(program, name) {\n                name >>>= 0;\n                name = UTF8ToString(name);\n                if (program = GL.programs[program]) {\n                    webglPrepareUniformLocationsBeforeFirstUse(program);\n                    var uniformLocsById = program.uniformLocsById;\n                    var arrayIndex = 0;\n                    var uniformBaseName = name;\n                    var leftBrace = webglGetLeftBracePos(name);\n                    if (leftBrace > 0) {\n                        arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0;\n                        uniformBaseName = name.slice(0, leftBrace)\n                    }\n                    var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];\n                    if (sizeAndId && arrayIndex < sizeAndId[0]) {\n                        arrayIndex += sizeAndId[1];\n                        if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) {\n                            return arrayIndex\n                        }\n                    }\n                } else {\n                    GL.recordError(1281)\n                }\n                return -1\n            }\n            _glGetUniformLocation.sig = \"iip\";\n            var _emscripten_glGetUniformLocation = _glGetUniformLocation;\n            _emscripten_glGetUniformLocation.sig = \"iip\";\n            var webglGetUniformLocation = location => {\n                var p = GLctx.currentProgram;\n                if (p) {\n                    var webglLoc = p.uniformLocsById[location];\n                    if (typeof webglLoc == \"number\") {\n                        p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(p, p.uniformArrayNamesById[location] + (webglLoc > 0 ? `[${webglLoc}]` : \"\"))\n                    }\n                    return webglLoc\n                } else {\n                    GL.recordError(1282)\n                }\n            };\n            var emscriptenWebGLGetUniform = (program, location, params, type) => {\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                program = GL.programs[program];\n                webglPrepareUniformLocationsBeforeFirstUse(program);\n                var data = GLctx.getUniform(program, webglGetUniformLocation(location));\n                if (typeof data == \"number\" || typeof data == \"boolean\") {\n                    switch (type) {\n                        case 0:\n                            HEAP32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 2:\n                            HEAPF32[params >>> 2 >>> 0] = data;\n                            break\n                    }\n                } else {\n                    for (var i = 0; i < data.length; i++) {\n                        switch (type) {\n                            case 0:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 2:\n                                HEAPF32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break\n                        }\n                    }\n                }\n            };\n\n            function _glGetUniformfv(program, location, params) {\n                params >>>= 0;\n                emscriptenWebGLGetUniform(program, location, params, 2)\n            }\n            _glGetUniformfv.sig = \"viip\";\n            var _emscripten_glGetUniformfv = _glGetUniformfv;\n            _emscripten_glGetUniformfv.sig = \"viip\";\n\n            function _glGetUniformiv(program, location, params) {\n                params >>>= 0;\n                emscriptenWebGLGetUniform(program, location, params, 0)\n            }\n            _glGetUniformiv.sig = \"viip\";\n            var _emscripten_glGetUniformiv = _glGetUniformiv;\n            _emscripten_glGetUniformiv.sig = \"viip\";\n\n            function _glGetVertexAttribPointerv(index, pname, pointer) {\n                pointer >>>= 0;\n                if (!pointer) {\n                    GL.recordError(1281);\n                    return\n                }\n                HEAP32[pointer >>> 2 >>> 0] = GLctx.getVertexAttribOffset(index, pname)\n            }\n            _glGetVertexAttribPointerv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribPointerv = _glGetVertexAttribPointerv;\n            _emscripten_glGetVertexAttribPointerv.sig = \"viip\";\n            var emscriptenWebGLGetVertexAttrib = (index, pname, params, type) => {\n                if (!params) {\n                    GL.recordError(1281);\n                    return\n                }\n                var data = GLctx.getVertexAttrib(index, pname);\n                if (pname == 34975) {\n                    HEAP32[params >>> 2 >>> 0] = data && data[\"name\"]\n                } else if (typeof data == \"number\" || typeof data == \"boolean\") {\n                    switch (type) {\n                        case 0:\n                            HEAP32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 2:\n                            HEAPF32[params >>> 2 >>> 0] = data;\n                            break;\n                        case 5:\n                            HEAP32[params >>> 2 >>> 0] = Math.fround(data);\n                            break\n                    }\n                } else {\n                    for (var i = 0; i < data.length; i++) {\n                        switch (type) {\n                            case 0:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 2:\n                                HEAPF32[params + i * 4 >>> 2 >>> 0] = data[i];\n                                break;\n                            case 5:\n                                HEAP32[params + i * 4 >>> 2 >>> 0] = Math.fround(data[i]);\n                                break\n                        }\n                    }\n                }\n            };\n\n            function _glGetVertexAttribfv(index, pname, params) {\n                params >>>= 0;\n                emscriptenWebGLGetVertexAttrib(index, pname, params, 2)\n            }\n            _glGetVertexAttribfv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribfv = _glGetVertexAttribfv;\n            _emscripten_glGetVertexAttribfv.sig = \"viip\";\n\n            function _glGetVertexAttribiv(index, pname, params) {\n                params >>>= 0;\n                emscriptenWebGLGetVertexAttrib(index, pname, params, 5)\n            }\n            _glGetVertexAttribiv.sig = \"viip\";\n            var _emscripten_glGetVertexAttribiv = _glGetVertexAttribiv;\n            _emscripten_glGetVertexAttribiv.sig = \"viip\";\n            var _glHint = (x0, x1) => GLctx.hint(x0, x1);\n            _glHint.sig = \"vii\";\n            var _emscripten_glHint = _glHint;\n            _emscripten_glHint.sig = \"vii\";\n            var _glIsBuffer = buffer => {\n                var b = GL.buffers[buffer];\n                if (!b) return 0;\n                return GLctx.isBuffer(b)\n            };\n            _glIsBuffer.sig = \"ii\";\n            var _emscripten_glIsBuffer = _glIsBuffer;\n            _emscripten_glIsBuffer.sig = \"ii\";\n            var _glIsEnabled = x0 => GLctx.isEnabled(x0);\n            _glIsEnabled.sig = \"ii\";\n            var _emscripten_glIsEnabled = _glIsEnabled;\n            _emscripten_glIsEnabled.sig = \"ii\";\n            var _glIsFramebuffer = framebuffer => {\n                var fb = GL.framebuffers[framebuffer];\n                if (!fb) return 0;\n                return GLctx.isFramebuffer(fb)\n            };\n            _glIsFramebuffer.sig = \"ii\";\n            var _emscripten_glIsFramebuffer = _glIsFramebuffer;\n            _emscripten_glIsFramebuffer.sig = \"ii\";\n            var _glIsProgram = program => {\n                program = GL.programs[program];\n                if (!program) return 0;\n                return GLctx.isProgram(program)\n            };\n            _glIsProgram.sig = \"ii\";\n            var _emscripten_glIsProgram = _glIsProgram;\n            _emscripten_glIsProgram.sig = \"ii\";\n            var _glIsQueryEXT = id => {\n                var query = GL.queries[id];\n                if (!query) return 0;\n                return GLctx.disjointTimerQueryExt[\"isQueryEXT\"](query)\n            };\n            _glIsQueryEXT.sig = \"ii\";\n            var _emscripten_glIsQueryEXT = _glIsQueryEXT;\n            var _glIsRenderbuffer = renderbuffer => {\n                var rb = GL.renderbuffers[renderbuffer];\n                if (!rb) return 0;\n                return GLctx.isRenderbuffer(rb)\n            };\n            _glIsRenderbuffer.sig = \"ii\";\n            var _emscripten_glIsRenderbuffer = _glIsRenderbuffer;\n            _emscripten_glIsRenderbuffer.sig = \"ii\";\n            var _glIsShader = shader => {\n                var s = GL.shaders[shader];\n                if (!s) return 0;\n                return GLctx.isShader(s)\n            };\n            _glIsShader.sig = \"ii\";\n            var _emscripten_glIsShader = _glIsShader;\n            _emscripten_glIsShader.sig = \"ii\";\n            var _glIsTexture = id => {\n                var texture = GL.textures[id];\n                if (!texture) return 0;\n                return GLctx.isTexture(texture)\n            };\n            _glIsTexture.sig = \"ii\";\n            var _emscripten_glIsTexture = _glIsTexture;\n            _emscripten_glIsTexture.sig = \"ii\";\n            var _glIsVertexArray = array => {\n                var vao = GL.vaos[array];\n                if (!vao) return 0;\n                return GLctx.isVertexArray(vao)\n            };\n            _glIsVertexArray.sig = \"ii\";\n            var _glIsVertexArrayOES = _glIsVertexArray;\n            _glIsVertexArrayOES.sig = \"ii\";\n            var _emscripten_glIsVertexArrayOES = _glIsVertexArrayOES;\n            _emscripten_glIsVertexArrayOES.sig = \"ii\";\n            var _glLineWidth = x0 => GLctx.lineWidth(x0);\n            _glLineWidth.sig = \"vf\";\n            var _emscripten_glLineWidth = _glLineWidth;\n            _emscripten_glLineWidth.sig = \"vf\";\n            var _glLinkProgram = program => {\n                program = GL.programs[program];\n                GLctx.linkProgram(program);\n                program.uniformLocsById = 0;\n                program.uniformSizeAndIdsByName = {}\n            };\n            _glLinkProgram.sig = \"vi\";\n            var _emscripten_glLinkProgram = _glLinkProgram;\n            _emscripten_glLinkProgram.sig = \"vi\";\n            var _glPixelStorei = (pname, param) => {\n                if (pname == 3317) {\n                    GL.unpackAlignment = param\n                } else if (pname == 3314) {\n                    GL.unpackRowLength = param\n                }\n                GLctx.pixelStorei(pname, param)\n            };\n            _glPixelStorei.sig = \"vii\";\n            var _emscripten_glPixelStorei = _glPixelStorei;\n            _emscripten_glPixelStorei.sig = \"vii\";\n            var _glPolygonModeWEBGL = (face, mode) => {\n                GLctx.webglPolygonMode[\"polygonModeWEBGL\"](face, mode)\n            };\n            _glPolygonModeWEBGL.sig = \"vii\";\n            var _emscripten_glPolygonModeWEBGL = _glPolygonModeWEBGL;\n            var _glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);\n            _glPolygonOffset.sig = \"vff\";\n            var _emscripten_glPolygonOffset = _glPolygonOffset;\n            _emscripten_glPolygonOffset.sig = \"vff\";\n            var _glPolygonOffsetClampEXT = (factor, units, clamp) => {\n                GLctx.extPolygonOffsetClamp[\"polygonOffsetClampEXT\"](factor, units, clamp)\n            };\n            _glPolygonOffsetClampEXT.sig = \"vfff\";\n            var _emscripten_glPolygonOffsetClampEXT = _glPolygonOffsetClampEXT;\n            var _glQueryCounterEXT = (id, target) => {\n                GLctx.disjointTimerQueryExt[\"queryCounterEXT\"](GL.queries[id], target)\n            };\n            _glQueryCounterEXT.sig = \"vii\";\n            var _emscripten_glQueryCounterEXT = _glQueryCounterEXT;\n            var computeUnpackAlignedImageSize = (width, height, sizePerPixel) => {\n                function roundedToNextMultipleOf(x, y) {\n                    return x + y - 1 & -y\n                }\n                var plainRowSize = (GL.unpackRowLength || width) * sizePerPixel;\n                var alignedRowSize = roundedToNextMultipleOf(plainRowSize, GL.unpackAlignment);\n                return height * alignedRowSize\n            };\n            var colorChannelsInGlTextureFormat = format => {\n                var colorChannels = {\n                    5: 3,\n                    6: 4,\n                    8: 2,\n                    29502: 3,\n                    29504: 4\n                };\n                return colorChannels[format - 6402] || 1\n            };\n            var heapObjectForWebGLType = type => {\n                type -= 5120;\n                if (type == 1) return HEAPU8;\n                if (type == 4) return HEAP32;\n                if (type == 6) return HEAPF32;\n                if (type == 5 || type == 28922) return HEAPU32;\n                return HEAPU16\n            };\n            var toTypedArrayIndex = (pointer, heap) => pointer >>> 31 - Math.clz32(heap.BYTES_PER_ELEMENT);\n            var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {\n                var heap = heapObjectForWebGLType(type);\n                var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;\n                var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel);\n                return heap.subarray(toTypedArrayIndex(pixels, heap) >>> 0, toTypedArrayIndex(pixels + bytes, heap) >>> 0)\n            };\n\n            function _glReadPixels(x, y, width, height, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format);\n                if (!pixelData) {\n                    GL.recordError(1280);\n                    return\n                }\n                GLctx.readPixels(x, y, width, height, format, type, pixelData)\n            }\n            _glReadPixels.sig = \"viiiiiip\";\n            var _emscripten_glReadPixels = _glReadPixels;\n            _emscripten_glReadPixels.sig = \"viiiiiip\";\n            var _glReleaseShaderCompiler = () => {};\n            _glReleaseShaderCompiler.sig = \"v\";\n            var _emscripten_glReleaseShaderCompiler = _glReleaseShaderCompiler;\n            _emscripten_glReleaseShaderCompiler.sig = \"v\";\n            var _glRenderbufferStorage = (x0, x1, x2, x3) => GLctx.renderbufferStorage(x0, x1, x2, x3);\n            _glRenderbufferStorage.sig = \"viiii\";\n            var _emscripten_glRenderbufferStorage = _glRenderbufferStorage;\n            _emscripten_glRenderbufferStorage.sig = \"viiii\";\n            var _glSampleCoverage = (value, invert) => {\n                GLctx.sampleCoverage(value, !!invert)\n            };\n            _glSampleCoverage.sig = \"vfi\";\n            var _emscripten_glSampleCoverage = _glSampleCoverage;\n            _emscripten_glSampleCoverage.sig = \"vfi\";\n            var _glScissor = (x0, x1, x2, x3) => GLctx.scissor(x0, x1, x2, x3);\n            _glScissor.sig = \"viiii\";\n            var _emscripten_glScissor = _glScissor;\n            _emscripten_glScissor.sig = \"viiii\";\n\n            function _glShaderBinary(count, shaders, binaryformat, binary, length) {\n                shaders >>>= 0;\n                binary >>>= 0;\n                GL.recordError(1280)\n            }\n            _glShaderBinary.sig = \"vipipi\";\n            var _emscripten_glShaderBinary = _glShaderBinary;\n            _emscripten_glShaderBinary.sig = \"vipipi\";\n\n            function _glShaderSource(shader, count, string, length) {\n                string >>>= 0;\n                length >>>= 0;\n                var source = GL.getSource(shader, count, string, length);\n                GLctx.shaderSource(GL.shaders[shader], source)\n            }\n            _glShaderSource.sig = \"viipp\";\n            var _emscripten_glShaderSource = _glShaderSource;\n            _emscripten_glShaderSource.sig = \"viipp\";\n            var _glStencilFunc = (x0, x1, x2) => GLctx.stencilFunc(x0, x1, x2);\n            _glStencilFunc.sig = \"viii\";\n            var _emscripten_glStencilFunc = _glStencilFunc;\n            _emscripten_glStencilFunc.sig = \"viii\";\n            var _glStencilFuncSeparate = (x0, x1, x2, x3) => GLctx.stencilFuncSeparate(x0, x1, x2, x3);\n            _glStencilFuncSeparate.sig = \"viiii\";\n            var _emscripten_glStencilFuncSeparate = _glStencilFuncSeparate;\n            _emscripten_glStencilFuncSeparate.sig = \"viiii\";\n            var _glStencilMask = x0 => GLctx.stencilMask(x0);\n            _glStencilMask.sig = \"vi\";\n            var _emscripten_glStencilMask = _glStencilMask;\n            _emscripten_glStencilMask.sig = \"vi\";\n            var _glStencilMaskSeparate = (x0, x1) => GLctx.stencilMaskSeparate(x0, x1);\n            _glStencilMaskSeparate.sig = \"vii\";\n            var _emscripten_glStencilMaskSeparate = _glStencilMaskSeparate;\n            _emscripten_glStencilMaskSeparate.sig = \"vii\";\n            var _glStencilOp = (x0, x1, x2) => GLctx.stencilOp(x0, x1, x2);\n            _glStencilOp.sig = \"viii\";\n            var _emscripten_glStencilOp = _glStencilOp;\n            _emscripten_glStencilOp.sig = \"viii\";\n            var _glStencilOpSeparate = (x0, x1, x2, x3) => GLctx.stencilOpSeparate(x0, x1, x2, x3);\n            _glStencilOpSeparate.sig = \"viiii\";\n            var _emscripten_glStencilOpSeparate = _glStencilOpSeparate;\n            _emscripten_glStencilOpSeparate.sig = \"viiii\";\n\n            function _glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) : null;\n                GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData)\n            }\n            _glTexImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glTexImage2D = _glTexImage2D;\n            _emscripten_glTexImage2D.sig = \"viiiiiiiip\";\n            var _glTexParameterf = (x0, x1, x2) => GLctx.texParameterf(x0, x1, x2);\n            _glTexParameterf.sig = \"viif\";\n            var _emscripten_glTexParameterf = _glTexParameterf;\n            _emscripten_glTexParameterf.sig = \"viif\";\n\n            function _glTexParameterfv(target, pname, params) {\n                params >>>= 0;\n                var param = HEAPF32[params >>> 2 >>> 0];\n                GLctx.texParameterf(target, pname, param)\n            }\n            _glTexParameterfv.sig = \"viip\";\n            var _emscripten_glTexParameterfv = _glTexParameterfv;\n            _emscripten_glTexParameterfv.sig = \"viip\";\n            var _glTexParameteri = (x0, x1, x2) => GLctx.texParameteri(x0, x1, x2);\n            _glTexParameteri.sig = \"viii\";\n            var _emscripten_glTexParameteri = _glTexParameteri;\n            _emscripten_glTexParameteri.sig = \"viii\";\n\n            function _glTexParameteriv(target, pname, params) {\n                params >>>= 0;\n                var param = HEAP32[params >>> 2 >>> 0];\n                GLctx.texParameteri(target, pname, param)\n            }\n            _glTexParameteriv.sig = \"viip\";\n            var _emscripten_glTexParameteriv = _glTexParameteriv;\n            _emscripten_glTexParameteriv.sig = \"viip\";\n\n            function _glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) {\n                pixels >>>= 0;\n                var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0) : null;\n                GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData)\n            }\n            _glTexSubImage2D.sig = \"viiiiiiiip\";\n            var _emscripten_glTexSubImage2D = _glTexSubImage2D;\n            _emscripten_glTexSubImage2D.sig = \"viiiiiiiip\";\n            var _glUniform1f = (location, v0) => {\n                GLctx.uniform1f(webglGetUniformLocation(location), v0)\n            };\n            _glUniform1f.sig = \"vif\";\n            var _emscripten_glUniform1f = _glUniform1f;\n            _emscripten_glUniform1f.sig = \"vif\";\n            var miniTempWebGLFloatBuffers = [];\n\n            function _glUniform1fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 288) {\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; ++i) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 4 >>> 2 >>> 0)\n                }\n                GLctx.uniform1fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform1fv.sig = \"viip\";\n            var _emscripten_glUniform1fv = _glUniform1fv;\n            _emscripten_glUniform1fv.sig = \"viip\";\n            var _glUniform1i = (location, v0) => {\n                GLctx.uniform1i(webglGetUniformLocation(location), v0)\n            };\n            _glUniform1i.sig = \"vii\";\n            var _emscripten_glUniform1i = _glUniform1i;\n            _emscripten_glUniform1i.sig = \"vii\";\n            var miniTempWebGLIntBuffers = [];\n\n            function _glUniform1iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 288) {\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; ++i) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 4 >>> 2 >>> 0)\n                }\n                GLctx.uniform1iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform1iv.sig = \"viip\";\n            var _emscripten_glUniform1iv = _glUniform1iv;\n            _emscripten_glUniform1iv.sig = \"viip\";\n            var _glUniform2f = (location, v0, v1) => {\n                GLctx.uniform2f(webglGetUniformLocation(location), v0, v1)\n            };\n            _glUniform2f.sig = \"viff\";\n            var _emscripten_glUniform2f = _glUniform2f;\n            _emscripten_glUniform2f.sig = \"viff\";\n\n            function _glUniform2fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 144) {\n                    count *= 2;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 2) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 8 >>> 2 >>> 0)\n                }\n                GLctx.uniform2fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform2fv.sig = \"viip\";\n            var _emscripten_glUniform2fv = _glUniform2fv;\n            _emscripten_glUniform2fv.sig = \"viip\";\n            var _glUniform2i = (location, v0, v1) => {\n                GLctx.uniform2i(webglGetUniformLocation(location), v0, v1)\n            };\n            _glUniform2i.sig = \"viii\";\n            var _emscripten_glUniform2i = _glUniform2i;\n            _emscripten_glUniform2i.sig = \"viii\";\n\n            function _glUniform2iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 144) {\n                    count *= 2;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 2) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 8 >>> 2 >>> 0)\n                }\n                GLctx.uniform2iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform2iv.sig = \"viip\";\n            var _emscripten_glUniform2iv = _glUniform2iv;\n            _emscripten_glUniform2iv.sig = \"viip\";\n            var _glUniform3f = (location, v0, v1, v2) => {\n                GLctx.uniform3f(webglGetUniformLocation(location), v0, v1, v2)\n            };\n            _glUniform3f.sig = \"vifff\";\n            var _emscripten_glUniform3f = _glUniform3f;\n            _emscripten_glUniform3f.sig = \"vifff\";\n\n            function _glUniform3fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 96) {\n                    count *= 3;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 3) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 12 >>> 2 >>> 0)\n                }\n                GLctx.uniform3fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform3fv.sig = \"viip\";\n            var _emscripten_glUniform3fv = _glUniform3fv;\n            _emscripten_glUniform3fv.sig = \"viip\";\n            var _glUniform3i = (location, v0, v1, v2) => {\n                GLctx.uniform3i(webglGetUniformLocation(location), v0, v1, v2)\n            };\n            _glUniform3i.sig = \"viiii\";\n            var _emscripten_glUniform3i = _glUniform3i;\n            _emscripten_glUniform3i.sig = \"viiii\";\n\n            function _glUniform3iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 96) {\n                    count *= 3;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 3) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAP32[value + (4 * i + 8) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 12 >>> 2 >>> 0)\n                }\n                GLctx.uniform3iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform3iv.sig = \"viip\";\n            var _emscripten_glUniform3iv = _glUniform3iv;\n            _emscripten_glUniform3iv.sig = \"viip\";\n            var _glUniform4f = (location, v0, v1, v2, v3) => {\n                GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3)\n            };\n            _glUniform4f.sig = \"viffff\";\n            var _emscripten_glUniform4f = _glUniform4f;\n            _emscripten_glUniform4f.sig = \"viffff\";\n\n            function _glUniform4fv(location, count, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    var view = miniTempWebGLFloatBuffers[4 * count];\n                    var heap = HEAPF32;\n                    value = value >>> 2;\n                    count *= 4;\n                    for (var i = 0; i < count; i += 4) {\n                        var dst = value + i;\n                        view[i] = heap[dst >>> 0];\n                        view[i + 1] = heap[dst + 1 >>> 0];\n                        view[i + 2] = heap[dst + 2 >>> 0];\n                        view[i + 3] = heap[dst + 3 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniform4fv(webglGetUniformLocation(location), view)\n            }\n            _glUniform4fv.sig = \"viip\";\n            var _emscripten_glUniform4fv = _glUniform4fv;\n            _emscripten_glUniform4fv.sig = \"viip\";\n            var _glUniform4i = (location, v0, v1, v2, v3) => {\n                GLctx.uniform4i(webglGetUniformLocation(location), v0, v1, v2, v3)\n            };\n            _glUniform4i.sig = \"viiiii\";\n            var _emscripten_glUniform4i = _glUniform4i;\n            _emscripten_glUniform4i.sig = \"viiiii\";\n\n            function _glUniform4iv(location, count, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    count *= 4;\n                    var view = miniTempWebGLIntBuffers[count];\n                    for (var i = 0; i < count; i += 4) {\n                        view[i] = HEAP32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAP32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAP32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAP32[value + (4 * i + 12) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAP32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniform4iv(webglGetUniformLocation(location), view)\n            }\n            _glUniform4iv.sig = \"viip\";\n            var _emscripten_glUniform4iv = _glUniform4iv;\n            _emscripten_glUniform4iv.sig = \"viip\";\n\n            function _glUniformMatrix2fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 72) {\n                    count *= 4;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 4) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAPF32[value + (4 * i + 12) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 16 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix2fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix2fv = _glUniformMatrix2fv;\n            _emscripten_glUniformMatrix2fv.sig = \"viiip\";\n\n            function _glUniformMatrix3fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 32) {\n                    count *= 9;\n                    var view = miniTempWebGLFloatBuffers[count];\n                    for (var i = 0; i < count; i += 9) {\n                        view[i] = HEAPF32[value + 4 * i >>> 2 >>> 0];\n                        view[i + 1] = HEAPF32[value + (4 * i + 4) >>> 2 >>> 0];\n                        view[i + 2] = HEAPF32[value + (4 * i + 8) >>> 2 >>> 0];\n                        view[i + 3] = HEAPF32[value + (4 * i + 12) >>> 2 >>> 0];\n                        view[i + 4] = HEAPF32[value + (4 * i + 16) >>> 2 >>> 0];\n                        view[i + 5] = HEAPF32[value + (4 * i + 20) >>> 2 >>> 0];\n                        view[i + 6] = HEAPF32[value + (4 * i + 24) >>> 2 >>> 0];\n                        view[i + 7] = HEAPF32[value + (4 * i + 28) >>> 2 >>> 0];\n                        view[i + 8] = HEAPF32[value + (4 * i + 32) >>> 2 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 36 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix3fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix3fv = _glUniformMatrix3fv;\n            _emscripten_glUniformMatrix3fv.sig = \"viiip\";\n\n            function _glUniformMatrix4fv(location, count, transpose, value) {\n                value >>>= 0;\n                if (count <= 18) {\n                    var view = miniTempWebGLFloatBuffers[16 * count];\n                    var heap = HEAPF32;\n                    value = value >>> 2;\n                    count *= 16;\n                    for (var i = 0; i < count; i += 16) {\n                        var dst = value + i;\n                        view[i] = heap[dst >>> 0];\n                        view[i + 1] = heap[dst + 1 >>> 0];\n                        view[i + 2] = heap[dst + 2 >>> 0];\n                        view[i + 3] = heap[dst + 3 >>> 0];\n                        view[i + 4] = heap[dst + 4 >>> 0];\n                        view[i + 5] = heap[dst + 5 >>> 0];\n                        view[i + 6] = heap[dst + 6 >>> 0];\n                        view[i + 7] = heap[dst + 7 >>> 0];\n                        view[i + 8] = heap[dst + 8 >>> 0];\n                        view[i + 9] = heap[dst + 9 >>> 0];\n                        view[i + 10] = heap[dst + 10 >>> 0];\n                        view[i + 11] = heap[dst + 11 >>> 0];\n                        view[i + 12] = heap[dst + 12 >>> 0];\n                        view[i + 13] = heap[dst + 13 >>> 0];\n                        view[i + 14] = heap[dst + 14 >>> 0];\n                        view[i + 15] = heap[dst + 15 >>> 0]\n                    }\n                } else {\n                    var view = HEAPF32.subarray(value >>> 2 >>> 0, value + count * 64 >>> 2 >>> 0)\n                }\n                GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view)\n            }\n            _glUniformMatrix4fv.sig = \"viiip\";\n            var _emscripten_glUniformMatrix4fv = _glUniformMatrix4fv;\n            _emscripten_glUniformMatrix4fv.sig = \"viiip\";\n            var _glUseProgram = program => {\n                program = GL.programs[program];\n                GLctx.useProgram(program);\n                GLctx.currentProgram = program\n            };\n            _glUseProgram.sig = \"vi\";\n            var _emscripten_glUseProgram = _glUseProgram;\n            _emscripten_glUseProgram.sig = \"vi\";\n            var _glValidateProgram = program => {\n                GLctx.validateProgram(GL.programs[program])\n            };\n            _glValidateProgram.sig = \"vi\";\n            var _emscripten_glValidateProgram = _glValidateProgram;\n            _emscripten_glValidateProgram.sig = \"vi\";\n            var _glVertexAttrib1f = (x0, x1) => GLctx.vertexAttrib1f(x0, x1);\n            _glVertexAttrib1f.sig = \"vif\";\n            var _emscripten_glVertexAttrib1f = _glVertexAttrib1f;\n            _emscripten_glVertexAttrib1f.sig = \"vif\";\n\n            function _glVertexAttrib1fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib1f(index, HEAPF32[v >>> 2])\n            }\n            _glVertexAttrib1fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib1fv = _glVertexAttrib1fv;\n            _emscripten_glVertexAttrib1fv.sig = \"vip\";\n            var _glVertexAttrib2f = (x0, x1, x2) => GLctx.vertexAttrib2f(x0, x1, x2);\n            _glVertexAttrib2f.sig = \"viff\";\n            var _emscripten_glVertexAttrib2f = _glVertexAttrib2f;\n            _emscripten_glVertexAttrib2f.sig = \"viff\";\n\n            function _glVertexAttrib2fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib2f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2])\n            }\n            _glVertexAttrib2fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib2fv = _glVertexAttrib2fv;\n            _emscripten_glVertexAttrib2fv.sig = \"vip\";\n            var _glVertexAttrib3f = (x0, x1, x2, x3) => GLctx.vertexAttrib3f(x0, x1, x2, x3);\n            _glVertexAttrib3f.sig = \"vifff\";\n            var _emscripten_glVertexAttrib3f = _glVertexAttrib3f;\n            _emscripten_glVertexAttrib3f.sig = \"vifff\";\n\n            function _glVertexAttrib3fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib3f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2], HEAPF32[v + 8 >>> 2])\n            }\n            _glVertexAttrib3fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib3fv = _glVertexAttrib3fv;\n            _emscripten_glVertexAttrib3fv.sig = \"vip\";\n            var _glVertexAttrib4f = (x0, x1, x2, x3, x4) => GLctx.vertexAttrib4f(x0, x1, x2, x3, x4);\n            _glVertexAttrib4f.sig = \"viffff\";\n            var _emscripten_glVertexAttrib4f = _glVertexAttrib4f;\n            _emscripten_glVertexAttrib4f.sig = \"viffff\";\n\n            function _glVertexAttrib4fv(index, v) {\n                v >>>= 0;\n                GLctx.vertexAttrib4f(index, HEAPF32[v >>> 2], HEAPF32[v + 4 >>> 2], HEAPF32[v + 8 >>> 2], HEAPF32[v + 12 >>> 2])\n            }\n            _glVertexAttrib4fv.sig = \"vip\";\n            var _emscripten_glVertexAttrib4fv = _glVertexAttrib4fv;\n            _emscripten_glVertexAttrib4fv.sig = \"vip\";\n            var _glVertexAttribDivisor = (index, divisor) => {\n                GLctx.vertexAttribDivisor(index, divisor)\n            };\n            _glVertexAttribDivisor.sig = \"vii\";\n            var _glVertexAttribDivisorANGLE = _glVertexAttribDivisor;\n            var _emscripten_glVertexAttribDivisorANGLE = _glVertexAttribDivisorANGLE;\n\n            function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) {\n                ptr >>>= 0;\n                GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr)\n            }\n            _glVertexAttribPointer.sig = \"viiiiip\";\n            var _emscripten_glVertexAttribPointer = _glVertexAttribPointer;\n            _emscripten_glVertexAttribPointer.sig = \"viiiiip\";\n            var _glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);\n            _glViewport.sig = \"viiii\";\n            var _emscripten_glViewport = _glViewport;\n            _emscripten_glViewport.sig = \"viiii\";\n\n            function _emscripten_out(str) {\n                str >>>= 0;\n                return out(UTF8ToString(str))\n            }\n            _emscripten_out.sig = \"vp\";\n            class HandleAllocator {\n                allocated = [undefined];\n                freelist = [];\n                get(id) {\n                    return this.allocated[id]\n                }\n                has(id) {\n                    return this.allocated[id] !== undefined\n                }\n                allocate(handle) {\n                    var id = this.freelist.pop() || this.allocated.length;\n                    this.allocated[id] = handle;\n                    return id\n                }\n                free(id) {\n                    this.allocated[id] = undefined;\n                    this.freelist.push(id)\n                }\n            }\n            var promiseMap = new HandleAllocator;\n            var makePromise = () => {\n                var promiseInfo = {};\n                promiseInfo.promise = new Promise((resolve, reject) => {\n                    promiseInfo.reject = reject;\n                    promiseInfo.resolve = resolve\n                });\n                promiseInfo.id = promiseMap.allocate(promiseInfo);\n                return promiseInfo\n            };\n\n            function _emscripten_promise_create() {\n                return makePromise().id\n            }\n            _emscripten_promise_create.sig = \"p\";\n\n            function _emscripten_promise_destroy(id) {\n                id >>>= 0;\n                promiseMap.free(id)\n            }\n            _emscripten_promise_destroy.sig = \"vp\";\n            var getPromise = id => promiseMap.get(id).promise;\n\n            function _emscripten_promise_resolve(id, result, value) {\n                id >>>= 0;\n                value >>>= 0;\n                var info = promiseMap.get(id);\n                switch (result) {\n                    case 0:\n                        info.resolve(value);\n                        return;\n                    case 1:\n                        info.resolve(getPromise(value));\n                        return;\n                    case 2:\n                        info.resolve(getPromise(value));\n                        _emscripten_promise_destroy(value);\n                        return;\n                    case 3:\n                        info.reject(value);\n                        return\n                }\n            }\n            _emscripten_promise_resolve.sig = \"vpip\";\n            var growMemory = size => {\n                var b = wasmMemory.buffer;\n                var pages = (size - b.byteLength + 65535) / 65536 | 0;\n                try {\n                    wasmMemory.grow(pages);\n                    updateMemoryViews();\n                    return 1\n                } catch (e) {}\n            };\n\n            function _emscripten_resize_heap(requestedSize) {\n                requestedSize >>>= 0;\n                var oldSize = HEAPU8.length;\n                var maxHeapSize = getHeapMax();\n                if (requestedSize > maxHeapSize) {\n                    return false\n                }\n                for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n                    var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n                    overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n                    var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n                    var replacement = growMemory(newSize);\n                    if (replacement) {\n                        return true\n                    }\n                }\n                return false\n            }\n            _emscripten_resize_heap.sig = \"ip\";\n\n            function _emscripten_wget_data(url, pbuffer, pnum, perror) {\n                url >>>= 0;\n                pbuffer >>>= 0;\n                pnum >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_wget_data\"\n            }\n            _emscripten_wget_data.sig = \"vpppp\";\n            var getEnvStrings = () => {\n                if (!getEnvStrings.strings) {\n                    var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n                    var env = {\n                        USER: \"web_user\",\n                        LOGNAME: \"web_user\",\n                        PATH: \"/\",\n                        PWD: \"/\",\n                        HOME: \"/home/web_user\",\n                        LANG: lang,\n                        _: getExecutableName()\n                    };\n                    for (var x in ENV) {\n                        if (ENV[x] === undefined) delete env[x];\n                        else env[x] = ENV[x]\n                    }\n                    var strings = [];\n                    for (var x in env) {\n                        strings.push(`${x}=${env[x]}`)\n                    }\n                    getEnvStrings.strings = strings\n                }\n                return getEnvStrings.strings\n            };\n            var stringToAscii = (str, buffer) => {\n                for (var i = 0; i < str.length; ++i) {\n                    HEAP8[buffer++ >>> 0] = str.charCodeAt(i)\n                }\n                HEAP8[buffer >>> 0] = 0\n            };\n            var _environ_get = function(__environ, environ_buf) {\n                __environ >>>= 0;\n                environ_buf >>>= 0;\n                var bufSize = 0;\n                getEnvStrings().forEach((string, i) => {\n                    var ptr = environ_buf + bufSize;\n                    HEAPU32[__environ + i * 4 >>> 2 >>> 0] = ptr;\n                    stringToAscii(string, ptr);\n                    bufSize += string.length + 1\n                });\n                return 0\n            };\n            _environ_get.sig = \"ipp\";\n            var _environ_sizes_get = function(penviron_count, penviron_buf_size) {\n                penviron_count >>>= 0;\n                penviron_buf_size >>>= 0;\n                var strings = getEnvStrings();\n                HEAPU32[penviron_count >>> 2 >>> 0] = strings.length;\n                var bufSize = 0;\n                strings.forEach(string => bufSize += string.length + 1);\n                HEAPU32[penviron_buf_size >>> 2 >>> 0] = bufSize;\n                return 0\n            };\n            _environ_sizes_get.sig = \"ipp\";\n\n            function _fd_close(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.close(stream);\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_close.sig = \"ii\";\n\n            function _fd_fdstat_get(fd, pbuf) {\n                pbuf >>>= 0;\n                try {\n                    var rightsBase = 0;\n                    var rightsInheriting = 0;\n                    var flags = 0;\n                    {\n                        var stream = SYSCALLS.getStreamFromFD(fd);\n                        var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4\n                    }\n                    HEAP8[pbuf >>> 0] = type;\n                    HEAP16[pbuf + 2 >>> 1 >>> 0] = flags;\n                    tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[pbuf + 12 >>> 2 >>> 0] = tempI64[1];\n                    tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 16 >>> 2 >>> 0] = tempI64[0], HEAP32[pbuf + 20 >>> 2 >>> 0] = tempI64[1];\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_fdstat_get.sig = \"iip\";\n            var doReadv = (stream, iov, iovcnt, offset) => {\n                var ret = 0;\n                for (var i = 0; i < iovcnt; i++) {\n                    var ptr = HEAPU32[iov >>> 2 >>> 0];\n                    var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n                    iov += 8;\n                    var curr = FS.read(stream, HEAP8, ptr, len, offset);\n                    if (curr < 0) return -1;\n                    ret += curr;\n                    if (curr < len) break;\n                    if (typeof offset != \"undefined\") {\n                        offset += curr\n                    }\n                }\n                return ret\n            };\n\n            function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                pnum >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doReadv(stream, iov, iovcnt, offset);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_pread.sig = \"iippiip\";\n            var doWritev = (stream, iov, iovcnt, offset) => {\n                var ret = 0;\n                for (var i = 0; i < iovcnt; i++) {\n                    var ptr = HEAPU32[iov >>> 2 >>> 0];\n                    var len = HEAPU32[iov + 4 >>> 2 >>> 0];\n                    iov += 8;\n                    var curr = FS.write(stream, HEAP8, ptr, len, offset);\n                    if (curr < 0) return -1;\n                    ret += curr;\n                    if (curr < len) {\n                        break\n                    }\n                    if (typeof offset != \"undefined\") {\n                        offset += curr\n                    }\n                }\n                return ret\n            };\n\n            function _fd_pwrite(fd, iov, iovcnt, offset_low, offset_high, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                pnum >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doWritev(stream, iov, iovcnt, offset);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_pwrite.sig = \"iippiip\";\n\n            function _fd_read(fd, iov, iovcnt, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                pnum >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doReadv(stream, iov, iovcnt);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_read.sig = \"iippp\";\n\n            function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n                var offset = convertI32PairToI53Checked(offset_low, offset_high);\n                newOffset >>>= 0;\n                try {\n                    if (isNaN(offset)) return 61;\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    FS.llseek(stream, offset, whence);\n                    tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >>> 2 >>> 0] = tempI64[0], HEAP32[newOffset + 4 >>> 2 >>> 0] = tempI64[1];\n                    if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_seek.sig = \"iiiiip\";\n\n            function _fd_sync(fd) {\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    if (stream.stream_ops?.fsync) {\n                        return stream.stream_ops.fsync(stream)\n                    }\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_sync.sig = \"ii\";\n\n            function _fd_write(fd, iov, iovcnt, pnum) {\n                iov >>>= 0;\n                iovcnt >>>= 0;\n                pnum >>>= 0;\n                try {\n                    var stream = SYSCALLS.getStreamFromFD(fd);\n                    var num = doWritev(stream, iov, iovcnt);\n                    HEAPU32[pnum >>> 2 >>> 0] = num;\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _fd_write.sig = \"iippp\";\n\n            function _getaddrinfo(node, service, hint, out) {\n                node >>>= 0;\n                service >>>= 0;\n                hint >>>= 0;\n                out >>>= 0;\n                var addrs = [];\n                var canon = null;\n                var addr = 0;\n                var port = 0;\n                var flags = 0;\n                var family = 0;\n                var type = 0;\n                var proto = 0;\n                var ai, last;\n\n                function allocaddrinfo(family, type, proto, canon, addr, port) {\n                    var sa, salen, ai;\n                    var errno;\n                    salen = family === 10 ? 28 : 16;\n                    addr = family === 10 ? inetNtop6(addr) : inetNtop4(addr);\n                    sa = _malloc(salen);\n                    errno = writeSockaddr(sa, family, addr, port);\n                    assert(!errno);\n                    ai = _malloc(32);\n                    HEAP32[ai + 4 >>> 2 >>> 0] = family;\n                    HEAP32[ai + 8 >>> 2 >>> 0] = type;\n                    HEAP32[ai + 12 >>> 2 >>> 0] = proto;\n                    HEAPU32[ai + 24 >>> 2 >>> 0] = canon;\n                    HEAPU32[ai + 20 >>> 2 >>> 0] = sa;\n                    if (family === 10) {\n                        HEAP32[ai + 16 >>> 2 >>> 0] = 28\n                    } else {\n                        HEAP32[ai + 16 >>> 2 >>> 0] = 16\n                    }\n                    HEAP32[ai + 28 >>> 2 >>> 0] = 0;\n                    return ai\n                }\n                if (hint) {\n                    flags = HEAP32[hint >>> 2 >>> 0];\n                    family = HEAP32[hint + 4 >>> 2 >>> 0];\n                    type = HEAP32[hint + 8 >>> 2 >>> 0];\n                    proto = HEAP32[hint + 12 >>> 2 >>> 0]\n                }\n                if (type && !proto) {\n                    proto = type === 2 ? 17 : 6\n                }\n                if (!type && proto) {\n                    type = proto === 17 ? 2 : 1\n                }\n                if (proto === 0) {\n                    proto = 6\n                }\n                if (type === 0) {\n                    type = 1\n                }\n                if (!node && !service) {\n                    return -2\n                }\n                if (flags & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) {\n                    return -1\n                }\n                if (hint !== 0 && HEAP32[hint >>> 2 >>> 0] & 2 && !node) {\n                    return -1\n                }\n                if (flags & 32) {\n                    return -2\n                }\n                if (type !== 0 && type !== 1 && type !== 2) {\n                    return -7\n                }\n                if (family !== 0 && family !== 2 && family !== 10) {\n                    return -6\n                }\n                if (service) {\n                    service = UTF8ToString(service);\n                    port = parseInt(service, 10);\n                    if (isNaN(port)) {\n                        if (flags & 1024) {\n                            return -2\n                        }\n                        return -8\n                    }\n                }\n                if (!node) {\n                    if (family === 0) {\n                        family = 2\n                    }\n                    if ((flags & 1) === 0) {\n                        if (family === 2) {\n                            addr = _htonl(2130706433)\n                        } else {\n                            addr = [0, 0, 0, _htonl(1)]\n                        }\n                    }\n                    ai = allocaddrinfo(family, type, proto, null, addr, port);\n                    HEAPU32[out >>> 2 >>> 0] = ai;\n                    return 0\n                }\n                node = UTF8ToString(node);\n                addr = inetPton4(node);\n                if (addr !== null) {\n                    if (family === 0 || family === 2) {\n                        family = 2\n                    } else if (family === 10 && flags & 8) {\n                        addr = [0, 0, _htonl(65535), addr];\n                        family = 10\n                    } else {\n                        return -2\n                    }\n                } else {\n                    addr = inetPton6(node);\n                    if (addr !== null) {\n                        if (family === 0 || family === 10) {\n                            family = 10\n                        } else {\n                            return -2\n                        }\n                    }\n                }\n                if (addr != null) {\n                    ai = allocaddrinfo(family, type, proto, node, addr, port);\n                    HEAPU32[out >>> 2 >>> 0] = ai;\n                    return 0\n                }\n                if (flags & 4) {\n                    return -2\n                }\n                node = DNS.lookup_name(node);\n                addr = inetPton4(node);\n                if (family === 0) {\n                    family = 2\n                } else if (family === 10) {\n                    addr = [0, 0, _htonl(65535), addr]\n                }\n                ai = allocaddrinfo(family, type, proto, null, addr, port);\n                HEAPU32[out >>> 2 >>> 0] = ai;\n                return 0\n            }\n            _getaddrinfo.sig = \"ipppp\";\n\n            function _getnameinfo(sa, salen, node, nodelen, serv, servlen, flags) {\n                sa >>>= 0;\n                node >>>= 0;\n                serv >>>= 0;\n                var info = readSockaddr(sa, salen);\n                if (info.errno) {\n                    return -6\n                }\n                var port = info.port;\n                var addr = info.addr;\n                var overflowed = false;\n                if (node && nodelen) {\n                    var lookup;\n                    if (flags & 1 || !(lookup = DNS.lookup_addr(addr))) {\n                        if (flags & 8) {\n                            return -2\n                        }\n                    } else {\n                        addr = lookup\n                    }\n                    var numBytesWrittenExclNull = stringToUTF8(addr, node, nodelen);\n                    if (numBytesWrittenExclNull + 1 >= nodelen) {\n                        overflowed = true\n                    }\n                }\n                if (serv && servlen) {\n                    port = \"\" + port;\n                    var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen);\n                    if (numBytesWrittenExclNull + 1 >= servlen) {\n                        overflowed = true\n                    }\n                }\n                if (overflowed) {\n                    return -12\n                }\n                return 0\n            }\n            _getnameinfo.sig = \"ipipipii\";\n\n            function _pthread_kill(...args) {\n                return wasmImports[\"pthread_kill\"](...args)\n            }\n            _pthread_kill.stub = true;\n\n            function _random_get(buffer, size) {\n                buffer >>>= 0;\n                size >>>= 0;\n                try {\n                    randomFill(HEAPU8.subarray(buffer >>> 0, buffer + size >>> 0));\n                    return 0\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return e.errno\n                }\n            }\n            _random_get.sig = \"ipp\";\n            var arraySum = (array, index) => {\n                var sum = 0;\n                for (var i = 0; i <= index; sum += array[i++]) {}\n                return sum\n            };\n            var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n            var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n            var addDays = (date, days) => {\n                var newDate = new Date(date.getTime());\n                while (days > 0) {\n                    var leap = isLeapYear(newDate.getFullYear());\n                    var currentMonth = newDate.getMonth();\n                    var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];\n                    if (days > daysInCurrentMonth - newDate.getDate()) {\n                        days -= daysInCurrentMonth - newDate.getDate() + 1;\n                        newDate.setDate(1);\n                        if (currentMonth < 11) {\n                            newDate.setMonth(currentMonth + 1)\n                        } else {\n                            newDate.setMonth(0);\n                            newDate.setFullYear(newDate.getFullYear() + 1)\n                        }\n                    } else {\n                        newDate.setDate(newDate.getDate() + days);\n                        return newDate\n                    }\n                }\n                return newDate\n            };\n\n            function _strptime(buf, format, tm) {\n                buf >>>= 0;\n                format >>>= 0;\n                tm >>>= 0;\n                var pattern = UTF8ToString(format);\n                var SPECIAL_CHARS = \"\\\\!@#$^&*()+=-[]/{}|:<>?,.\";\n                for (var i = 0, ii = SPECIAL_CHARS.length; i < ii; ++i) {\n                    pattern = pattern.replace(new RegExp(\"\\\\\" + SPECIAL_CHARS[i], \"g\"), \"\\\\\" + SPECIAL_CHARS[i])\n                }\n                var EQUIVALENT_MATCHERS = {\n                    A: \"%a\",\n                    B: \"%b\",\n                    c: \"%a %b %d %H:%M:%S %Y\",\n                    D: \"%m\\\\/%d\\\\/%y\",\n                    e: \"%d\",\n                    F: \"%Y-%m-%d\",\n                    h: \"%b\",\n                    R: \"%H\\\\:%M\",\n                    r: \"%I\\\\:%M\\\\:%S\\\\s%p\",\n                    T: \"%H\\\\:%M\\\\:%S\",\n                    x: \"%m\\\\/%d\\\\/(?:%y|%Y)\",\n                    X: \"%H\\\\:%M\\\\:%S\"\n                };\n                var DATE_PATTERNS = {\n                    a: \"(?:Sun(?:day)?)|(?:Mon(?:day)?)|(?:Tue(?:sday)?)|(?:Wed(?:nesday)?)|(?:Thu(?:rsday)?)|(?:Fri(?:day)?)|(?:Sat(?:urday)?)\",\n                    b: \"(?:Jan(?:uary)?)|(?:Feb(?:ruary)?)|(?:Mar(?:ch)?)|(?:Apr(?:il)?)|May|(?:Jun(?:e)?)|(?:Jul(?:y)?)|(?:Aug(?:ust)?)|(?:Sep(?:tember)?)|(?:Oct(?:ober)?)|(?:Nov(?:ember)?)|(?:Dec(?:ember)?)\",\n                    C: \"\\\\d\\\\d\",\n                    d: \"0[1-9]|[1-9](?!\\\\d)|1\\\\d|2\\\\d|30|31\",\n                    H: \"\\\\d(?!\\\\d)|[0,1]\\\\d|20|21|22|23\",\n                    I: \"\\\\d(?!\\\\d)|0\\\\d|10|11|12\",\n                    j: \"00[1-9]|0?[1-9](?!\\\\d)|0?[1-9]\\\\d(?!\\\\d)|[1,2]\\\\d\\\\d|3[0-6]\\\\d\",\n                    m: \"0[1-9]|[1-9](?!\\\\d)|10|11|12\",\n                    M: \"0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d\",\n                    n: \" \",\n                    p: \"AM|am|PM|pm|A\\\\.M\\\\.|a\\\\.m\\\\.|P\\\\.M\\\\.|p\\\\.m\\\\.\",\n                    S: \"0\\\\d|\\\\d(?!\\\\d)|[1-5]\\\\d|60\",\n                    U: \"0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53\",\n                    W: \"0\\\\d|\\\\d(?!\\\\d)|[1-4]\\\\d|50|51|52|53\",\n                    w: \"[0-6]\",\n                    y: \"\\\\d\\\\d\",\n                    Y: \"\\\\d\\\\d\\\\d\\\\d\",\n                    t: \" \",\n                    z: \"Z|(?:[\\\\+\\\\-]\\\\d\\\\d:?(?:\\\\d\\\\d)?)\"\n                };\n                var MONTH_NUMBERS = {\n                    JAN: 0,\n                    FEB: 1,\n                    MAR: 2,\n                    APR: 3,\n                    MAY: 4,\n                    JUN: 5,\n                    JUL: 6,\n                    AUG: 7,\n                    SEP: 8,\n                    OCT: 9,\n                    NOV: 10,\n                    DEC: 11\n                };\n                var DAY_NUMBERS_SUN_FIRST = {\n                    SUN: 0,\n                    MON: 1,\n                    TUE: 2,\n                    WED: 3,\n                    THU: 4,\n                    FRI: 5,\n                    SAT: 6\n                };\n                var DAY_NUMBERS_MON_FIRST = {\n                    MON: 0,\n                    TUE: 1,\n                    WED: 2,\n                    THU: 3,\n                    FRI: 4,\n                    SAT: 5,\n                    SUN: 6\n                };\n                var capture = [];\n                var pattern_out = pattern.replace(/%(.)/g, (m, c) => EQUIVALENT_MATCHERS[c] || m).replace(/%(.)/g, (_, c) => {\n                    let pat = DATE_PATTERNS[c];\n                    if (pat) {\n                        capture.push(c);\n                        return `(${pat})`\n                    } else {\n                        return c\n                    }\n                }).replace(/\\s+/g, \"\\\\s*\");\n                var matches = new RegExp(\"^\" + pattern_out, \"i\").exec(UTF8ToString(buf));\n\n                function initDate() {\n                    function fixup(value, min, max) {\n                        return typeof value != \"number\" || isNaN(value) ? min : value >= min ? value <= max ? value : max : min\n                    }\n                    return {\n                        year: fixup(HEAP32[tm + 20 >>> 2 >>> 0] + 1900, 1970, 9999),\n                        month: fixup(HEAP32[tm + 16 >>> 2 >>> 0], 0, 11),\n                        day: fixup(HEAP32[tm + 12 >>> 2 >>> 0], 1, 31),\n                        hour: fixup(HEAP32[tm + 8 >>> 2 >>> 0], 0, 23),\n                        min: fixup(HEAP32[tm + 4 >>> 2 >>> 0], 0, 59),\n                        sec: fixup(HEAP32[tm >>> 2 >>> 0], 0, 59),\n                        gmtoff: 0\n                    }\n                }\n                if (matches) {\n                    var date = initDate();\n                    var value;\n                    var getMatch = symbol => {\n                        var pos = capture.indexOf(symbol);\n                        if (pos >= 0) {\n                            return matches[pos + 1]\n                        }\n                        return\n                    };\n                    if (value = getMatch(\"S\")) {\n                        date.sec = jstoi_q(value)\n                    }\n                    if (value = getMatch(\"M\")) {\n                        date.min = jstoi_q(value)\n                    }\n                    if (value = getMatch(\"H\")) {\n                        date.hour = jstoi_q(value)\n                    } else if (value = getMatch(\"I\")) {\n                        var hour = jstoi_q(value);\n                        if (value = getMatch(\"p\")) {\n                            hour += value.toUpperCase()[0] === \"P\" ? 12 : 0\n                        }\n                        date.hour = hour\n                    }\n                    if (value = getMatch(\"Y\")) {\n                        date.year = jstoi_q(value)\n                    } else if (value = getMatch(\"y\")) {\n                        var year = jstoi_q(value);\n                        if (value = getMatch(\"C\")) {\n                            year += jstoi_q(value) * 100\n                        } else {\n                            year += year < 69 ? 2e3 : 1900\n                        }\n                        date.year = year\n                    }\n                    if (value = getMatch(\"m\")) {\n                        date.month = jstoi_q(value) - 1\n                    } else if (value = getMatch(\"b\")) {\n                        date.month = MONTH_NUMBERS[value.substring(0, 3).toUpperCase()] || 0\n                    }\n                    if (value = getMatch(\"d\")) {\n                        date.day = jstoi_q(value)\n                    } else if (value = getMatch(\"j\")) {\n                        var day = jstoi_q(value);\n                        var leapYear = isLeapYear(date.year);\n                        for (var month = 0; month < 12; ++month) {\n                            var daysUntilMonth = arraySum(leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, month - 1);\n                            if (day <= daysUntilMonth + (leapYear ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[month]) {\n                                date.day = day - daysUntilMonth\n                            }\n                        }\n                    } else if (value = getMatch(\"a\")) {\n                        var weekDay = value.substring(0, 3).toUpperCase();\n                        if (value = getMatch(\"U\")) {\n                            var weekDayNumber = DAY_NUMBERS_SUN_FIRST[weekDay];\n                            var weekNumber = jstoi_q(value);\n                            var janFirst = new Date(date.year, 0, 1);\n                            var endDate;\n                            if (janFirst.getDay() === 0) {\n                                endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1))\n                            } else {\n                                endDate = addDays(janFirst, 7 - janFirst.getDay() + weekDayNumber + 7 * (weekNumber - 1))\n                            }\n                            date.day = endDate.getDate();\n                            date.month = endDate.getMonth()\n                        } else if (value = getMatch(\"W\")) {\n                            var weekDayNumber = DAY_NUMBERS_MON_FIRST[weekDay];\n                            var weekNumber = jstoi_q(value);\n                            var janFirst = new Date(date.year, 0, 1);\n                            var endDate;\n                            if (janFirst.getDay() === 1) {\n                                endDate = addDays(janFirst, weekDayNumber + 7 * (weekNumber - 1))\n                            } else {\n                                endDate = addDays(janFirst, 7 - janFirst.getDay() + 1 + weekDayNumber + 7 * (weekNumber - 1))\n                            }\n                            date.day = endDate.getDate();\n                            date.month = endDate.getMonth()\n                        }\n                    }\n                    if (value = getMatch(\"z\")) {\n                        if (value.toLowerCase() === \"z\") {\n                            date.gmtoff = 0\n                        } else {\n                            var match = value.match(/^((?:\\-|\\+)\\d\\d):?(\\d\\d)?/);\n                            date.gmtoff = match[1] * 3600;\n                            if (match[2]) {\n                                date.gmtoff += date.gmtoff > 0 ? match[2] * 60 : -match[2] * 60\n                            }\n                        }\n                    }\n                    var fullDate = new Date(date.year, date.month, date.day, date.hour, date.min, date.sec, 0);\n                    HEAP32[tm >>> 2 >>> 0] = fullDate.getSeconds();\n                    HEAP32[tm + 4 >>> 2 >>> 0] = fullDate.getMinutes();\n                    HEAP32[tm + 8 >>> 2 >>> 0] = fullDate.getHours();\n                    HEAP32[tm + 12 >>> 2 >>> 0] = fullDate.getDate();\n                    HEAP32[tm + 16 >>> 2 >>> 0] = fullDate.getMonth();\n                    HEAP32[tm + 20 >>> 2 >>> 0] = fullDate.getFullYear() - 1900;\n                    HEAP32[tm + 24 >>> 2 >>> 0] = fullDate.getDay();\n                    HEAP32[tm + 28 >>> 2 >>> 0] = arraySum(isLeapYear(fullDate.getFullYear()) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, fullDate.getMonth() - 1) + fullDate.getDate() - 1;\n                    HEAP32[tm + 32 >>> 2 >>> 0] = 0;\n                    HEAP32[tm + 36 >>> 2 >>> 0] = date.gmtoff;\n                    return buf + intArrayFromString(matches[0]).length - 1\n                }\n                return 0\n            }\n            _strptime.sig = \"pppp\";\n            var getCFunc = ident => {\n                var func = Module[\"_\" + ident];\n                return func\n            };\n            var writeArrayToMemory = (array, buffer) => {\n                HEAP8.set(array, buffer >>> 0)\n            };\n            var ccall = (ident, returnType, argTypes, args, opts) => {\n                var toC = {\n                    string: str => {\n                        var ret = 0;\n                        if (str !== null && str !== undefined && str !== 0) {\n                            ret = stringToUTF8OnStack(str)\n                        }\n                        return ret\n                    },\n                    array: arr => {\n                        var ret = stackAlloc(arr.length);\n                        writeArrayToMemory(arr, ret);\n                        return ret\n                    }\n                };\n\n                function convertReturnValue(ret) {\n                    if (returnType === \"string\") {\n                        return UTF8ToString(ret)\n                    }\n                    if (returnType === \"boolean\") return Boolean(ret);\n                    return ret\n                }\n                var func = getCFunc(ident);\n                var cArgs = [];\n                var stack = 0;\n                if (args) {\n                    for (var i = 0; i < args.length; i++) {\n                        var converter = toC[argTypes[i]];\n                        if (converter) {\n                            if (stack === 0) stack = stackSave();\n                            cArgs[i] = converter(args[i])\n                        } else {\n                            cArgs[i] = args[i]\n                        }\n                    }\n                }\n                var ret = func(...cArgs);\n\n                function onDone(ret) {\n                    if (stack !== 0) stackRestore(stack);\n                    return convertReturnValue(ret)\n                }\n                ret = onDone(ret);\n                return ret\n            };\n            var createDyncallWrapper = sig => {\n                var sections = [];\n                var prelude = [0, 97, 115, 109, 1, 0, 0, 0];\n                sections.push(prelude);\n                var wrappersig = [sig[0].replace(\"j\", \"i\"), \"i\", sig.slice(1).replace(/j/g, \"ii\")].join(\"\");\n                var typeSectionBody = [3];\n                generateFuncType(wrappersig, typeSectionBody);\n                generateFuncType(sig, typeSectionBody);\n                generateFuncType(\"vi\", typeSectionBody);\n                var typeSection = [1];\n                uleb128Encode(typeSectionBody.length, typeSection);\n                typeSection.push(...typeSectionBody);\n                sections.push(typeSection);\n                var importSection = [2, 15, 2, 1, 101, 1, 116, 1, 112, 0, 0, 1, 101, 1, 114, 0, 2];\n                sections.push(importSection);\n                var functionSection = [3, 2, 1, 0];\n                sections.push(functionSection);\n                var exportSection = [7, 5, 1, 1, 102, 0, 1];\n                sections.push(exportSection);\n                var convert_code = [];\n                if (sig[0] === \"j\") {\n                    convert_code = [1, 1, 126]\n                } else {\n                    convert_code.push(0)\n                }\n\n                function localGet(j) {\n                    convert_code.push(32);\n                    uleb128Encode(j, convert_code)\n                }\n                var j = 1;\n                for (var i = 1; i < sig.length; i++) {\n                    if (sig[i] == \"j\") {\n                        localGet(j + 1);\n                        convert_code.push(173, 66, 32, 134);\n                        localGet(j);\n                        convert_code.push(172, 132);\n                        j += 2\n                    } else {\n                        localGet(j);\n                        j++\n                    }\n                }\n                convert_code.push(32, 0, 17, 1, 0);\n                if (sig[0] === \"j\") {\n                    convert_code.push(34);\n                    uleb128Encode(j, convert_code);\n                    convert_code.push(66, 32, 136, 167, 16, 0);\n                    localGet(j);\n                    convert_code.push(167)\n                }\n                convert_code.push(11);\n                var codeBody = [1];\n                uleb128Encode(convert_code.length, codeBody);\n                codeBody.push(...convert_code);\n                var codeSection = [10];\n                uleb128Encode(codeBody.length, codeSection);\n                codeSection.push(...codeBody);\n                sections.push(codeSection);\n                var bytes = new Uint8Array([].concat.apply([], sections));\n                var module = new WebAssembly.Module(bytes);\n                var instance = new WebAssembly.Instance(module, {\n                    e: {\n                        t: wasmTable,\n                        r: setTempRet0\n                    }\n                });\n                var wrappedFunc = instance.exports[\"f\"];\n                return wrappedFunc\n            };\n            var getTempRet0 = val => __emscripten_tempret_get();\n            var writeI53ToI64Clamped = (ptr, num) => {\n                if (num > 0x8000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 4294967295;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 2147483647\n                } else if (num < -0x8000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 0;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 2147483648\n                } else {\n                    writeI53ToI64(ptr, num)\n                }\n            };\n            var writeI53ToI64Signaling = (ptr, num) => {\n                if (num > 0x8000000000000000 || num < -0x8000000000000000) {\n                    throw `RangeError: ${num}`\n                }\n                writeI53ToI64(ptr, num)\n            };\n            var writeI53ToU64Clamped = (ptr, num) => {\n                if (num > 0x10000000000000000) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 4294967295;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 4294967295\n                } else if (num < 0) {\n                    HEAPU32[ptr >>> 2 >>> 0] = 0;\n                    HEAPU32[ptr + 4 >>> 2 >>> 0] = 0\n                } else {\n                    writeI53ToI64(ptr, num)\n                }\n            };\n            var writeI53ToU64Signaling = (ptr, num) => {\n                if (num < 0 || num > 0x10000000000000000) {\n                    throw `RangeError: ${num}`\n                }\n                writeI53ToI64(ptr, num)\n            };\n            var readI53FromU64 = ptr => HEAPU32[ptr >>> 2 >>> 0] + HEAPU32[ptr + 4 >>> 2 >>> 0] * 4294967296;\n            var convertI32PairToI53 = (lo, hi) => (lo >>> 0) + hi * 4294967296;\n            var convertU32PairToI53 = (lo, hi) => (lo >>> 0) + (hi >>> 0) * 4294967296;\n            var _stackAlloc = stackAlloc;\n            var _stackSave = stackSave;\n            var _stackRestore = stackSave;\n            var _getTempRet0 = getTempRet0;\n            Module[\"_getTempRet0\"] = _getTempRet0;\n            var ptrToString = ptr => \"0x\" + ptr.toString(16).padStart(8, \"0\");\n\n            function _emscripten_notify_memory_growth(memoryIndex) {\n                memoryIndex >>>= 0;\n                updateMemoryViews()\n            }\n            _emscripten_notify_memory_growth.sig = \"vp\";\n            var withStackSave = f => {\n                var stack = stackSave();\n                var ret = f();\n                stackRestore(stack);\n                return ret\n            };\n            var ERRNO_CODES = {\n                EPERM: 63,\n                ENOENT: 44,\n                ESRCH: 71,\n                EINTR: 27,\n                EIO: 29,\n                ENXIO: 60,\n                E2BIG: 1,\n                ENOEXEC: 45,\n                EBADF: 8,\n                ECHILD: 12,\n                EAGAIN: 6,\n                EWOULDBLOCK: 6,\n                ENOMEM: 48,\n                EACCES: 2,\n                EFAULT: 21,\n                ENOTBLK: 105,\n                EBUSY: 10,\n                EEXIST: 20,\n                EXDEV: 75,\n                ENODEV: 43,\n                ENOTDIR: 54,\n                EISDIR: 31,\n                EINVAL: 28,\n                ENFILE: 41,\n                EMFILE: 33,\n                ENOTTY: 59,\n                ETXTBSY: 74,\n                EFBIG: 22,\n                ENOSPC: 51,\n                ESPIPE: 70,\n                EROFS: 69,\n                EMLINK: 34,\n                EPIPE: 64,\n                EDOM: 18,\n                ERANGE: 68,\n                ENOMSG: 49,\n                EIDRM: 24,\n                ECHRNG: 106,\n                EL2NSYNC: 156,\n                EL3HLT: 107,\n                EL3RST: 108,\n                ELNRNG: 109,\n                EUNATCH: 110,\n                ENOCSI: 111,\n                EL2HLT: 112,\n                EDEADLK: 16,\n                ENOLCK: 46,\n                EBADE: 113,\n                EBADR: 114,\n                EXFULL: 115,\n                ENOANO: 104,\n                EBADRQC: 103,\n                EBADSLT: 102,\n                EDEADLOCK: 16,\n                EBFONT: 101,\n                ENOSTR: 100,\n                ENODATA: 116,\n                ETIME: 117,\n                ENOSR: 118,\n                ENONET: 119,\n                ENOPKG: 120,\n                EREMOTE: 121,\n                ENOLINK: 47,\n                EADV: 122,\n                ESRMNT: 123,\n                ECOMM: 124,\n                EPROTO: 65,\n                EMULTIHOP: 36,\n                EDOTDOT: 125,\n                EBADMSG: 9,\n                ENOTUNIQ: 126,\n                EBADFD: 127,\n                EREMCHG: 128,\n                ELIBACC: 129,\n                ELIBBAD: 130,\n                ELIBSCN: 131,\n                ELIBMAX: 132,\n                ELIBEXEC: 133,\n                ENOSYS: 52,\n                ENOTEMPTY: 55,\n                ENAMETOOLONG: 37,\n                ELOOP: 32,\n                EOPNOTSUPP: 138,\n                EPFNOSUPPORT: 139,\n                ECONNRESET: 15,\n                ENOBUFS: 42,\n                EAFNOSUPPORT: 5,\n                EPROTOTYPE: 67,\n                ENOTSOCK: 57,\n                ENOPROTOOPT: 50,\n                ESHUTDOWN: 140,\n                ECONNREFUSED: 14,\n                EADDRINUSE: 3,\n                ECONNABORTED: 13,\n                ENETUNREACH: 40,\n                ENETDOWN: 38,\n                ETIMEDOUT: 73,\n                EHOSTDOWN: 142,\n                EHOSTUNREACH: 23,\n                EINPROGRESS: 26,\n                EALREADY: 7,\n                EDESTADDRREQ: 17,\n                EMSGSIZE: 35,\n                EPROTONOSUPPORT: 66,\n                ESOCKTNOSUPPORT: 137,\n                EADDRNOTAVAIL: 4,\n                ENETRESET: 39,\n                EISCONN: 30,\n                ENOTCONN: 53,\n                ETOOMANYREFS: 141,\n                EUSERS: 136,\n                EDQUOT: 19,\n                ESTALE: 72,\n                ENOTSUP: 138,\n                ENOMEDIUM: 148,\n                EILSEQ: 25,\n                EOVERFLOW: 61,\n                ECANCELED: 11,\n                ENOTRECOVERABLE: 56,\n                EOWNERDEAD: 62,\n                ESTRPIPE: 135\n            };\n            var strError = errno => UTF8ToString(_strerror(errno));\n            var Protocols = {\n                list: [],\n                map: {}\n            };\n            var _setprotoent = stayopen => {\n                function allocprotoent(name, proto, aliases) {\n                    var nameBuf = _malloc(name.length + 1);\n                    stringToAscii(name, nameBuf);\n                    var j = 0;\n                    var length = aliases.length;\n                    var aliasListBuf = _malloc((length + 1) * 4);\n                    for (var i = 0; i < length; i++, j += 4) {\n                        var alias = aliases[i];\n                        var aliasBuf = _malloc(alias.length + 1);\n                        stringToAscii(alias, aliasBuf);\n                        HEAPU32[aliasListBuf + j >>> 2 >>> 0] = aliasBuf\n                    }\n                    HEAPU32[aliasListBuf + j >>> 2 >>> 0] = 0;\n                    var pe = _malloc(12);\n                    HEAPU32[pe >>> 2 >>> 0] = nameBuf;\n                    HEAPU32[pe + 4 >>> 2 >>> 0] = aliasListBuf;\n                    HEAP32[pe + 8 >>> 2 >>> 0] = proto;\n                    return pe\n                }\n                var list = Protocols.list;\n                var map = Protocols.map;\n                if (list.length === 0) {\n                    var entry = allocprotoent(\"tcp\", 6, [\"TCP\"]);\n                    list.push(entry);\n                    map[\"tcp\"] = map[\"6\"] = entry;\n                    entry = allocprotoent(\"udp\", 17, [\"UDP\"]);\n                    list.push(entry);\n                    map[\"udp\"] = map[\"17\"] = entry\n                }\n                _setprotoent.index = 0\n            };\n            _setprotoent.sig = \"vi\";\n            var _endprotoent = () => {};\n            _endprotoent.sig = \"v\";\n\n            function _getprotoent(number) {\n                if (_setprotoent.index === Protocols.list.length) {\n                    return 0\n                }\n                var result = Protocols.list[_setprotoent.index++];\n                return result\n            }\n            _getprotoent.sig = \"p\";\n\n            function _getprotobyname(name) {\n                name >>>= 0;\n                name = UTF8ToString(name);\n                _setprotoent(true);\n                var result = Protocols.map[name];\n                return result\n            }\n            _getprotobyname.sig = \"pp\";\n\n            function _getprotobynumber(number) {\n                _setprotoent(true);\n                var result = Protocols.map[number];\n                return result\n            }\n            _getprotobynumber.sig = \"pi\";\n\n            function _emscripten_run_script(ptr) {\n                ptr >>>= 0;\n                eval(UTF8ToString(ptr))\n            }\n            _emscripten_run_script.sig = \"vp\";\n\n            function _emscripten_run_script_int(ptr) {\n                ptr >>>= 0;\n                return eval(UTF8ToString(ptr)) | 0\n            }\n            _emscripten_run_script_int.sig = \"ip\";\n\n            function _emscripten_run_script_string(ptr) {\n                ptr >>>= 0;\n                var s = eval(UTF8ToString(ptr));\n                if (s == null) {\n                    return 0\n                }\n                s += \"\";\n                var me = _emscripten_run_script_string;\n                var len = lengthBytesUTF8(s);\n                if (!me.bufferSize || me.bufferSize < len + 1) {\n                    if (me.bufferSize) _free(me.buffer);\n                    me.bufferSize = len + 1;\n                    me.buffer = _malloc(me.bufferSize)\n                }\n                stringToUTF8(s, me.buffer, me.bufferSize);\n                return me.buffer\n            }\n            _emscripten_run_script_string.sig = \"pp\";\n            var _emscripten_random = () => Math.random();\n            _emscripten_random.sig = \"f\";\n            var warnOnce = text => {\n                warnOnce.shown ||= {};\n                if (!warnOnce.shown[text]) {\n                    warnOnce.shown[text] = 1;\n                    if (ENVIRONMENT_IS_NODE) text = \"warning: \" + text;\n                    err(text)\n                }\n            };\n            var jsStackTrace = () => (new Error).stack.toString();\n            var getCallstack = flags => {\n                var callstack = jsStackTrace();\n                var iThisFunc = callstack.lastIndexOf(\"_emscripten_log\");\n                var iThisFunc2 = callstack.lastIndexOf(\"_emscripten_get_callstack\");\n                var iNextLine = callstack.indexOf(\"\\n\", Math.max(iThisFunc, iThisFunc2)) + 1;\n                callstack = callstack.slice(iNextLine);\n                if (flags & 8 && typeof emscripten_source_map == \"undefined\") {\n                    warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');\n                    flags ^= 8;\n                    flags |= 16\n                }\n                var lines = callstack.split(\"\\n\");\n                callstack = \"\";\n                var newFirefoxRe = new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");\n                var firefoxRe = new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");\n                var chromeRe = new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");\n                for (var l in lines) {\n                    var line = lines[l];\n                    var symbolName = \"\";\n                    var file = \"\";\n                    var lineno = 0;\n                    var column = 0;\n                    var parts = chromeRe.exec(line);\n                    if (parts && parts.length == 5) {\n                        symbolName = parts[1];\n                        file = parts[2];\n                        lineno = parts[3];\n                        column = parts[4]\n                    } else {\n                        parts = newFirefoxRe.exec(line) || firefoxRe.exec(line);\n                        if (parts && parts.length >= 4) {\n                            symbolName = parts[1];\n                            file = parts[2];\n                            lineno = parts[3];\n                            column = parts[4] | 0\n                        } else {\n                            callstack += line + \"\\n\";\n                            continue\n                        }\n                    }\n                    var haveSourceMap = false;\n                    if (flags & 8) {\n                        var orig = emscripten_source_map.originalPositionFor({\n                            line: lineno,\n                            column\n                        });\n                        haveSourceMap = orig?.source;\n                        if (haveSourceMap) {\n                            if (flags & 64) {\n                                orig.source = orig.source.substring(orig.source.replace(/\\\\/g, \"/\").lastIndexOf(\"/\") + 1)\n                            }\n                            callstack += `    at ${symbolName} (${orig.source}:${orig.line}:${orig.column})\\n`\n                        }\n                    }\n                    if (flags & 16 || !haveSourceMap) {\n                        if (flags & 64) {\n                            file = file.substring(file.replace(/\\\\/g, \"/\").lastIndexOf(\"/\") + 1)\n                        }\n                        callstack += (haveSourceMap ? `     = ${symbolName}` : `    at ${symbolName}`) + ` (${file}:${lineno}:${column})\\n`\n                    }\n                }\n                callstack = callstack.replace(/\\s+$/, \"\");\n                return callstack\n            };\n            var emscriptenLog = (flags, str) => {\n                if (flags & 24) {\n                    str = str.replace(/\\s+$/, \"\");\n                    str += (str.length > 0 ? \"\\n\" : \"\") + getCallstack(flags)\n                }\n                if (flags & 1) {\n                    if (flags & 4) {\n                        console.error(str)\n                    } else if (flags & 2) {\n                        console.warn(str)\n                    } else if (flags & 512) {\n                        console.info(str)\n                    } else if (flags & 256) {\n                        console.debug(str)\n                    } else {\n                        console.log(str)\n                    }\n                } else if (flags & 6) {\n                    err(str)\n                } else {\n                    out(str)\n                }\n            };\n            var reallyNegative = x => x < 0 || x === 0 && 1 / x === -Infinity;\n            var reSign = (value, bits) => {\n                if (value <= 0) {\n                    return value\n                }\n                var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);\n                if (value >= half && (bits <= 32 || value > half)) {\n                    value = -2 * half + value\n                }\n                return value\n            };\n            var unSign = (value, bits) => {\n                if (value >= 0) {\n                    return value\n                }\n                return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value\n            };\n            var strLen = ptr => {\n                var end = ptr;\n                while (HEAPU8[end >>> 0]) ++end;\n                return end - ptr\n            };\n            var formatString = (format, varargs) => {\n                var textIndex = format;\n                var argIndex = varargs;\n\n                function prepVararg(ptr, type) {\n                    if (type === \"double\" || type === \"i64\") {\n                        if (ptr & 7) {\n                            ptr += 4\n                        }\n                    } else {}\n                    return ptr\n                }\n\n                function getNextArg(type) {\n                    var ret;\n                    argIndex = prepVararg(argIndex, type);\n                    if (type === \"double\") {\n                        ret = HEAPF64[argIndex >>> 3 >>> 0];\n                        argIndex += 8\n                    } else if (type == \"i64\") {\n                        ret = [HEAP32[argIndex >>> 2 >>> 0], HEAP32[argIndex + 4 >>> 2 >>> 0]];\n                        argIndex += 8\n                    } else {\n                        type = \"i32\";\n                        ret = HEAP32[argIndex >>> 2 >>> 0];\n                        argIndex += 4\n                    }\n                    return ret\n                }\n                var ret = [];\n                var curr, next, currArg;\n                while (1) {\n                    var startTextIndex = textIndex;\n                    curr = HEAP8[textIndex >>> 0];\n                    if (curr === 0) break;\n                    next = HEAP8[textIndex + 1 >>> 0];\n                    if (curr == 37) {\n                        var flagAlwaysSigned = false;\n                        var flagLeftAlign = false;\n                        var flagAlternative = false;\n                        var flagZeroPad = false;\n                        var flagPadSign = false;\n                        flagsLoop: while (1) {\n                            switch (next) {\n                                case 43:\n                                    flagAlwaysSigned = true;\n                                    break;\n                                case 45:\n                                    flagLeftAlign = true;\n                                    break;\n                                case 35:\n                                    flagAlternative = true;\n                                    break;\n                                case 48:\n                                    if (flagZeroPad) {\n                                        break flagsLoop\n                                    } else {\n                                        flagZeroPad = true;\n                                        break\n                                    }\n                                case 32:\n                                    flagPadSign = true;\n                                    break;\n                                default:\n                                    break flagsLoop\n                            }\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        }\n                        var width = 0;\n                        if (next == 42) {\n                            width = getNextArg(\"i32\");\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        } else {\n                            while (next >= 48 && next <= 57) {\n                                width = width * 10 + (next - 48);\n                                textIndex++;\n                                next = HEAP8[textIndex + 1 >>> 0]\n                            }\n                        }\n                        var precisionSet = false,\n                            precision = -1;\n                        if (next == 46) {\n                            precision = 0;\n                            precisionSet = true;\n                            textIndex++;\n                            next = HEAP8[textIndex + 1 >>> 0];\n                            if (next == 42) {\n                                precision = getNextArg(\"i32\");\n                                textIndex++\n                            } else {\n                                while (1) {\n                                    var precisionChr = HEAP8[textIndex + 1 >>> 0];\n                                    if (precisionChr < 48 || precisionChr > 57) break;\n                                    precision = precision * 10 + (precisionChr - 48);\n                                    textIndex++\n                                }\n                            }\n                            next = HEAP8[textIndex + 1 >>> 0]\n                        }\n                        if (precision < 0) {\n                            precision = 6;\n                            precisionSet = false\n                        }\n                        var argSize;\n                        switch (String.fromCharCode(next)) {\n                            case \"h\":\n                                var nextNext = HEAP8[textIndex + 2 >>> 0];\n                                if (nextNext == 104) {\n                                    textIndex++;\n                                    argSize = 1\n                                } else {\n                                    argSize = 2\n                                }\n                                break;\n                            case \"l\":\n                                var nextNext = HEAP8[textIndex + 2 >>> 0];\n                                if (nextNext == 108) {\n                                    textIndex++;\n                                    argSize = 8\n                                } else {\n                                    argSize = 4\n                                }\n                                break;\n                            case \"L\":\n                            case \"q\":\n                            case \"j\":\n                                argSize = 8;\n                                break;\n                            case \"z\":\n                            case \"t\":\n                            case \"I\":\n                                argSize = 4;\n                                break;\n                            default:\n                                argSize = null\n                        }\n                        if (argSize) textIndex++;\n                        next = HEAP8[textIndex + 1 >>> 0];\n                        switch (String.fromCharCode(next)) {\n                            case \"d\":\n                            case \"i\":\n                            case \"u\":\n                            case \"o\":\n                            case \"x\":\n                            case \"X\":\n                            case \"p\": {\n                                var signed = next == 100 || next == 105;\n                                argSize = argSize || 4;\n                                currArg = getNextArg(\"i\" + argSize * 8);\n                                var argText;\n                                if (argSize == 8) {\n                                    currArg = next == 117 ? convertU32PairToI53(currArg[0], currArg[1]) : convertI32PairToI53(currArg[0], currArg[1])\n                                }\n                                if (argSize <= 4) {\n                                    var limit = Math.pow(256, argSize) - 1;\n                                    currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8)\n                                }\n                                var currAbsArg = Math.abs(currArg);\n                                var prefix = \"\";\n                                if (next == 100 || next == 105) {\n                                    argText = reSign(currArg, 8 * argSize).toString(10)\n                                } else if (next == 117) {\n                                    argText = unSign(currArg, 8 * argSize).toString(10);\n                                    currArg = Math.abs(currArg)\n                                } else if (next == 111) {\n                                    argText = (flagAlternative ? \"0\" : \"\") + currAbsArg.toString(8)\n                                } else if (next == 120 || next == 88) {\n                                    prefix = flagAlternative && currArg != 0 ? \"0x\" : \"\";\n                                    if (currArg < 0) {\n                                        currArg = -currArg;\n                                        argText = (currAbsArg - 1).toString(16);\n                                        var buffer = [];\n                                        for (var i = 0; i < argText.length; i++) {\n                                            buffer.push((15 - parseInt(argText[i], 16)).toString(16))\n                                        }\n                                        argText = buffer.join(\"\");\n                                        while (argText.length < argSize * 2) argText = \"f\" + argText\n                                    } else {\n                                        argText = currAbsArg.toString(16)\n                                    }\n                                    if (next == 88) {\n                                        prefix = prefix.toUpperCase();\n                                        argText = argText.toUpperCase()\n                                    }\n                                } else if (next == 112) {\n                                    if (currAbsArg === 0) {\n                                        argText = \"(nil)\"\n                                    } else {\n                                        prefix = \"0x\";\n                                        argText = currAbsArg.toString(16)\n                                    }\n                                }\n                                if (precisionSet) {\n                                    while (argText.length < precision) {\n                                        argText = \"0\" + argText\n                                    }\n                                }\n                                if (currArg >= 0) {\n                                    if (flagAlwaysSigned) {\n                                        prefix = \"+\" + prefix\n                                    } else if (flagPadSign) {\n                                        prefix = \" \" + prefix\n                                    }\n                                }\n                                if (argText.charAt(0) == \"-\") {\n                                    prefix = \"-\" + prefix;\n                                    argText = argText.substr(1)\n                                }\n                                while (prefix.length + argText.length < width) {\n                                    if (flagLeftAlign) {\n                                        argText += \" \"\n                                    } else {\n                                        if (flagZeroPad) {\n                                            argText = \"0\" + argText\n                                        } else {\n                                            prefix = \" \" + prefix\n                                        }\n                                    }\n                                }\n                                argText = prefix + argText;\n                                argText.split(\"\").forEach(chr => ret.push(chr.charCodeAt(0)));\n                                break\n                            }\n                            case \"f\":\n                            case \"F\":\n                            case \"e\":\n                            case \"E\":\n                            case \"g\":\n                            case \"G\": {\n                                currArg = getNextArg(\"double\");\n                                var argText;\n                                if (isNaN(currArg)) {\n                                    argText = \"nan\";\n                                    flagZeroPad = false\n                                } else if (!isFinite(currArg)) {\n                                    argText = (currArg < 0 ? \"-\" : \"\") + \"inf\";\n                                    flagZeroPad = false\n                                } else {\n                                    var isGeneral = false;\n                                    var effectivePrecision = Math.min(precision, 20);\n                                    if (next == 103 || next == 71) {\n                                        isGeneral = true;\n                                        precision = precision || 1;\n                                        var exponent = parseInt(currArg.toExponential(effectivePrecision).split(\"e\")[1], 10);\n                                        if (precision > exponent && exponent >= -4) {\n                                            next = (next == 103 ? \"f\" : \"F\").charCodeAt(0);\n                                            precision -= exponent + 1\n                                        } else {\n                                            next = (next == 103 ? \"e\" : \"E\").charCodeAt(0);\n                                            precision--\n                                        }\n                                        effectivePrecision = Math.min(precision, 20)\n                                    }\n                                    if (next == 101 || next == 69) {\n                                        argText = currArg.toExponential(effectivePrecision);\n                                        if (/[eE][-+]\\d$/.test(argText)) {\n                                            argText = argText.slice(0, -1) + \"0\" + argText.slice(-1)\n                                        }\n                                    } else if (next == 102 || next == 70) {\n                                        argText = currArg.toFixed(effectivePrecision);\n                                        if (currArg === 0 && reallyNegative(currArg)) {\n                                            argText = \"-\" + argText\n                                        }\n                                    }\n                                    var parts = argText.split(\"e\");\n                                    if (isGeneral && !flagAlternative) {\n                                        while (parts[0].length > 1 && parts[0].includes(\".\") && (parts[0].slice(-1) == \"0\" || parts[0].slice(-1) == \".\")) {\n                                            parts[0] = parts[0].slice(0, -1)\n                                        }\n                                    } else {\n                                        if (flagAlternative && argText.indexOf(\".\") == -1) parts[0] += \".\";\n                                        while (precision > effectivePrecision++) parts[0] += \"0\"\n                                    }\n                                    argText = parts[0] + (parts.length > 1 ? \"e\" + parts[1] : \"\");\n                                    if (next == 69) argText = argText.toUpperCase();\n                                    if (currArg >= 0) {\n                                        if (flagAlwaysSigned) {\n                                            argText = \"+\" + argText\n                                        } else if (flagPadSign) {\n                                            argText = \" \" + argText\n                                        }\n                                    }\n                                }\n                                while (argText.length < width) {\n                                    if (flagLeftAlign) {\n                                        argText += \" \"\n                                    } else {\n                                        if (flagZeroPad && (argText[0] == \"-\" || argText[0] == \"+\")) {\n                                            argText = argText[0] + \"0\" + argText.slice(1)\n                                        } else {\n                                            argText = (flagZeroPad ? \"0\" : \" \") + argText\n                                        }\n                                    }\n                                }\n                                if (next < 97) argText = argText.toUpperCase();\n                                argText.split(\"\").forEach(chr => ret.push(chr.charCodeAt(0)));\n                                break\n                            }\n                            case \"s\": {\n                                var arg = getNextArg(\"i8*\");\n                                var argLength = arg ? strLen(arg) : \"(null)\".length;\n                                if (precisionSet) argLength = Math.min(argLength, precision);\n                                if (!flagLeftAlign) {\n                                    while (argLength < width--) {\n                                        ret.push(32)\n                                    }\n                                }\n                                if (arg) {\n                                    for (var i = 0; i < argLength; i++) {\n                                        ret.push(HEAPU8[arg++ >>> 0])\n                                    }\n                                } else {\n                                    ret = ret.concat(intArrayFromString(\"(null)\".substr(0, argLength), true))\n                                }\n                                if (flagLeftAlign) {\n                                    while (argLength < width--) {\n                                        ret.push(32)\n                                    }\n                                }\n                                break\n                            }\n                            case \"c\": {\n                                if (flagLeftAlign) ret.push(getNextArg(\"i8\"));\n                                while (--width > 0) {\n                                    ret.push(32)\n                                }\n                                if (!flagLeftAlign) ret.push(getNextArg(\"i8\"));\n                                break\n                            }\n                            case \"n\": {\n                                var ptr = getNextArg(\"i32*\");\n                                HEAP32[ptr >>> 2 >>> 0] = ret.length;\n                                break\n                            }\n                            case \"%\": {\n                                ret.push(curr);\n                                break\n                            }\n                            default: {\n                                for (var i = startTextIndex; i < textIndex + 2; i++) {\n                                    ret.push(HEAP8[i >>> 0])\n                                }\n                            }\n                        }\n                        textIndex += 2\n                    } else {\n                        ret.push(curr);\n                        textIndex += 1\n                    }\n                }\n                return ret\n            };\n\n            function _emscripten_log(flags, format, varargs) {\n                format >>>= 0;\n                varargs >>>= 0;\n                var result = formatString(format, varargs);\n                var str = UTF8ArrayToString(result);\n                emscriptenLog(flags, str)\n            }\n            _emscripten_log.sig = \"vipp\";\n\n            function _emscripten_get_compiler_setting(name) {\n                name >>>= 0;\n                throw \"You must build with -sRETAIN_COMPILER_SETTINGS for getCompilerSetting or emscripten_get_compiler_setting to work\"\n            }\n            _emscripten_get_compiler_setting.sig = \"pp\";\n            var _emscripten_has_asyncify = () => 0;\n            _emscripten_has_asyncify.sig = \"i\";\n            var _emscripten_debugger = () => {\n                debugger\n            };\n            _emscripten_debugger.sig = \"v\";\n\n            function _emscripten_print_double(x, to, max) {\n                to >>>= 0;\n                var str = x + \"\";\n                if (to) return stringToUTF8(str, to, max);\n                else return lengthBytesUTF8(str)\n            }\n            _emscripten_print_double.sig = \"idpi\";\n\n            function _emscripten_asm_const_double(code, sigPtr, argbuf) {\n                code >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runEmAsmFunction(code, sigPtr, argbuf)\n            }\n            _emscripten_asm_const_double.sig = \"dppp\";\n            var runMainThreadEmAsm = (emAsmAddr, sigPtr, argbuf, sync) => {\n                var args = readEmAsmArgs(sigPtr, argbuf);\n                return ASM_CONSTS[emAsmAddr](...args)\n            };\n\n            function _emscripten_asm_const_int_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1)\n            }\n            _emscripten_asm_const_int_sync_on_main_thread.sig = \"ippp\";\n\n            function _emscripten_asm_const_ptr_sync_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1)\n            }\n            _emscripten_asm_const_ptr_sync_on_main_thread.sig = \"pppp\";\n            var _emscripten_asm_const_double_sync_on_main_thread = _emscripten_asm_const_int_sync_on_main_thread;\n            _emscripten_asm_const_double_sync_on_main_thread.sig = \"dppp\";\n\n            function _emscripten_asm_const_async_on_main_thread(emAsmAddr, sigPtr, argbuf) {\n                emAsmAddr >>>= 0;\n                sigPtr >>>= 0;\n                argbuf >>>= 0;\n                return runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 0)\n            }\n            _emscripten_asm_const_async_on_main_thread.sig = \"vppp\";\n            var jstoi_s = Number;\n\n            function __Unwind_Backtrace(func, arg) {\n                func >>>= 0;\n                arg >>>= 0;\n                var trace = getCallstack();\n                var parts = trace.split(\"\\n\");\n                for (var i = 0; i < parts.length; i++) {\n                    var ret = getWasmTableEntry(func)(0, arg);\n                    if (ret !== 0) return\n                }\n            }\n            __Unwind_Backtrace.sig = \"ipp\";\n\n            function __Unwind_GetIPInfo(context, ipBefore) {\n                context >>>= 0;\n                ipBefore >>>= 0;\n                return abort(\"Unwind_GetIPInfo\")\n            }\n            __Unwind_GetIPInfo.sig = \"ppp\";\n\n            function __Unwind_FindEnclosingFunction(ip) {\n                ip >>>= 0;\n                return 0\n            }\n            __Unwind_FindEnclosingFunction.sig = \"pp\";\n\n            function __Unwind_RaiseException(ex) {\n                ex >>>= 0;\n                err(\"Warning: _Unwind_RaiseException is not correctly implemented\");\n                return ___cxa_throw(ex, 0, 0)\n            }\n            Module[\"__Unwind_RaiseException\"] = __Unwind_RaiseException;\n            __Unwind_RaiseException.sig = \"ip\";\n\n            function __Unwind_DeleteException(ex) {\n                ex >>>= 0;\n                err(\"TODO: Unwind_DeleteException\")\n            }\n            Module[\"__Unwind_DeleteException\"] = __Unwind_DeleteException;\n            __Unwind_DeleteException.sig = \"vp\";\n            var dynCallLegacy = (sig, ptr, args) => {\n                sig = sig.replace(/p/g, \"i\");\n                if (!(\"dynCall_\" + sig in Module)) {\n                    Module[\"dynCall_\" + sig] = createDyncallWrapper(sig)\n                }\n                var f = Module[\"dynCall_\" + sig];\n                return f(ptr, ...args)\n            };\n            var dynCall = (sig, ptr, args = []) => {\n                if (sig.includes(\"j\")) {\n                    return dynCallLegacy(sig, ptr, args)\n                }\n                var rtn = getWasmTableEntry(ptr)(...args);\n                return sig[0] == \"p\" ? rtn >>> 0 : rtn\n            };\n            var getDynCaller = (sig, ptr) => (...args) => dynCall(sig, ptr, args);\n            var _emscripten_exit_with_live_runtime = () => {\n                throw \"unwind\"\n            };\n            _emscripten_exit_with_live_runtime.sig = \"v\";\n            var _emscripten_force_exit = status => {\n                __emscripten_runtime_keepalive_clear();\n                _exit(status)\n            };\n            _emscripten_force_exit.sig = \"vi\";\n\n            function _emscripten_outn(str, len) {\n                str >>>= 0;\n                len >>>= 0;\n                return out(UTF8ToString(str, len))\n            }\n            _emscripten_outn.sig = \"vpp\";\n\n            function _emscripten_errn(str, len) {\n                str >>>= 0;\n                len >>>= 0;\n                return err(UTF8ToString(str, len))\n            }\n            _emscripten_errn.sig = \"vpp\";\n            var _emscripten_throw_number = number => {\n                throw number\n            };\n            _emscripten_throw_number.sig = \"vd\";\n\n            function _emscripten_throw_string(str) {\n                str >>>= 0;\n                throw UTF8ToString(str)\n            }\n            _emscripten_throw_string.sig = \"vp\";\n            var runtimeKeepalivePush = () => {\n                runtimeKeepaliveCounter += 1\n            };\n            runtimeKeepalivePush.sig = \"v\";\n            var runtimeKeepalivePop = () => {\n                runtimeKeepaliveCounter -= 1\n            };\n            runtimeKeepalivePop.sig = \"v\";\n            var _emscripten_runtime_keepalive_push = runtimeKeepalivePush;\n            _emscripten_runtime_keepalive_push.sig = \"v\";\n            var _emscripten_runtime_keepalive_pop = runtimeKeepalivePop;\n            _emscripten_runtime_keepalive_pop.sig = \"v\";\n            var _emscripten_runtime_keepalive_check = keepRuntimeAlive;\n            _emscripten_runtime_keepalive_check.sig = \"i\";\n            var asmjsMangle = x => {\n                if (x == \"__main_argc_argv\") {\n                    x = \"main\"\n                }\n                return x.startsWith(\"dynCall_\") ? x : \"_\" + x\n            };\n            var ___global_base = 1024;\n\n            function __emscripten_fs_load_embedded_files(ptr) {\n                ptr >>>= 0;\n                do {\n                    var name_addr = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var len = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var content = HEAPU32[ptr >>> 2 >>> 0];\n                    ptr += 4;\n                    var name = UTF8ToString(name_addr);\n                    FS.createPath(\"/\", PATH.dirname(name), true, true);\n                    FS.createDataFile(name, null, HEAP8.subarray(content >>> 0, content + len >>> 0), true, true, true)\n                } while (HEAPU32[ptr >>> 2 >>> 0])\n            }\n            __emscripten_fs_load_embedded_files.sig = \"vp\";\n            var POINTER_SIZE = 4;\n\n            function getNativeTypeSize(type) {\n                switch (type) {\n                    case \"i1\":\n                    case \"i8\":\n                    case \"u8\":\n                        return 1;\n                    case \"i16\":\n                    case \"u16\":\n                        return 2;\n                    case \"i32\":\n                    case \"u32\":\n                        return 4;\n                    case \"i64\":\n                    case \"u64\":\n                        return 8;\n                    case \"float\":\n                        return 4;\n                    case \"double\":\n                        return 8;\n                    default: {\n                        if (type[type.length - 1] === \"*\") {\n                            return POINTER_SIZE\n                        }\n                        if (type[0] === \"i\") {\n                            const bits = Number(type.substr(1));\n                            assert(bits % 8 === 0, `getNativeTypeSize invalid bits ${bits}, ${type} type`);\n                            return bits / 8\n                        }\n                        return 0\n                    }\n                }\n            }\n            var STACK_SIZE = 1048576;\n            var STACK_ALIGN = 16;\n            var ASSERTIONS = 0;\n            var cwrap = (ident, returnType, argTypes, opts) => {\n                var numericArgs = !argTypes || argTypes.every(type => type === \"number\" || type === \"boolean\");\n                var numericRet = returnType !== \"string\";\n                if (numericRet && numericArgs && !opts) {\n                    return getCFunc(ident)\n                }\n                return (...args) => ccall(ident, returnType, argTypes, args, opts)\n            };\n            var removeFunction = index => {\n                functionsInTableMap.delete(getWasmTableEntry(index));\n                setWasmTableEntry(index, null);\n                freeTableIndexes.push(index)\n            };\n            var _emscripten_math_cbrt = Math.cbrt;\n            _emscripten_math_cbrt.sig = \"dd\";\n            var _emscripten_math_pow = Math.pow;\n            _emscripten_math_pow.sig = \"ddd\";\n            var _emscripten_math_random = Math.random;\n            _emscripten_math_random.sig = \"d\";\n            var _emscripten_math_sign = Math.sign;\n            _emscripten_math_sign.sig = \"dd\";\n            var _emscripten_math_sqrt = Math.sqrt;\n            _emscripten_math_sqrt.sig = \"dd\";\n            var _emscripten_math_exp = Math.exp;\n            _emscripten_math_exp.sig = \"dd\";\n            var _emscripten_math_expm1 = Math.expm1;\n            _emscripten_math_expm1.sig = \"dd\";\n            var _emscripten_math_fmod = (x, y) => x % y;\n            _emscripten_math_fmod.sig = \"ddd\";\n            var _emscripten_math_log = Math.log;\n            _emscripten_math_log.sig = \"dd\";\n            var _emscripten_math_log1p = Math.log1p;\n            _emscripten_math_log1p.sig = \"dd\";\n            var _emscripten_math_log10 = Math.log10;\n            _emscripten_math_log10.sig = \"dd\";\n            var _emscripten_math_log2 = Math.log2;\n            _emscripten_math_log2.sig = \"dd\";\n            var _emscripten_math_round = Math.round;\n            _emscripten_math_round.sig = \"dd\";\n            var _emscripten_math_acos = Math.acos;\n            _emscripten_math_acos.sig = \"dd\";\n            var _emscripten_math_acosh = Math.acosh;\n            _emscripten_math_acosh.sig = \"dd\";\n            var _emscripten_math_asin = Math.asin;\n            _emscripten_math_asin.sig = \"dd\";\n            var _emscripten_math_asinh = Math.asinh;\n            _emscripten_math_asinh.sig = \"dd\";\n            var _emscripten_math_atan = Math.atan;\n            _emscripten_math_atan.sig = \"dd\";\n            var _emscripten_math_atanh = Math.atanh;\n            _emscripten_math_atanh.sig = \"dd\";\n            var _emscripten_math_atan2 = Math.atan2;\n            _emscripten_math_atan2.sig = \"ddd\";\n            var _emscripten_math_cos = Math.cos;\n            _emscripten_math_cos.sig = \"dd\";\n            var _emscripten_math_cosh = Math.cosh;\n            _emscripten_math_cosh.sig = \"dd\";\n\n            function _emscripten_math_hypot(count, varargs) {\n                varargs >>>= 0;\n                var args = [];\n                for (var i = 0; i < count; ++i) {\n                    args.push(HEAPF64[varargs + i * 8 >>> 3 >>> 0])\n                }\n                return Math.hypot(...args)\n            }\n            _emscripten_math_hypot.sig = \"dip\";\n            var _emscripten_math_sin = Math.sin;\n            _emscripten_math_sin.sig = \"dd\";\n            var _emscripten_math_sinh = Math.sinh;\n            _emscripten_math_sinh.sig = \"dd\";\n            var _emscripten_math_tan = Math.tan;\n            _emscripten_math_tan.sig = \"dd\";\n            var _emscripten_math_tanh = Math.tanh;\n            _emscripten_math_tanh.sig = \"dd\";\n\n            function intArrayToString(array) {\n                var ret = [];\n                for (var i = 0; i < array.length; i++) {\n                    var chr = array[i];\n                    if (chr > 255) {\n                        chr &= 255\n                    }\n                    ret.push(String.fromCharCode(chr))\n                }\n                return ret.join(\"\")\n            }\n            var AsciiToString = ptr => {\n                ptr >>>= 0;\n                var str = \"\";\n                while (1) {\n                    var ch = HEAPU8[ptr++ >>> 0];\n                    if (!ch) return str;\n                    str += String.fromCharCode(ch)\n                }\n            };\n            var JSEvents = {\n                removeAllEventListeners() {\n                    while (JSEvents.eventHandlers.length) {\n                        JSEvents._removeHandler(JSEvents.eventHandlers.length - 1)\n                    }\n                    JSEvents.deferredCalls = []\n                },\n                inEventHandler: 0,\n                deferredCalls: [],\n                deferCall(targetFunction, precedence, argsList) {\n                    function arraysHaveEqualContent(arrA, arrB) {\n                        if (arrA.length != arrB.length) return false;\n                        for (var i in arrA) {\n                            if (arrA[i] != arrB[i]) return false\n                        }\n                        return true\n                    }\n                    for (var call of JSEvents.deferredCalls) {\n                        if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {\n                            return\n                        }\n                    }\n                    JSEvents.deferredCalls.push({\n                        targetFunction,\n                        precedence,\n                        argsList\n                    });\n                    JSEvents.deferredCalls.sort((x, y) => x.precedence < y.precedence)\n                },\n                removeDeferredCalls(targetFunction) {\n                    JSEvents.deferredCalls = JSEvents.deferredCalls.filter(call => call.targetFunction != targetFunction)\n                },\n                canPerformEventHandlerRequests() {\n                    if (navigator.userActivation) {\n                        return navigator.userActivation.isActive\n                    }\n                    return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls\n                },\n                runDeferredCalls() {\n                    if (!JSEvents.canPerformEventHandlerRequests()) {\n                        return\n                    }\n                    var deferredCalls = JSEvents.deferredCalls;\n                    JSEvents.deferredCalls = [];\n                    for (var call of deferredCalls) {\n                        call.targetFunction(...call.argsList)\n                    }\n                },\n                eventHandlers: [],\n                removeAllHandlersOnTarget: (target, eventTypeString) => {\n                    for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n                        if (JSEvents.eventHandlers[i].target == target && (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) {\n                            JSEvents._removeHandler(i--)\n                        }\n                    }\n                },\n                _removeHandler(i) {\n                    var h = JSEvents.eventHandlers[i];\n                    h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);\n                    JSEvents.eventHandlers.splice(i, 1)\n                },\n                registerOrRemoveHandler(eventHandler) {\n                    if (!eventHandler.target) {\n                        return -4\n                    }\n                    if (eventHandler.callbackfunc) {\n                        eventHandler.eventListenerFunc = function(event) {\n                            ++JSEvents.inEventHandler;\n                            JSEvents.currentEventHandler = eventHandler;\n                            JSEvents.runDeferredCalls();\n                            eventHandler.handlerFunc(event);\n                            JSEvents.runDeferredCalls();\n                            --JSEvents.inEventHandler\n                        };\n                        eventHandler.target.addEventListener(eventHandler.eventTypeString, eventHandler.eventListenerFunc, eventHandler.useCapture);\n                        JSEvents.eventHandlers.push(eventHandler)\n                    } else {\n                        for (var i = 0; i < JSEvents.eventHandlers.length; ++i) {\n                            if (JSEvents.eventHandlers[i].target == eventHandler.target && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) {\n                                JSEvents._removeHandler(i--)\n                            }\n                        }\n                    }\n                    return 0\n                },\n                getNodeNameForTarget(target) {\n                    if (!target) return \"\";\n                    if (target == window) return \"#window\";\n                    if (target == screen) return \"#screen\";\n                    return target?.nodeName || \"\"\n                },\n                fullscreenEnabled() {\n                    return document.fullscreenEnabled || document.webkitFullscreenEnabled\n                }\n            };\n            var maybeCStringToJsString = cString => cString > 2 ? UTF8ToString(cString) : cString;\n            var specialHTMLTargets = [0, typeof document != \"undefined\" ? document : 0, typeof window != \"undefined\" ? window : 0];\n            var findEventTarget = target => {\n                target = maybeCStringToJsString(target);\n                var domElement = specialHTMLTargets[target] || (typeof document != \"undefined\" ? document.querySelector(target) : undefined);\n                return domElement\n            };\n            var registerKeyEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.keyEvent ||= _malloc(160);\n                var keyEventHandlerFunc = e => {\n                    var keyEventData = JSEvents.keyEvent;\n                    HEAPF64[keyEventData >>> 3 >>> 0] = e.timeStamp;\n                    var idx = keyEventData >>> 2;\n                    HEAP32[idx + 2 >>> 0] = e.location;\n                    HEAP8[keyEventData + 12 >>> 0] = e.ctrlKey;\n                    HEAP8[keyEventData + 13 >>> 0] = e.shiftKey;\n                    HEAP8[keyEventData + 14 >>> 0] = e.altKey;\n                    HEAP8[keyEventData + 15 >>> 0] = e.metaKey;\n                    HEAP8[keyEventData + 16 >>> 0] = e.repeat;\n                    HEAP32[idx + 5 >>> 0] = e.charCode;\n                    HEAP32[idx + 6 >>> 0] = e.keyCode;\n                    HEAP32[idx + 7 >>> 0] = e.which;\n                    stringToUTF8(e.key || \"\", keyEventData + 32, 32);\n                    stringToUTF8(e.code || \"\", keyEventData + 64, 32);\n                    stringToUTF8(e.char || \"\", keyEventData + 96, 32);\n                    stringToUTF8(e.locale || \"\", keyEventData + 128, 32);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, keyEventData, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: keyEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n            var findCanvasEventTarget = findEventTarget;\n\n            function _emscripten_set_keypress_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 1, \"keypress\", targetThread)\n            }\n            _emscripten_set_keypress_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_keydown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 2, \"keydown\", targetThread)\n            }\n            _emscripten_set_keydown_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_keyup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerKeyEventCallback(target, userData, useCapture, callbackfunc, 3, \"keyup\", targetThread)\n            }\n            _emscripten_set_keyup_callback_on_thread.sig = \"ippipp\";\n            var getBoundingClientRect = e => specialHTMLTargets.indexOf(e) < 0 ? e.getBoundingClientRect() : {\n                left: 0,\n                top: 0\n            };\n            var fillMouseEventData = (eventStruct, e, target) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.timeStamp;\n                var idx = eventStruct >>> 2;\n                HEAP32[idx + 2 >>> 0] = e.screenX;\n                HEAP32[idx + 3 >>> 0] = e.screenY;\n                HEAP32[idx + 4 >>> 0] = e.clientX;\n                HEAP32[idx + 5 >>> 0] = e.clientY;\n                HEAP8[eventStruct + 24 >>> 0] = e.ctrlKey;\n                HEAP8[eventStruct + 25 >>> 0] = e.shiftKey;\n                HEAP8[eventStruct + 26 >>> 0] = e.altKey;\n                HEAP8[eventStruct + 27 >>> 0] = e.metaKey;\n                HEAP16[idx * 2 + 14 >>> 0] = e.button;\n                HEAP16[idx * 2 + 15 >>> 0] = e.buttons;\n                HEAP32[idx + 8 >>> 0] = e[\"movementX\"];\n                HEAP32[idx + 9 >>> 0] = e[\"movementY\"];\n                var rect = getBoundingClientRect(target);\n                HEAP32[idx + 10 >>> 0] = e.clientX - (rect.left | 0);\n                HEAP32[idx + 11 >>> 0] = e.clientY - (rect.top | 0)\n            };\n            var registerMouseEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.mouseEvent ||= _malloc(64);\n                target = findEventTarget(target);\n                var mouseEventHandlerFunc = (e = event) => {\n                    fillMouseEventData(JSEvents.mouseEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.mouseEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: eventTypeString != \"mousemove\" && eventTypeString != \"mouseenter\" && eventTypeString != \"mouseleave\",\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: mouseEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_click_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 4, \"click\", targetThread)\n            }\n            _emscripten_set_click_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mousedown_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 5, \"mousedown\", targetThread)\n            }\n            _emscripten_set_mousedown_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseup_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 6, \"mouseup\", targetThread)\n            }\n            _emscripten_set_mouseup_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_dblclick_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 7, \"dblclick\", targetThread)\n            }\n            _emscripten_set_dblclick_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mousemove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 8, \"mousemove\", targetThread)\n            }\n            _emscripten_set_mousemove_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseenter_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 33, \"mouseenter\", targetThread)\n            }\n            _emscripten_set_mouseenter_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseleave_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 34, \"mouseleave\", targetThread)\n            }\n            _emscripten_set_mouseleave_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseover_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 35, \"mouseover\", targetThread)\n            }\n            _emscripten_set_mouseover_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_mouseout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerMouseEventCallback(target, userData, useCapture, callbackfunc, 36, \"mouseout\", targetThread)\n            }\n            _emscripten_set_mouseout_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_mouse_status(mouseState) {\n                mouseState >>>= 0;\n                if (!JSEvents.mouseEvent) return -7;\n                HEAP8.set(HEAP8.subarray(JSEvents.mouseEvent >>> 0, JSEvents.mouseEvent + 64 >>> 0), mouseState >>> 0);\n                return 0\n            }\n            _emscripten_get_mouse_status.sig = \"ip\";\n            var registerWheelEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.wheelEvent ||= _malloc(96);\n                var wheelHandlerFunc = (e = event) => {\n                    var wheelEvent = JSEvents.wheelEvent;\n                    fillMouseEventData(wheelEvent, e, target);\n                    HEAPF64[wheelEvent + 64 >>> 3 >>> 0] = e[\"deltaX\"];\n                    HEAPF64[wheelEvent + 72 >>> 3 >>> 0] = e[\"deltaY\"];\n                    HEAPF64[wheelEvent + 80 >>> 3 >>> 0] = e[\"deltaZ\"];\n                    HEAP32[wheelEvent + 88 >>> 2 >>> 0] = e[\"deltaMode\"];\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, wheelEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: true,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: wheelHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_wheel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (typeof target.onwheel != \"undefined\") {\n                    return registerWheelEventCallback(target, userData, useCapture, callbackfunc, 9, \"wheel\", targetThread)\n                } else {\n                    return -1\n                }\n            }\n            _emscripten_set_wheel_callback_on_thread.sig = \"ippipp\";\n            var registerUiEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.uiEvent ||= _malloc(36);\n                target = findEventTarget(target);\n                var uiEventHandlerFunc = (e = event) => {\n                    if (e.target != target) {\n                        return\n                    }\n                    var b = document.body;\n                    if (!b) {\n                        return\n                    }\n                    var uiEvent = JSEvents.uiEvent;\n                    HEAP32[uiEvent >>> 2 >>> 0] = 0;\n                    HEAP32[uiEvent + 4 >>> 2 >>> 0] = b.clientWidth;\n                    HEAP32[uiEvent + 8 >>> 2 >>> 0] = b.clientHeight;\n                    HEAP32[uiEvent + 12 >>> 2 >>> 0] = innerWidth;\n                    HEAP32[uiEvent + 16 >>> 2 >>> 0] = innerHeight;\n                    HEAP32[uiEvent + 20 >>> 2 >>> 0] = outerWidth;\n                    HEAP32[uiEvent + 24 >>> 2 >>> 0] = outerHeight;\n                    HEAP32[uiEvent + 28 >>> 2 >>> 0] = pageXOffset | 0;\n                    HEAP32[uiEvent + 32 >>> 2 >>> 0] = pageYOffset | 0;\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, uiEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: uiEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_resize_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerUiEventCallback(target, userData, useCapture, callbackfunc, 10, \"resize\", targetThread)\n            }\n            _emscripten_set_resize_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_scroll_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerUiEventCallback(target, userData, useCapture, callbackfunc, 11, \"scroll\", targetThread)\n            }\n            _emscripten_set_scroll_callback_on_thread.sig = \"ippipp\";\n            var registerFocusEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.focusEvent ||= _malloc(256);\n                var focusEventHandlerFunc = (e = event) => {\n                    var nodeName = JSEvents.getNodeNameForTarget(e.target);\n                    var id = e.target.id ? e.target.id : \"\";\n                    var focusEvent = JSEvents.focusEvent;\n                    stringToUTF8(nodeName, focusEvent + 0, 128);\n                    stringToUTF8(id, focusEvent + 128, 128);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, focusEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: focusEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_blur_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 12, \"blur\", targetThread)\n            }\n            _emscripten_set_blur_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focus_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 13, \"focus\", targetThread)\n            }\n            _emscripten_set_focus_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focusin_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 14, \"focusin\", targetThread)\n            }\n            _emscripten_set_focusin_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_focusout_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerFocusEventCallback(target, userData, useCapture, callbackfunc, 15, \"focusout\", targetThread)\n            }\n            _emscripten_set_focusout_callback_on_thread.sig = \"ippipp\";\n            var fillDeviceOrientationEventData = (eventStruct, e, target) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.alpha;\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = e.beta;\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = e.gamma;\n                HEAP8[eventStruct + 24 >>> 0] = e.absolute\n            };\n            var registerDeviceOrientationEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.deviceOrientationEvent ||= _malloc(32);\n                var deviceOrientationEventHandlerFunc = (e = event) => {\n                    fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceOrientationEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: deviceOrientationEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_deviceorientation_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerDeviceOrientationEventCallback(2, userData, useCapture, callbackfunc, 16, \"deviceorientation\", targetThread)\n            }\n            _emscripten_set_deviceorientation_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_deviceorientation_status(orientationState) {\n                orientationState >>>= 0;\n                if (!JSEvents.deviceOrientationEvent) return -7;\n                HEAP32.set(HEAP32.subarray(JSEvents.deviceOrientationEvent >>> 0, 32 >>> 0), orientationState >>> 0);\n                return 0\n            }\n            _emscripten_get_deviceorientation_status.sig = \"ip\";\n            var fillDeviceMotionEventData = (eventStruct, e, target) => {\n                var supportedFields = 0;\n                var a = e[\"acceleration\"];\n                supportedFields |= a && 1;\n                var ag = e[\"accelerationIncludingGravity\"];\n                supportedFields |= ag && 2;\n                var rr = e[\"rotationRate\"];\n                supportedFields |= rr && 4;\n                a = a || {};\n                ag = ag || {};\n                rr = rr || {};\n                HEAPF64[eventStruct >>> 3 >>> 0] = a[\"x\"];\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = a[\"y\"];\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = a[\"z\"];\n                HEAPF64[eventStruct + 24 >>> 3 >>> 0] = ag[\"x\"];\n                HEAPF64[eventStruct + 32 >>> 3 >>> 0] = ag[\"y\"];\n                HEAPF64[eventStruct + 40 >>> 3 >>> 0] = ag[\"z\"];\n                HEAPF64[eventStruct + 48 >>> 3 >>> 0] = rr[\"alpha\"];\n                HEAPF64[eventStruct + 56 >>> 3 >>> 0] = rr[\"beta\"];\n                HEAPF64[eventStruct + 64 >>> 3 >>> 0] = rr[\"gamma\"]\n            };\n            var registerDeviceMotionEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.deviceMotionEvent ||= _malloc(80);\n                var deviceMotionEventHandlerFunc = (e = event) => {\n                    fillDeviceMotionEventData(JSEvents.deviceMotionEvent, e, target);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, JSEvents.deviceMotionEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: deviceMotionEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_devicemotion_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerDeviceMotionEventCallback(2, userData, useCapture, callbackfunc, 17, \"devicemotion\", targetThread)\n            }\n            _emscripten_set_devicemotion_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_devicemotion_status(motionState) {\n                motionState >>>= 0;\n                if (!JSEvents.deviceMotionEvent) return -7;\n                HEAP32.set(HEAP32.subarray(JSEvents.deviceMotionEvent >>> 0, 80 >>> 0), motionState >>> 0);\n                return 0\n            }\n            _emscripten_get_devicemotion_status.sig = \"ip\";\n            var screenOrientation = () => {\n                if (!window.screen) return undefined;\n                return screen.orientation || screen[\"mozOrientation\"] || screen[\"webkitOrientation\"]\n            };\n            var fillOrientationChangeEventData = eventStruct => {\n                var orientationsType1 = [\"portrait-primary\", \"portrait-secondary\", \"landscape-primary\", \"landscape-secondary\"];\n                var orientationsType2 = [\"portrait\", \"portrait\", \"landscape\", \"landscape\"];\n                var orientationIndex = 0;\n                var orientationAngle = 0;\n                var screenOrientObj = screenOrientation();\n                if (typeof screenOrientObj === \"object\") {\n                    orientationIndex = orientationsType1.indexOf(screenOrientObj.type);\n                    if (orientationIndex < 0) {\n                        orientationIndex = orientationsType2.indexOf(screenOrientObj.type)\n                    }\n                    if (orientationIndex >= 0) {\n                        orientationIndex = 1 << orientationIndex\n                    }\n                    orientationAngle = screenOrientObj.angle\n                } else {\n                    orientationAngle = window.orientation\n                }\n                HEAP32[eventStruct >>> 2 >>> 0] = orientationIndex;\n                HEAP32[eventStruct + 4 >>> 2 >>> 0] = orientationAngle\n            };\n            var registerOrientationChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.orientationChangeEvent ||= _malloc(8);\n                var orientationChangeEventHandlerFunc = (e = event) => {\n                    var orientationChangeEvent = JSEvents.orientationChangeEvent;\n                    fillOrientationChangeEventData(orientationChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, orientationChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: orientationChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_orientationchange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!window.screen || !screen.orientation) return -1;\n                return registerOrientationChangeEventCallback(screen.orientation, userData, useCapture, callbackfunc, 18, \"change\", targetThread)\n            }\n            _emscripten_set_orientationchange_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_orientation_status(orientationChangeEvent) {\n                orientationChangeEvent >>>= 0;\n                if (!screenOrientation() && typeof orientation == \"undefined\") return -1;\n                fillOrientationChangeEventData(orientationChangeEvent);\n                return 0\n            }\n            _emscripten_get_orientation_status.sig = \"ip\";\n            var _emscripten_lock_orientation = allowedOrientations => {\n                var orientations = [];\n                if (allowedOrientations & 1) orientations.push(\"portrait-primary\");\n                if (allowedOrientations & 2) orientations.push(\"portrait-secondary\");\n                if (allowedOrientations & 4) orientations.push(\"landscape-primary\");\n                if (allowedOrientations & 8) orientations.push(\"landscape-secondary\");\n                var succeeded;\n                if (screen.lockOrientation) {\n                    succeeded = screen.lockOrientation(orientations)\n                } else if (screen.mozLockOrientation) {\n                    succeeded = screen.mozLockOrientation(orientations)\n                } else if (screen.webkitLockOrientation) {\n                    succeeded = screen.webkitLockOrientation(orientations)\n                } else {\n                    return -1\n                }\n                if (succeeded) {\n                    return 0\n                }\n                return -6\n            };\n            _emscripten_lock_orientation.sig = \"ii\";\n            var _emscripten_unlock_orientation = () => {\n                if (screen.unlockOrientation) {\n                    screen.unlockOrientation()\n                } else if (screen.mozUnlockOrientation) {\n                    screen.mozUnlockOrientation()\n                } else if (screen.webkitUnlockOrientation) {\n                    screen.webkitUnlockOrientation()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_unlock_orientation.sig = \"i\";\n            var fillFullscreenChangeEventData = eventStruct => {\n                var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n                var isFullscreen = !!fullscreenElement;\n                HEAP8[eventStruct >>> 0] = isFullscreen;\n                HEAP8[eventStruct + 1 >>> 0] = JSEvents.fullscreenEnabled();\n                var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement;\n                var nodeName = JSEvents.getNodeNameForTarget(reportedElement);\n                var id = reportedElement?.id || \"\";\n                stringToUTF8(nodeName, eventStruct + 2, 128);\n                stringToUTF8(id, eventStruct + 130, 128);\n                HEAP32[eventStruct + 260 >>> 2 >>> 0] = reportedElement ? reportedElement.clientWidth : 0;\n                HEAP32[eventStruct + 264 >>> 2 >>> 0] = reportedElement ? reportedElement.clientHeight : 0;\n                HEAP32[eventStruct + 268 >>> 2 >>> 0] = screen.width;\n                HEAP32[eventStruct + 272 >>> 2 >>> 0] = screen.height;\n                if (isFullscreen) {\n                    JSEvents.previousFullscreenElement = fullscreenElement\n                }\n            };\n            var registerFullscreenChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.fullscreenChangeEvent ||= _malloc(276);\n                var fullscreenChangeEventhandlerFunc = (e = event) => {\n                    var fullscreenChangeEvent = JSEvents.fullscreenChangeEvent;\n                    fillFullscreenChangeEventData(fullscreenChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, fullscreenChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: fullscreenChangeEventhandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_fullscreenchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, \"webkitfullscreenchange\", targetThread);\n                return registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, \"fullscreenchange\", targetThread)\n            }\n            _emscripten_set_fullscreenchange_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_fullscreen_status(fullscreenStatus) {\n                fullscreenStatus >>>= 0;\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                fillFullscreenChangeEventData(fullscreenStatus);\n                return 0\n            }\n            _emscripten_get_fullscreen_status.sig = \"ip\";\n\n            function _emscripten_get_canvas_element_size(target, width, height) {\n                target >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) return -4;\n                HEAP32[width >>> 2 >>> 0] = canvas.width;\n                HEAP32[height >>> 2 >>> 0] = canvas.height\n            }\n            _emscripten_get_canvas_element_size.sig = \"ippp\";\n            var getCanvasElementSize = target => {\n                var sp = stackSave();\n                var w = stackAlloc(8);\n                var h = w + 4;\n                var targetInt = stringToUTF8OnStack(target.id);\n                var ret = _emscripten_get_canvas_element_size(targetInt, w, h);\n                var size = [HEAP32[w >>> 2 >>> 0], HEAP32[h >>> 2 >>> 0]];\n                stackRestore(sp);\n                return size\n            };\n\n            function _emscripten_set_canvas_element_size(target, width, height) {\n                target >>>= 0;\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) return -4;\n                canvas.width = width;\n                canvas.height = height;\n                return 0\n            }\n            _emscripten_set_canvas_element_size.sig = \"ipii\";\n            var setCanvasElementSize = (target, width, height) => {\n                if (!target.controlTransferredOffscreen) {\n                    target.width = width;\n                    target.height = height\n                } else {\n                    var sp = stackSave();\n                    var targetInt = stringToUTF8OnStack(target.id);\n                    _emscripten_set_canvas_element_size(targetInt, width, height);\n                    stackRestore(sp)\n                }\n            };\n            var registerRestoreOldStyle = canvas => {\n                var canvasSize = getCanvasElementSize(canvas);\n                var oldWidth = canvasSize[0];\n                var oldHeight = canvasSize[1];\n                var oldCssWidth = canvas.style.width;\n                var oldCssHeight = canvas.style.height;\n                var oldBackgroundColor = canvas.style.backgroundColor;\n                var oldDocumentBackgroundColor = document.body.style.backgroundColor;\n                var oldPaddingLeft = canvas.style.paddingLeft;\n                var oldPaddingRight = canvas.style.paddingRight;\n                var oldPaddingTop = canvas.style.paddingTop;\n                var oldPaddingBottom = canvas.style.paddingBottom;\n                var oldMarginLeft = canvas.style.marginLeft;\n                var oldMarginRight = canvas.style.marginRight;\n                var oldMarginTop = canvas.style.marginTop;\n                var oldMarginBottom = canvas.style.marginBottom;\n                var oldDocumentBodyMargin = document.body.style.margin;\n                var oldDocumentOverflow = document.documentElement.style.overflow;\n                var oldDocumentScroll = document.body.scroll;\n                var oldImageRendering = canvas.style.imageRendering;\n\n                function restoreOldStyle() {\n                    var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;\n                    if (!fullscreenElement) {\n                        document.removeEventListener(\"fullscreenchange\", restoreOldStyle);\n                        document.removeEventListener(\"webkitfullscreenchange\", restoreOldStyle);\n                        setCanvasElementSize(canvas, oldWidth, oldHeight);\n                        canvas.style.width = oldCssWidth;\n                        canvas.style.height = oldCssHeight;\n                        canvas.style.backgroundColor = oldBackgroundColor;\n                        if (!oldDocumentBackgroundColor) document.body.style.backgroundColor = \"white\";\n                        document.body.style.backgroundColor = oldDocumentBackgroundColor;\n                        canvas.style.paddingLeft = oldPaddingLeft;\n                        canvas.style.paddingRight = oldPaddingRight;\n                        canvas.style.paddingTop = oldPaddingTop;\n                        canvas.style.paddingBottom = oldPaddingBottom;\n                        canvas.style.marginLeft = oldMarginLeft;\n                        canvas.style.marginRight = oldMarginRight;\n                        canvas.style.marginTop = oldMarginTop;\n                        canvas.style.marginBottom = oldMarginBottom;\n                        document.body.style.margin = oldDocumentBodyMargin;\n                        document.documentElement.style.overflow = oldDocumentOverflow;\n                        document.body.scroll = oldDocumentScroll;\n                        canvas.style.imageRendering = oldImageRendering;\n                        if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, oldWidth, oldHeight);\n                        if (currentFullscreenStrategy.canvasResizedCallback) {\n                            getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData)\n                        }\n                    }\n                }\n                document.addEventListener(\"fullscreenchange\", restoreOldStyle);\n                document.addEventListener(\"webkitfullscreenchange\", restoreOldStyle);\n                return restoreOldStyle\n            };\n            var setLetterbox = (element, topBottom, leftRight) => {\n                element.style.paddingLeft = element.style.paddingRight = leftRight + \"px\";\n                element.style.paddingTop = element.style.paddingBottom = topBottom + \"px\"\n            };\n            var JSEvents_resizeCanvasForFullscreen = (target, strategy) => {\n                var restoreOldStyle = registerRestoreOldStyle(target);\n                var cssWidth = strategy.softFullscreen ? innerWidth : screen.width;\n                var cssHeight = strategy.softFullscreen ? innerHeight : screen.height;\n                var rect = getBoundingClientRect(target);\n                var windowedCssWidth = rect.width;\n                var windowedCssHeight = rect.height;\n                var canvasSize = getCanvasElementSize(target);\n                var windowedRttWidth = canvasSize[0];\n                var windowedRttHeight = canvasSize[1];\n                if (strategy.scaleMode == 3) {\n                    setLetterbox(target, (cssHeight - windowedCssHeight) / 2, (cssWidth - windowedCssWidth) / 2);\n                    cssWidth = windowedCssWidth;\n                    cssHeight = windowedCssHeight\n                } else if (strategy.scaleMode == 2) {\n                    if (cssWidth * windowedRttHeight < windowedRttWidth * cssHeight) {\n                        var desiredCssHeight = windowedRttHeight * cssWidth / windowedRttWidth;\n                        setLetterbox(target, (cssHeight - desiredCssHeight) / 2, 0);\n                        cssHeight = desiredCssHeight\n                    } else {\n                        var desiredCssWidth = windowedRttWidth * cssHeight / windowedRttHeight;\n                        setLetterbox(target, 0, (cssWidth - desiredCssWidth) / 2);\n                        cssWidth = desiredCssWidth\n                    }\n                }\n                target.style.backgroundColor ||= \"black\";\n                document.body.style.backgroundColor ||= \"black\";\n                target.style.width = cssWidth + \"px\";\n                target.style.height = cssHeight + \"px\";\n                if (strategy.filteringMode == 1) {\n                    target.style.imageRendering = \"optimizeSpeed\";\n                    target.style.imageRendering = \"-moz-crisp-edges\";\n                    target.style.imageRendering = \"-o-crisp-edges\";\n                    target.style.imageRendering = \"-webkit-optimize-contrast\";\n                    target.style.imageRendering = \"optimize-contrast\";\n                    target.style.imageRendering = \"crisp-edges\";\n                    target.style.imageRendering = \"pixelated\"\n                }\n                var dpiScale = strategy.canvasResolutionScaleMode == 2 ? devicePixelRatio : 1;\n                if (strategy.canvasResolutionScaleMode != 0) {\n                    var newWidth = cssWidth * dpiScale | 0;\n                    var newHeight = cssHeight * dpiScale | 0;\n                    setCanvasElementSize(target, newWidth, newHeight);\n                    if (target.GLctxObject) target.GLctxObject.GLctx.viewport(0, 0, newWidth, newHeight)\n                }\n                return restoreOldStyle\n            };\n            var JSEvents_requestFullscreen = (target, strategy) => {\n                if (strategy.scaleMode != 0 || strategy.canvasResolutionScaleMode != 0) {\n                    JSEvents_resizeCanvasForFullscreen(target, strategy)\n                }\n                if (target.requestFullscreen) {\n                    target.requestFullscreen()\n                } else if (target.webkitRequestFullscreen) {\n                    target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)\n                } else {\n                    return JSEvents.fullscreenEnabled() ? -3 : -1\n                }\n                currentFullscreenStrategy = strategy;\n                if (strategy.canvasResizedCallback) {\n                    getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                }\n                return 0\n            };\n            var hideEverythingExceptGivenElement = onlyVisibleElement => {\n                var child = onlyVisibleElement;\n                var parent = child.parentNode;\n                var hiddenElements = [];\n                while (child != document.body) {\n                    var children = parent.children;\n                    for (var i = 0; i < children.length; ++i) {\n                        if (children[i] != child) {\n                            hiddenElements.push({\n                                node: children[i],\n                                displayState: children[i].style.display\n                            });\n                            children[i].style.display = \"none\"\n                        }\n                    }\n                    child = parent;\n                    parent = parent.parentNode\n                }\n                return hiddenElements\n            };\n            var restoreHiddenElements = hiddenElements => {\n                for (var elem of hiddenElements) {\n                    elem.node.style.display = elem.displayState\n                }\n            };\n            var currentFullscreenStrategy = {};\n            var restoreOldWindowedStyle = null;\n            var softFullscreenResizeWebGLRenderTarget = () => {\n                var dpr = devicePixelRatio;\n                var inHiDPIFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode == 2;\n                var inAspectRatioFixedFullscreenMode = currentFullscreenStrategy.scaleMode == 2;\n                var inPixelPerfectFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode != 0;\n                var inCenteredWithoutScalingFullscreenMode = currentFullscreenStrategy.scaleMode == 3;\n                var screenWidth = inHiDPIFullscreenMode ? Math.round(innerWidth * dpr) : innerWidth;\n                var screenHeight = inHiDPIFullscreenMode ? Math.round(innerHeight * dpr) : innerHeight;\n                var w = screenWidth;\n                var h = screenHeight;\n                var canvas = currentFullscreenStrategy.target;\n                var canvasSize = getCanvasElementSize(canvas);\n                var x = canvasSize[0];\n                var y = canvasSize[1];\n                var topMargin;\n                if (inAspectRatioFixedFullscreenMode) {\n                    if (w * y < x * h) h = w * y / x | 0;\n                    else if (w * y > x * h) w = h * x / y | 0;\n                    topMargin = (screenHeight - h) / 2 | 0\n                }\n                if (inPixelPerfectFullscreenMode) {\n                    setCanvasElementSize(canvas, w, h);\n                    if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, w, h)\n                }\n                if (inHiDPIFullscreenMode) {\n                    topMargin /= dpr;\n                    w /= dpr;\n                    h /= dpr;\n                    w = Math.round(w * 1e4) / 1e4;\n                    h = Math.round(h * 1e4) / 1e4;\n                    topMargin = Math.round(topMargin * 1e4) / 1e4\n                }\n                if (inCenteredWithoutScalingFullscreenMode) {\n                    var t = (innerHeight - jstoi_q(canvas.style.height)) / 2;\n                    var b = (innerWidth - jstoi_q(canvas.style.width)) / 2;\n                    setLetterbox(canvas, t, b)\n                } else {\n                    canvas.style.width = w + \"px\";\n                    canvas.style.height = h + \"px\";\n                    var b = (innerWidth - w) / 2;\n                    setLetterbox(canvas, topMargin, b)\n                }\n                if (!inCenteredWithoutScalingFullscreenMode && currentFullscreenStrategy.canvasResizedCallback) {\n                    getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37, 0, currentFullscreenStrategy.canvasResizedCallbackUserData)\n                }\n            };\n            var doRequestFullscreen = (target, strategy) => {\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (!target.requestFullscreen && !target.webkitRequestFullscreen) {\n                    return -3\n                }\n                if (!JSEvents.canPerformEventHandlerRequests()) {\n                    if (strategy.deferUntilInEventHandler) {\n                        JSEvents.deferCall(JSEvents_requestFullscreen, 1, [target, strategy]);\n                        return 1\n                    }\n                    return -2\n                }\n                return JSEvents_requestFullscreen(target, strategy)\n            };\n\n            function _emscripten_request_fullscreen(target, deferUntilInEventHandler) {\n                target >>>= 0;\n                var strategy = {\n                    scaleMode: 0,\n                    canvasResolutionScaleMode: 0,\n                    filteringMode: 0,\n                    deferUntilInEventHandler,\n                    canvasResizedCallbackTargetThread: 2\n                };\n                return doRequestFullscreen(target, strategy)\n            }\n            _emscripten_request_fullscreen.sig = \"ipi\";\n\n            function _emscripten_request_fullscreen_strategy(target, deferUntilInEventHandler, fullscreenStrategy) {\n                target >>>= 0;\n                fullscreenStrategy >>>= 0;\n                var strategy = {\n                    scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0],\n                    canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0],\n                    filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0],\n                    deferUntilInEventHandler,\n                    canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0],\n                    canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0]\n                };\n                return doRequestFullscreen(target, strategy)\n            }\n            _emscripten_request_fullscreen_strategy.sig = \"ipip\";\n\n            function _emscripten_enter_soft_fullscreen(target, fullscreenStrategy) {\n                target >>>= 0;\n                fullscreenStrategy >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                var strategy = {\n                    scaleMode: HEAP32[fullscreenStrategy >>> 2 >>> 0],\n                    canvasResolutionScaleMode: HEAP32[fullscreenStrategy + 4 >>> 2 >>> 0],\n                    filteringMode: HEAP32[fullscreenStrategy + 8 >>> 2 >>> 0],\n                    canvasResizedCallback: HEAP32[fullscreenStrategy + 12 >>> 2 >>> 0],\n                    canvasResizedCallbackUserData: HEAP32[fullscreenStrategy + 16 >>> 2 >>> 0],\n                    target,\n                    softFullscreen: true\n                };\n                var restoreOldStyle = JSEvents_resizeCanvasForFullscreen(target, strategy);\n                document.documentElement.style.overflow = \"hidden\";\n                document.body.scroll = \"no\";\n                document.body.style.margin = \"0px\";\n                var hiddenElements = hideEverythingExceptGivenElement(target);\n\n                function restoreWindowedState() {\n                    restoreOldStyle();\n                    restoreHiddenElements(hiddenElements);\n                    removeEventListener(\"resize\", softFullscreenResizeWebGLRenderTarget);\n                    if (strategy.canvasResizedCallback) {\n                        getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                    }\n                    currentFullscreenStrategy = 0\n                }\n                restoreOldWindowedStyle = restoreWindowedState;\n                currentFullscreenStrategy = strategy;\n                addEventListener(\"resize\", softFullscreenResizeWebGLRenderTarget);\n                if (strategy.canvasResizedCallback) {\n                    getWasmTableEntry(strategy.canvasResizedCallback)(37, 0, strategy.canvasResizedCallbackUserData)\n                }\n                return 0\n            }\n            _emscripten_enter_soft_fullscreen.sig = \"ipp\";\n            var _emscripten_exit_soft_fullscreen = () => {\n                restoreOldWindowedStyle?.();\n                restoreOldWindowedStyle = null;\n                return 0\n            };\n            _emscripten_exit_soft_fullscreen.sig = \"i\";\n            var _emscripten_exit_fullscreen = () => {\n                if (!JSEvents.fullscreenEnabled()) return -1;\n                JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);\n                var d = specialHTMLTargets[1];\n                if (d.exitFullscreen) {\n                    d.fullscreenElement && d.exitFullscreen()\n                } else if (d.webkitExitFullscreen) {\n                    d.webkitFullscreenElement && d.webkitExitFullscreen()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_exit_fullscreen.sig = \"i\";\n            var fillPointerlockChangeEventData = eventStruct => {\n                var pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement;\n                var isPointerlocked = !!pointerLockElement;\n                HEAP8[eventStruct >>> 0] = isPointerlocked;\n                var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement);\n                var id = pointerLockElement?.id || \"\";\n                stringToUTF8(nodeName, eventStruct + 1, 128);\n                stringToUTF8(id, eventStruct + 129, 128)\n            };\n            var registerPointerlockChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.pointerlockChangeEvent ||= _malloc(257);\n                var pointerlockChangeEventHandlerFunc = (e = event) => {\n                    var pointerlockChangeEvent = JSEvents.pointerlockChangeEvent;\n                    fillPointerlockChangeEventData(pointerlockChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, pointerlockChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: pointerlockChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_pointerlockchange_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!document || !document.body || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"mozpointerlockchange\", targetThread);\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"webkitpointerlockchange\", targetThread);\n                registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"mspointerlockchange\", targetThread);\n                return registerPointerlockChangeEventCallback(target, userData, useCapture, callbackfunc, 20, \"pointerlockchange\", targetThread)\n            }\n            _emscripten_set_pointerlockchange_callback_on_thread.sig = \"ippipp\";\n            var registerPointerlockErrorEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                var pointerlockErrorEventHandlerFunc = (e = event) => {\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: pointerlockErrorEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_pointerlockerror_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!document || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                target = findEventTarget(target);\n                if (!target) return -4;\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"mozpointerlockerror\", targetThread);\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"webkitpointerlockerror\", targetThread);\n                registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"mspointerlockerror\", targetThread);\n                return registerPointerlockErrorEventCallback(target, userData, useCapture, callbackfunc, 38, \"pointerlockerror\", targetThread)\n            }\n            _emscripten_set_pointerlockerror_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_get_pointerlock_status(pointerlockStatus) {\n                pointerlockStatus >>>= 0;\n                if (pointerlockStatus) fillPointerlockChangeEventData(pointerlockStatus);\n                if (!document.body || !document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock) {\n                    return -1\n                }\n                return 0\n            }\n            _emscripten_get_pointerlock_status.sig = \"ip\";\n            var requestPointerLock = target => {\n                if (target.requestPointerLock) {\n                    target.requestPointerLock()\n                } else {\n                    if (document.body.requestPointerLock) {\n                        return -3\n                    }\n                    return -1\n                }\n                return 0\n            };\n\n            function _emscripten_request_pointerlock(target, deferUntilInEventHandler) {\n                target >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                if (!target.requestPointerLock) {\n                    return -1\n                }\n                if (!JSEvents.canPerformEventHandlerRequests()) {\n                    if (deferUntilInEventHandler) {\n                        JSEvents.deferCall(requestPointerLock, 2, [target]);\n                        return 1\n                    }\n                    return -2\n                }\n                return requestPointerLock(target)\n            }\n            _emscripten_request_pointerlock.sig = \"ipi\";\n            var _emscripten_exit_pointerlock = () => {\n                JSEvents.removeDeferredCalls(requestPointerLock);\n                if (document.exitPointerLock) {\n                    document.exitPointerLock()\n                } else {\n                    return -1\n                }\n                return 0\n            };\n            _emscripten_exit_pointerlock.sig = \"i\";\n            var _emscripten_vibrate = msecs => {\n                if (!navigator.vibrate) return -1;\n                navigator.vibrate(msecs);\n                return 0\n            };\n            _emscripten_vibrate.sig = \"ii\";\n\n            function _emscripten_vibrate_pattern(msecsArray, numEntries) {\n                msecsArray >>>= 0;\n                if (!navigator.vibrate) return -1;\n                var vibrateList = [];\n                for (var i = 0; i < numEntries; ++i) {\n                    var msecs = HEAP32[msecsArray + i * 4 >>> 2 >>> 0];\n                    vibrateList.push(msecs)\n                }\n                navigator.vibrate(vibrateList);\n                return 0\n            }\n            _emscripten_vibrate_pattern.sig = \"ipi\";\n            var fillVisibilityChangeEventData = eventStruct => {\n                var visibilityStates = [\"hidden\", \"visible\", \"prerender\", \"unloaded\"];\n                var visibilityState = visibilityStates.indexOf(document.visibilityState);\n                HEAP8[eventStruct >>> 0] = document.hidden;\n                HEAP32[eventStruct + 4 >>> 2 >>> 0] = visibilityState\n            };\n            var registerVisibilityChangeEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.visibilityChangeEvent ||= _malloc(8);\n                var visibilityChangeEventHandlerFunc = (e = event) => {\n                    var visibilityChangeEvent = JSEvents.visibilityChangeEvent;\n                    fillVisibilityChangeEventData(visibilityChangeEvent);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, visibilityChangeEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: visibilityChangeEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_visibilitychange_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!specialHTMLTargets[1]) {\n                    return -4\n                }\n                return registerVisibilityChangeEventCallback(specialHTMLTargets[1], userData, useCapture, callbackfunc, 21, \"visibilitychange\", targetThread)\n            }\n            _emscripten_set_visibilitychange_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_get_visibility_status(visibilityStatus) {\n                visibilityStatus >>>= 0;\n                if (typeof document.visibilityState == \"undefined\" && typeof document.hidden == \"undefined\") {\n                    return -1\n                }\n                fillVisibilityChangeEventData(visibilityStatus);\n                return 0\n            }\n            _emscripten_get_visibility_status.sig = \"ip\";\n            var registerTouchEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.touchEvent ||= _malloc(1552);\n                target = findEventTarget(target);\n                var touchEventHandlerFunc = e => {\n                    var t, touches = {},\n                        et = e.touches;\n                    for (let t of et) {\n                        t.isChanged = t.onTarget = 0;\n                        touches[t.identifier] = t\n                    }\n                    for (let t of e.changedTouches) {\n                        t.isChanged = 1;\n                        touches[t.identifier] = t\n                    }\n                    for (let t of e.targetTouches) {\n                        touches[t.identifier].onTarget = 1\n                    }\n                    var touchEvent = JSEvents.touchEvent;\n                    HEAPF64[touchEvent >>> 3 >>> 0] = e.timeStamp;\n                    HEAP8[touchEvent + 12 >>> 0] = e.ctrlKey;\n                    HEAP8[touchEvent + 13 >>> 0] = e.shiftKey;\n                    HEAP8[touchEvent + 14 >>> 0] = e.altKey;\n                    HEAP8[touchEvent + 15 >>> 0] = e.metaKey;\n                    var idx = touchEvent + 16;\n                    var targetRect = getBoundingClientRect(target);\n                    var numTouches = 0;\n                    for (let t of Object.values(touches)) {\n                        var idx32 = idx >>> 2;\n                        HEAP32[idx32 + 0 >>> 0] = t.identifier;\n                        HEAP32[idx32 + 1 >>> 0] = t.screenX;\n                        HEAP32[idx32 + 2 >>> 0] = t.screenY;\n                        HEAP32[idx32 + 3 >>> 0] = t.clientX;\n                        HEAP32[idx32 + 4 >>> 0] = t.clientY;\n                        HEAP32[idx32 + 5 >>> 0] = t.pageX;\n                        HEAP32[idx32 + 6 >>> 0] = t.pageY;\n                        HEAP8[idx + 28 >>> 0] = t.isChanged;\n                        HEAP8[idx + 29 >>> 0] = t.onTarget;\n                        HEAP32[idx32 + 8 >>> 0] = t.clientX - (targetRect.left | 0);\n                        HEAP32[idx32 + 9 >>> 0] = t.clientY - (targetRect.top | 0);\n                        idx += 48;\n                        if (++numTouches > 31) {\n                            break\n                        }\n                    }\n                    HEAP32[touchEvent + 8 >>> 2 >>> 0] = numTouches;\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, touchEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target,\n                    allowsDeferredCalls: eventTypeString == \"touchstart\" || eventTypeString == \"touchend\",\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: touchEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_touchstart_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, \"touchstart\", targetThread)\n            }\n            _emscripten_set_touchstart_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchend_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, \"touchend\", targetThread)\n            }\n            _emscripten_set_touchend_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchmove_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, \"touchmove\", targetThread)\n            }\n            _emscripten_set_touchmove_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_touchcancel_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                return registerTouchEventCallback(target, userData, useCapture, callbackfunc, 25, \"touchcancel\", targetThread)\n            }\n            _emscripten_set_touchcancel_callback_on_thread.sig = \"ippipp\";\n            var fillGamepadEventData = (eventStruct, e) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.timestamp;\n                for (var i = 0; i < e.axes.length; ++i) {\n                    HEAPF64[eventStruct + i * 8 + 16 >>> 3 >>> 0] = e.axes[i]\n                }\n                for (var i = 0; i < e.buttons.length; ++i) {\n                    if (typeof e.buttons[i] == \"object\") {\n                        HEAPF64[eventStruct + i * 8 + 528 >>> 3 >>> 0] = e.buttons[i].value\n                    } else {\n                        HEAPF64[eventStruct + i * 8 + 528 >>> 3 >>> 0] = e.buttons[i]\n                    }\n                }\n                for (var i = 0; i < e.buttons.length; ++i) {\n                    if (typeof e.buttons[i] == \"object\") {\n                        HEAP8[eventStruct + i + 1040 >>> 0] = e.buttons[i].pressed\n                    } else {\n                        HEAP8[eventStruct + i + 1040 >>> 0] = e.buttons[i] == 1\n                    }\n                }\n                HEAP8[eventStruct + 1104 >>> 0] = e.connected;\n                HEAP32[eventStruct + 1108 >>> 2 >>> 0] = e.index;\n                HEAP32[eventStruct + 8 >>> 2 >>> 0] = e.axes.length;\n                HEAP32[eventStruct + 12 >>> 2 >>> 0] = e.buttons.length;\n                stringToUTF8(e.id, eventStruct + 1112, 64);\n                stringToUTF8(e.mapping, eventStruct + 1176, 64)\n            };\n            var registerGamepadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.gamepadEvent ||= _malloc(1240);\n                var gamepadEventHandlerFunc = (e = event) => {\n                    var gamepadEvent = JSEvents.gamepadEvent;\n                    fillGamepadEventData(gamepadEvent, e[\"gamepad\"]);\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, gamepadEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    allowsDeferredCalls: true,\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: gamepadEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n            var _emscripten_sample_gamepad_data = () => {\n                try {\n                    if (navigator.getGamepads) return (JSEvents.lastGamepadState = navigator.getGamepads()) ? 0 : -1\n                } catch (e) {\n                    navigator.getGamepads = null\n                }\n                return -1\n            };\n            _emscripten_sample_gamepad_data.sig = \"i\";\n\n            function _emscripten_set_gamepadconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (_emscripten_sample_gamepad_data()) return -1;\n                return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 26, \"gamepadconnected\", targetThread)\n            }\n            _emscripten_set_gamepadconnected_callback_on_thread.sig = \"ipipp\";\n\n            function _emscripten_set_gamepaddisconnected_callback_on_thread(userData, useCapture, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (_emscripten_sample_gamepad_data()) return -1;\n                return registerGamepadEventCallback(2, userData, useCapture, callbackfunc, 27, \"gamepaddisconnected\", targetThread)\n            }\n            _emscripten_set_gamepaddisconnected_callback_on_thread.sig = \"ipipp\";\n            var _emscripten_get_num_gamepads = () => JSEvents.lastGamepadState.length;\n            _emscripten_get_num_gamepads.sig = \"i\";\n\n            function _emscripten_get_gamepad_status(index, gamepadState) {\n                gamepadState >>>= 0;\n                if (index < 0 || index >= JSEvents.lastGamepadState.length) return -5;\n                if (!JSEvents.lastGamepadState[index]) return -7;\n                fillGamepadEventData(gamepadState, JSEvents.lastGamepadState[index]);\n                return 0\n            }\n            _emscripten_get_gamepad_status.sig = \"iip\";\n            var registerBeforeUnloadEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) => {\n                var beforeUnloadEventHandlerFunc = (e = event) => {\n                    var confirmationMessage = getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData);\n                    if (confirmationMessage) {\n                        confirmationMessage = UTF8ToString(confirmationMessage)\n                    }\n                    if (confirmationMessage) {\n                        e.preventDefault();\n                        e.returnValue = confirmationMessage;\n                        return confirmationMessage\n                    }\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: beforeUnloadEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_beforeunload_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (typeof onbeforeunload == \"undefined\") return -1;\n                if (targetThread !== 1) return -5;\n                return registerBeforeUnloadEventCallback(2, userData, true, callbackfunc, 28, \"beforeunload\")\n            }\n            _emscripten_set_beforeunload_callback_on_thread.sig = \"ippp\";\n            var fillBatteryEventData = (eventStruct, e) => {\n                HEAPF64[eventStruct >>> 3 >>> 0] = e.chargingTime;\n                HEAPF64[eventStruct + 8 >>> 3 >>> 0] = e.dischargingTime;\n                HEAPF64[eventStruct + 16 >>> 3 >>> 0] = e.level;\n                HEAP8[eventStruct + 24 >>> 0] = e.charging\n            };\n            var battery = () => navigator.battery || navigator.mozBattery || navigator.webkitBattery;\n            var registerBatteryEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                JSEvents.batteryEvent ||= _malloc(32);\n                var batteryEventHandlerFunc = (e = event) => {\n                    var batteryEvent = JSEvents.batteryEvent;\n                    fillBatteryEventData(batteryEvent, battery());\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, batteryEvent, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: batteryEventHandlerFunc,\n                    useCapture\n                };\n                return JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_batterychargingchange_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!battery()) return -1;\n                return registerBatteryEventCallback(battery(), userData, true, callbackfunc, 29, \"chargingchange\", targetThread)\n            }\n            _emscripten_set_batterychargingchange_callback_on_thread.sig = \"ippp\";\n\n            function _emscripten_set_batterylevelchange_callback_on_thread(userData, callbackfunc, targetThread) {\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                if (!battery()) return -1;\n                return registerBatteryEventCallback(battery(), userData, true, callbackfunc, 30, \"levelchange\", targetThread)\n            }\n            _emscripten_set_batterylevelchange_callback_on_thread.sig = \"ippp\";\n\n            function _emscripten_get_battery_status(batteryState) {\n                batteryState >>>= 0;\n                if (!battery()) return -1;\n                fillBatteryEventData(batteryState, battery());\n                return 0\n            }\n            _emscripten_get_battery_status.sig = \"ip\";\n\n            function _emscripten_set_element_css_size(target, width, height) {\n                target >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                target.style.width = width + \"px\";\n                target.style.height = height + \"px\";\n                return 0\n            }\n            _emscripten_set_element_css_size.sig = \"ipdd\";\n\n            function _emscripten_get_element_css_size(target, width, height) {\n                target >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                target = findEventTarget(target);\n                if (!target) return -4;\n                var rect = getBoundingClientRect(target);\n                HEAPF64[width >>> 3 >>> 0] = rect.width;\n                HEAPF64[height >>> 3 >>> 0] = rect.height;\n                return 0\n            }\n            _emscripten_get_element_css_size.sig = \"ippp\";\n            var _emscripten_html5_remove_all_event_listeners = () => JSEvents.removeAllEventListeners();\n            _emscripten_html5_remove_all_event_listeners.sig = \"v\";\n            var _emscripten_request_animation_frame = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return requestAnimationFrame(timeStamp => getWasmTableEntry(cb)(timeStamp, userData))\n            };\n            _emscripten_request_animation_frame.sig = \"ipp\";\n            var _emscripten_cancel_animation_frame = id => cancelAnimationFrame(id);\n            _emscripten_cancel_animation_frame.sig = \"vi\";\n\n            function _emscripten_request_animation_frame_loop(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick(timeStamp) {\n                    if (getWasmTableEntry(cb)(timeStamp, userData)) {\n                        requestAnimationFrame(tick)\n                    }\n                }\n                return requestAnimationFrame(tick)\n            }\n            _emscripten_request_animation_frame_loop.sig = \"vpp\";\n            var _emscripten_performance_now = () => performance.now();\n            _emscripten_performance_now.sig = \"d\";\n            var _emscripten_get_device_pixel_ratio = () => typeof devicePixelRatio == \"number\" && devicePixelRatio || 1;\n            _emscripten_get_device_pixel_ratio.sig = \"d\";\n\n            function _emscripten_get_callstack(flags, str, maxbytes) {\n                str >>>= 0;\n                var callstack = getCallstack(flags);\n                if (!str || maxbytes <= 0) {\n                    return lengthBytesUTF8(callstack) + 1\n                }\n                var bytesWrittenExcludingNull = stringToUTF8(callstack, str, maxbytes);\n                return bytesWrittenExcludingNull + 1\n            }\n            _emscripten_get_callstack.sig = \"iipi\";\n            var convertFrameToPC = frame => {\n                abort(\"Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER\");\n                return 0\n            };\n\n            function _emscripten_return_address(level) {\n                var callstack = jsStackTrace().split(\"\\n\");\n                if (callstack[0] == \"Error\") {\n                    callstack.shift()\n                }\n                var caller = callstack[level + 3];\n                return convertFrameToPC(caller)\n            }\n            _emscripten_return_address.sig = \"pi\";\n            var UNWIND_CACHE = {};\n            var saveInUnwindCache = callstack => {\n                callstack.forEach(frame => {\n                    var pc = convertFrameToPC(frame);\n                    if (pc) {\n                        UNWIND_CACHE[pc] = frame\n                    }\n                })\n            };\n\n            function _emscripten_stack_snapshot() {\n                var callstack = jsStackTrace().split(\"\\n\");\n                if (callstack[0] == \"Error\") {\n                    callstack.shift()\n                }\n                saveInUnwindCache(callstack);\n                UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]);\n                UNWIND_CACHE.last_stack = callstack;\n                return UNWIND_CACHE.last_addr\n            }\n            _emscripten_stack_snapshot.sig = \"p\";\n\n            function _emscripten_stack_unwind_buffer(addr, buffer, count) {\n                addr >>>= 0;\n                buffer >>>= 0;\n                var stack;\n                if (UNWIND_CACHE.last_addr == addr) {\n                    stack = UNWIND_CACHE.last_stack\n                } else {\n                    stack = jsStackTrace().split(\"\\n\");\n                    if (stack[0] == \"Error\") {\n                        stack.shift()\n                    }\n                    saveInUnwindCache(stack)\n                }\n                var offset = 3;\n                while (stack[offset] && convertFrameToPC(stack[offset]) != addr) {\n                    ++offset\n                }\n                for (var i = 0; i < count && stack[i + offset]; ++i) {\n                    HEAP32[buffer + i * 4 >>> 2 >>> 0] = convertFrameToPC(stack[i + offset])\n                }\n                return i\n            }\n            _emscripten_stack_unwind_buffer.sig = \"ippi\";\n\n            function _emscripten_pc_get_function(pc) {\n                pc >>>= 0;\n                abort(\"Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER\");\n                return 0\n            }\n            _emscripten_pc_get_function.sig = \"pp\";\n            var convertPCtoSourceLocation = pc => {\n                if (UNWIND_CACHE.last_get_source_pc == pc) return UNWIND_CACHE.last_source;\n                var match;\n                var source;\n                if (!source) {\n                    var frame = UNWIND_CACHE[pc];\n                    if (!frame) return null;\n                    if (match = /\\((.*):(\\d+):(\\d+)\\)$/.exec(frame)) {\n                        source = {\n                            file: match[1],\n                            line: match[2],\n                            column: match[3]\n                        }\n                    } else if (match = /@(.*):(\\d+):(\\d+)/.exec(frame)) {\n                        source = {\n                            file: match[1],\n                            line: match[2],\n                            column: match[3]\n                        }\n                    }\n                }\n                UNWIND_CACHE.last_get_source_pc = pc;\n                UNWIND_CACHE.last_source = source;\n                return source\n            };\n\n            function _emscripten_pc_get_file(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                if (!result) return 0;\n                if (_emscripten_pc_get_file.ret) _free(_emscripten_pc_get_file.ret);\n                _emscripten_pc_get_file.ret = stringToNewUTF8(result.file);\n                return _emscripten_pc_get_file.ret\n            }\n            _emscripten_pc_get_file.sig = \"pp\";\n\n            function _emscripten_pc_get_line(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                return result ? result.line : 0\n            }\n            _emscripten_pc_get_line.sig = \"ip\";\n\n            function _emscripten_pc_get_column(pc) {\n                pc >>>= 0;\n                var result = convertPCtoSourceLocation(pc);\n                return result ? result.column || 0 : 0\n            }\n            _emscripten_pc_get_column.sig = \"ip\";\n            var _sched_yield = () => 0;\n            Module[\"_sched_yield\"] = _sched_yield;\n            _sched_yield.sig = \"i\";\n            var checkWasiClock = clock_id => clock_id == 0 || clock_id == 1 || clock_id == 2 || clock_id == 3;\n\n            function _clock_time_get(clk_id, ignored_precision_low, ignored_precision_high, ptime) {\n                var ignored_precision = convertI32PairToI53Checked(ignored_precision_low, ignored_precision_high);\n                ptime >>>= 0;\n                if (!checkWasiClock(clk_id)) {\n                    return 28\n                }\n                var now;\n                if (clk_id === 0) {\n                    now = Date.now()\n                } else if (nowIsMonotonic) {\n                    now = _emscripten_get_now()\n                } else {\n                    return 52\n                }\n                var nsec = Math.round(now * 1e3 * 1e3);\n                HEAP32[ptime >>> 2 >>> 0] = nsec >>> 0;\n                HEAP32[ptime + 4 >>> 2 >>> 0] = nsec / Math.pow(2, 32) >>> 0;\n                return 0\n            }\n            _clock_time_get.sig = \"iiiip\";\n\n            function _clock_res_get(clk_id, pres) {\n                pres >>>= 0;\n                if (!checkWasiClock(clk_id)) {\n                    return 28\n                }\n                var nsec;\n                if (clk_id === 0) {\n                    nsec = 1e3 * 1e3\n                } else if (nowIsMonotonic) {\n                    nsec = _emscripten_get_now_res()\n                } else {\n                    return 52\n                }\n                HEAP32[pres >>> 2 >>> 0] = nsec >>> 0;\n                HEAP32[pres + 4 >>> 2 >>> 0] = nsec / Math.pow(2, 32) >>> 0;\n                return 0\n            }\n            _clock_res_get.sig = \"iip\";\n            var wasiRightsToMuslOFlags = rights => {\n                if (rights & 2 && rights & 64) {\n                    return 2\n                }\n                if (rights & 2) {\n                    return 0\n                }\n                if (rights & 64) {\n                    return 1\n                }\n                throw new FS.ErrnoError(28)\n            };\n            var wasiOFlagsToMuslOFlags = oflags => {\n                var musl_oflags = 0;\n                if (oflags & 1) {\n                    musl_oflags |= 64\n                }\n                if (oflags & 8) {\n                    musl_oflags |= 512\n                }\n                if (oflags & 2) {\n                    musl_oflags |= 65536\n                }\n                if (oflags & 4) {\n                    musl_oflags |= 128\n                }\n                return musl_oflags\n            };\n            var _emscripten_unwind_to_js_event_loop = () => {\n                throw \"unwind\"\n            };\n            _emscripten_unwind_to_js_event_loop.sig = \"v\";\n            var safeSetTimeout = (func, timeout) => setTimeout(() => {\n                callUserCallback(func)\n            }, timeout);\n            var setImmediateWrapped = func => {\n                setImmediateWrapped.mapping ||= [];\n                var id = setImmediateWrapped.mapping.length;\n                setImmediateWrapped.mapping[id] = setImmediate(() => {\n                    setImmediateWrapped.mapping[id] = undefined;\n                    func()\n                });\n                return id\n            };\n            var clearImmediateWrapped = id => {\n                clearImmediate(setImmediateWrapped.mapping[id]);\n                setImmediateWrapped.mapping[id] = undefined\n            };\n            var polyfillSetImmediate = () => {};\n            var _emscripten_set_immediate = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return emSetImmediate(() => {\n                    callUserCallback(() => getWasmTableEntry(cb)(userData))\n                })\n            };\n            _emscripten_set_immediate.sig = \"ipp\";\n            var _emscripten_clear_immediate = id => {\n                emClearImmediate(id)\n            };\n            _emscripten_clear_immediate.sig = \"vi\";\n            var _emscripten_set_immediate_loop = function(cb, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick() {\n                    callUserCallback(() => {\n                        if (getWasmTableEntry(cb)(userData)) {\n                            emSetImmediate(tick)\n                        } else {}\n                    })\n                }\n                emSetImmediate(tick)\n            };\n            _emscripten_set_immediate_loop.sig = \"vpp\";\n            var _emscripten_set_timeout = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(cb)(userData), msecs)\n            };\n            _emscripten_set_timeout.sig = \"ipdp\";\n            var _emscripten_clear_timeout = clearTimeout;\n            _emscripten_clear_timeout.sig = \"vi\";\n            var _emscripten_set_timeout_loop = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n\n                function tick() {\n                    var t = _emscripten_get_now();\n                    var n = t + msecs;\n                    callUserCallback(() => {\n                        if (getWasmTableEntry(cb)(t, userData)) {\n                            setTimeout(tick, n - _emscripten_get_now())\n                        }\n                    })\n                }\n                return setTimeout(tick, 0)\n            };\n            _emscripten_set_timeout_loop.sig = \"vpdp\";\n            var _emscripten_set_interval = function(cb, msecs, userData) {\n                cb >>>= 0;\n                userData >>>= 0;\n                return setInterval(() => {\n                    callUserCallback(() => getWasmTableEntry(cb)(userData))\n                }, msecs)\n            };\n            _emscripten_set_interval.sig = \"ipdp\";\n            var _emscripten_clear_interval = id => {\n                clearInterval(id)\n            };\n            _emscripten_clear_interval.sig = \"vi\";\n            var registerPostMainLoop = f => {\n                typeof MainLoop != \"undefined\" && MainLoop.postMainLoop.push(f)\n            };\n            var registerPreMainLoop = f => {\n                typeof MainLoop != \"undefined\" && MainLoop.preMainLoop.push(f)\n            };\n\n            function _emscripten_get_main_loop_timing(mode, value) {\n                mode >>>= 0;\n                value >>>= 0;\n                if (mode) HEAP32[mode >>> 2 >>> 0] = MainLoop.timingMode;\n                if (value) HEAP32[value >>> 2 >>> 0] = MainLoop.timingValue\n            }\n            _emscripten_get_main_loop_timing.sig = \"vpp\";\n\n            function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop) {\n                func >>>= 0;\n                var iterFunc = getWasmTableEntry(func);\n                setMainLoop(iterFunc, fps, simulateInfiniteLoop)\n            }\n            _emscripten_set_main_loop.sig = \"vpii\";\n            var _emscripten_set_main_loop_arg = function(func, arg, fps, simulateInfiniteLoop) {\n                func >>>= 0;\n                arg >>>= 0;\n                var iterFunc = () => getWasmTableEntry(func)(arg);\n                setMainLoop(iterFunc, fps, simulateInfiniteLoop, arg)\n            };\n            _emscripten_set_main_loop_arg.sig = \"vppii\";\n            var _emscripten_cancel_main_loop = () => {\n                MainLoop.pause();\n                MainLoop.func = null\n            };\n            _emscripten_cancel_main_loop.sig = \"v\";\n            var _emscripten_pause_main_loop = () => {\n                MainLoop.pause()\n            };\n            _emscripten_pause_main_loop.sig = \"v\";\n            var _emscripten_resume_main_loop = () => {\n                MainLoop.resume()\n            };\n            _emscripten_resume_main_loop.sig = \"v\";\n            var __emscripten_push_main_loop_blocker = function(func, arg, name) {\n                func >>>= 0;\n                arg >>>= 0;\n                name >>>= 0;\n                MainLoop.queue.push({\n                    func: () => {\n                        getWasmTableEntry(func)(arg)\n                    },\n                    name: UTF8ToString(name),\n                    counted: true\n                });\n                MainLoop.updateStatus()\n            };\n            __emscripten_push_main_loop_blocker.sig = \"vppp\";\n            var __emscripten_push_uncounted_main_loop_blocker = function(func, arg, name) {\n                func >>>= 0;\n                arg >>>= 0;\n                name >>>= 0;\n                MainLoop.queue.push({\n                    func: () => {\n                        getWasmTableEntry(func)(arg)\n                    },\n                    name: UTF8ToString(name),\n                    counted: false\n                });\n                MainLoop.updateStatus()\n            };\n            __emscripten_push_uncounted_main_loop_blocker.sig = \"vppp\";\n            var _emscripten_set_main_loop_expected_blockers = num => {\n                MainLoop.expectedBlockers = num;\n                MainLoop.remainingBlockers = num;\n                MainLoop.updateStatus()\n            };\n            _emscripten_set_main_loop_expected_blockers.sig = \"vi\";\n            var idsToPromises = (idBuf, size) => {\n                var promises = [];\n                for (var i = 0; i < size; i++) {\n                    var id = HEAP32[idBuf + i * 4 >>> 2 >>> 0];\n                    promises[i] = getPromise(id)\n                }\n                return promises\n            };\n            var makePromiseCallback = (callback, userData) => value => {\n                var stack = stackSave();\n                var resultPtr = stackAlloc(POINTER_SIZE);\n                HEAPU32[resultPtr >>> 2 >>> 0] = 0;\n                try {\n                    var result = getWasmTableEntry(callback)(resultPtr, userData, value);\n                    var resultVal = HEAPU32[resultPtr >>> 2 >>> 0]\n                } catch (e) {\n                    if (typeof e != \"number\") {\n                        throw 0\n                    }\n                    throw e\n                } finally {\n                    stackRestore(stack)\n                }\n                switch (result) {\n                    case 0:\n                        return resultVal;\n                    case 1:\n                        return getPromise(resultVal);\n                    case 2:\n                        var ret = getPromise(resultVal);\n                        _emscripten_promise_destroy(resultVal);\n                        return ret;\n                    case 3:\n                        throw resultVal\n                }\n            };\n\n            function _emscripten_promise_then(id, onFulfilled, onRejected, userData) {\n                id >>>= 0;\n                onFulfilled >>>= 0;\n                onRejected >>>= 0;\n                userData >>>= 0;\n                var promise = getPromise(id);\n                var newId = promiseMap.allocate({\n                    promise: promise.then(makePromiseCallback(onFulfilled, userData), makePromiseCallback(onRejected, userData))\n                });\n                return newId\n            }\n            _emscripten_promise_then.sig = \"ppppp\";\n            var _emscripten_promise_all = function(idBuf, resultBuf, size) {\n                idBuf >>>= 0;\n                resultBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.all(promises).then(results => {\n                        if (resultBuf) {\n                            for (var i = 0; i < size; i++) {\n                                var result = results[i];\n                                HEAPU32[resultBuf + i * 4 >>> 2 >>> 0] = result\n                            }\n                        }\n                        return resultBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_all.sig = \"pppp\";\n            var setPromiseResult = (ptr, fulfill, value) => {\n                var result = fulfill ? 0 : 3;\n                HEAP32[ptr >>> 2 >>> 0] = result;\n                HEAPU32[ptr + 4 >>> 2 >>> 0] = value\n            };\n            var _emscripten_promise_all_settled = function(idBuf, resultBuf, size) {\n                idBuf >>>= 0;\n                resultBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.allSettled(promises).then(results => {\n                        if (resultBuf) {\n                            var offset = resultBuf;\n                            for (var i = 0; i < size; i++, offset += 8) {\n                                if (results[i].status === \"fulfilled\") {\n                                    setPromiseResult(offset, true, results[i].value)\n                                } else {\n                                    setPromiseResult(offset, false, results[i].reason)\n                                }\n                            }\n                        }\n                        return resultBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_all_settled.sig = \"pppp\";\n            var _emscripten_promise_any = function(idBuf, errorBuf, size) {\n                idBuf >>>= 0;\n                errorBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.any(promises).catch(err => {\n                        if (errorBuf) {\n                            for (var i = 0; i < size; i++) {\n                                HEAPU32[errorBuf + i * 4 >>> 2 >>> 0] = err.errors[i]\n                            }\n                        }\n                        throw errorBuf\n                    })\n                });\n                return id\n            };\n            _emscripten_promise_any.sig = \"pppp\";\n\n            function _emscripten_promise_race(idBuf, size) {\n                idBuf >>>= 0;\n                size >>>= 0;\n                var promises = idsToPromises(idBuf, size);\n                var id = promiseMap.allocate({\n                    promise: Promise.race(promises)\n                });\n                return id\n            }\n            _emscripten_promise_race.sig = \"ppp\";\n\n            function _emscripten_promise_await(returnValuePtr, id) {\n                returnValuePtr >>>= 0;\n                id >>>= 0;\n                abort(\"emscripten_promise_await is only available with ASYNCIFY\")\n            }\n            _emscripten_promise_await.sig = \"vpp\";\n            var getExceptionMessageCommon = ptr => {\n                var sp = stackSave();\n                var type_addr_addr = stackAlloc(4);\n                var message_addr_addr = stackAlloc(4);\n                ___get_exception_message(ptr, type_addr_addr, message_addr_addr);\n                var type_addr = HEAPU32[type_addr_addr >>> 2 >>> 0];\n                var message_addr = HEAPU32[message_addr_addr >>> 2 >>> 0];\n                var type = UTF8ToString(type_addr);\n                _free(type_addr);\n                var message;\n                if (message_addr) {\n                    message = UTF8ToString(message_addr);\n                    _free(message_addr)\n                }\n                stackRestore(sp);\n                return [type, message]\n            };\n            var getCppExceptionTag = () => ___cpp_exception;\n            var getCppExceptionThrownObjectFromWebAssemblyException = ex => {\n                var unwind_header = ex.getArg(getCppExceptionTag(), 0);\n                return ___thrown_object_from_unwind_exception(unwind_header)\n            };\n            var incrementExceptionRefcount = ex => {\n                var ptr = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n                ___cxa_increment_exception_refcount(ptr)\n            };\n            var decrementExceptionRefcount = ex => {\n                var ptr = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n                ___cxa_decrement_exception_refcount(ptr)\n            };\n            var getExceptionMessage = ex => {\n                var ptr = getCppExceptionThrownObjectFromWebAssemblyException(ex);\n                return getExceptionMessageCommon(ptr)\n            };\n            var Browser = {\n                useWebGL: false,\n                isFullscreen: false,\n                pointerLock: false,\n                moduleContextCreatedCallbacks: [],\n                workers: [],\n                init() {\n                    if (Browser.initted) return;\n                    Browser.initted = true;\n                    var imagePlugin = {};\n                    imagePlugin[\"canHandle\"] = function imagePlugin_canHandle(name) {\n                        return !Module[\"noImageDecoding\"] && /\\.(jpg|jpeg|png|bmp|webp)$/i.test(name)\n                    };\n                    imagePlugin[\"handle\"] = function imagePlugin_handle(byteArray, name, onload, onerror) {\n                        var b = new Blob([byteArray], {\n                            type: Browser.getMimetype(name)\n                        });\n                        if (b.size !== byteArray.length) {\n                            b = new Blob([new Uint8Array(byteArray).buffer], {\n                                type: Browser.getMimetype(name)\n                            })\n                        }\n                        var url = URL.createObjectURL(b);\n                        var img = new Image;\n                        img.onload = () => {\n                            var canvas = document.createElement(\"canvas\");\n                            canvas.width = img.width;\n                            canvas.height = img.height;\n                            var ctx = canvas.getContext(\"2d\");\n                            ctx.drawImage(img, 0, 0);\n                            preloadedImages[name] = canvas;\n                            URL.revokeObjectURL(url);\n                            onload?.(byteArray)\n                        };\n                        img.onerror = event => {\n                            err(`Image ${url} could not be decoded`);\n                            onerror?.()\n                        };\n                        img.src = url\n                    };\n                    preloadPlugins.push(imagePlugin);\n                    var audioPlugin = {};\n                    audioPlugin[\"canHandle\"] = function audioPlugin_canHandle(name) {\n                        return !Module[\"noAudioDecoding\"] && name.substr(-4) in {\n                            \".ogg\": 1,\n                            \".wav\": 1,\n                            \".mp3\": 1\n                        }\n                    };\n                    audioPlugin[\"handle\"] = function audioPlugin_handle(byteArray, name, onload, onerror) {\n                        var done = false;\n\n                        function finish(audio) {\n                            if (done) return;\n                            done = true;\n                            preloadedAudios[name] = audio;\n                            onload?.(byteArray)\n                        }\n\n                        function fail() {\n                            if (done) return;\n                            done = true;\n                            preloadedAudios[name] = new Audio;\n                            onerror?.()\n                        }\n                        var b = new Blob([byteArray], {\n                            type: Browser.getMimetype(name)\n                        });\n                        var url = URL.createObjectURL(b);\n                        var audio = new Audio;\n                        audio.addEventListener(\"canplaythrough\", () => finish(audio), false);\n                        audio.onerror = function audio_onerror(event) {\n                            if (done) return;\n                            err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);\n\n                            function encode64(data) {\n                                var BASE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n                                var PAD = \"=\";\n                                var ret = \"\";\n                                var leftchar = 0;\n                                var leftbits = 0;\n                                for (var i = 0; i < data.length; i++) {\n                                    leftchar = leftchar << 8 | data[i];\n                                    leftbits += 8;\n                                    while (leftbits >= 6) {\n                                        var curr = leftchar >> leftbits - 6 & 63;\n                                        leftbits -= 6;\n                                        ret += BASE[curr]\n                                    }\n                                }\n                                if (leftbits == 2) {\n                                    ret += BASE[(leftchar & 3) << 4];\n                                    ret += PAD + PAD\n                                } else if (leftbits == 4) {\n                                    ret += BASE[(leftchar & 15) << 2];\n                                    ret += PAD\n                                }\n                                return ret\n                            }\n                            audio.src = \"data:audio/x-\" + name.substr(-3) + \";base64,\" + encode64(byteArray);\n                            finish(audio)\n                        };\n                        audio.src = url;\n                        safeSetTimeout(() => {\n                            finish(audio)\n                        }, 1e4)\n                    };\n                    preloadPlugins.push(audioPlugin);\n\n                    function pointerLockChange() {\n                        Browser.pointerLock = document[\"pointerLockElement\"] === Module[\"canvas\"] || document[\"mozPointerLockElement\"] === Module[\"canvas\"] || document[\"webkitPointerLockElement\"] === Module[\"canvas\"] || document[\"msPointerLockElement\"] === Module[\"canvas\"]\n                    }\n                    var canvas = Module[\"canvas\"];\n                    if (canvas) {\n                        canvas.requestPointerLock = canvas[\"requestPointerLock\"] || canvas[\"mozRequestPointerLock\"] || canvas[\"webkitRequestPointerLock\"] || canvas[\"msRequestPointerLock\"] || (() => {});\n                        canvas.exitPointerLock = document[\"exitPointerLock\"] || document[\"mozExitPointerLock\"] || document[\"webkitExitPointerLock\"] || document[\"msExitPointerLock\"] || (() => {});\n                        canvas.exitPointerLock = canvas.exitPointerLock.bind(document);\n                        document.addEventListener(\"pointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"mozpointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"webkitpointerlockchange\", pointerLockChange, false);\n                        document.addEventListener(\"mspointerlockchange\", pointerLockChange, false);\n                        if (Module[\"elementPointerLock\"]) {\n                            canvas.addEventListener(\"click\", ev => {\n                                if (!Browser.pointerLock && Module[\"canvas\"].requestPointerLock) {\n                                    Module[\"canvas\"].requestPointerLock();\n                                    ev.preventDefault()\n                                }\n                            }, false)\n                        }\n                    }\n                },\n                createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {\n                    if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;\n                    var ctx;\n                    var contextHandle;\n                    if (useWebGL) {\n                        var contextAttributes = {\n                            antialias: false,\n                            alpha: false,\n                            majorVersion: 1\n                        };\n                        if (webGLContextAttributes) {\n                            for (var attribute in webGLContextAttributes) {\n                                contextAttributes[attribute] = webGLContextAttributes[attribute]\n                            }\n                        }\n                        if (typeof GL != \"undefined\") {\n                            contextHandle = GL.createContext(canvas, contextAttributes);\n                            if (contextHandle) {\n                                ctx = GL.getContext(contextHandle).GLctx\n                            }\n                        }\n                    } else {\n                        ctx = canvas.getContext(\"2d\")\n                    }\n                    if (!ctx) return null;\n                    if (setInModule) {\n                        Module.ctx = ctx;\n                        if (useWebGL) GL.makeContextCurrent(contextHandle);\n                        Browser.useWebGL = useWebGL;\n                        Browser.moduleContextCreatedCallbacks.forEach(callback => callback());\n                        Browser.init()\n                    }\n                    return ctx\n                },\n                fullscreenHandlersInstalled: false,\n                lockPointer: undefined,\n                resizeCanvas: undefined,\n                requestFullscreen(lockPointer, resizeCanvas) {\n                    Browser.lockPointer = lockPointer;\n                    Browser.resizeCanvas = resizeCanvas;\n                    if (typeof Browser.lockPointer == \"undefined\") Browser.lockPointer = true;\n                    if (typeof Browser.resizeCanvas == \"undefined\") Browser.resizeCanvas = false;\n                    var canvas = Module[\"canvas\"];\n\n                    function fullscreenChange() {\n                        Browser.isFullscreen = false;\n                        var canvasContainer = canvas.parentNode;\n                        if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvasContainer) {\n                            canvas.exitFullscreen = Browser.exitFullscreen;\n                            if (Browser.lockPointer) canvas.requestPointerLock();\n                            Browser.isFullscreen = true;\n                            if (Browser.resizeCanvas) {\n                                Browser.setFullscreenCanvasSize()\n                            } else {\n                                Browser.updateCanvasDimensions(canvas)\n                            }\n                        } else {\n                            canvasContainer.parentNode.insertBefore(canvas, canvasContainer);\n                            canvasContainer.parentNode.removeChild(canvasContainer);\n                            if (Browser.resizeCanvas) {\n                                Browser.setWindowedCanvasSize()\n                            } else {\n                                Browser.updateCanvasDimensions(canvas)\n                            }\n                        }\n                        Module[\"onFullScreen\"]?.(Browser.isFullscreen);\n                        Module[\"onFullscreen\"]?.(Browser.isFullscreen)\n                    }\n                    if (!Browser.fullscreenHandlersInstalled) {\n                        Browser.fullscreenHandlersInstalled = true;\n                        document.addEventListener(\"fullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"mozfullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"webkitfullscreenchange\", fullscreenChange, false);\n                        document.addEventListener(\"MSFullscreenChange\", fullscreenChange, false)\n                    }\n                    var canvasContainer = document.createElement(\"div\");\n                    canvas.parentNode.insertBefore(canvasContainer, canvas);\n                    canvasContainer.appendChild(canvas);\n                    canvasContainer.requestFullscreen = canvasContainer[\"requestFullscreen\"] || canvasContainer[\"mozRequestFullScreen\"] || canvasContainer[\"msRequestFullscreen\"] || (canvasContainer[\"webkitRequestFullscreen\"] ? () => canvasContainer[\"webkitRequestFullscreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]) : null) || (canvasContainer[\"webkitRequestFullScreen\"] ? () => canvasContainer[\"webkitRequestFullScreen\"](Element[\"ALLOW_KEYBOARD_INPUT\"]) : null);\n                    canvasContainer.requestFullscreen()\n                },\n                exitFullscreen() {\n                    if (!Browser.isFullscreen) {\n                        return false\n                    }\n                    var CFS = document[\"exitFullscreen\"] || document[\"cancelFullScreen\"] || document[\"mozCancelFullScreen\"] || document[\"msExitFullscreen\"] || document[\"webkitCancelFullScreen\"] || (() => {});\n                    CFS.apply(document, []);\n                    return true\n                },\n                safeSetTimeout(func, timeout) {\n                    return safeSetTimeout(func, timeout)\n                },\n                getMimetype(name) {\n                    return {\n                        jpg: \"image/jpeg\",\n                        jpeg: \"image/jpeg\",\n                        png: \"image/png\",\n                        bmp: \"image/bmp\",\n                        ogg: \"audio/ogg\",\n                        wav: \"audio/wav\",\n                        mp3: \"audio/mpeg\"\n                    } [name.substr(name.lastIndexOf(\".\") + 1)]\n                },\n                getUserMedia(func) {\n                    window.getUserMedia ||= navigator[\"getUserMedia\"] || navigator[\"mozGetUserMedia\"];\n                    window.getUserMedia(func)\n                },\n                getMovementX(event) {\n                    return event[\"movementX\"] || event[\"mozMovementX\"] || event[\"webkitMovementX\"] || 0\n                },\n                getMovementY(event) {\n                    return event[\"movementY\"] || event[\"mozMovementY\"] || event[\"webkitMovementY\"] || 0\n                },\n                getMouseWheelDelta(event) {\n                    var delta = 0;\n                    switch (event.type) {\n                        case \"DOMMouseScroll\":\n                            delta = event.detail / 3;\n                            break;\n                        case \"mousewheel\":\n                            delta = event.wheelDelta / 120;\n                            break;\n                        case \"wheel\":\n                            delta = event.deltaY;\n                            switch (event.deltaMode) {\n                                case 0:\n                                    delta /= 100;\n                                    break;\n                                case 1:\n                                    delta /= 3;\n                                    break;\n                                case 2:\n                                    delta *= 80;\n                                    break;\n                                default:\n                                    throw \"unrecognized mouse wheel delta mode: \" + event.deltaMode\n                            }\n                            break;\n                        default:\n                            throw \"unrecognized mouse wheel event: \" + event.type\n                    }\n                    return delta\n                },\n                mouseX: 0,\n                mouseY: 0,\n                mouseMovementX: 0,\n                mouseMovementY: 0,\n                touches: {},\n                lastTouches: {},\n                calculateMouseCoords(pageX, pageY) {\n                    var rect = Module[\"canvas\"].getBoundingClientRect();\n                    var cw = Module[\"canvas\"].width;\n                    var ch = Module[\"canvas\"].height;\n                    var scrollX = typeof window.scrollX != \"undefined\" ? window.scrollX : window.pageXOffset;\n                    var scrollY = typeof window.scrollY != \"undefined\" ? window.scrollY : window.pageYOffset;\n                    var adjustedX = pageX - (scrollX + rect.left);\n                    var adjustedY = pageY - (scrollY + rect.top);\n                    adjustedX = adjustedX * (cw / rect.width);\n                    adjustedY = adjustedY * (ch / rect.height);\n                    return {\n                        x: adjustedX,\n                        y: adjustedY\n                    }\n                },\n                setMouseCoords(pageX, pageY) {\n                    const {\n                        x,\n                        y\n                    } = Browser.calculateMouseCoords(pageX, pageY);\n                    Browser.mouseMovementX = x - Browser.mouseX;\n                    Browser.mouseMovementY = y - Browser.mouseY;\n                    Browser.mouseX = x;\n                    Browser.mouseY = y\n                },\n                calculateMouseEvent(event) {\n                    if (Browser.pointerLock) {\n                        if (event.type != \"mousemove\" && \"mozMovementX\" in event) {\n                            Browser.mouseMovementX = Browser.mouseMovementY = 0\n                        } else {\n                            Browser.mouseMovementX = Browser.getMovementX(event);\n                            Browser.mouseMovementY = Browser.getMovementY(event)\n                        }\n                        Browser.mouseX += Browser.mouseMovementX;\n                        Browser.mouseY += Browser.mouseMovementY\n                    } else {\n                        if (event.type === \"touchstart\" || event.type === \"touchend\" || event.type === \"touchmove\") {\n                            var touch = event.touch;\n                            if (touch === undefined) {\n                                return\n                            }\n                            var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY);\n                            if (event.type === \"touchstart\") {\n                                Browser.lastTouches[touch.identifier] = coords;\n                                Browser.touches[touch.identifier] = coords\n                            } else if (event.type === \"touchend\" || event.type === \"touchmove\") {\n                                var last = Browser.touches[touch.identifier];\n                                last ||= coords;\n                                Browser.lastTouches[touch.identifier] = last;\n                                Browser.touches[touch.identifier] = coords\n                            }\n                            return\n                        }\n                        Browser.setMouseCoords(event.pageX, event.pageY)\n                    }\n                },\n                resizeListeners: [],\n                updateResizeListeners() {\n                    var canvas = Module[\"canvas\"];\n                    Browser.resizeListeners.forEach(listener => listener(canvas.width, canvas.height))\n                },\n                setCanvasSize(width, height, noUpdates) {\n                    var canvas = Module[\"canvas\"];\n                    Browser.updateCanvasDimensions(canvas, width, height);\n                    if (!noUpdates) Browser.updateResizeListeners()\n                },\n                windowedWidth: 0,\n                windowedHeight: 0,\n                setFullscreenCanvasSize() {\n                    if (typeof SDL != \"undefined\") {\n                        var flags = HEAPU32[SDL.screen >>> 2 >>> 0];\n                        flags = flags | 8388608;\n                        HEAP32[SDL.screen >>> 2 >>> 0] = flags\n                    }\n                    Browser.updateCanvasDimensions(Module[\"canvas\"]);\n                    Browser.updateResizeListeners()\n                },\n                setWindowedCanvasSize() {\n                    if (typeof SDL != \"undefined\") {\n                        var flags = HEAPU32[SDL.screen >>> 2 >>> 0];\n                        flags = flags & ~8388608;\n                        HEAP32[SDL.screen >>> 2 >>> 0] = flags\n                    }\n                    Browser.updateCanvasDimensions(Module[\"canvas\"]);\n                    Browser.updateResizeListeners()\n                },\n                updateCanvasDimensions(canvas, wNative, hNative) {\n                    if (wNative && hNative) {\n                        canvas.widthNative = wNative;\n                        canvas.heightNative = hNative\n                    } else {\n                        wNative = canvas.widthNative;\n                        hNative = canvas.heightNative\n                    }\n                    var w = wNative;\n                    var h = hNative;\n                    if (Module[\"forcedAspectRatio\"] && Module[\"forcedAspectRatio\"] > 0) {\n                        if (w / h < Module[\"forcedAspectRatio\"]) {\n                            w = Math.round(h * Module[\"forcedAspectRatio\"])\n                        } else {\n                            h = Math.round(w / Module[\"forcedAspectRatio\"])\n                        }\n                    }\n                    if ((document[\"fullscreenElement\"] || document[\"mozFullScreenElement\"] || document[\"msFullscreenElement\"] || document[\"webkitFullscreenElement\"] || document[\"webkitCurrentFullScreenElement\"]) === canvas.parentNode && typeof screen != \"undefined\") {\n                        var factor = Math.min(screen.width / w, screen.height / h);\n                        w = Math.round(w * factor);\n                        h = Math.round(h * factor)\n                    }\n                    if (Browser.resizeCanvas) {\n                        if (canvas.width != w) canvas.width = w;\n                        if (canvas.height != h) canvas.height = h;\n                        if (typeof canvas.style != \"undefined\") {\n                            canvas.style.removeProperty(\"width\");\n                            canvas.style.removeProperty(\"height\")\n                        }\n                    } else {\n                        if (canvas.width != wNative) canvas.width = wNative;\n                        if (canvas.height != hNative) canvas.height = hNative;\n                        if (typeof canvas.style != \"undefined\") {\n                            if (w != wNative || h != hNative) {\n                                canvas.style.setProperty(\"width\", w + \"px\", \"important\");\n                                canvas.style.setProperty(\"height\", h + \"px\", \"important\")\n                            } else {\n                                canvas.style.removeProperty(\"width\");\n                                canvas.style.removeProperty(\"height\")\n                            }\n                        }\n                    }\n                }\n            };\n            var _emscripten_run_preload_plugins = function(file, onload, onerror) {\n                file >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _file = UTF8ToString(file);\n                var data = FS.analyzePath(_file);\n                if (!data.exists) return -1;\n                FS.createPreloadedFile(PATH.dirname(_file), PATH.basename(_file), new Uint8Array(data.object.contents), true, true, () => {\n                    if (onload) getWasmTableEntry(onload)(file)\n                }, () => {\n                    if (onerror) getWasmTableEntry(onerror)(file)\n                }, true);\n                return 0\n            };\n            _emscripten_run_preload_plugins.sig = \"ippp\";\n            var Browser_asyncPrepareDataCounter = 0;\n            var _emscripten_run_preload_plugins_data = function(data, size, suffix, arg, onload, onerror) {\n                data >>>= 0;\n                suffix >>>= 0;\n                arg >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _suffix = UTF8ToString(suffix);\n                var name = \"prepare_data_\" + Browser_asyncPrepareDataCounter++ + \".\" + _suffix;\n                var cname = stringToNewUTF8(name);\n                FS.createPreloadedFile(\"/\", name, HEAPU8.subarray(data >>> 0, data + size >>> 0), true, true, () => {\n                    if (onload) getWasmTableEntry(onload)(arg, cname)\n                }, () => {\n                    if (onerror) getWasmTableEntry(onerror)(arg)\n                }, true)\n            };\n            _emscripten_run_preload_plugins_data.sig = \"vpipppp\";\n            var _emscripten_async_run_script = function(script, millis) {\n                script >>>= 0;\n                safeSetTimeout(() => _emscripten_run_script(script), millis)\n            };\n            _emscripten_async_run_script.sig = \"vpi\";\n            var _emscripten_async_load_script = function(url, onload, onerror) {\n                url >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                url = UTF8ToString(url);\n                var loadDone = () => {\n                    if (onload) {\n                        var onloadCallback = () => callUserCallback(getWasmTableEntry(onload));\n                        if (runDependencies > 0) {\n                            dependenciesFulfilled = onloadCallback\n                        } else {\n                            onloadCallback()\n                        }\n                    }\n                };\n                var loadError = () => {\n                    if (onerror) {\n                        callUserCallback(getWasmTableEntry(onerror))\n                    }\n                };\n                if (ENVIRONMENT_IS_NODE) {\n                    readAsync(url, false).then(data => {\n                        eval(data);\n                        loadDone()\n                    }, loadError);\n                    return\n                }\n                var script = document.createElement(\"script\");\n                script.onload = loadDone;\n                script.onerror = loadError;\n                script.src = url;\n                document.body.appendChild(script)\n            };\n            _emscripten_async_load_script.sig = \"vppp\";\n            var safeRequestAnimationFrame = func => MainLoop.requestAnimationFrame(() => {\n                callUserCallback(func)\n            });\n\n            function _emscripten_async_call(func, arg, millis) {\n                func >>>= 0;\n                arg >>>= 0;\n\n                function wrapper() {\n                    getWasmTableEntry(func)(arg)\n                }\n                if (millis >= 0 || ENVIRONMENT_IS_NODE) {\n                    safeSetTimeout(wrapper, millis)\n                } else {\n                    safeRequestAnimationFrame(wrapper)\n                }\n            }\n            _emscripten_async_call.sig = \"vppi\";\n\n            function _emscripten_get_window_title() {\n                var buflen = 256;\n                if (!_emscripten_get_window_title.buffer) {\n                    _emscripten_get_window_title.buffer = _malloc(buflen)\n                }\n                stringToUTF8(document.title, _emscripten_get_window_title.buffer, buflen);\n                return _emscripten_get_window_title.buffer\n            }\n            _emscripten_get_window_title.sig = \"p\";\n\n            function _emscripten_set_window_title(title) {\n                title >>>= 0;\n                return document.title = UTF8ToString(title)\n            }\n            _emscripten_set_window_title.sig = \"vp\";\n\n            function _emscripten_get_screen_size(width, height) {\n                width >>>= 0;\n                height >>>= 0;\n                HEAP32[width >>> 2 >>> 0] = screen.width;\n                HEAP32[height >>> 2 >>> 0] = screen.height\n            }\n            _emscripten_get_screen_size.sig = \"vpp\";\n            var _emscripten_hide_mouse = () => {\n                var styleSheet = document.styleSheets[0];\n                var rules = styleSheet.cssRules;\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i].cssText.substr(0, 6) == \"canvas\") {\n                        styleSheet.deleteRule(i);\n                        i--\n                    }\n                }\n                styleSheet.insertRule(\"canvas.emscripten { border: 1px solid black; cursor: none; }\", 0)\n            };\n            _emscripten_hide_mouse.sig = \"v\";\n            var _emscripten_set_canvas_size = (width, height) => {\n                Browser.setCanvasSize(width, height)\n            };\n            _emscripten_set_canvas_size.sig = \"vii\";\n\n            function _emscripten_get_canvas_size(width, height, isFullscreen) {\n                width >>>= 0;\n                height >>>= 0;\n                isFullscreen >>>= 0;\n                var canvas = Module[\"canvas\"];\n                HEAP32[width >>> 2 >>> 0] = canvas.width;\n                HEAP32[height >>> 2 >>> 0] = canvas.height;\n                HEAP32[isFullscreen >>> 2 >>> 0] = Browser.isFullscreen ? 1 : 0\n            }\n            _emscripten_get_canvas_size.sig = \"vppp\";\n\n            function _emscripten_create_worker(url) {\n                url >>>= 0;\n                url = UTF8ToString(url);\n                var id = Browser.workers.length;\n                var info = {\n                    worker: new Worker(url),\n                    callbacks: [],\n                    awaited: 0,\n                    buffer: 0,\n                    bufferSize: 0\n                };\n                info.worker.onmessage = function info_worker_onmessage(msg) {\n                    if (ABORT) return;\n                    var info = Browser.workers[id];\n                    if (!info) return;\n                    var callbackId = msg.data[\"callbackId\"];\n                    var callbackInfo = info.callbacks[callbackId];\n                    if (!callbackInfo) return;\n                    if (msg.data[\"finalResponse\"]) {\n                        info.awaited--;\n                        info.callbacks[callbackId] = null\n                    }\n                    var data = msg.data[\"data\"];\n                    if (data) {\n                        if (!data.byteLength) data = new Uint8Array(data);\n                        if (!info.buffer || info.bufferSize < data.length) {\n                            if (info.buffer) _free(info.buffer);\n                            info.bufferSize = data.length;\n                            info.buffer = _malloc(data.length)\n                        }\n                        HEAPU8.set(data, info.buffer >>> 0);\n                        callbackInfo.func(info.buffer, data.length, callbackInfo.arg)\n                    } else {\n                        callbackInfo.func(0, 0, callbackInfo.arg)\n                    }\n                };\n                Browser.workers.push(info);\n                return id\n            }\n            _emscripten_create_worker.sig = \"ip\";\n            var _emscripten_destroy_worker = id => {\n                var info = Browser.workers[id];\n                info.worker.terminate();\n                if (info.buffer) _free(info.buffer);\n                Browser.workers[id] = null\n            };\n            _emscripten_destroy_worker.sig = \"vi\";\n\n            function _emscripten_call_worker(id, funcName, data, size, callback, arg) {\n                funcName >>>= 0;\n                data >>>= 0;\n                callback >>>= 0;\n                arg >>>= 0;\n                funcName = UTF8ToString(funcName);\n                var info = Browser.workers[id];\n                var callbackId = -1;\n                if (callback) {\n                    callbackId = info.callbacks.length;\n                    info.callbacks.push({\n                        func: getWasmTableEntry(callback),\n                        arg\n                    });\n                    info.awaited++\n                }\n                var transferObject = {\n                    funcName,\n                    callbackId,\n                    data: data ? new Uint8Array(HEAPU8.subarray(data >>> 0, data + size >>> 0)) : 0\n                };\n                if (data) {\n                    info.worker.postMessage(transferObject, [transferObject.data.buffer])\n                } else {\n                    info.worker.postMessage(transferObject)\n                }\n            }\n            _emscripten_call_worker.sig = \"vippipp\";\n            var _emscripten_get_worker_queue_size = id => {\n                var info = Browser.workers[id];\n                if (!info) return -1;\n                return info.awaited\n            };\n            _emscripten_get_worker_queue_size.sig = \"ii\";\n            var getPreloadedImageData = (path, w, h) => {\n                path = PATH_FS.resolve(path);\n                var canvas = preloadedImages[path];\n                if (!canvas) return 0;\n                var ctx = canvas.getContext(\"2d\");\n                var image = ctx.getImageData(0, 0, canvas.width, canvas.height);\n                var buf = _malloc(canvas.width * canvas.height * 4);\n                HEAPU8.set(image.data, buf >>> 0);\n                HEAP32[w >>> 2 >>> 0] = canvas.width;\n                HEAP32[h >>> 2 >>> 0] = canvas.height;\n                return buf\n            };\n\n            function _emscripten_get_preloaded_image_data(path, w, h) {\n                path >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                return getPreloadedImageData(UTF8ToString(path), w, h)\n            }\n            _emscripten_get_preloaded_image_data.sig = \"pppp\";\n            var getPreloadedImageData__data = [\"$PATH_FS\", \"malloc\"];\n\n            function _emscripten_get_preloaded_image_data_from_FILE(file, w, h) {\n                file >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                var fd = _fileno(file);\n                var stream = FS.getStream(fd);\n                if (stream) {\n                    return getPreloadedImageData(stream.path, w, h)\n                }\n                return 0\n            }\n            _emscripten_get_preloaded_image_data_from_FILE.sig = \"pppp\";\n            var wget = {\n                wgetRequests: {},\n                nextWgetRequestHandle: 0,\n                getNextWgetRequestHandle() {\n                    var handle = wget.nextWgetRequestHandle;\n                    wget.nextWgetRequestHandle++;\n                    return handle\n                }\n            };\n            var FS_mkdirTree = (path, mode) => FS.mkdirTree(path, mode);\n            var FS_unlink = path => FS.unlink(path);\n            var _emscripten_async_wget = function(url, file, onload, onerror) {\n                url >>>= 0;\n                file >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                var _url = UTF8ToString(url);\n                var _file = UTF8ToString(file);\n                _file = PATH_FS.resolve(_file);\n\n                function doCallback(callback) {\n                    if (callback) {\n                        callUserCallback(() => {\n                            var sp = stackSave();\n                            getWasmTableEntry(callback)(stringToUTF8OnStack(_file));\n                            stackRestore(sp)\n                        })\n                    }\n                }\n                var destinationDirectory = PATH.dirname(_file);\n                FS_createPreloadedFile(destinationDirectory, PATH.basename(_file), _url, true, true, () => doCallback(onload), () => doCallback(onerror), false, false, () => {\n                    try {\n                        FS_unlink(_file)\n                    } catch (e) {}\n                    FS_mkdirTree(destinationDirectory)\n                })\n            };\n            _emscripten_async_wget.sig = \"vpppp\";\n            var _emscripten_async_wget_data = function(url, userdata, onload, onerror) {\n                url >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                asyncLoad(UTF8ToString(url), byteArray => {\n                    callUserCallback(() => {\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        getWasmTableEntry(onload)(userdata, buffer, byteArray.length);\n                        _free(buffer)\n                    })\n                }, () => {\n                    if (onerror) {\n                        callUserCallback(() => {\n                            getWasmTableEntry(onerror)(userdata)\n                        })\n                    }\n                }, true)\n            };\n            _emscripten_async_wget_data.sig = \"vpppp\";\n            var _emscripten_async_wget2 = function(url, file, request, param, userdata, onload, onerror, onprogress) {\n                url >>>= 0;\n                file >>>= 0;\n                request >>>= 0;\n                param >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                onprogress >>>= 0;\n                var _url = UTF8ToString(url);\n                var _file = UTF8ToString(file);\n                _file = PATH_FS.resolve(_file);\n                var _request = UTF8ToString(request);\n                var _param = UTF8ToString(param);\n                var index = _file.lastIndexOf(\"/\");\n                var http = new XMLHttpRequest;\n                http.open(_request, _url, true);\n                http.responseType = \"arraybuffer\";\n                var handle = wget.getNextWgetRequestHandle();\n                var destinationDirectory = PATH.dirname(_file);\n                http.onload = e => {\n                    if (http.status >= 200 && http.status < 300) {\n                        try {\n                            FS.unlink(_file)\n                        } catch (e) {}\n                        FS.mkdirTree(destinationDirectory);\n                        FS.createDataFile(_file.substr(0, index), _file.substr(index + 1), new Uint8Array(http.response), true, true, false);\n                        if (onload) {\n                            var sp = stackSave();\n                            getWasmTableEntry(onload)(handle, userdata, stringToUTF8OnStack(_file));\n                            stackRestore(sp)\n                        }\n                    } else {\n                        if (onerror) getWasmTableEntry(onerror)(handle, userdata, http.status)\n                    }\n                    delete wget.wgetRequests[handle]\n                };\n                http.onerror = e => {\n                    if (onerror) getWasmTableEntry(onerror)(handle, userdata, http.status);\n                    delete wget.wgetRequests[handle]\n                };\n                http.onprogress = e => {\n                    if (e.lengthComputable || e.lengthComputable === undefined && e.total != 0) {\n                        var percentComplete = e.loaded / e.total * 100;\n                        if (onprogress) getWasmTableEntry(onprogress)(handle, userdata, percentComplete)\n                    }\n                };\n                http.onabort = e => {\n                    delete wget.wgetRequests[handle]\n                };\n                if (_request == \"POST\") {\n                    http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n                    http.send(_param)\n                } else {\n                    http.send(null)\n                }\n                wget.wgetRequests[handle] = http;\n                return handle\n            };\n            _emscripten_async_wget2.sig = \"ipppppppp\";\n\n            function _emscripten_async_wget2_data(url, request, param, userdata, free, onload, onerror, onprogress) {\n                url >>>= 0;\n                request >>>= 0;\n                param >>>= 0;\n                userdata >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                onprogress >>>= 0;\n                var _url = UTF8ToString(url);\n                var _request = UTF8ToString(request);\n                var _param = UTF8ToString(param);\n                var http = new XMLHttpRequest;\n                http.open(_request, _url, true);\n                http.responseType = \"arraybuffer\";\n                var handle = wget.getNextWgetRequestHandle();\n\n                function onerrorjs() {\n                    if (onerror) {\n                        var sp = stackSave();\n                        var statusText = 0;\n                        if (http.statusText) {\n                            statusText = stringToUTF8OnStack(http.statusText)\n                        }\n                        getWasmTableEntry(onerror)(handle, userdata, http.status, statusText);\n                        stackRestore(sp)\n                    }\n                }\n                http.onload = e => {\n                    if (http.status >= 200 && http.status < 300 || http.status === 0 && _url.substr(0, 4).toLowerCase() != \"http\") {\n                        var byteArray = new Uint8Array(http.response);\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        if (onload) getWasmTableEntry(onload)(handle, userdata, buffer, byteArray.length);\n                        if (free) _free(buffer)\n                    } else {\n                        onerrorjs()\n                    }\n                    delete wget.wgetRequests[handle]\n                };\n                http.onerror = e => {\n                    onerrorjs();\n                    delete wget.wgetRequests[handle]\n                };\n                http.onprogress = e => {\n                    if (onprogress) getWasmTableEntry(onprogress)(handle, userdata, e.loaded, e.lengthComputable || e.lengthComputable === undefined ? e.total : 0)\n                };\n                http.onabort = e => {\n                    delete wget.wgetRequests[handle]\n                };\n                if (_request == \"POST\") {\n                    http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n                    http.send(_param)\n                } else {\n                    http.send(null)\n                }\n                wget.wgetRequests[handle] = http;\n                return handle\n            }\n            _emscripten_async_wget2_data.sig = \"ippppippp\";\n            var _emscripten_async_wget2_abort = handle => {\n                var http = wget.wgetRequests[handle];\n                http?.abort()\n            };\n            _emscripten_async_wget2_abort.sig = \"vi\";\n\n            function ___asctime_r(tmPtr, buf) {\n                tmPtr >>>= 0;\n                buf >>>= 0;\n                var date = {\n                    tm_sec: HEAP32[tmPtr >>> 2 >>> 0],\n                    tm_min: HEAP32[tmPtr + 4 >>> 2 >>> 0],\n                    tm_hour: HEAP32[tmPtr + 8 >>> 2 >>> 0],\n                    tm_mday: HEAP32[tmPtr + 12 >>> 2 >>> 0],\n                    tm_mon: HEAP32[tmPtr + 16 >>> 2 >>> 0],\n                    tm_year: HEAP32[tmPtr + 20 >>> 2 >>> 0],\n                    tm_wday: HEAP32[tmPtr + 24 >>> 2 >>> 0]\n                };\n                var days = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n                var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n                var s = days[date.tm_wday] + \" \" + months[date.tm_mon] + (date.tm_mday < 10 ? \"  \" : \" \") + date.tm_mday + (date.tm_hour < 10 ? \" 0\" : \" \") + date.tm_hour + (date.tm_min < 10 ? \":0\" : \":\") + date.tm_min + (date.tm_sec < 10 ? \":0\" : \":\") + date.tm_sec + \" \" + (1900 + date.tm_year) + \"\\n\";\n                stringToUTF8(s, buf, 26);\n                return buf\n            }\n            ___asctime_r.sig = \"ppp\";\n\n            function _strptime_l(buf, format, tm, locale) {\n                buf >>>= 0;\n                format >>>= 0;\n                tm >>>= 0;\n                locale >>>= 0;\n                return _strptime(buf, format, tm)\n            }\n            _strptime_l.sig = \"ppppp\";\n\n            function ___syscall_shutdown(fd, how) {\n                try {\n                    getSocketFromFD(fd);\n                    return -52\n                } catch (e) {\n                    if (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n                    return -e.errno\n                }\n            }\n            Module[\"___syscall_shutdown\"] = ___syscall_shutdown;\n            ___syscall_shutdown.sig = \"iiiiiii\";\n\n            function __dlsym_catchup_js(handle, symbolIndex) {\n                handle >>>= 0;\n                var lib = LDSO.loadedLibsByHandle[handle];\n                var symDict = lib.exports;\n                var symName = Object.keys(symDict)[symbolIndex];\n                var sym = symDict[symName];\n                var result = addFunction(sym, sym.sig);\n                return result\n            }\n            __dlsym_catchup_js.sig = \"ppi\";\n            var FS_createPath = FS.createPath;\n            var FS_createDevice = FS.createDevice;\n            var FS_readFile = FS.readFile;\n            var FS_createLazyFile = FS.createLazyFile;\n            var _setNetworkCallback = (event, userData, callback) => {\n                function _callback(data) {\n                    try {\n                        if (event === \"error\") {\n                            var sp = stackSave();\n                            var msg = stringToUTF8OnStack(data[2]);\n                            getWasmTableEntry(callback)(data[0], data[1], msg, userData);\n                            stackRestore(sp)\n                        } else {\n                            getWasmTableEntry(callback)(data, userData)\n                        }\n                    } catch (e) {\n                        if (!(e instanceof ExitStatus)) {\n                            if (e && typeof e == \"object\" && e.stack) err(\"exception thrown: \" + [e, e.stack]);\n                            throw e\n                        }\n                    }\n                }\n                SOCKFS.on(event, callback ? _callback : null)\n            };\n\n            function _emscripten_set_socket_error_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"error\", userData, callback)\n            }\n            _emscripten_set_socket_error_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_open_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"open\", userData, callback)\n            }\n            _emscripten_set_socket_open_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_listen_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"listen\", userData, callback)\n            }\n            _emscripten_set_socket_listen_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_connection_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"connection\", userData, callback)\n            }\n            _emscripten_set_socket_connection_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_message_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"message\", userData, callback)\n            }\n            _emscripten_set_socket_message_callback.sig = \"vpp\";\n\n            function _emscripten_set_socket_close_callback(userData, callback) {\n                userData >>>= 0;\n                callback >>>= 0;\n                _setNetworkCallback(\"close\", userData, callback)\n            }\n            _emscripten_set_socket_close_callback.sig = \"vpp\";\n\n            function _emscripten_webgl_enable_ANGLE_instanced_arrays(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_ANGLE_instanced_arrays(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_ANGLE_instanced_arrays.sig = \"ip\";\n\n            function _emscripten_webgl_enable_OES_vertex_array_object(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_OES_vertex_array_object(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_OES_vertex_array_object.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_draw_buffers(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_draw_buffers(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_draw_buffers.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_multi_draw(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_multi_draw(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_multi_draw.sig = \"ip\";\n\n            function _emscripten_webgl_enable_EXT_polygon_offset_clamp(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_EXT_polygon_offset_clamp(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_EXT_polygon_offset_clamp.sig = \"ip\";\n\n            function _emscripten_webgl_enable_EXT_clip_control(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_EXT_clip_control(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_EXT_clip_control.sig = \"ip\";\n\n            function _emscripten_webgl_enable_WEBGL_polygon_mode(ctx) {\n                ctx >>>= 0;\n                return webgl_enable_WEBGL_polygon_mode(GL.contexts[ctx].GLctx)\n            }\n            _emscripten_webgl_enable_WEBGL_polygon_mode.sig = \"ip\";\n\n            function _glVertexPointer(size, type, stride, ptr) {\n                ptr >>>= 0;\n                throw \"Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            }\n            _glVertexPointer.sig = \"viiip\";\n            var _glMatrixMode = () => {\n                throw \"Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glMatrixMode.sig = \"vi\";\n            var _glBegin = () => {\n                throw \"Legacy GL function (glBegin) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glBegin.sig = \"vi\";\n            var _glLoadIdentity = () => {\n                throw \"Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -sLEGACY_GL_EMULATION to enable legacy GL emulation.\"\n            };\n            _glLoadIdentity.sig = \"v\";\n            var _glVertexAttribDivisorNV = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedNV = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedNV = _glDrawElementsInstanced;\n            var _glVertexAttribDivisorEXT = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedEXT = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedEXT = _glDrawElementsInstanced;\n            var _glVertexAttribDivisorARB = _glVertexAttribDivisor;\n            var _glDrawArraysInstancedARB = _glDrawArraysInstanced;\n            var _glDrawElementsInstancedARB = _glDrawElementsInstanced;\n            var _glDrawBuffersEXT = _glDrawBuffers;\n\n            function _glMultiDrawArraysWEBGL(mode, firsts, counts, drawcount) {\n                firsts >>>= 0;\n                counts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawArraysWEBGL\"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, drawcount)\n            }\n            _glMultiDrawArraysWEBGL.sig = \"vippi\";\n            var _glMultiDrawArrays = _glMultiDrawArraysWEBGL;\n            _glMultiDrawArrays.sig = \"vippi\";\n            var _glMultiDrawArraysANGLE = _glMultiDrawArraysWEBGL;\n\n            function _glMultiDrawArraysInstancedWEBGL(mode, firsts, counts, instanceCounts, drawcount) {\n                firsts >>>= 0;\n                counts >>>= 0;\n                instanceCounts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawArraysInstancedWEBGL\"](mode, HEAP32, firsts >>> 2, HEAP32, counts >>> 2, HEAP32, instanceCounts >>> 2, drawcount)\n            }\n            _glMultiDrawArraysInstancedWEBGL.sig = \"vipppi\";\n            var _glMultiDrawArraysInstancedANGLE = _glMultiDrawArraysInstancedWEBGL;\n\n            function _glMultiDrawElementsWEBGL(mode, counts, type, offsets, drawcount) {\n                counts >>>= 0;\n                offsets >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawElementsWEBGL\"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, drawcount)\n            }\n            _glMultiDrawElementsWEBGL.sig = \"vipipi\";\n            var _glMultiDrawElements = _glMultiDrawElementsWEBGL;\n            _glMultiDrawElements.sig = \"vipipi\";\n            var _glMultiDrawElementsANGLE = _glMultiDrawElementsWEBGL;\n\n            function _glMultiDrawElementsInstancedWEBGL(mode, counts, type, offsets, instanceCounts, drawcount) {\n                counts >>>= 0;\n                offsets >>>= 0;\n                instanceCounts >>>= 0;\n                GLctx.multiDrawWebgl[\"multiDrawElementsInstancedWEBGL\"](mode, HEAP32, counts >>> 2, type, HEAP32, offsets >>> 2, HEAP32, instanceCounts >>> 2, drawcount)\n            }\n            _glMultiDrawElementsInstancedWEBGL.sig = \"vipippi\";\n            var _glMultiDrawElementsInstancedANGLE = _glMultiDrawElementsInstancedWEBGL;\n            var _glClearDepth = x0 => GLctx.clearDepth(x0);\n            _glClearDepth.sig = \"vd\";\n            var _glDepthRange = (x0, x1) => GLctx.depthRange(x0, x1);\n            _glDepthRange.sig = \"vdd\";\n            var _emscripten_glGenVertexArrays = _glGenVertexArrays;\n            _emscripten_glGenVertexArrays.sig = \"vip\";\n            var _emscripten_glDeleteVertexArrays = _glDeleteVertexArrays;\n            _emscripten_glDeleteVertexArrays.sig = \"vip\";\n            var _emscripten_glBindVertexArray = _glBindVertexArray;\n            _emscripten_glBindVertexArray.sig = \"vi\";\n            var _emscripten_glIsVertexArray = _glIsVertexArray;\n            _emscripten_glIsVertexArray.sig = \"ii\";\n            var _emscripten_glVertexPointer = _glVertexPointer;\n            _emscripten_glVertexPointer.sig = \"viiip\";\n            var _emscripten_glMatrixMode = _glMatrixMode;\n            _emscripten_glMatrixMode.sig = \"vi\";\n            var _emscripten_glBegin = _glBegin;\n            _emscripten_glBegin.sig = \"vi\";\n            var _emscripten_glLoadIdentity = _glLoadIdentity;\n            _emscripten_glLoadIdentity.sig = \"v\";\n            var _emscripten_glVertexAttribDivisor = _glVertexAttribDivisor;\n            _emscripten_glVertexAttribDivisor.sig = \"vii\";\n            var _emscripten_glDrawArraysInstanced = _glDrawArraysInstanced;\n            _emscripten_glDrawArraysInstanced.sig = \"viiii\";\n            var _emscripten_glDrawElementsInstanced = _glDrawElementsInstanced;\n            _emscripten_glDrawElementsInstanced.sig = \"viiipi\";\n            var _emscripten_glVertexAttribDivisorNV = _glVertexAttribDivisorNV;\n            var _emscripten_glDrawArraysInstancedNV = _glDrawArraysInstancedNV;\n            var _emscripten_glDrawElementsInstancedNV = _glDrawElementsInstancedNV;\n            var _emscripten_glVertexAttribDivisorEXT = _glVertexAttribDivisorEXT;\n            var _emscripten_glDrawArraysInstancedEXT = _glDrawArraysInstancedEXT;\n            var _emscripten_glDrawElementsInstancedEXT = _glDrawElementsInstancedEXT;\n            var _emscripten_glVertexAttribDivisorARB = _glVertexAttribDivisorARB;\n            var _emscripten_glDrawArraysInstancedARB = _glDrawArraysInstancedARB;\n            var _emscripten_glDrawElementsInstancedARB = _glDrawElementsInstancedARB;\n            var _emscripten_glDrawBuffers = _glDrawBuffers;\n            _emscripten_glDrawBuffers.sig = \"vip\";\n            var _emscripten_glDrawBuffersEXT = _glDrawBuffersEXT;\n            var _emscripten_glMultiDrawArrays = _glMultiDrawArrays;\n            _emscripten_glMultiDrawArrays.sig = \"vippi\";\n            var _emscripten_glMultiDrawArraysANGLE = _glMultiDrawArraysANGLE;\n            var _emscripten_glMultiDrawArraysWEBGL = _glMultiDrawArraysWEBGL;\n            var _emscripten_glMultiDrawArraysInstancedANGLE = _glMultiDrawArraysInstancedANGLE;\n            var _emscripten_glMultiDrawArraysInstancedWEBGL = _glMultiDrawArraysInstancedWEBGL;\n            var _emscripten_glMultiDrawElements = _glMultiDrawElements;\n            _emscripten_glMultiDrawElements.sig = \"vipipi\";\n            var _emscripten_glMultiDrawElementsANGLE = _glMultiDrawElementsANGLE;\n            var _emscripten_glMultiDrawElementsWEBGL = _glMultiDrawElementsWEBGL;\n            var _emscripten_glMultiDrawElementsInstancedANGLE = _glMultiDrawElementsInstancedANGLE;\n            var _emscripten_glMultiDrawElementsInstancedWEBGL = _glMultiDrawElementsInstancedWEBGL;\n            var _emscripten_glClearDepth = _glClearDepth;\n            _emscripten_glClearDepth.sig = \"vd\";\n            var _emscripten_glDepthRange = _glDepthRange;\n            _emscripten_glDepthRange.sig = \"vdd\";\n            var writeGLArray = (arr, dst, dstLength, heapType) => {\n                var len = arr.length;\n                var writeLength = dstLength < len ? dstLength : len;\n                var heap = heapType ? HEAPF32 : HEAP32;\n                dst = dst >>> 2;\n                for (var i = 0; i < writeLength; ++i) {\n                    heap[dst + i >>> 0] = arr[i]\n                }\n                return len\n            };\n            var webglPowerPreferences = [\"default\", \"low-power\", \"high-performance\"];\n\n            function _emscripten_webgl_do_create_context(target, attributes) {\n                target >>>= 0;\n                attributes >>>= 0;\n                var attr32 = attributes >>> 2;\n                var powerPreference = HEAP32[attr32 + (8 >> 2) >>> 0];\n                var contextAttributes = {\n                    alpha: !!HEAP8[attributes + 0 >>> 0],\n                    depth: !!HEAP8[attributes + 1 >>> 0],\n                    stencil: !!HEAP8[attributes + 2 >>> 0],\n                    antialias: !!HEAP8[attributes + 3 >>> 0],\n                    premultipliedAlpha: !!HEAP8[attributes + 4 >>> 0],\n                    preserveDrawingBuffer: !!HEAP8[attributes + 5 >>> 0],\n                    powerPreference: webglPowerPreferences[powerPreference],\n                    failIfMajorPerformanceCaveat: !!HEAP8[attributes + 12 >>> 0],\n                    majorVersion: HEAP32[attr32 + (16 >> 2) >>> 0],\n                    minorVersion: HEAP32[attr32 + (20 >> 2) >>> 0],\n                    enableExtensionsByDefault: HEAP8[attributes + 24 >>> 0],\n                    explicitSwapControl: HEAP8[attributes + 25 >>> 0],\n                    proxyContextToMainThread: HEAP32[attr32 + (28 >> 2) >>> 0],\n                    renderViaOffscreenBackBuffer: HEAP8[attributes + 32 >>> 0]\n                };\n                var canvas = findCanvasEventTarget(target);\n                if (!canvas) {\n                    return 0\n                }\n                if (contextAttributes.explicitSwapControl) {\n                    return 0\n                }\n                var contextHandle = GL.createContext(canvas, contextAttributes);\n                return contextHandle\n            }\n            _emscripten_webgl_do_create_context.sig = \"ppp\";\n            var _emscripten_webgl_create_context = _emscripten_webgl_do_create_context;\n            _emscripten_webgl_create_context.sig = \"ppp\";\n\n            function _emscripten_webgl_do_get_current_context() {\n                return GL.currentContext ? GL.currentContext.handle : 0\n            }\n            _emscripten_webgl_do_get_current_context.sig = \"p\";\n            var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context;\n            _emscripten_webgl_get_current_context.sig = \"p\";\n            var _emscripten_webgl_do_commit_frame = () => {\n                if (!GL.currentContext || !GL.currentContext.GLctx) {\n                    return -3\n                }\n                if (!GL.currentContext.attributes.explicitSwapControl) {\n                    return -3\n                }\n                return 0\n            };\n            _emscripten_webgl_do_commit_frame.sig = \"i\";\n            var _emscripten_webgl_commit_frame = _emscripten_webgl_do_commit_frame;\n            _emscripten_webgl_commit_frame.sig = \"i\";\n\n            function _emscripten_webgl_make_context_current(contextHandle) {\n                contextHandle >>>= 0;\n                var success = GL.makeContextCurrent(contextHandle);\n                return success ? 0 : -5\n            }\n            _emscripten_webgl_make_context_current.sig = \"ip\";\n\n            function _emscripten_webgl_get_drawing_buffer_size(contextHandle, width, height) {\n                contextHandle >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var GLContext = GL.getContext(contextHandle);\n                if (!GLContext || !GLContext.GLctx || !width || !height) {\n                    return -5\n                }\n                HEAP32[width >>> 2 >>> 0] = GLContext.GLctx.drawingBufferWidth;\n                HEAP32[height >>> 2 >>> 0] = GLContext.GLctx.drawingBufferHeight;\n                return 0\n            }\n            _emscripten_webgl_get_drawing_buffer_size.sig = \"ippp\";\n\n            function _emscripten_webgl_get_context_attributes(c, a) {\n                c >>>= 0;\n                a >>>= 0;\n                if (!a) return -5;\n                c = GL.contexts[c];\n                if (!c) return -3;\n                var t = c.GLctx;\n                if (!t) return -3;\n                t = t.getContextAttributes();\n                HEAP8[a >>> 0] = t.alpha;\n                HEAP8[a + 1 >>> 0] = t.depth;\n                HEAP8[a + 2 >>> 0] = t.stencil;\n                HEAP8[a + 3 >>> 0] = t.antialias;\n                HEAP8[a + 4 >>> 0] = t.premultipliedAlpha;\n                HEAP8[a + 5 >>> 0] = t.preserveDrawingBuffer;\n                var power = t[\"powerPreference\"] && webglPowerPreferences.indexOf(t[\"powerPreference\"]);\n                HEAP32[a + 8 >>> 2 >>> 0] = power;\n                HEAP8[a + 12 >>> 0] = t.failIfMajorPerformanceCaveat;\n                HEAP32[a + 16 >>> 2 >>> 0] = c.version;\n                HEAP32[a + 20 >>> 2 >>> 0] = 0;\n                HEAP8[a + 24 >>> 0] = c.attributes.enableExtensionsByDefault;\n                return 0\n            }\n            _emscripten_webgl_get_context_attributes.sig = \"ipp\";\n\n            function _emscripten_webgl_destroy_context(contextHandle) {\n                contextHandle >>>= 0;\n                if (GL.currentContext == contextHandle) GL.currentContext = 0;\n                GL.deleteContext(contextHandle)\n            }\n            _emscripten_webgl_destroy_context.sig = \"ip\";\n\n            function _emscripten_webgl_enable_extension(contextHandle, extension) {\n                contextHandle >>>= 0;\n                extension >>>= 0;\n                var context = GL.getContext(contextHandle);\n                var extString = UTF8ToString(extension);\n                if (extString.startsWith(\"GL_\")) extString = extString.substr(3);\n                if (extString == \"ANGLE_instanced_arrays\") webgl_enable_ANGLE_instanced_arrays(GLctx);\n                if (extString == \"OES_vertex_array_object\") webgl_enable_OES_vertex_array_object(GLctx);\n                if (extString == \"WEBGL_draw_buffers\") webgl_enable_WEBGL_draw_buffers(GLctx);\n                if (extString == \"WEBGL_multi_draw\") webgl_enable_WEBGL_multi_draw(GLctx);\n                if (extString == \"EXT_polygon_offset_clamp\") webgl_enable_EXT_polygon_offset_clamp(GLctx);\n                if (extString == \"EXT_clip_control\") webgl_enable_EXT_clip_control(GLctx);\n                if (extString == \"WEBGL_polygon_mode\") webgl_enable_WEBGL_polygon_mode(GLctx);\n                var ext = context.GLctx.getExtension(extString);\n                return !!ext\n            }\n            _emscripten_webgl_enable_extension.sig = \"ipp\";\n            var _emscripten_supports_offscreencanvas = () => 0;\n            _emscripten_supports_offscreencanvas.sig = \"i\";\n            var registerWebGlEventCallback = (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString, targetThread) => {\n                var webGlEventHandlerFunc = (e = event) => {\n                    if (getWasmTableEntry(callbackfunc)(eventTypeId, 0, userData)) e.preventDefault()\n                };\n                var eventHandler = {\n                    target: findEventTarget(target),\n                    eventTypeString,\n                    callbackfunc,\n                    handlerFunc: webGlEventHandlerFunc,\n                    useCapture\n                };\n                JSEvents.registerOrRemoveHandler(eventHandler)\n            };\n\n            function _emscripten_set_webglcontextlost_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 31, \"webglcontextlost\", targetThread);\n                return 0\n            }\n            _emscripten_set_webglcontextlost_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_set_webglcontextrestored_callback_on_thread(target, userData, useCapture, callbackfunc, targetThread) {\n                target >>>= 0;\n                userData >>>= 0;\n                callbackfunc >>>= 0;\n                targetThread >>>= 0;\n                registerWebGlEventCallback(target, userData, useCapture, callbackfunc, 32, \"webglcontextrestored\", targetThread);\n                return 0\n            }\n            _emscripten_set_webglcontextrestored_callback_on_thread.sig = \"ippipp\";\n\n            function _emscripten_is_webgl_context_lost(contextHandle) {\n                contextHandle >>>= 0;\n                return !GL.contexts[contextHandle] || GL.contexts[contextHandle].GLctx.isContextLost()\n            }\n            _emscripten_is_webgl_context_lost.sig = \"ip\";\n\n            function _emscripten_webgl_get_supported_extensions() {\n                return stringToNewUTF8(GLctx.getSupportedExtensions().join(\" \"))\n            }\n            _emscripten_webgl_get_supported_extensions.sig = \"p\";\n            var _emscripten_webgl_get_program_parameter_d = (program, param) => GLctx.getProgramParameter(GL.programs[program], param);\n            _emscripten_webgl_get_program_parameter_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_program_info_log_utf8(program) {\n                return stringToNewUTF8(GLctx.getProgramInfoLog(GL.programs[program]))\n            }\n            _emscripten_webgl_get_program_info_log_utf8.sig = \"pi\";\n            var _emscripten_webgl_get_shader_parameter_d = (shader, param) => GLctx.getShaderParameter(GL.shaders[shader], param);\n            _emscripten_webgl_get_shader_parameter_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_shader_info_log_utf8(shader) {\n                return stringToNewUTF8(GLctx.getShaderInfoLog(GL.shaders[shader]))\n            }\n            _emscripten_webgl_get_shader_info_log_utf8.sig = \"pi\";\n\n            function _emscripten_webgl_get_shader_source_utf8(shader) {\n                return stringToNewUTF8(GLctx.getShaderSource(GL.shaders[shader]))\n            }\n            _emscripten_webgl_get_shader_source_utf8.sig = \"pi\";\n            var _emscripten_webgl_get_vertex_attrib_d = (index, param) => GLctx.getVertexAttrib(index, param);\n            _emscripten_webgl_get_vertex_attrib_d.sig = \"dii\";\n            var _emscripten_webgl_get_vertex_attrib_o = (index, param) => {\n                var obj = GLctx.getVertexAttrib(index, param);\n                return obj?.name\n            };\n            _emscripten_webgl_get_vertex_attrib_o.sig = \"iii\";\n\n            function _emscripten_webgl_get_vertex_attrib_v(index, param, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getVertexAttrib(index, param), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_vertex_attrib_v.sig = \"iiipii\";\n            var _emscripten_webgl_get_uniform_d = (program, location) => GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location));\n            _emscripten_webgl_get_uniform_d.sig = \"dii\";\n\n            function _emscripten_webgl_get_uniform_v(program, location, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getUniform(GL.programs[program], webglGetUniformLocation(location)), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_uniform_v.sig = \"iiipii\";\n\n            function _emscripten_webgl_get_parameter_v(param, dst, dstLength, dstType) {\n                dst >>>= 0;\n                return writeGLArray(GLctx.getParameter(param), dst, dstLength, dstType)\n            }\n            _emscripten_webgl_get_parameter_v.sig = \"iipii\";\n            var _emscripten_webgl_get_parameter_d = param => GLctx.getParameter(param);\n            _emscripten_webgl_get_parameter_d.sig = \"di\";\n            var _emscripten_webgl_get_parameter_o = param => {\n                var obj = GLctx.getParameter(param);\n                return obj?.name\n            };\n            _emscripten_webgl_get_parameter_o.sig = \"ii\";\n\n            function _emscripten_webgl_get_parameter_utf8(param) {\n                return stringToNewUTF8(GLctx.getParameter(param))\n            }\n            _emscripten_webgl_get_parameter_utf8.sig = \"pi\";\n\n            function _emscripten_webgl_get_parameter_i64v(param, dst) {\n                dst >>>= 0;\n                return writeI53ToI64(dst, GLctx.getParameter(param))\n            }\n            _emscripten_webgl_get_parameter_i64v.sig = \"vip\";\n            var _glutPostRedisplay = () => {\n                if (GLUT.displayFunc && !GLUT.requestedAnimationFrame) {\n                    GLUT.requestedAnimationFrame = true;\n                    MainLoop.requestAnimationFrame(() => {\n                        GLUT.requestedAnimationFrame = false;\n                        MainLoop.runIter(() => getWasmTableEntry(GLUT.displayFunc)())\n                    })\n                }\n            };\n            _glutPostRedisplay.sig = \"v\";\n            var GLUT = {\n                initTime: null,\n                idleFunc: null,\n                displayFunc: null,\n                keyboardFunc: null,\n                keyboardUpFunc: null,\n                specialFunc: null,\n                specialUpFunc: null,\n                reshapeFunc: null,\n                motionFunc: null,\n                passiveMotionFunc: null,\n                mouseFunc: null,\n                buttons: 0,\n                modifiers: 0,\n                initWindowWidth: 256,\n                initWindowHeight: 256,\n                initDisplayMode: 18,\n                windowX: 0,\n                windowY: 0,\n                windowWidth: 0,\n                windowHeight: 0,\n                requestedAnimationFrame: false,\n                saveModifiers: event => {\n                    GLUT.modifiers = 0;\n                    if (event[\"shiftKey\"]) GLUT.modifiers += 1;\n                    if (event[\"ctrlKey\"]) GLUT.modifiers += 2;\n                    if (event[\"altKey\"]) GLUT.modifiers += 4\n                },\n                onMousemove: event => {\n                    var lastX = Browser.mouseX;\n                    var lastY = Browser.mouseY;\n                    Browser.calculateMouseEvent(event);\n                    var newX = Browser.mouseX;\n                    var newY = Browser.mouseY;\n                    if (newX == lastX && newY == lastY) return;\n                    if (GLUT.buttons == 0 && event.target == Module[\"canvas\"] && GLUT.passiveMotionFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.passiveMotionFunc)(lastX, lastY)\n                    } else if (GLUT.buttons != 0 && GLUT.motionFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.motionFunc)(lastX, lastY)\n                    }\n                },\n                getSpecialKey: keycode => {\n                    var key = null;\n                    switch (keycode) {\n                        case 8:\n                            key = 120;\n                            break;\n                        case 46:\n                            key = 111;\n                            break;\n                        case 112:\n                            key = 1;\n                            break;\n                        case 113:\n                            key = 2;\n                            break;\n                        case 114:\n                            key = 3;\n                            break;\n                        case 115:\n                            key = 4;\n                            break;\n                        case 116:\n                            key = 5;\n                            break;\n                        case 117:\n                            key = 6;\n                            break;\n                        case 118:\n                            key = 7;\n                            break;\n                        case 119:\n                            key = 8;\n                            break;\n                        case 120:\n                            key = 9;\n                            break;\n                        case 121:\n                            key = 10;\n                            break;\n                        case 122:\n                            key = 11;\n                            break;\n                        case 123:\n                            key = 12;\n                            break;\n                        case 37:\n                            key = 100;\n                            break;\n                        case 38:\n                            key = 101;\n                            break;\n                        case 39:\n                            key = 102;\n                            break;\n                        case 40:\n                            key = 103;\n                            break;\n                        case 33:\n                            key = 104;\n                            break;\n                        case 34:\n                            key = 105;\n                            break;\n                        case 36:\n                            key = 106;\n                            break;\n                        case 35:\n                            key = 107;\n                            break;\n                        case 45:\n                            key = 108;\n                            break;\n                        case 16:\n                        case 5:\n                            key = 112;\n                            break;\n                        case 6:\n                            key = 113;\n                            break;\n                        case 17:\n                        case 3:\n                            key = 114;\n                            break;\n                        case 4:\n                            key = 115;\n                            break;\n                        case 18:\n                        case 2:\n                            key = 116;\n                            break;\n                        case 1:\n                            key = 117;\n                            break\n                    }\n                    return key\n                },\n                getASCIIKey: event => {\n                    if (event[\"ctrlKey\"] || event[\"altKey\"] || event[\"metaKey\"]) return null;\n                    var keycode = event[\"keyCode\"];\n                    if (48 <= keycode && keycode <= 57) return keycode;\n                    if (65 <= keycode && keycode <= 90) return event[\"shiftKey\"] ? keycode : keycode + 32;\n                    if (96 <= keycode && keycode <= 105) return keycode - 48;\n                    if (106 <= keycode && keycode <= 111) return keycode - 106 + 42;\n                    switch (keycode) {\n                        case 9:\n                        case 13:\n                        case 27:\n                        case 32:\n                        case 61:\n                            return keycode\n                    }\n                    var s = event[\"shiftKey\"];\n                    switch (keycode) {\n                        case 186:\n                            return s ? 58 : 59;\n                        case 187:\n                            return s ? 43 : 61;\n                        case 188:\n                            return s ? 60 : 44;\n                        case 189:\n                            return s ? 95 : 45;\n                        case 190:\n                            return s ? 62 : 46;\n                        case 191:\n                            return s ? 63 : 47;\n                        case 219:\n                            return s ? 123 : 91;\n                        case 220:\n                            return s ? 124 : 47;\n                        case 221:\n                            return s ? 125 : 93;\n                        case 222:\n                            return s ? 34 : 39\n                    }\n                    return null\n                },\n                onKeydown: event => {\n                    if (GLUT.specialFunc || GLUT.keyboardFunc) {\n                        var key = GLUT.getSpecialKey(event[\"keyCode\"]);\n                        if (key !== null) {\n                            if (GLUT.specialFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.specialFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        } else {\n                            key = GLUT.getASCIIKey(event);\n                            if (key !== null && GLUT.keyboardFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.keyboardFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        }\n                    }\n                },\n                onKeyup: event => {\n                    if (GLUT.specialUpFunc || GLUT.keyboardUpFunc) {\n                        var key = GLUT.getSpecialKey(event[\"keyCode\"]);\n                        if (key !== null) {\n                            if (GLUT.specialUpFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.specialUpFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        } else {\n                            key = GLUT.getASCIIKey(event);\n                            if (key !== null && GLUT.keyboardUpFunc) {\n                                event.preventDefault();\n                                GLUT.saveModifiers(event);\n                                getWasmTableEntry(GLUT.keyboardUpFunc)(key, Browser.mouseX, Browser.mouseY)\n                            }\n                        }\n                    }\n                },\n                touchHandler: event => {\n                    if (event.target != Module[\"canvas\"]) {\n                        return\n                    }\n                    var touches = event.changedTouches,\n                        main = touches[0],\n                        type = \"\";\n                    switch (event.type) {\n                        case \"touchstart\":\n                            type = \"mousedown\";\n                            break;\n                        case \"touchmove\":\n                            type = \"mousemove\";\n                            break;\n                        case \"touchend\":\n                            type = \"mouseup\";\n                            break;\n                        default:\n                            return\n                    }\n                    var simulatedEvent = document.createEvent(\"MouseEvent\");\n                    simulatedEvent.initMouseEvent(type, true, true, window, 1, main.screenX, main.screenY, main.clientX, main.clientY, false, false, false, false, 0, null);\n                    main.target.dispatchEvent(simulatedEvent);\n                    event.preventDefault()\n                },\n                onMouseButtonDown: event => {\n                    Browser.calculateMouseEvent(event);\n                    GLUT.buttons |= 1 << event[\"button\"];\n                    if (event.target == Module[\"canvas\"] && GLUT.mouseFunc) {\n                        try {\n                            event.target.setCapture()\n                        } catch (e) {}\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(event[\"button\"], 0, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onMouseButtonUp: event => {\n                    Browser.calculateMouseEvent(event);\n                    GLUT.buttons &= ~(1 << event[\"button\"]);\n                    if (GLUT.mouseFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(event[\"button\"], 1, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onMouseWheel: event => {\n                    Browser.calculateMouseEvent(event);\n                    var e = window.event || event;\n                    var delta = -Browser.getMouseWheelDelta(event);\n                    delta = delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n                    var button = 3;\n                    if (delta < 0) {\n                        button = 4\n                    }\n                    if (GLUT.mouseFunc) {\n                        event.preventDefault();\n                        GLUT.saveModifiers(event);\n                        getWasmTableEntry(GLUT.mouseFunc)(button, 0, Browser.mouseX, Browser.mouseY)\n                    }\n                },\n                onFullscreenEventChange: event => {\n                    var width;\n                    var height;\n                    if (document[\"fullscreen\"] || document[\"fullScreen\"] || document[\"mozFullScreen\"] || document[\"webkitIsFullScreen\"]) {\n                        width = screen[\"width\"];\n                        height = screen[\"height\"]\n                    } else {\n                        width = GLUT.windowWidth;\n                        height = GLUT.windowHeight;\n                        document.removeEventListener(\"fullscreenchange\", GLUT.onFullscreenEventChange, true);\n                        document.removeEventListener(\"mozfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                        document.removeEventListener(\"webkitfullscreenchange\", GLUT.onFullscreenEventChange, true)\n                    }\n                    Browser.setCanvasSize(width, height, true);\n                    if (GLUT.reshapeFunc) {\n                        getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                    }\n                    _glutPostRedisplay()\n                }\n            };\n            var _glutGetModifiers = () => GLUT.modifiers;\n            _glutGetModifiers.sig = \"i\";\n\n            function _glutInit(argcp, argv) {\n                argcp >>>= 0;\n                argv >>>= 0;\n                GLUT.initTime = Date.now();\n                var isTouchDevice = \"ontouchstart\" in document.documentElement;\n                if (isTouchDevice) {\n                    window.addEventListener(\"touchmove\", GLUT.touchHandler, true);\n                    window.addEventListener(\"touchstart\", GLUT.touchHandler, true);\n                    window.addEventListener(\"touchend\", GLUT.touchHandler, true)\n                }\n                window.addEventListener(\"keydown\", GLUT.onKeydown, true);\n                window.addEventListener(\"keyup\", GLUT.onKeyup, true);\n                window.addEventListener(\"mousemove\", GLUT.onMousemove, true);\n                window.addEventListener(\"mousedown\", GLUT.onMouseButtonDown, true);\n                window.addEventListener(\"mouseup\", GLUT.onMouseButtonUp, true);\n                window.addEventListener(\"mousewheel\", GLUT.onMouseWheel, true);\n                window.addEventListener(\"DOMMouseScroll\", GLUT.onMouseWheel, true);\n                Browser.resizeListeners.push((width, height) => {\n                    if (GLUT.reshapeFunc) {\n                        getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                    }\n                });\n                __ATEXIT__.push(() => {\n                    if (isTouchDevice) {\n                        window.removeEventListener(\"touchmove\", GLUT.touchHandler, true);\n                        window.removeEventListener(\"touchstart\", GLUT.touchHandler, true);\n                        window.removeEventListener(\"touchend\", GLUT.touchHandler, true)\n                    }\n                    window.removeEventListener(\"keydown\", GLUT.onKeydown, true);\n                    window.removeEventListener(\"keyup\", GLUT.onKeyup, true);\n                    window.removeEventListener(\"mousemove\", GLUT.onMousemove, true);\n                    window.removeEventListener(\"mousedown\", GLUT.onMouseButtonDown, true);\n                    window.removeEventListener(\"mouseup\", GLUT.onMouseButtonUp, true);\n                    window.removeEventListener(\"mousewheel\", GLUT.onMouseWheel, true);\n                    window.removeEventListener(\"DOMMouseScroll\", GLUT.onMouseWheel, true);\n                    Module[\"canvas\"].width = Module[\"canvas\"].height = 1\n                })\n            }\n            _glutInit.sig = \"vpp\";\n            var _glutInitWindowSize = (width, height) => {\n                Browser.setCanvasSize(GLUT.initWindowWidth = width, GLUT.initWindowHeight = height)\n            };\n            _glutInitWindowSize.sig = \"vii\";\n            var _glutInitWindowPosition = (x, y) => {};\n            _glutInitWindowPosition.sig = \"vii\";\n            var _glutGet = type => {\n                switch (type) {\n                    case 100:\n                        return 0;\n                    case 101:\n                        return 0;\n                    case 102:\n                        return Module[\"canvas\"].width;\n                    case 103:\n                        return Module[\"canvas\"].height;\n                    case 200:\n                        return Module[\"canvas\"].width;\n                    case 201:\n                        return Module[\"canvas\"].height;\n                    case 500:\n                        return 0;\n                    case 501:\n                        return 0;\n                    case 502:\n                        return GLUT.initWindowWidth;\n                    case 503:\n                        return GLUT.initWindowHeight;\n                    case 700:\n                        var now = Date.now();\n                        return now - GLUT.initTime;\n                    case 105:\n                        return Module.ctx.getContextAttributes().stencil ? 8 : 0;\n                    case 106:\n                        return Module.ctx.getContextAttributes().depth ? 8 : 0;\n                    case 110:\n                        return Module.ctx.getContextAttributes().alpha ? 8 : 0;\n                    case 120:\n                        return Module.ctx.getContextAttributes().antialias ? 1 : 0;\n                    default:\n                        throw \"glutGet(\" + type + \") not implemented yet\"\n                }\n            };\n            _glutGet.sig = \"ii\";\n\n            function _glutIdleFunc(func) {\n                func >>>= 0;\n\n                function callback() {\n                    if (GLUT.idleFunc) {\n                        getWasmTableEntry(GLUT.idleFunc)();\n                        safeSetTimeout(callback, 4)\n                    }\n                }\n                if (!GLUT.idleFunc) {\n                    safeSetTimeout(callback, 0)\n                }\n                GLUT.idleFunc = func\n            }\n            _glutIdleFunc.sig = \"vp\";\n            var _glutTimerFunc = function(msec, func, value) {\n                func >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(func)(value), msec)\n            };\n            _glutTimerFunc.sig = \"vipi\";\n\n            function _glutDisplayFunc(func) {\n                func >>>= 0;\n                GLUT.displayFunc = func\n            }\n            _glutDisplayFunc.sig = \"vp\";\n\n            function _glutKeyboardFunc(func) {\n                func >>>= 0;\n                GLUT.keyboardFunc = func\n            }\n            _glutKeyboardFunc.sig = \"vp\";\n\n            function _glutKeyboardUpFunc(func) {\n                func >>>= 0;\n                GLUT.keyboardUpFunc = func\n            }\n            _glutKeyboardUpFunc.sig = \"vp\";\n\n            function _glutSpecialFunc(func) {\n                func >>>= 0;\n                GLUT.specialFunc = func\n            }\n            _glutSpecialFunc.sig = \"vp\";\n\n            function _glutSpecialUpFunc(func) {\n                func >>>= 0;\n                GLUT.specialUpFunc = func\n            }\n            _glutSpecialUpFunc.sig = \"vp\";\n\n            function _glutReshapeFunc(func) {\n                func >>>= 0;\n                GLUT.reshapeFunc = func\n            }\n            _glutReshapeFunc.sig = \"vp\";\n\n            function _glutMotionFunc(func) {\n                func >>>= 0;\n                GLUT.motionFunc = func\n            }\n            _glutMotionFunc.sig = \"vp\";\n\n            function _glutPassiveMotionFunc(func) {\n                func >>>= 0;\n                GLUT.passiveMotionFunc = func\n            }\n            _glutPassiveMotionFunc.sig = \"vp\";\n\n            function _glutMouseFunc(func) {\n                func >>>= 0;\n                GLUT.mouseFunc = func\n            }\n            _glutMouseFunc.sig = \"vp\";\n            var _glutSetCursor = cursor => {\n                var cursorStyle = \"auto\";\n                switch (cursor) {\n                    case 0:\n                        break;\n                    case 1:\n                        break;\n                    case 2:\n                        cursorStyle = \"pointer\";\n                        break;\n                    case 3:\n                        break;\n                    case 4:\n                        cursorStyle = \"help\";\n                        break;\n                    case 5:\n                        break;\n                    case 6:\n                        break;\n                    case 7:\n                        cursorStyle = \"wait\";\n                        break;\n                    case 8:\n                        cursorStyle = \"text\";\n                        break;\n                    case 9:\n                    case 102:\n                        cursorStyle = \"crosshair\";\n                        break;\n                    case 10:\n                        cursorStyle = \"ns-resize\";\n                        break;\n                    case 11:\n                        cursorStyle = \"ew-resize\";\n                        break;\n                    case 12:\n                        cursorStyle = \"n-resize\";\n                        break;\n                    case 13:\n                        cursorStyle = \"s-resize\";\n                        break;\n                    case 14:\n                        cursorStyle = \"w-resize\";\n                        break;\n                    case 15:\n                        cursorStyle = \"e-resize\";\n                        break;\n                    case 16:\n                        cursorStyle = \"nw-resize\";\n                        break;\n                    case 17:\n                        cursorStyle = \"ne-resize\";\n                        break;\n                    case 18:\n                        cursorStyle = \"se-resize\";\n                        break;\n                    case 19:\n                        cursorStyle = \"sw-resize\";\n                        break;\n                    case 100:\n                        break;\n                    case 101:\n                        cursorStyle = \"none\";\n                        break;\n                    default:\n                        throw \"glutSetCursor: Unknown cursor type: \" + cursor\n                }\n                Module[\"canvas\"].style.cursor = cursorStyle\n            };\n            _glutSetCursor.sig = \"vi\";\n\n            function _glutCreateWindow(name) {\n                name >>>= 0;\n                var contextAttributes = {\n                    antialias: (GLUT.initDisplayMode & 128) != 0,\n                    depth: (GLUT.initDisplayMode & 16) != 0,\n                    stencil: (GLUT.initDisplayMode & 32) != 0,\n                    alpha: (GLUT.initDisplayMode & 8) != 0\n                };\n                Module.ctx = Browser.createContext(Module[\"canvas\"], true, true, contextAttributes);\n                return Module.ctx ? 1 : 0\n            }\n            _glutCreateWindow.sig = \"ip\";\n            var _glutDestroyWindow = name => {\n                delete Module.ctx;\n                return 1\n            };\n            _glutDestroyWindow.sig = \"vi\";\n            var _glutReshapeWindow = (width, height) => {\n                Browser.exitFullscreen();\n                Browser.setCanvasSize(width, height, true);\n                if (GLUT.reshapeFunc) {\n                    getWasmTableEntry(GLUT.reshapeFunc)(width, height)\n                }\n                _glutPostRedisplay()\n            };\n            _glutReshapeWindow.sig = \"vii\";\n            var _glutPositionWindow = (x, y) => {\n                Browser.exitFullscreen();\n                _glutPostRedisplay()\n            };\n            _glutPositionWindow.sig = \"vii\";\n            var _glutFullScreen = () => {\n                GLUT.windowX = 0;\n                GLUT.windowY = 0;\n                GLUT.windowWidth = Module[\"canvas\"].width;\n                GLUT.windowHeight = Module[\"canvas\"].height;\n                document.addEventListener(\"fullscreenchange\", GLUT.onFullscreenEventChange, true);\n                document.addEventListener(\"mozfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                document.addEventListener(\"webkitfullscreenchange\", GLUT.onFullscreenEventChange, true);\n                Browser.requestFullscreen(false, false)\n            };\n            _glutFullScreen.sig = \"v\";\n            var _glutInitDisplayMode = mode => GLUT.initDisplayMode = mode;\n            _glutInitDisplayMode.sig = \"vi\";\n            var _glutSwapBuffers = () => {};\n            _glutSwapBuffers.sig = \"v\";\n            var _glutMainLoop = () => {\n                _glutReshapeWindow(Module[\"canvas\"].width, Module[\"canvas\"].height);\n                _glutPostRedisplay();\n                throw \"unwind\"\n            };\n            _glutMainLoop.sig = \"v\";\n\n            function _XOpenDisplay(name) {\n                name >>>= 0;\n                return 1\n            }\n            _XOpenDisplay.sig = \"pp\";\n\n            function _XCreateWindow(display, parent, x, y, width, height, border_width, depth, class_, visual, valuemask, attributes) {\n                display >>>= 0;\n                parent >>>= 0;\n                visual >>>= 0;\n                valuemask >>>= 0;\n                attributes >>>= 0;\n                Browser.setCanvasSize(width, height);\n                return 2\n            }\n            _XCreateWindow.sig = \"pppiiiiiiippp\";\n\n            function _XChangeWindowAttributes(display, window, valuemask, attributes) {\n                display >>>= 0;\n                window >>>= 0;\n                valuemask >>>= 0;\n                attributes >>>= 0\n            }\n            _XChangeWindowAttributes.sig = \"ipppp\";\n\n            function _XSetWMHints(display, win, hints) {\n                display >>>= 0;\n                win >>>= 0;\n                hints >>>= 0\n            }\n            _XSetWMHints.sig = \"ippp\";\n\n            function _XMapWindow(display, win) {\n                display >>>= 0;\n                win >>>= 0\n            }\n            _XMapWindow.sig = \"ipp\";\n\n            function _XStoreName(display, win, name) {\n                display >>>= 0;\n                win >>>= 0;\n                name >>>= 0\n            }\n            _XStoreName.sig = \"ippp\";\n\n            function _XInternAtom(display, name_, hmm) {\n                display >>>= 0;\n                name_ >>>= 0;\n                return 0\n            }\n            _XInternAtom.sig = \"pppi\";\n\n            function _XSendEvent(display, win, propagate, event_mask, even_send) {\n                display >>>= 0;\n                win >>>= 0;\n                event_mask >>>= 0;\n                even_send >>>= 0\n            }\n            _XSendEvent.sig = \"ippipp\";\n\n            function _XPending(display) {\n                display >>>= 0;\n                return 0\n            }\n            _XPending.sig = \"ip\";\n            var EGL = {\n                errorCode: 12288,\n                defaultDisplayInitialized: false,\n                currentContext: 0,\n                currentReadSurface: 0,\n                currentDrawSurface: 0,\n                contextAttributes: {\n                    alpha: false,\n                    depth: false,\n                    stencil: false,\n                    antialias: false\n                },\n                stringCache: {},\n                setErrorCode(code) {\n                    EGL.errorCode = code\n                },\n                chooseConfig(display, attribList, config, config_size, numConfigs) {\n                    if (display != 62e3) {\n                        EGL.setErrorCode(12296);\n                        return 0\n                    }\n                    if (attribList) {\n                        for (;;) {\n                            var param = HEAP32[attribList >>> 2 >>> 0];\n                            if (param == 12321) {\n                                var alphaSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.alpha = alphaSize > 0\n                            } else if (param == 12325) {\n                                var depthSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.depth = depthSize > 0\n                            } else if (param == 12326) {\n                                var stencilSize = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.stencil = stencilSize > 0\n                            } else if (param == 12337) {\n                                var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.antialias = samples > 0\n                            } else if (param == 12338) {\n                                var samples = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.antialias = samples == 1\n                            } else if (param == 12544) {\n                                var requestedPriority = HEAP32[attribList + 4 >>> 2 >>> 0];\n                                EGL.contextAttributes.lowLatency = requestedPriority != 12547\n                            } else if (param == 12344) {\n                                break\n                            }\n                            attribList += 8\n                        }\n                    }\n                    if ((!config || !config_size) && !numConfigs) {\n                        EGL.setErrorCode(12300);\n                        return 0\n                    }\n                    if (numConfigs) {\n                        HEAP32[numConfigs >>> 2 >>> 0] = 1\n                    }\n                    if (config && config_size > 0) {\n                        HEAPU32[config >>> 2 >>> 0] = 62002\n                    }\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n            };\n\n            function _eglGetDisplay(nativeDisplayType) {\n                nativeDisplayType >>>= 0;\n                EGL.setErrorCode(12288);\n                if (nativeDisplayType != 0 && nativeDisplayType != 1) {\n                    return 0\n                }\n                return 62e3\n            }\n            _eglGetDisplay.sig = \"pp\";\n\n            function _eglInitialize(display, majorVersion, minorVersion) {\n                display >>>= 0;\n                majorVersion >>>= 0;\n                minorVersion >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (majorVersion) {\n                    HEAP32[majorVersion >>> 2 >>> 0] = 1\n                }\n                if (minorVersion) {\n                    HEAP32[minorVersion >>> 2 >>> 0] = 4\n                }\n                EGL.defaultDisplayInitialized = true;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglInitialize.sig = \"ippp\";\n\n            function _eglTerminate(display) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                EGL.currentContext = 0;\n                EGL.currentReadSurface = 0;\n                EGL.currentDrawSurface = 0;\n                EGL.defaultDisplayInitialized = false;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglTerminate.sig = \"ip\";\n\n            function _eglGetConfigs(display, configs, config_size, numConfigs) {\n                display >>>= 0;\n                configs >>>= 0;\n                numConfigs >>>= 0;\n                return EGL.chooseConfig(display, 0, configs, config_size, numConfigs)\n            }\n            _eglGetConfigs.sig = \"ippip\";\n\n            function _eglChooseConfig(display, attrib_list, configs, config_size, numConfigs) {\n                display >>>= 0;\n                attrib_list >>>= 0;\n                configs >>>= 0;\n                numConfigs >>>= 0;\n                return EGL.chooseConfig(display, attrib_list, configs, config_size, numConfigs)\n            }\n            _eglChooseConfig.sig = \"ipppip\";\n\n            function _eglGetConfigAttrib(display, config, attribute, value) {\n                display >>>= 0;\n                config >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (config != 62002) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12320:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 32 : 24;\n                        return 1;\n                    case 12321:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.alpha ? 8 : 0;\n                        return 1;\n                    case 12322:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12323:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12324:\n                        HEAP32[value >>> 2 >>> 0] = 8;\n                        return 1;\n                    case 12325:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.depth ? 24 : 0;\n                        return 1;\n                    case 12326:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.stencil ? 8 : 0;\n                        return 1;\n                    case 12327:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12329:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12330:\n                        HEAP32[value >>> 2 >>> 0] = 4096;\n                        return 1;\n                    case 12331:\n                        HEAP32[value >>> 2 >>> 0] = 16777216;\n                        return 1;\n                    case 12332:\n                        HEAP32[value >>> 2 >>> 0] = 4096;\n                        return 1;\n                    case 12333:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12334:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12335:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12337:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 4 : 0;\n                        return 1;\n                    case 12338:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.antialias ? 1 : 0;\n                        return 1;\n                    case 12339:\n                        HEAP32[value >>> 2 >>> 0] = 4;\n                        return 1;\n                    case 12340:\n                        HEAP32[value >>> 2 >>> 0] = 12344;\n                        return 1;\n                    case 12341:\n                    case 12342:\n                    case 12343:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12345:\n                    case 12346:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12347:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12348:\n                        HEAP32[value >>> 2 >>> 0] = 1;\n                        return 1;\n                    case 12349:\n                    case 12350:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    case 12351:\n                        HEAP32[value >>> 2 >>> 0] = 12430;\n                        return 1;\n                    case 12352:\n                        HEAP32[value >>> 2 >>> 0] = 4;\n                        return 1;\n                    case 12354:\n                        HEAP32[value >>> 2 >>> 0] = 0;\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglGetConfigAttrib.sig = \"ippip\";\n\n            function _eglCreateWindowSurface(display, config, win, attrib_list) {\n                display >>>= 0;\n                config >>>= 0;\n                attrib_list >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (config != 62002) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                return 62006\n            }\n            _eglCreateWindowSurface.sig = \"pppip\";\n\n            function _eglDestroySurface(display, surface) {\n                display >>>= 0;\n                surface >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (surface != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 1\n                }\n                if (EGL.currentReadSurface == surface) {\n                    EGL.currentReadSurface = 0\n                }\n                if (EGL.currentDrawSurface == surface) {\n                    EGL.currentDrawSurface = 0\n                }\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglDestroySurface.sig = \"ipp\";\n\n            function _eglCreateContext(display, config, hmm, contextAttribs) {\n                display >>>= 0;\n                config >>>= 0;\n                hmm >>>= 0;\n                contextAttribs >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                var glesContextVersion = 1;\n                for (;;) {\n                    var param = HEAP32[contextAttribs >>> 2 >>> 0];\n                    if (param == 12440) {\n                        glesContextVersion = HEAP32[contextAttribs + 4 >>> 2 >>> 0]\n                    } else if (param == 12344) {\n                        break\n                    } else {\n                        EGL.setErrorCode(12292);\n                        return 0\n                    }\n                    contextAttribs += 8\n                }\n                if (glesContextVersion != 2) {\n                    EGL.setErrorCode(12293);\n                    return 0\n                }\n                EGL.contextAttributes.majorVersion = glesContextVersion - 1;\n                EGL.contextAttributes.minorVersion = 0;\n                EGL.context = GL.createContext(Module[\"canvas\"], EGL.contextAttributes);\n                if (EGL.context != 0) {\n                    EGL.setErrorCode(12288);\n                    GL.makeContextCurrent(EGL.context);\n                    Browser.useWebGL = true;\n                    Browser.moduleContextCreatedCallbacks.forEach(callback => callback());\n                    GL.makeContextCurrent(null);\n                    return 62004\n                } else {\n                    EGL.setErrorCode(12297);\n                    return 0\n                }\n            }\n            _eglCreateContext.sig = \"ppppp\";\n\n            function _eglDestroyContext(display, context) {\n                display >>>= 0;\n                context >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                GL.deleteContext(EGL.context);\n                EGL.setErrorCode(12288);\n                if (EGL.currentContext == context) {\n                    EGL.currentContext = 0\n                }\n                return 1\n            }\n            _eglDestroyContext.sig = \"ipp\";\n\n            function _eglQuerySurface(display, surface, attribute, value) {\n                display >>>= 0;\n                surface >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (surface != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12376:\n                        return 1;\n                    case 12375:\n                        HEAP32[value >>> 2 >>> 0] = Module[\"canvas\"].width;\n                        return 1;\n                    case 12374:\n                        HEAP32[value >>> 2 >>> 0] = Module[\"canvas\"].height;\n                        return 1;\n                    case 12432:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12433:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12434:\n                        HEAP32[value >>> 2 >>> 0] = -1;\n                        return 1;\n                    case 12422:\n                        HEAP32[value >>> 2 >>> 0] = 12420;\n                        return 1;\n                    case 12441:\n                        HEAP32[value >>> 2 >>> 0] = 12442;\n                        return 1;\n                    case 12435:\n                        HEAP32[value >>> 2 >>> 0] = 12437;\n                        return 1;\n                    case 12416:\n                    case 12417:\n                    case 12418:\n                    case 12419:\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglQuerySurface.sig = \"ippip\";\n\n            function _eglQueryContext(display, context, attribute, value) {\n                display >>>= 0;\n                context >>>= 0;\n                value >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                if (!value) {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                switch (attribute) {\n                    case 12328:\n                        HEAP32[value >>> 2 >>> 0] = 62002;\n                        return 1;\n                    case 12439:\n                        HEAP32[value >>> 2 >>> 0] = 12448;\n                        return 1;\n                    case 12440:\n                        HEAP32[value >>> 2 >>> 0] = EGL.contextAttributes.majorVersion + 1;\n                        return 1;\n                    case 12422:\n                        HEAP32[value >>> 2 >>> 0] = 12420;\n                        return 1;\n                    default:\n                        EGL.setErrorCode(12292);\n                        return 0\n                }\n            }\n            _eglQueryContext.sig = \"ippip\";\n            var _eglGetError = () => EGL.errorCode;\n            _eglGetError.sig = \"i\";\n\n            function _eglQueryString(display, name) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                EGL.setErrorCode(12288);\n                if (EGL.stringCache[name]) return EGL.stringCache[name];\n                var ret;\n                switch (name) {\n                    case 12371:\n                        ret = stringToNewUTF8(\"Emscripten\");\n                        break;\n                    case 12372:\n                        ret = stringToNewUTF8(\"1.4 Emscripten EGL\");\n                        break;\n                    case 12373:\n                        ret = stringToNewUTF8(\"\");\n                        break;\n                    case 12429:\n                        ret = stringToNewUTF8(\"OpenGL_ES\");\n                        break;\n                    default:\n                        EGL.setErrorCode(12300);\n                        return 0\n                }\n                EGL.stringCache[name] = ret;\n                return ret\n            }\n            _eglQueryString.sig = \"ppi\";\n            var _eglBindAPI = api => {\n                if (api == 12448) {\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n                EGL.setErrorCode(12300);\n                return 0\n            };\n            _eglBindAPI.sig = \"ii\";\n            var _eglQueryAPI = () => {\n                EGL.setErrorCode(12288);\n                return 12448\n            };\n            _eglQueryAPI.sig = \"i\";\n            var _eglWaitClient = () => {\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglWaitClient.sig = \"i\";\n            var _eglWaitNative = nativeEngineId => {\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglWaitNative.sig = \"ii\";\n            var _eglWaitGL = _eglWaitClient;\n            _eglWaitGL.sig = \"i\";\n\n            function _eglSwapInterval(display, interval) {\n                display >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (interval == 0) _emscripten_set_main_loop_timing(0, 0);\n                else _emscripten_set_main_loop_timing(1, interval);\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglSwapInterval.sig = \"ipi\";\n\n            function _eglMakeCurrent(display, draw, read, context) {\n                display >>>= 0;\n                draw >>>= 0;\n                read >>>= 0;\n                context >>>= 0;\n                if (display != 62e3) {\n                    EGL.setErrorCode(12296);\n                    return 0\n                }\n                if (context != 0 && context != 62004) {\n                    EGL.setErrorCode(12294);\n                    return 0\n                }\n                if (read != 0 && read != 62006 || draw != 0 && draw != 62006) {\n                    EGL.setErrorCode(12301);\n                    return 0\n                }\n                GL.makeContextCurrent(context ? EGL.context : null);\n                EGL.currentContext = context;\n                EGL.currentDrawSurface = draw;\n                EGL.currentReadSurface = read;\n                EGL.setErrorCode(12288);\n                return 1\n            }\n            _eglMakeCurrent.sig = \"ipppp\";\n\n            function _eglGetCurrentContext() {\n                return EGL.currentContext\n            }\n            _eglGetCurrentContext.sig = \"p\";\n\n            function _eglGetCurrentSurface(readdraw) {\n                if (readdraw == 12378) {\n                    return EGL.currentReadSurface\n                } else if (readdraw == 12377) {\n                    return EGL.currentDrawSurface\n                } else {\n                    EGL.setErrorCode(12300);\n                    return 0\n                }\n            }\n            _eglGetCurrentSurface.sig = \"pi\";\n\n            function _eglGetCurrentDisplay() {\n                return EGL.currentContext ? 62e3 : 0\n            }\n            _eglGetCurrentDisplay.sig = \"p\";\n\n            function _eglSwapBuffers(dpy, surface) {\n                dpy >>>= 0;\n                surface >>>= 0;\n                if (!EGL.defaultDisplayInitialized) {\n                    EGL.setErrorCode(12289)\n                } else if (!Module.ctx) {\n                    EGL.setErrorCode(12290)\n                } else if (Module.ctx.isContextLost()) {\n                    EGL.setErrorCode(12302)\n                } else {\n                    EGL.setErrorCode(12288);\n                    return 1\n                }\n                return 0\n            }\n            _eglSwapBuffers.sig = \"ipp\";\n            var _eglReleaseThread = () => {\n                EGL.currentContext = 0;\n                EGL.currentReadSurface = 0;\n                EGL.currentDrawSurface = 0;\n                EGL.setErrorCode(12288);\n                return 1\n            };\n            _eglReleaseThread.sig = \"i\";\n\n            function _uuid_clear(uu) {\n                uu >>>= 0;\n                return zeroMemory(uu, 16)\n            }\n            _uuid_clear.sig = \"vp\";\n\n            function _uuid_compare(uu1, uu2) {\n                uu1 >>>= 0;\n                uu2 >>>= 0;\n                return _memcmp(uu1, uu2, 16)\n            }\n            _uuid_compare.sig = \"ipp\";\n\n            function _uuid_copy(dst, src) {\n                dst >>>= 0;\n                src >>>= 0;\n                return _memcpy(dst, src, 16)\n            }\n            _uuid_copy.sig = \"vpp\";\n\n            function _uuid_generate(out) {\n                out >>>= 0;\n                var uuid = null;\n                if (ENVIRONMENT_IS_NODE) {\n                    try {\n                        var rb = require(\"crypto\")[\"randomBytes\"];\n                        uuid = rb(16)\n                    } catch (e) {}\n                } else if (ENVIRONMENT_IS_WEB && typeof window.crypto != \"undefined\" && typeof window.crypto.getRandomValues != \"undefined\") {\n                    uuid = new Uint8Array(16);\n                    window.crypto.getRandomValues(uuid)\n                }\n                if (!uuid) {\n                    uuid = new Array(16);\n                    var d = (new Date).getTime();\n                    for (var i = 0; i < 16; i++) {\n                        var r = (d + Math.random() * 256) % 256 | 0;\n                        d = d / 256 | 0;\n                        uuid[i] = r\n                    }\n                }\n                uuid[6] = uuid[6] & 15 | 64;\n                uuid[8] = uuid[8] & 63 | 128;\n                writeArrayToMemory(uuid, out)\n            }\n            _uuid_generate.sig = \"vp\";\n\n            function _uuid_is_null(uu) {\n                uu >>>= 0;\n                for (var i = 0; i < 4; i++, uu = uu + 4 | 0) {\n                    var val = HEAP32[uu >>> 2 >>> 0];\n                    if (val) {\n                        return 0\n                    }\n                }\n                return 1\n            }\n            _uuid_is_null.sig = \"ip\";\n\n            function _uuid_parse(inp, uu) {\n                inp >>>= 0;\n                uu >>>= 0;\n                inp = UTF8ToString(inp);\n                if (inp.length === 36) {\n                    var i = 0;\n                    var uuid = new Array(16);\n                    inp.toLowerCase().replace(/[0-9a-f]{2}/g, function(byte) {\n                        if (i < 16) {\n                            uuid[i++] = parseInt(byte, 16)\n                        }\n                    });\n                    if (i < 16) {\n                        return -1\n                    }\n                    writeArrayToMemory(uuid, uu);\n                    return 0\n                }\n                return -1\n            }\n            _uuid_parse.sig = \"ipp\";\n\n            function _uuid_unparse(uu, out, upper) {\n                uu >>>= 0;\n                out >>>= 0;\n                var i = 0;\n                var uuid = \"xxxx-xx-xx-xx-xxxxxx\".replace(/[x]/g, function(c) {\n                    var r = upper ? HEAPU8[uu + i >>> 0].toString(16).toUpperCase() : HEAPU8[uu + i >>> 0].toString(16);\n                    r = r.length === 1 ? \"0\" + r : r;\n                    i++;\n                    return r\n                });\n                stringToUTF8(uuid, out, 37)\n            }\n            _uuid_unparse.sig = \"vpp\";\n\n            function _uuid_unparse_lower(uu, out) {\n                uu >>>= 0;\n                out >>>= 0;\n                _uuid_unparse(uu, out)\n            }\n            _uuid_unparse_lower.sig = \"vpp\";\n\n            function _uuid_unparse_upper(uu, out) {\n                uu >>>= 0;\n                out >>>= 0;\n                _uuid_unparse(uu, out, true)\n            }\n            _uuid_unparse_upper.sig = \"vpp\";\n\n            function _uuid_type(uu) {\n                uu >>>= 0;\n                return 4\n            }\n            _uuid_type.sig = \"ip\";\n\n            function _uuid_variant(uu) {\n                uu >>>= 0;\n                return 1\n            }\n            _uuid_variant.sig = \"ip\";\n            var GLEW = {\n                isLinaroFork: 1,\n                extensions: null,\n                error: {\n                    0: null,\n                    1: null,\n                    2: null,\n                    3: null,\n                    4: null,\n                    5: null,\n                    6: null,\n                    7: null,\n                    8: null\n                },\n                version: {\n                    1: null,\n                    2: null,\n                    3: null,\n                    4: null\n                },\n                errorStringConstantFromCode(error) {\n                    if (GLEW.isLinaroFork) {\n                        switch (error) {\n                            case 4:\n                                return \"OpenGL ES lib expected, found OpenGL lib\";\n                            case 5:\n                                return \"OpenGL lib expected, found OpenGL ES lib\";\n                            case 6:\n                                return \"Missing EGL version\";\n                            case 7:\n                                return \"EGL 1.1 and up are supported\";\n                            default:\n                                break\n                        }\n                    }\n                    switch (error) {\n                        case 0:\n                            return \"No error\";\n                        case 1:\n                            return \"Missing GL version\";\n                        case 2:\n                            return \"GL 1.1 and up are supported\";\n                        case 3:\n                            return \"GLX 1.2 and up are supported\";\n                        default:\n                            return null\n                    }\n                },\n                errorString(error) {\n                    if (!GLEW.error[error]) {\n                        var string = GLEW.errorStringConstantFromCode(error);\n                        if (!string) {\n                            string = \"Unknown error\";\n                            error = 8\n                        }\n                        GLEW.error[error] = stringToNewUTF8(string)\n                    }\n                    return GLEW.error[error]\n                },\n                versionStringConstantFromCode(name) {\n                    switch (name) {\n                        case 1:\n                            return \"1.10.0\";\n                        case 2:\n                            return \"1\";\n                        case 3:\n                            return \"10\";\n                        case 4:\n                            return \"0\";\n                        default:\n                            return null\n                    }\n                },\n                versionString(name) {\n                    if (!GLEW.version[name]) {\n                        var string = GLEW.versionStringConstantFromCode(name);\n                        if (!string) return 0;\n                        GLEW.version[name] = stringToNewUTF8(string)\n                    }\n                    return GLEW.version[name]\n                },\n                extensionIsSupported(name) {\n                    GLEW.extensions ||= webglGetExtensions();\n                    if (GLEW.extensions.includes(name)) return 1;\n                    return GLEW.extensions.includes(\"GL_\" + name)\n                }\n            };\n            var _glewInit = () => 0;\n            _glewInit.sig = \"i\";\n\n            function _glewIsSupported(name) {\n                name >>>= 0;\n                var exts = UTF8ToString(name).split(\" \");\n                for (var i = 0; i < exts.length; ++i) {\n                    if (!GLEW.extensionIsSupported(exts[i])) return 0\n                }\n                return 1\n            }\n            _glewIsSupported.sig = \"ip\";\n\n            function _glewGetExtension(name) {\n                name >>>= 0;\n                return GLEW.extensionIsSupported(UTF8ToString(name))\n            }\n            _glewGetExtension.sig = \"ip\";\n\n            function _glewGetErrorString(error) {\n                return GLEW.errorString(error)\n            }\n            _glewGetErrorString.sig = \"pi\";\n\n            function _glewGetString(name) {\n                return GLEW.versionString(name)\n            }\n            _glewGetString.sig = \"pi\";\n            var IDBStore = {\n                indexedDB() {\n                    if (typeof indexedDB != \"undefined\") return indexedDB;\n                    var ret = null;\n                    if (typeof window == \"object\") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n                    assert(ret, \"IDBStore used, but indexedDB not supported\");\n                    return ret\n                },\n                DB_VERSION: 22,\n                DB_STORE_NAME: \"FILE_DATA\",\n                dbs: {},\n                blobs: [0],\n                getDB(name, callback) {\n                    var db = IDBStore.dbs[name];\n                    if (db) {\n                        return callback(null, db)\n                    }\n                    var req;\n                    try {\n                        req = IDBStore.indexedDB().open(name, IDBStore.DB_VERSION)\n                    } catch (e) {\n                        return callback(e)\n                    }\n                    req.onupgradeneeded = e => {\n                        var db = e.target.result;\n                        var transaction = e.target.transaction;\n                        var fileStore;\n                        if (db.objectStoreNames.contains(IDBStore.DB_STORE_NAME)) {\n                            fileStore = transaction.objectStore(IDBStore.DB_STORE_NAME)\n                        } else {\n                            fileStore = db.createObjectStore(IDBStore.DB_STORE_NAME)\n                        }\n                    };\n                    req.onsuccess = () => {\n                        db = req.result;\n                        IDBStore.dbs[name] = db;\n                        callback(null, db)\n                    };\n                    req.onerror = function(event) {\n                        callback(event.target.error || \"unknown error\");\n                        event.preventDefault()\n                    }\n                },\n                getStore(dbName, type, callback) {\n                    IDBStore.getDB(dbName, (error, db) => {\n                        if (error) return callback(error);\n                        var transaction = db.transaction([IDBStore.DB_STORE_NAME], type);\n                        transaction.onerror = event => {\n                            callback(event.target.error || \"unknown error\");\n                            event.preventDefault()\n                        };\n                        var store = transaction.objectStore(IDBStore.DB_STORE_NAME);\n                        callback(null, store)\n                    })\n                },\n                getFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readonly\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.get(id);\n                        req.onsuccess = event => {\n                            var result = event.target.result;\n                            if (!result) {\n                                return callback(`file ${id} not found`)\n                            }\n                            return callback(null, result)\n                        };\n                        req.onerror = callback\n                    })\n                },\n                setFile(dbName, id, data, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.put(data, id);\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                },\n                deleteFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.delete(id);\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                },\n                existsFile(dbName, id, callback) {\n                    IDBStore.getStore(dbName, \"readonly\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.count(id);\n                        req.onsuccess = event => callback(null, event.target.result > 0);\n                        req.onerror = callback\n                    })\n                },\n                clearStore(dbName, callback) {\n                    IDBStore.getStore(dbName, \"readwrite\", (err, store) => {\n                        if (err) return callback(err);\n                        var req = store.clear();\n                        req.onsuccess = event => callback();\n                        req.onerror = callback\n                    })\n                }\n            };\n            var _emscripten_idb_async_load = function(db, id, arg, onload, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                onload >>>= 0;\n                onerror >>>= 0;\n                IDBStore.getFile(UTF8ToString(db), UTF8ToString(id), (error, byteArray) => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        var buffer = _malloc(byteArray.length);\n                        HEAPU8.set(byteArray, buffer >>> 0);\n                        getWasmTableEntry(onload)(arg, buffer, byteArray.length);\n                        _free(buffer)\n                    })\n                })\n            };\n            _emscripten_idb_async_load.sig = \"vppppp\";\n            var _emscripten_idb_async_store = function(db, id, ptr, num, arg, onstore, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                ptr >>>= 0;\n                arg >>>= 0;\n                onstore >>>= 0;\n                onerror >>>= 0;\n                IDBStore.setFile(UTF8ToString(db), UTF8ToString(id), new Uint8Array(HEAPU8.subarray(ptr >>> 0, ptr + num >>> 0)), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (onstore) getWasmTableEntry(onstore)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_store.sig = \"vpppippp\";\n            var _emscripten_idb_async_delete = function(db, id, arg, ondelete, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                ondelete >>>= 0;\n                onerror >>>= 0;\n                IDBStore.deleteFile(UTF8ToString(db), UTF8ToString(id), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (ondelete) getWasmTableEntry(ondelete)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_delete.sig = \"vppppp\";\n            var _emscripten_idb_async_exists = function(db, id, arg, oncheck, onerror) {\n                db >>>= 0;\n                id >>>= 0;\n                arg >>>= 0;\n                oncheck >>>= 0;\n                onerror >>>= 0;\n                IDBStore.existsFile(UTF8ToString(db), UTF8ToString(id), (error, exists) => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (oncheck) getWasmTableEntry(oncheck)(arg, exists)\n                    })\n                })\n            };\n            _emscripten_idb_async_exists.sig = \"vppppp\";\n            var _emscripten_idb_async_clear = function(db, arg, onclear, onerror) {\n                db >>>= 0;\n                arg >>>= 0;\n                onclear >>>= 0;\n                onerror >>>= 0;\n                IDBStore.clearStore(UTF8ToString(db), error => {\n                    callUserCallback(() => {\n                        if (error) {\n                            if (onerror) getWasmTableEntry(onerror)(arg);\n                            return\n                        }\n                        if (onclear) getWasmTableEntry(onclear)(arg)\n                    })\n                })\n            };\n            _emscripten_idb_async_clear.sig = \"vpppp\";\n\n            function _emscripten_idb_load(db, id, pbuffer, pnum, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                pbuffer >>>= 0;\n                pnum >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_load, etc.\"\n            }\n            _emscripten_idb_load.sig = \"vppppp\";\n\n            function _emscripten_idb_store(db, id, ptr, num, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                ptr >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_store, etc.\"\n            }\n            _emscripten_idb_store.sig = \"vpppip\";\n\n            function _emscripten_idb_delete(db, id, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_delete, etc.\"\n            }\n            _emscripten_idb_delete.sig = \"vppp\";\n\n            function _emscripten_idb_exists(db, id, pexists, perror) {\n                db >>>= 0;\n                id >>>= 0;\n                pexists >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_exists, etc.\"\n            }\n            _emscripten_idb_exists.sig = \"vpppp\";\n\n            function _emscripten_idb_clear(db, perror) {\n                db >>>= 0;\n                perror >>>= 0;\n                throw \"Please compile your program with async support in order to use synchronous operations like emscripten_idb_clear, etc.\"\n            }\n            _emscripten_idb_clear.sig = \"vpp\";\n            var runAndAbortIfError = func => {\n                try {\n                    return func()\n                } catch (e) {\n                    abort(e)\n                }\n            };\n            var _emscripten_sleep = () => {\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep\"\n            };\n            _emscripten_sleep.sig = \"vi\";\n\n            function _emscripten_wget(url, file) {\n                url >>>= 0;\n                file >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_wget\"\n            }\n            Module[\"_emscripten_wget\"] = _emscripten_wget;\n            _emscripten_wget.sig = \"ipp\";\n\n            function _emscripten_scan_registers(func) {\n                func >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_scan_registers\"\n            }\n            _emscripten_scan_registers.sig = \"vp\";\n\n            function _emscripten_fiber_swap(oldFiber, newFiber) {\n                oldFiber >>>= 0;\n                newFiber >>>= 0;\n                throw \"Please compile your program with async support in order to use asynchronous operations like emscripten_fiber_swap\"\n            }\n            _emscripten_fiber_swap.sig = \"vpp\";\n            var _SDL_GetTicks = () => Date.now() - SDL.startTime | 0;\n            _SDL_GetTicks.sig = \"i\";\n\n            function _SDL_LockSurface(surf) {\n                surf >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                surfData.locked++;\n                if (surfData.locked > 1) return 0;\n                if (!surfData.buffer) {\n                    surfData.buffer = _malloc(surfData.width * surfData.height * 4);\n                    HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer\n                }\n                HEAPU32[surf + 20 >>> 2 >>> 0] = surfData.buffer;\n                if (surf == SDL.screen && Module.screenIsReadOnly && surfData.image) return 0;\n                if (SDL.defaults.discardOnLock) {\n                    if (!surfData.image) {\n                        surfData.image = surfData.ctx.createImageData(surfData.width, surfData.height)\n                    }\n                    if (!SDL.defaults.opaqueFrontBuffer) return\n                } else {\n                    surfData.image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height)\n                }\n                if (surf == SDL.screen && SDL.defaults.opaqueFrontBuffer) {\n                    var data = surfData.image.data;\n                    var num = data.length;\n                    for (var i = 0; i < num / 4; i++) {\n                        data[i * 4 + 3] = 255\n                    }\n                }\n                if (SDL.defaults.copyOnLock && !SDL.defaults.discardOnLock) {\n                    if (surfData.isFlagSet(2097152)) {\n                        throw \"CopyOnLock is not supported for SDL_LockSurface with SDL_HWPALETTE flag set\" + (new Error).stack\n                    } else {\n                        HEAPU8.set(surfData.image.data, surfData.buffer >>> 0)\n                    }\n                }\n                return 0\n            }\n            _SDL_LockSurface.sig = \"ip\";\n            var SDL = {\n                defaults: {\n                    width: 320,\n                    height: 200,\n                    copyOnLock: true,\n                    discardOnLock: false,\n                    opaqueFrontBuffer: true\n                },\n                version: null,\n                surfaces: {},\n                canvasPool: [],\n                events: [],\n                fonts: [null],\n                audios: [null],\n                rwops: [null],\n                music: {\n                    audio: null,\n                    volume: 1\n                },\n                mixerFrequency: 22050,\n                mixerFormat: 32784,\n                mixerNumChannels: 2,\n                mixerChunkSize: 1024,\n                channelMinimumNumber: 0,\n                GL: false,\n                glAttributes: {\n                    0: 3,\n                    1: 3,\n                    2: 2,\n                    3: 0,\n                    4: 0,\n                    5: 1,\n                    6: 16,\n                    7: 0,\n                    8: 0,\n                    9: 0,\n                    10: 0,\n                    11: 0,\n                    12: 0,\n                    13: 0,\n                    14: 0,\n                    15: 1,\n                    16: 0,\n                    17: 0,\n                    18: 0\n                },\n                keyboardState: null,\n                keyboardMap: {},\n                canRequestFullscreen: false,\n                isRequestingFullscreen: false,\n                textInput: false,\n                unicode: false,\n                ttfContext: null,\n                audio: null,\n                startTime: null,\n                initFlags: 0,\n                buttonState: 0,\n                modState: 0,\n                DOMButtons: [0, 0, 0],\n                DOMEventToSDLEvent: {},\n                TOUCH_DEFAULT_ID: 0,\n                eventHandler: null,\n                eventHandlerContext: null,\n                eventHandlerTemp: 0,\n                keyCodes: {\n                    16: 1249,\n                    17: 1248,\n                    18: 1250,\n                    20: 1081,\n                    33: 1099,\n                    34: 1102,\n                    35: 1101,\n                    36: 1098,\n                    37: 1104,\n                    38: 1106,\n                    39: 1103,\n                    40: 1105,\n                    44: 316,\n                    45: 1097,\n                    46: 127,\n                    91: 1251,\n                    93: 1125,\n                    96: 1122,\n                    97: 1113,\n                    98: 1114,\n                    99: 1115,\n                    100: 1116,\n                    101: 1117,\n                    102: 1118,\n                    103: 1119,\n                    104: 1120,\n                    105: 1121,\n                    106: 1109,\n                    107: 1111,\n                    109: 1110,\n                    110: 1123,\n                    111: 1108,\n                    112: 1082,\n                    113: 1083,\n                    114: 1084,\n                    115: 1085,\n                    116: 1086,\n                    117: 1087,\n                    118: 1088,\n                    119: 1089,\n                    120: 1090,\n                    121: 1091,\n                    122: 1092,\n                    123: 1093,\n                    124: 1128,\n                    125: 1129,\n                    126: 1130,\n                    127: 1131,\n                    128: 1132,\n                    129: 1133,\n                    130: 1134,\n                    131: 1135,\n                    132: 1136,\n                    133: 1137,\n                    134: 1138,\n                    135: 1139,\n                    144: 1107,\n                    160: 94,\n                    161: 33,\n                    162: 34,\n                    163: 35,\n                    164: 36,\n                    165: 37,\n                    166: 38,\n                    167: 95,\n                    168: 40,\n                    169: 41,\n                    170: 42,\n                    171: 43,\n                    172: 124,\n                    173: 45,\n                    174: 123,\n                    175: 125,\n                    176: 126,\n                    181: 127,\n                    182: 129,\n                    183: 128,\n                    188: 44,\n                    190: 46,\n                    191: 47,\n                    192: 96,\n                    219: 91,\n                    220: 92,\n                    221: 93,\n                    222: 39,\n                    224: 1251\n                },\n                scanCodes: {\n                    8: 42,\n                    9: 43,\n                    13: 40,\n                    27: 41,\n                    32: 44,\n                    35: 204,\n                    39: 53,\n                    44: 54,\n                    46: 55,\n                    47: 56,\n                    48: 39,\n                    49: 30,\n                    50: 31,\n                    51: 32,\n                    52: 33,\n                    53: 34,\n                    54: 35,\n                    55: 36,\n                    56: 37,\n                    57: 38,\n                    58: 203,\n                    59: 51,\n                    61: 46,\n                    91: 47,\n                    92: 49,\n                    93: 48,\n                    96: 52,\n                    97: 4,\n                    98: 5,\n                    99: 6,\n                    100: 7,\n                    101: 8,\n                    102: 9,\n                    103: 10,\n                    104: 11,\n                    105: 12,\n                    106: 13,\n                    107: 14,\n                    108: 15,\n                    109: 16,\n                    110: 17,\n                    111: 18,\n                    112: 19,\n                    113: 20,\n                    114: 21,\n                    115: 22,\n                    116: 23,\n                    117: 24,\n                    118: 25,\n                    119: 26,\n                    120: 27,\n                    121: 28,\n                    122: 29,\n                    127: 76,\n                    305: 224,\n                    308: 226,\n                    316: 70\n                },\n                loadRect(rect) {\n                    return {\n                        x: HEAP32[rect >>> 2 >>> 0],\n                        y: HEAP32[rect + 4 >>> 2 >>> 0],\n                        w: HEAP32[rect + 8 >>> 2 >>> 0],\n                        h: HEAP32[rect + 12 >>> 2 >>> 0]\n                    }\n                },\n                updateRect(rect, r) {\n                    HEAP32[rect >>> 2 >>> 0] = r.x;\n                    HEAP32[rect + 4 >>> 2 >>> 0] = r.y;\n                    HEAP32[rect + 8 >>> 2 >>> 0] = r.w;\n                    HEAP32[rect + 12 >>> 2 >>> 0] = r.h\n                },\n                intersectionOfRects(first, second) {\n                    var leftX = Math.max(first.x, second.x);\n                    var leftY = Math.max(first.y, second.y);\n                    var rightX = Math.min(first.x + first.w, second.x + second.w);\n                    var rightY = Math.min(first.y + first.h, second.y + second.h);\n                    return {\n                        x: leftX,\n                        y: leftY,\n                        w: Math.max(leftX, rightX) - leftX,\n                        h: Math.max(leftY, rightY) - leftY\n                    }\n                },\n                checkPixelFormat(fmt) {},\n                loadColorToCSSRGB(color) {\n                    var rgba = HEAP32[color >>> 2 >>> 0];\n                    return \"rgb(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \")\"\n                },\n                loadColorToCSSRGBA(color) {\n                    var rgba = HEAP32[color >>> 2 >>> 0];\n                    return \"rgba(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \",\" + (rgba >> 24 & 255) / 255 + \")\"\n                },\n                translateColorToCSSRGBA: rgba => \"rgba(\" + (rgba & 255) + \",\" + (rgba >> 8 & 255) + \",\" + (rgba >> 16 & 255) + \",\" + (rgba >>> 24) / 255 + \")\",\n                translateRGBAToCSSRGBA: (r, g, b, a) => \"rgba(\" + (r & 255) + \",\" + (g & 255) + \",\" + (b & 255) + \",\" + (a & 255) / 255 + \")\",\n                translateRGBAToColor: (r, g, b, a) => r | g << 8 | b << 16 | a << 24,\n                makeSurface(width, height, flags, usePageCanvas, source, rmask, gmask, bmask, amask) {\n                    var is_SDL_HWSURFACE = flags & 1;\n                    var is_SDL_HWPALETTE = flags & 2097152;\n                    var is_SDL_OPENGL = flags & 67108864;\n                    var surf = _malloc(60);\n                    var pixelFormat = _malloc(44);\n                    var bpp = is_SDL_HWPALETTE ? 1 : 4;\n                    var buffer = 0;\n                    if (!is_SDL_HWSURFACE && !is_SDL_OPENGL) {\n                        buffer = _malloc(width * height * 4)\n                    }\n                    HEAP32[surf >>> 2 >>> 0] = flags;\n                    HEAPU32[surf + 4 >>> 2 >>> 0] = pixelFormat;\n                    HEAP32[surf + 8 >>> 2 >>> 0] = width;\n                    HEAP32[surf + 12 >>> 2 >>> 0] = height;\n                    HEAP32[surf + 16 >>> 2 >>> 0] = width * bpp;\n                    HEAPU32[surf + 20 >>> 2 >>> 0] = buffer;\n                    HEAP32[surf + 36 >>> 2 >>> 0] = 0;\n                    HEAP32[surf + 40 >>> 2 >>> 0] = 0;\n                    HEAP32[surf + 44 >>> 2 >>> 0] = Module[\"canvas\"].width;\n                    HEAP32[surf + 48 >>> 2 >>> 0] = Module[\"canvas\"].height;\n                    HEAP32[surf + 56 >>> 2 >>> 0] = 1;\n                    HEAP32[pixelFormat >>> 2 >>> 0] = -2042224636;\n                    HEAP32[pixelFormat + 4 >>> 2 >>> 0] = 0;\n                    HEAP8[pixelFormat + 8 >>> 0] = bpp * 8;\n                    HEAP8[pixelFormat + 9 >>> 0] = bpp;\n                    HEAP32[pixelFormat + 12 >>> 2 >>> 0] = rmask || 255;\n                    HEAP32[pixelFormat + 16 >>> 2 >>> 0] = gmask || 65280;\n                    HEAP32[pixelFormat + 20 >>> 2 >>> 0] = bmask || 16711680;\n                    HEAP32[pixelFormat + 24 >>> 2 >>> 0] = amask || 4278190080;\n                    SDL.GL = SDL.GL || is_SDL_OPENGL;\n                    var canvas;\n                    if (!usePageCanvas) {\n                        if (SDL.canvasPool.length > 0) {\n                            canvas = SDL.canvasPool.pop()\n                        } else {\n                            canvas = document.createElement(\"canvas\")\n                        }\n                        canvas.width = width;\n                        canvas.height = height\n                    } else {\n                        canvas = Module[\"canvas\"]\n                    }\n                    var webGLContextAttributes = {\n                        antialias: SDL.glAttributes[13] != 0 && SDL.glAttributes[14] > 1,\n                        depth: SDL.glAttributes[6] > 0,\n                        stencil: SDL.glAttributes[7] > 0,\n                        alpha: SDL.glAttributes[3] > 0\n                    };\n                    var ctx = Browser.createContext(canvas, is_SDL_OPENGL, usePageCanvas, webGLContextAttributes);\n                    SDL.surfaces[surf] = {\n                        width,\n                        height,\n                        canvas,\n                        ctx,\n                        surf,\n                        buffer,\n                        pixelFormat,\n                        alpha: 255,\n                        flags,\n                        locked: 0,\n                        usePageCanvas,\n                        source,\n                        isFlagSet: flag => flags & flag\n                    };\n                    return surf\n                },\n                copyIndexedColorData(surfData, rX, rY, rW, rH) {\n                    if (!surfData.colors) {\n                        return\n                    }\n                    var fullWidth = Module[\"canvas\"].width;\n                    var fullHeight = Module[\"canvas\"].height;\n                    var startX = rX || 0;\n                    var startY = rY || 0;\n                    var endX = (rW || fullWidth - startX) + startX;\n                    var endY = (rH || fullHeight - startY) + startY;\n                    var buffer = surfData.buffer;\n                    if (!surfData.image.data32) {\n                        surfData.image.data32 = new Uint32Array(surfData.image.data.buffer)\n                    }\n                    var data32 = surfData.image.data32;\n                    var colors32 = surfData.colors32;\n                    for (var y = startY; y < endY; ++y) {\n                        var base = y * fullWidth;\n                        for (var x = startX; x < endX; ++x) {\n                            data32[base + x] = colors32[HEAPU8[buffer + (base + x) >>> 0]]\n                        }\n                    }\n                },\n                freeSurface(surf) {\n                    var refcountPointer = surf + 56;\n                    var refcount = HEAP32[refcountPointer >>> 2 >>> 0];\n                    if (refcount > 1) {\n                        HEAP32[refcountPointer >>> 2 >>> 0] = refcount - 1;\n                        return\n                    }\n                    var info = SDL.surfaces[surf];\n                    if (!info.usePageCanvas && info.canvas) SDL.canvasPool.push(info.canvas);\n                    if (info.buffer) _free(info.buffer);\n                    _free(info.pixelFormat);\n                    _free(surf);\n                    SDL.surfaces[surf] = null;\n                    if (surf === SDL.screen) {\n                        SDL.screen = null\n                    }\n                },\n                blitSurface(src, srcrect, dst, dstrect, scale) {\n                    var srcData = SDL.surfaces[src];\n                    var dstData = SDL.surfaces[dst];\n                    var sr, dr;\n                    if (srcrect) {\n                        sr = SDL.loadRect(srcrect)\n                    } else {\n                        sr = {\n                            x: 0,\n                            y: 0,\n                            w: srcData.width,\n                            h: srcData.height\n                        }\n                    }\n                    if (dstrect) {\n                        dr = SDL.loadRect(dstrect)\n                    } else {\n                        dr = {\n                            x: 0,\n                            y: 0,\n                            w: srcData.width,\n                            h: srcData.height\n                        }\n                    }\n                    if (dstData.clipRect) {\n                        var widthScale = !scale || sr.w === 0 ? 1 : sr.w / dr.w;\n                        var heightScale = !scale || sr.h === 0 ? 1 : sr.h / dr.h;\n                        dr = SDL.intersectionOfRects(dstData.clipRect, dr);\n                        sr.w = dr.w * widthScale;\n                        sr.h = dr.h * heightScale;\n                        if (dstrect) {\n                            SDL.updateRect(dstrect, dr)\n                        }\n                    }\n                    var blitw, blith;\n                    if (scale) {\n                        blitw = dr.w;\n                        blith = dr.h\n                    } else {\n                        blitw = sr.w;\n                        blith = sr.h\n                    }\n                    if (sr.w === 0 || sr.h === 0 || blitw === 0 || blith === 0) {\n                        return 0\n                    }\n                    var oldAlpha = dstData.ctx.globalAlpha;\n                    dstData.ctx.globalAlpha = srcData.alpha / 255;\n                    dstData.ctx.drawImage(srcData.canvas, sr.x, sr.y, sr.w, sr.h, dr.x, dr.y, blitw, blith);\n                    dstData.ctx.globalAlpha = oldAlpha;\n                    if (dst != SDL.screen) {\n                        warnOnce(\"WARNING: copying canvas data to memory for compatibility\");\n                        _SDL_LockSurface(dst);\n                        dstData.locked--\n                    }\n                    return 0\n                },\n                downFingers: {},\n                savedKeydown: null,\n                receiveEvent(event) {\n                    function unpressAllPressedKeys() {\n                        for (var code in SDL.keyboardMap) {\n                            SDL.events.push({\n                                type: \"keyup\",\n                                keyCode: SDL.keyboardMap[code]\n                            })\n                        }\n                    }\n                    switch (event.type) {\n                        case \"touchstart\":\n                        case \"touchmove\": {\n                            event.preventDefault();\n                            var touches = [];\n                            if (event.type === \"touchstart\") {\n                                for (var i = 0; i < event.touches.length; i++) {\n                                    var touch = event.touches[i];\n                                    if (SDL.downFingers[touch.identifier] != true) {\n                                        SDL.downFingers[touch.identifier] = true;\n                                        touches.push(touch)\n                                    }\n                                }\n                            } else {\n                                touches = event.touches\n                            }\n                            var firstTouch = touches[0];\n                            if (firstTouch) {\n                                if (event.type == \"touchstart\") {\n                                    SDL.DOMButtons[0] = 1\n                                }\n                                var mouseEventType;\n                                switch (event.type) {\n                                    case \"touchstart\":\n                                        mouseEventType = \"mousedown\";\n                                        break;\n                                    case \"touchmove\":\n                                        mouseEventType = \"mousemove\";\n                                        break\n                                }\n                                var mouseEvent = {\n                                    type: mouseEventType,\n                                    button: 0,\n                                    pageX: firstTouch.clientX,\n                                    pageY: firstTouch.clientY\n                                };\n                                SDL.events.push(mouseEvent)\n                            }\n                            for (var i = 0; i < touches.length; i++) {\n                                var touch = touches[i];\n                                SDL.events.push({\n                                    type: event.type,\n                                    touch\n                                })\n                            }\n                            break\n                        }\n                        case \"touchend\": {\n                            event.preventDefault();\n                            for (var i = 0; i < event.changedTouches.length; i++) {\n                                var touch = event.changedTouches[i];\n                                if (SDL.downFingers[touch.identifier] === true) {\n                                    delete SDL.downFingers[touch.identifier]\n                                }\n                            }\n                            var mouseEvent = {\n                                type: \"mouseup\",\n                                button: 0,\n                                pageX: event.changedTouches[0].clientX,\n                                pageY: event.changedTouches[0].clientY\n                            };\n                            SDL.DOMButtons[0] = 0;\n                            SDL.events.push(mouseEvent);\n                            for (var i = 0; i < event.changedTouches.length; i++) {\n                                var touch = event.changedTouches[i];\n                                SDL.events.push({\n                                    type: \"touchend\",\n                                    touch\n                                })\n                            }\n                            break\n                        }\n                        case \"DOMMouseScroll\":\n                        case \"mousewheel\":\n                        case \"wheel\":\n                            var delta = -Browser.getMouseWheelDelta(event);\n                            delta = delta == 0 ? 0 : delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1);\n                            var button = delta > 0 ? 3 : 4;\n                            SDL.events.push({\n                                type: \"mousedown\",\n                                button,\n                                pageX: event.pageX,\n                                pageY: event.pageY\n                            });\n                            SDL.events.push({\n                                type: \"mouseup\",\n                                button,\n                                pageX: event.pageX,\n                                pageY: event.pageY\n                            });\n                            SDL.events.push({\n                                type: \"wheel\",\n                                deltaX: 0,\n                                deltaY: delta\n                            });\n                            event.preventDefault();\n                            break;\n                        case \"mousemove\":\n                            if (SDL.DOMButtons[0] === 1) {\n                                SDL.events.push({\n                                    type: \"touchmove\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                })\n                            }\n                            if (Browser.pointerLock) {\n                                if (\"mozMovementX\" in event) {\n                                    event[\"movementX\"] = event[\"mozMovementX\"];\n                                    event[\"movementY\"] = event[\"mozMovementY\"]\n                                }\n                                if (event[\"movementX\"] == 0 && event[\"movementY\"] == 0) {\n                                    event.preventDefault();\n                                    return\n                                }\n                            }\n                        case \"keydown\":\n                        case \"keyup\":\n                        case \"keypress\":\n                        case \"mousedown\":\n                        case \"mouseup\":\n                            if (event.type !== \"keydown\" || !SDL.unicode && !SDL.textInput || (event.keyCode === 8 || event.keyCode === 9)) {\n                                event.preventDefault()\n                            }\n                            if (event.type == \"mousedown\") {\n                                SDL.DOMButtons[event.button] = 1;\n                                SDL.events.push({\n                                    type: \"touchstart\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                })\n                            } else if (event.type == \"mouseup\") {\n                                if (!SDL.DOMButtons[event.button]) {\n                                    return\n                                }\n                                SDL.events.push({\n                                    type: \"touchend\",\n                                    touch: {\n                                        identifier: 0,\n                                        deviceID: -1,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    }\n                                });\n                                SDL.DOMButtons[event.button] = 0\n                            }\n                            if (event.type === \"keydown\" || event.type === \"mousedown\") {\n                                SDL.canRequestFullscreen = true\n                            } else if (event.type === \"keyup\" || event.type === \"mouseup\") {\n                                if (SDL.isRequestingFullscreen) {\n                                    Module[\"requestFullscreen\"](true, true);\n                                    SDL.isRequestingFullscreen = false\n                                }\n                                SDL.canRequestFullscreen = false\n                            }\n                            if (event.type === \"keypress\" && SDL.savedKeydown) {\n                                SDL.savedKeydown.keypressCharCode = event.charCode;\n                                SDL.savedKeydown = null\n                            } else if (event.type === \"keydown\") {\n                                SDL.savedKeydown = event\n                            }\n                            if (event.type !== \"keypress\" || SDL.textInput) {\n                                SDL.events.push(event)\n                            }\n                            break;\n                        case \"mouseout\":\n                            for (var i = 0; i < 3; i++) {\n                                if (SDL.DOMButtons[i]) {\n                                    SDL.events.push({\n                                        type: \"mouseup\",\n                                        button: i,\n                                        pageX: event.pageX,\n                                        pageY: event.pageY\n                                    });\n                                    SDL.DOMButtons[i] = 0\n                                }\n                            }\n                            event.preventDefault();\n                            break;\n                        case \"focus\":\n                            SDL.events.push(event);\n                            event.preventDefault();\n                            break;\n                        case \"blur\":\n                            SDL.events.push(event);\n                            unpressAllPressedKeys();\n                            event.preventDefault();\n                            break;\n                        case \"visibilitychange\":\n                            SDL.events.push({\n                                type: \"visibilitychange\",\n                                visible: !document.hidden\n                            });\n                            unpressAllPressedKeys();\n                            event.preventDefault();\n                            break;\n                        case \"unload\":\n                            if (MainLoop.runner) {\n                                SDL.events.push(event);\n                                MainLoop.runner()\n                            }\n                            return;\n                        case \"resize\":\n                            SDL.events.push(event);\n                            if (event.preventDefault) {\n                                event.preventDefault()\n                            }\n                            break\n                    }\n                    if (SDL.events.length >= 1e4) {\n                        err(\"SDL event queue full, dropping events\");\n                        SDL.events = SDL.events.slice(0, 1e4)\n                    }\n                    SDL.flushEventsToHandler();\n                    return\n                },\n                lookupKeyCodeForEvent(event) {\n                    var code = event.keyCode;\n                    if (code >= 65 && code <= 90) {\n                        code += 32\n                    } else {\n                        code = SDL.keyCodes[event.keyCode] || event.keyCode;\n                        if (event.location === 2 && code >= (224 | 1 << 10) && code <= (227 | 1 << 10)) {\n                            code += 4\n                        }\n                    }\n                    return code\n                },\n                handleEvent(event) {\n                    if (event.handled) return;\n                    event.handled = true;\n                    switch (event.type) {\n                        case \"touchstart\":\n                        case \"touchend\":\n                        case \"touchmove\": {\n                            Browser.calculateMouseEvent(event);\n                            break\n                        }\n                        case \"keydown\":\n                        case \"keyup\": {\n                            var down = event.type === \"keydown\";\n                            var code = SDL.lookupKeyCodeForEvent(event);\n                            HEAP8[SDL.keyboardState + code >>> 0] = down;\n                            SDL.modState = (HEAP8[SDL.keyboardState + 1248 >>> 0] ? 64 : 0) | (HEAP8[SDL.keyboardState + 1249 >>> 0] ? 1 : 0) | (HEAP8[SDL.keyboardState + 1250 >>> 0] ? 256 : 0) | (HEAP8[SDL.keyboardState + 1252 >>> 0] ? 128 : 0) | (HEAP8[SDL.keyboardState + 1253 >>> 0] ? 2 : 0) | (HEAP8[SDL.keyboardState + 1254 >>> 0] ? 512 : 0);\n                            if (down) {\n                                SDL.keyboardMap[code] = event.keyCode\n                            } else {\n                                delete SDL.keyboardMap[code]\n                            }\n                            break\n                        }\n                        case \"mousedown\":\n                        case \"mouseup\":\n                            if (event.type == \"mousedown\") {\n                                SDL.buttonState |= 1 << event.button\n                            } else if (event.type == \"mouseup\") {\n                                SDL.buttonState &= ~(1 << event.button)\n                            }\n                        case \"mousemove\": {\n                            Browser.calculateMouseEvent(event);\n                            break\n                        }\n                    }\n                },\n                flushEventsToHandler() {\n                    if (!SDL.eventHandler) return;\n                    while (SDL.pollEvent(SDL.eventHandlerTemp)) {\n                        getWasmTableEntry(SDL.eventHandler)(SDL.eventHandlerContext, SDL.eventHandlerTemp)\n                    }\n                },\n                pollEvent(ptr) {\n                    if (SDL.initFlags & 512 && SDL.joystickEventState) {\n                        SDL.queryJoysticks()\n                    }\n                    if (ptr) {\n                        while (SDL.events.length > 0) {\n                            if (SDL.makeCEvent(SDL.events.shift(), ptr) !== false) return 1\n                        }\n                        return 0\n                    }\n                    return SDL.events.length > 0\n                },\n                makeCEvent(event, ptr) {\n                    if (typeof event == \"number\") {\n                        _memcpy(ptr, event, 28);\n                        _free(event);\n                        return\n                    }\n                    SDL.handleEvent(event);\n                    switch (event.type) {\n                        case \"keydown\":\n                        case \"keyup\": {\n                            var down = event.type === \"keydown\";\n                            var key = SDL.lookupKeyCodeForEvent(event);\n                            var scan;\n                            if (key >= 1024) {\n                                scan = key - 1024\n                            } else {\n                                scan = SDL.scanCodes[key] || key\n                            }\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 8 >>> 0] = down ? 1 : 0;\n                            HEAP8[ptr + 9 >>> 0] = 0;\n                            HEAP32[ptr + 12 >>> 2 >>> 0] = scan;\n                            HEAP32[ptr + 16 >>> 2 >>> 0] = key;\n                            HEAP16[ptr + 20 >>> 1 >>> 0] = SDL.modState;\n                            HEAP32[ptr + 24 >>> 2 >>> 0] = event.keypressCharCode || key;\n                            break\n                        }\n                        case \"keypress\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            var cStr = intArrayFromString(String.fromCharCode(event.charCode));\n                            for (var i = 0; i < cStr.length; ++i) {\n                                HEAP8[ptr + (8 + i) >>> 0] = cStr[i]\n                            }\n                            break\n                        }\n                        case \"mousedown\":\n                        case \"mouseup\":\n                        case \"mousemove\": {\n                            if (event.type != \"mousemove\") {\n                                var down = event.type === \"mousedown\";\n                                HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                                HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 8 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 12 >>> 2 >>> 0] = 0;\n                                HEAP8[ptr + 16 >>> 0] = event.button + 1;\n                                HEAP8[ptr + 17 >>> 0] = down ? 1 : 0;\n                                HEAP32[ptr + 20 >>> 2 >>> 0] = Browser.mouseX;\n                                HEAP32[ptr + 24 >>> 2 >>> 0] = Browser.mouseY\n                            } else {\n                                HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                                HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 8 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 12 >>> 2 >>> 0] = 0;\n                                HEAP32[ptr + 16 >>> 2 >>> 0] = SDL.buttonState;\n                                HEAP32[ptr + 20 >>> 2 >>> 0] = Browser.mouseX;\n                                HEAP32[ptr + 24 >>> 2 >>> 0] = Browser.mouseY;\n                                HEAP32[ptr + 28 >>> 2 >>> 0] = Browser.mouseMovementX;\n                                HEAP32[ptr + 32 >>> 2 >>> 0] = Browser.mouseMovementY\n                            }\n                            break\n                        }\n                        case \"wheel\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 16 >>> 2 >>> 0] = event.deltaX;\n                            HEAP32[ptr + 20 >>> 2 >>> 0] = event.deltaY;\n                            break\n                        }\n                        case \"touchstart\":\n                        case \"touchend\":\n                        case \"touchmove\": {\n                            var touch = event.touch;\n                            if (!Browser.touches[touch.identifier]) break;\n                            var w = Module[\"canvas\"].width;\n                            var h = Module[\"canvas\"].height;\n                            var x = Browser.touches[touch.identifier].x / w;\n                            var y = Browser.touches[touch.identifier].y / h;\n                            var lx = Browser.lastTouches[touch.identifier].x / w;\n                            var ly = Browser.lastTouches[touch.identifier].y / h;\n                            var dx = x - lx;\n                            var dy = y - ly;\n                            if (touch[\"deviceID\"] === undefined) touch.deviceID = SDL.TOUCH_DEFAULT_ID;\n                            if (dx === 0 && dy === 0 && event.type === \"touchmove\") return false;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = _SDL_GetTicks();\n                            tempI64 = [touch.deviceID >>> 0, (tempDouble = touch.deviceID, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr + 8 >>> 2 >>> 0] = tempI64[0], HEAP32[ptr + 12 >>> 2 >>> 0] = tempI64[1];\n                            tempI64 = [touch.identifier >>> 0, (tempDouble = touch.identifier, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr + 16 >>> 2 >>> 0] = tempI64[0], HEAP32[ptr + 20 >>> 2 >>> 0] = tempI64[1];\n                            HEAPF32[ptr + 24 >>> 2 >>> 0] = x;\n                            HEAPF32[ptr + 28 >>> 2 >>> 0] = y;\n                            HEAPF32[ptr + 32 >>> 2 >>> 0] = dx;\n                            HEAPF32[ptr + 36 >>> 2 >>> 0] = dy;\n                            if (touch.force !== undefined) {\n                                HEAPF32[ptr + 40 >>> 2 >>> 0] = touch.force\n                            } else {\n                                HEAPF32[ptr + 40 >>> 2 >>> 0] = event.type == \"touchend\" ? 0 : 1\n                            }\n                            break\n                        }\n                        case \"unload\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            break\n                        }\n                        case \"resize\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = event.w;\n                            HEAP32[ptr + 8 >>> 2 >>> 0] = event.h;\n                            break\n                        }\n                        case \"joystick_button_up\":\n                        case \"joystick_button_down\": {\n                            var state = event.type === \"joystick_button_up\" ? 0 : 1;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 4 >>> 0] = event.index;\n                            HEAP8[ptr + 5 >>> 0] = event.button;\n                            HEAP8[ptr + 6 >>> 0] = state;\n                            break\n                        }\n                        case \"joystick_axis_motion\": {\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP8[ptr + 4 >>> 0] = event.index;\n                            HEAP8[ptr + 5 >>> 0] = event.axis;\n                            HEAP32[ptr + 8 >>> 2 >>> 0] = SDL.joystickAxisValueConversion(event.value);\n                            break\n                        }\n                        case \"focus\": {\n                            var SDL_WINDOWEVENT_FOCUS_GAINED = 12;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = SDL_WINDOWEVENT_FOCUS_GAINED;\n                            break\n                        }\n                        case \"blur\": {\n                            var SDL_WINDOWEVENT_FOCUS_LOST = 13;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = SDL_WINDOWEVENT_FOCUS_LOST;\n                            break\n                        }\n                        case \"visibilitychange\": {\n                            var SDL_WINDOWEVENT_SHOWN = 1;\n                            var SDL_WINDOWEVENT_HIDDEN = 2;\n                            var visibilityEventID = event.visible ? SDL_WINDOWEVENT_SHOWN : SDL_WINDOWEVENT_HIDDEN;\n                            HEAP32[ptr >>> 2 >>> 0] = SDL.DOMEventToSDLEvent[event.type];\n                            HEAP32[ptr + 4 >>> 2 >>> 0] = 0;\n                            HEAP8[ptr + 8 >>> 0] = visibilityEventID;\n                            break\n                        }\n                        default:\n                            throw \"Unhandled SDL event: \" + event.type\n                    }\n                },\n                makeFontString(height, fontName) {\n                    if (fontName.charAt(0) != \"'\" && fontName.charAt(0) != '\"') {\n                        fontName = '\"' + fontName + '\"'\n                    }\n                    return height + \"px \" + fontName + \", serif\"\n                },\n                estimateTextWidth(fontData, text) {\n                    var h = fontData.size;\n                    var fontString = SDL.makeFontString(h, fontData.name);\n                    var tempCtx = SDL.ttfContext;\n                    tempCtx.font = fontString;\n                    var ret = tempCtx.measureText(text).width | 0;\n                    return ret\n                },\n                allocateChannels(num) {\n                    if (SDL.numChannels && SDL.numChannels >= num && num != 0) return;\n                    SDL.numChannels = num;\n                    SDL.channels = [];\n                    for (var i = 0; i < num; i++) {\n                        SDL.channels[i] = {\n                            audio: null,\n                            volume: 1\n                        }\n                    }\n                },\n                setGetVolume(info, volume) {\n                    if (!info) return 0;\n                    var ret = info.volume * 128;\n                    if (volume != -1) {\n                        info.volume = Math.min(Math.max(volume, 0), 128) / 128;\n                        if (info.audio) {\n                            try {\n                                info.audio.volume = info.volume;\n                                if (info.audio.webAudioGainNode) info.audio.webAudioGainNode[\"gain\"][\"value\"] = info.volume\n                            } catch (e) {\n                                err(`setGetVolume failed to set audio volume: ${e}`)\n                            }\n                        }\n                    }\n                    return ret\n                },\n                setPannerPosition(info, x, y, z) {\n                    if (!info) return;\n                    if (info.audio) {\n                        if (info.audio.webAudioPannerNode) {\n                            info.audio.webAudioPannerNode[\"setPosition\"](x, y, z)\n                        }\n                    }\n                },\n                playWebAudio(audio) {\n                    if (!audio) return;\n                    if (audio.webAudioNode) return;\n                    if (!SDL.webAudioAvailable()) return;\n                    try {\n                        var webAudio = audio.resource.webAudio;\n                        audio.paused = false;\n                        if (!webAudio.decodedBuffer) {\n                            if (webAudio.onDecodeComplete === undefined) abort(\"Cannot play back audio object that was not loaded\");\n                            webAudio.onDecodeComplete.push(() => {\n                                if (!audio.paused) SDL.playWebAudio(audio)\n                            });\n                            return\n                        }\n                        audio.webAudioNode = SDL.audioContext[\"createBufferSource\"]();\n                        audio.webAudioNode[\"buffer\"] = webAudio.decodedBuffer;\n                        audio.webAudioNode[\"loop\"] = audio.loop;\n                        audio.webAudioNode[\"onended\"] = audio[\"onended\"];\n                        audio.webAudioPannerNode = SDL.audioContext[\"createPanner\"]();\n                        audio.webAudioPannerNode[\"setPosition\"](0, 0, -.5);\n                        audio.webAudioPannerNode[\"panningModel\"] = \"equalpower\";\n                        audio.webAudioGainNode = SDL.audioContext[\"createGain\"]();\n                        audio.webAudioGainNode[\"gain\"][\"value\"] = audio.volume;\n                        audio.webAudioNode[\"connect\"](audio.webAudioPannerNode);\n                        audio.webAudioPannerNode[\"connect\"](audio.webAudioGainNode);\n                        audio.webAudioGainNode[\"connect\"](SDL.audioContext[\"destination\"]);\n                        audio.webAudioNode[\"start\"](0, audio.currentPosition);\n                        audio.startTime = SDL.audioContext[\"currentTime\"] - audio.currentPosition\n                    } catch (e) {\n                        err(`playWebAudio failed: ${e}`)\n                    }\n                },\n                pauseWebAudio(audio) {\n                    if (!audio) return;\n                    if (audio.webAudioNode) {\n                        try {\n                            audio.currentPosition = (SDL.audioContext[\"currentTime\"] - audio.startTime) % audio.resource.webAudio.decodedBuffer.duration;\n                            audio.webAudioNode[\"onended\"] = undefined;\n                            audio.webAudioNode.stop(0);\n                            audio.webAudioNode = undefined\n                        } catch (e) {\n                            err(`pauseWebAudio failed: ${e}`)\n                        }\n                    }\n                    audio.paused = true\n                },\n                openAudioContext() {\n                    if (!SDL.audioContext) {\n                        if (typeof AudioContext != \"undefined\") SDL.audioContext = new AudioContext;\n                        else if (typeof webkitAudioContext != \"undefined\") SDL.audioContext = new webkitAudioContext\n                    }\n                },\n                webAudioAvailable: () => !!SDL.audioContext,\n                fillWebAudioBufferFromHeap(heapPtr, sizeSamplesPerChannel, dstAudioBuffer) {\n                    var audio = SDL.audio;\n                    var numChannels = audio.channels;\n                    for (var c = 0; c < numChannels; ++c) {\n                        var channelData = dstAudioBuffer[\"getChannelData\"](c);\n                        if (channelData.length != sizeSamplesPerChannel) {\n                            throw \"Web Audio output buffer length mismatch! Destination size: \" + channelData.length + \" samples vs expected \" + sizeSamplesPerChannel + \" samples!\"\n                        }\n                        if (audio.format == 32784) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                channelData[j] = HEAP16[heapPtr + (j * numChannels + c) * 2 >>> 1 >>> 0] / 32768\n                            }\n                        } else if (audio.format == 8) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                var v = HEAP8[heapPtr + (j * numChannels + c) >>> 0];\n                                channelData[j] = (v >= 0 ? v - 128 : v + 128) / 128\n                            }\n                        } else if (audio.format == 33056) {\n                            for (var j = 0; j < sizeSamplesPerChannel; ++j) {\n                                channelData[j] = HEAPF32[heapPtr + (j * numChannels + c) * 4 >>> 2 >>> 0]\n                            }\n                        } else {\n                            throw \"Invalid SDL audio format \" + audio.format + \"!\"\n                        }\n                    }\n                },\n                joystickEventState: 1,\n                lastJoystickState: {},\n                joystickNamePool: {},\n                recordJoystickState(joystick, state) {\n                    var buttons = new Array(state.buttons.length);\n                    for (var i = 0; i < state.buttons.length; i++) {\n                        buttons[i] = SDL.getJoystickButtonState(state.buttons[i])\n                    }\n                    SDL.lastJoystickState[joystick] = {\n                        buttons,\n                        axes: state.axes.slice(0),\n                        timestamp: state.timestamp,\n                        index: state.index,\n                        id: state.id\n                    }\n                },\n                getJoystickButtonState(button) {\n                    if (typeof button == \"object\") {\n                        return button[\"pressed\"]\n                    }\n                    return button > 0\n                },\n                queryJoysticks() {\n                    for (var joystick in SDL.lastJoystickState) {\n                        var state = SDL.getGamepad(joystick - 1);\n                        var prevState = SDL.lastJoystickState[joystick];\n                        if (typeof state == \"undefined\") return;\n                        if (state === null) return;\n                        if (typeof state.timestamp != \"number\" || state.timestamp != prevState.timestamp || !state.timestamp) {\n                            var i;\n                            for (i = 0; i < state.buttons.length; i++) {\n                                var buttonState = SDL.getJoystickButtonState(state.buttons[i]);\n                                if (buttonState !== prevState.buttons[i]) {\n                                    SDL.events.push({\n                                        type: buttonState ? \"joystick_button_down\" : \"joystick_button_up\",\n                                        joystick,\n                                        index: joystick - 1,\n                                        button: i\n                                    })\n                                }\n                            }\n                            for (i = 0; i < state.axes.length; i++) {\n                                if (state.axes[i] !== prevState.axes[i]) {\n                                    SDL.events.push({\n                                        type: \"joystick_axis_motion\",\n                                        joystick,\n                                        index: joystick - 1,\n                                        axis: i,\n                                        value: state.axes[i]\n                                    })\n                                }\n                            }\n                            SDL.recordJoystickState(joystick, state)\n                        }\n                    }\n                },\n                joystickAxisValueConversion(value) {\n                    value = Math.min(1, Math.max(value, -1));\n                    return Math.ceil((value + 1) * 32767.5 - 32768)\n                },\n                getGamepads() {\n                    var fcn = navigator.getGamepads || navigator.webkitGamepads || navigator.mozGamepads || navigator.gamepads || navigator.webkitGetGamepads;\n                    if (fcn !== undefined) {\n                        return fcn.apply(navigator)\n                    }\n                    return []\n                },\n                getGamepad(deviceIndex) {\n                    var gamepads = SDL.getGamepads();\n                    if (gamepads.length > deviceIndex && deviceIndex >= 0) {\n                        return gamepads[deviceIndex]\n                    }\n                    return null\n                }\n            };\n\n            function _SDL_Linked_Version() {\n                if (SDL.version === null) {\n                    SDL.version = _malloc(3);\n                    HEAP8[SDL.version >>> 0] = 1;\n                    HEAP8[SDL.version + 1 >>> 0] = 3;\n                    HEAP8[SDL.version + 2 >>> 0] = 0\n                }\n                return SDL.version\n            }\n            _SDL_Linked_Version.sig = \"p\";\n            var _SDL_Init = initFlags => {\n                SDL.startTime = Date.now();\n                SDL.initFlags = initFlags;\n                if (!Module[\"doNotCaptureKeyboard\"]) {\n                    var keyboardListeningElement = Module[\"keyboardListeningElement\"] || document;\n                    keyboardListeningElement.addEventListener(\"keydown\", SDL.receiveEvent);\n                    keyboardListeningElement.addEventListener(\"keyup\", SDL.receiveEvent);\n                    keyboardListeningElement.addEventListener(\"keypress\", SDL.receiveEvent);\n                    window.addEventListener(\"focus\", SDL.receiveEvent);\n                    window.addEventListener(\"blur\", SDL.receiveEvent);\n                    document.addEventListener(\"visibilitychange\", SDL.receiveEvent)\n                }\n                window.addEventListener(\"unload\", SDL.receiveEvent);\n                SDL.keyboardState = _calloc(65536, 1);\n                SDL.DOMEventToSDLEvent[\"keydown\"] = 768;\n                SDL.DOMEventToSDLEvent[\"keyup\"] = 769;\n                SDL.DOMEventToSDLEvent[\"keypress\"] = 771;\n                SDL.DOMEventToSDLEvent[\"mousedown\"] = 1025;\n                SDL.DOMEventToSDLEvent[\"mouseup\"] = 1026;\n                SDL.DOMEventToSDLEvent[\"mousemove\"] = 1024;\n                SDL.DOMEventToSDLEvent[\"wheel\"] = 1027;\n                SDL.DOMEventToSDLEvent[\"touchstart\"] = 1792;\n                SDL.DOMEventToSDLEvent[\"touchend\"] = 1793;\n                SDL.DOMEventToSDLEvent[\"touchmove\"] = 1794;\n                SDL.DOMEventToSDLEvent[\"unload\"] = 256;\n                SDL.DOMEventToSDLEvent[\"resize\"] = 28673;\n                SDL.DOMEventToSDLEvent[\"visibilitychange\"] = 512;\n                SDL.DOMEventToSDLEvent[\"focus\"] = 512;\n                SDL.DOMEventToSDLEvent[\"blur\"] = 512;\n                SDL.DOMEventToSDLEvent[\"joystick_axis_motion\"] = 1536;\n                SDL.DOMEventToSDLEvent[\"joystick_button_down\"] = 1539;\n                SDL.DOMEventToSDLEvent[\"joystick_button_up\"] = 1540;\n                return 0\n            };\n            _SDL_Init.sig = \"ii\";\n            var _SDL_WasInit = flags => {\n                if (SDL.startTime === null) {\n                    _SDL_Init(0)\n                }\n                return 1\n            };\n            _SDL_WasInit.sig = \"ii\";\n\n            function _SDL_GetVideoInfo() {\n                var ret = _calloc(20, 1);\n                HEAP32[ret + 12 >>> 2 >>> 0] = Module[\"canvas\"].width;\n                HEAP32[ret + 16 >>> 2 >>> 0] = Module[\"canvas\"].height;\n                return ret\n            }\n            _SDL_GetVideoInfo.sig = \"p\";\n\n            function _SDL_ListModes(format, flags) {\n                format >>>= 0;\n                return -1\n            }\n            _SDL_ListModes.sig = \"ppi\";\n            var _SDL_VideoModeOK = (width, height, depth, flags) => depth;\n            _SDL_VideoModeOK.sig = \"iiiii\";\n\n            function _SDL_VideoDriverName(buf, max_size) {\n                buf >>>= 0;\n                if (SDL.startTime === null) {\n                    return 0\n                }\n                var driverName = [101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 95, 115, 100, 108, 95, 100, 114, 105, 118, 101, 114];\n                var index = 0;\n                var size = driverName.length;\n                if (max_size <= size) {\n                    size = max_size - 1\n                }\n                while (index < size) {\n                    var value = driverName[index];\n                    HEAP8[buf + index >>> 0] = value;\n                    index++\n                }\n                HEAP8[buf + index >>> 0] = 0;\n                return buf\n            }\n            _SDL_VideoDriverName.sig = \"ppi\";\n            var _SDL_AudioDriverName = _SDL_VideoDriverName;\n            _SDL_AudioDriverName.sig = \"ppi\";\n            var _SDL_SetVideoMode = function(width, height, depth, flags) {\n                [\"touchstart\", \"touchend\", \"touchmove\", \"mousedown\", \"mouseup\", \"mousemove\", \"mousewheel\", \"wheel\", \"mouseout\", \"DOMMouseScroll\"].forEach(e => Module[\"canvas\"].addEventListener(e, SDL.receiveEvent, true));\n                var canvas = Module[\"canvas\"];\n                if (width == 0 && height == 0) {\n                    width = canvas.width;\n                    height = canvas.height\n                }\n                if (!SDL.addedResizeListener) {\n                    SDL.addedResizeListener = true;\n                    Browser.resizeListeners.push((w, h) => {\n                        if (!SDL.settingVideoMode) {\n                            SDL.receiveEvent({\n                                type: \"resize\",\n                                w,\n                                h\n                            })\n                        }\n                    })\n                }\n                SDL.settingVideoMode = true;\n                Browser.setCanvasSize(width, height);\n                SDL.settingVideoMode = false;\n                if (SDL.screen) {\n                    SDL.freeSurface(SDL.screen);\n                    assert(!SDL.screen)\n                }\n                if (SDL.GL) flags = flags | 67108864;\n                SDL.screen = SDL.makeSurface(width, height, flags, true, \"screen\");\n                return SDL.screen\n            };\n            _SDL_SetVideoMode.sig = \"piiii\";\n\n            function _SDL_GetVideoSurface() {\n                return SDL.screen\n            }\n            _SDL_GetVideoSurface.sig = \"p\";\n            var _SDL_AudioQuit = () => {\n                for (var i = 0; i < SDL.numChannels; ++i) {\n                    var chan = SDL.channels[i];\n                    if (chan.audio) {\n                        chan.audio.pause();\n                        chan.audio = undefined\n                    }\n                }\n                var audio = SDL.music.audio;\n                audio?.pause();\n                SDL.music.audio = undefined\n            };\n            _SDL_AudioQuit.sig = \"v\";\n            var _SDL_VideoQuit = () => out(\"SDL_VideoQuit called (and ignored)\");\n            _SDL_VideoQuit.sig = \"v\";\n            var _SDL_QuitSubSystem = flags => out(\"SDL_QuitSubSystem called (and ignored)\");\n            _SDL_QuitSubSystem.sig = \"vi\";\n            var _SDL_Quit = () => {\n                _SDL_AudioQuit();\n                out(\"SDL_Quit called (and ignored)\")\n            };\n            _SDL_Quit.sig = \"v\";\n\n            function _SDL_UnlockSurface(surf) {\n                surf >>>= 0;\n                assert(!SDL.GL);\n                var surfData = SDL.surfaces[surf];\n                if (!surfData.locked || --surfData.locked > 0) {\n                    return\n                }\n                if (surfData.isFlagSet(2097152)) {\n                    SDL.copyIndexedColorData(surfData)\n                } else if (!surfData.colors) {\n                    var data = surfData.image.data;\n                    var buffer = surfData.buffer;\n                    assert(buffer % 4 == 0, \"Invalid buffer offset: \" + buffer);\n                    var src = buffer >>> 2;\n                    var dst = 0;\n                    var isScreen = surf == SDL.screen;\n                    var num;\n                    if (typeof CanvasPixelArray != \"undefined\" && data instanceof CanvasPixelArray) {\n                        num = data.length;\n                        while (dst < num) {\n                            var val = HEAP32[src >>> 0];\n                            data[dst] = val & 255;\n                            data[dst + 1] = val >> 8 & 255;\n                            data[dst + 2] = val >> 16 & 255;\n                            data[dst + 3] = isScreen ? 255 : val >> 24 & 255;\n                            src++;\n                            dst += 4\n                        }\n                    } else {\n                        var data32 = new Uint32Array(data.buffer);\n                        if (isScreen && SDL.defaults.opaqueFrontBuffer) {\n                            num = data32.length;\n                            data32.set(HEAP32.subarray(src >>> 0, src + num >>> 0));\n                            var data8 = new Uint8Array(data.buffer);\n                            var i = 3;\n                            var j = i + 4 * num;\n                            if (num % 8 == 0) {\n                                while (i < j) {\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0;\n                                    data8[i] = 255;\n                                    i = i + 4 | 0\n                                }\n                            } else {\n                                while (i < j) {\n                                    data8[i] = 255;\n                                    i = i + 4 | 0\n                                }\n                            }\n                        } else {\n                            data32.set(HEAP32.subarray(src >>> 0, src + data32.length >>> 0))\n                        }\n                    }\n                } else {\n                    var width = Module[\"canvas\"].width;\n                    var height = Module[\"canvas\"].height;\n                    var s = surfData.buffer;\n                    var data = surfData.image.data;\n                    var colors = surfData.colors;\n                    for (var y = 0; y < height; y++) {\n                        var base = y * width * 4;\n                        for (var x = 0; x < width; x++) {\n                            var val = HEAPU8[s++ >>> 0] * 4;\n                            var start = base + x * 4;\n                            data[start] = colors[val];\n                            data[start + 1] = colors[val + 1];\n                            data[start + 2] = colors[val + 2]\n                        }\n                        s += width * 3\n                    }\n                }\n                surfData.ctx.putImageData(surfData.image, 0, 0)\n            }\n            _SDL_UnlockSurface.sig = \"vp\";\n\n            function _SDL_Flip(surf) {\n                surf >>>= 0\n            }\n            _SDL_Flip.sig = \"ip\";\n\n            function _SDL_UpdateRect(surf, x, y, w, h) {\n                surf >>>= 0\n            }\n            _SDL_UpdateRect.sig = \"vpiiii\";\n\n            function _SDL_UpdateRects(surf, numrects, rects) {\n                surf >>>= 0;\n                rects >>>= 0\n            }\n            _SDL_UpdateRects.sig = \"vpip\";\n            var _SDL_Delay = delay => {\n                if (!ENVIRONMENT_IS_WORKER) abort(\"SDL_Delay called on the main thread! Potential infinite loop, quitting. (consider building with async support like ASYNCIFY)\");\n                var now = Date.now();\n                while (Date.now() - now < delay) {}\n            };\n            _SDL_Delay.sig = \"vi\";\n\n            function _SDL_WM_SetCaption(title, icon) {\n                title >>>= 0;\n                icon >>>= 0;\n                if (title) {\n                    _emscripten_set_window_title(title)\n                }\n                icon &&= UTF8ToString(icon)\n            }\n            _SDL_WM_SetCaption.sig = \"vpp\";\n            var _SDL_EnableKeyRepeat = (delay, interval) => {};\n            _SDL_EnableKeyRepeat.sig = \"iii\";\n\n            function _SDL_GetKeyboardState(numKeys) {\n                numKeys >>>= 0;\n                if (numKeys) {\n                    HEAP32[numKeys >>> 2 >>> 0] = 65536\n                }\n                return SDL.keyboardState\n            }\n            _SDL_GetKeyboardState.sig = \"pp\";\n            var _SDL_GetKeyState = () => _SDL_GetKeyboardState(0);\n\n            function _SDL_GetKeyName(key) {\n                SDL.keyName ||= stringToNewUTF8(\"unknown key\");\n                return SDL.keyName\n            }\n            _SDL_GetKeyName.sig = \"pi\";\n            var _SDL_GetModState = () => SDL.modState;\n            _SDL_GetModState.sig = \"i\";\n\n            function _SDL_GetMouseState(x, y) {\n                x >>>= 0;\n                y >>>= 0;\n                if (x) HEAP32[x >>> 2 >>> 0] = Browser.mouseX;\n                if (y) HEAP32[y >>> 2 >>> 0] = Browser.mouseY;\n                return SDL.buttonState\n            }\n            _SDL_GetMouseState.sig = \"ipp\";\n            var _SDL_WarpMouse = (x, y) => {};\n            _SDL_WarpMouse.sig = \"vii\";\n            var _SDL_ShowCursor = toggle => {\n                switch (toggle) {\n                    case 0:\n                        if (Browser.isFullscreen) {\n                            Module[\"canvas\"].requestPointerLock();\n                            return 0\n                        }\n                        return 1;\n                    case 1:\n                        Module[\"canvas\"].exitPointerLock();\n                        return 1;\n                    case -1:\n                        return !Browser.pointerLock;\n                    default:\n                        err(`SDL_ShowCursor called with unknown toggle parameter value: ${toggle}`);\n                        break\n                }\n            };\n            _SDL_ShowCursor.sig = \"ii\";\n\n            function _SDL_GetError() {\n                SDL.errorMessage ||= stringToNewUTF8(\"unknown SDL-emscripten error\");\n                return SDL.errorMessage\n            }\n            _SDL_GetError.sig = \"p\";\n\n            function _SDL_SetError(fmt, varargs) {\n                fmt >>>= 0;\n                varargs >>>= 0\n            }\n            _SDL_SetError.sig = \"vpp\";\n\n            function _SDL_CreateRGBSurface(flags, width, height, depth, rmask, gmask, bmask, amask) {\n                return SDL.makeSurface(width, height, flags, false, \"CreateRGBSurface\", rmask, gmask, bmask, amask)\n            }\n            _SDL_CreateRGBSurface.sig = \"piiiiiiii\";\n\n            function _SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, rmask, gmask, bmask, amask) {\n                pixels >>>= 0;\n                var surf = SDL.makeSurface(width, height, 0, false, \"CreateRGBSurfaceFrom\", rmask, gmask, bmask, amask);\n                if (depth !== 32) {\n                    err(\"TODO: Partially unimplemented SDL_CreateRGBSurfaceFrom called!\");\n                    return surf\n                }\n                var data = SDL.surfaces[surf];\n                var image = data.ctx.createImageData(width, height);\n                var pitchOfDst = width * 4;\n                for (var row = 0; row < height; ++row) {\n                    var baseOfSrc = row * pitch;\n                    var baseOfDst = row * pitchOfDst;\n                    for (var col = 0; col < width * 4; ++col) {\n                        image.data[baseOfDst + col] = HEAPU8[pixels + (baseOfDst + col) >>> 0]\n                    }\n                }\n                data.ctx.putImageData(image, 0, 0);\n                return surf\n            }\n            _SDL_CreateRGBSurfaceFrom.sig = \"ppiiiiiiii\";\n\n            function _SDL_ConvertSurface(surf, format, flags) {\n                surf >>>= 0;\n                format >>>= 0;\n                if (format) {\n                    SDL.checkPixelFormat(format)\n                }\n                var oldData = SDL.surfaces[surf];\n                var ret = SDL.makeSurface(oldData.width, oldData.height, oldData.flags, false, \"copy:\" + oldData.source);\n                var newData = SDL.surfaces[ret];\n                newData.ctx.globalCompositeOperation = \"copy\";\n                newData.ctx.drawImage(oldData.canvas, 0, 0);\n                newData.ctx.globalCompositeOperation = oldData.ctx.globalCompositeOperation;\n                return ret\n            }\n            _SDL_ConvertSurface.sig = \"pppi\";\n\n            function _SDL_DisplayFormatAlpha(surf) {\n                surf >>>= 0;\n                return _SDL_ConvertSurface(surf, 0, 0)\n            }\n            _SDL_DisplayFormatAlpha.sig = \"pp\";\n\n            function _SDL_FreeSurface(surf) {\n                surf >>>= 0;\n                if (surf) SDL.freeSurface(surf)\n            }\n            _SDL_FreeSurface.sig = \"vp\";\n\n            function _SDL_UpperBlit(src, srcrect, dst, dstrect) {\n                src >>>= 0;\n                srcrect >>>= 0;\n                dst >>>= 0;\n                dstrect >>>= 0;\n                return SDL.blitSurface(src, srcrect, dst, dstrect, false)\n            }\n            _SDL_UpperBlit.sig = \"ipppp\";\n\n            function _SDL_UpperBlitScaled(src, srcrect, dst, dstrect) {\n                src >>>= 0;\n                srcrect >>>= 0;\n                dst >>>= 0;\n                dstrect >>>= 0;\n                return SDL.blitSurface(src, srcrect, dst, dstrect, true)\n            }\n            _SDL_UpperBlitScaled.sig = \"ipppp\";\n            var _SDL_LowerBlit = _SDL_UpperBlit;\n            _SDL_LowerBlit.sig = \"ipppp\";\n            var _SDL_LowerBlitScaled = _SDL_UpperBlitScaled;\n            _SDL_LowerBlitScaled.sig = \"ipppp\";\n\n            function _SDL_GetClipRect(surf, rect) {\n                surf >>>= 0;\n                rect >>>= 0;\n                assert(rect);\n                var surfData = SDL.surfaces[surf];\n                var r = surfData.clipRect || {\n                    x: 0,\n                    y: 0,\n                    w: surfData.width,\n                    h: surfData.height\n                };\n                SDL.updateRect(rect, r)\n            }\n            _SDL_GetClipRect.sig = \"vpp\";\n\n            function _SDL_SetClipRect(surf, rect) {\n                surf >>>= 0;\n                rect >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                if (rect) {\n                    surfData.clipRect = SDL.intersectionOfRects({\n                        x: 0,\n                        y: 0,\n                        w: surfData.width,\n                        h: surfData.height\n                    }, SDL.loadRect(rect))\n                } else {\n                    delete surfData.clipRect\n                }\n            }\n            _SDL_SetClipRect.sig = \"ipp\";\n\n            function _SDL_FillRect(surf, rect, color) {\n                surf >>>= 0;\n                rect >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                assert(!surfData.locked);\n                if (surfData.isFlagSet(2097152)) {\n                    color = surfData.colors32[color]\n                }\n                var r = rect ? SDL.loadRect(rect) : {\n                    x: 0,\n                    y: 0,\n                    w: surfData.width,\n                    h: surfData.height\n                };\n                if (surfData.clipRect) {\n                    r = SDL.intersectionOfRects(surfData.clipRect, r);\n                    if (rect) {\n                        SDL.updateRect(rect, r)\n                    }\n                }\n                surfData.ctx.save();\n                surfData.ctx.fillStyle = SDL.translateColorToCSSRGBA(color);\n                surfData.ctx.fillRect(r.x, r.y, r.w, r.h);\n                surfData.ctx.restore();\n                return 0\n            }\n            _SDL_FillRect.sig = \"ippi\";\n\n            function _zoomSurface(src, x, y, smooth) {\n                src >>>= 0;\n                var srcData = SDL.surfaces[src];\n                var w = srcData.width * x;\n                var h = srcData.height * y;\n                var ret = SDL.makeSurface(Math.abs(w), Math.abs(h), srcData.flags, false, \"zoomSurface\");\n                var dstData = SDL.surfaces[ret];\n                if (x >= 0 && y >= 0) dstData.ctx.drawImage(srcData.canvas, 0, 0, w, h);\n                else {\n                    dstData.ctx.save();\n                    dstData.ctx.scale(x < 0 ? -1 : 1, y < 0 ? -1 : 1);\n                    dstData.ctx.drawImage(srcData.canvas, w < 0 ? w : 0, h < 0 ? h : 0, Math.abs(w), Math.abs(h));\n                    dstData.ctx.restore()\n                }\n                return ret\n            }\n            _zoomSurface.sig = \"ppddi\";\n\n            function _rotozoomSurface(src, angle, zoom, smooth) {\n                src >>>= 0;\n                if (angle % 360 === 0) {\n                    return _zoomSurface(src, zoom, zoom, smooth)\n                }\n                var srcData = SDL.surfaces[src];\n                var w = srcData.width * zoom;\n                var h = srcData.height * zoom;\n                var diagonal = Math.ceil(Math.sqrt(Math.pow(w, 2) + Math.pow(h, 2)));\n                var ret = SDL.makeSurface(diagonal, diagonal, srcData.flags, false, \"rotozoomSurface\");\n                var dstData = SDL.surfaces[ret];\n                dstData.ctx.translate(diagonal / 2, diagonal / 2);\n                dstData.ctx.rotate(-angle * Math.PI / 180);\n                dstData.ctx.drawImage(srcData.canvas, -w / 2, -h / 2, w, h);\n                return ret\n            }\n            _rotozoomSurface.sig = \"ppddi\";\n\n            function _SDL_SetAlpha(surf, flag, alpha) {\n                surf >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                surfData.alpha = alpha;\n                if (!(flag & 65536)) {\n                    surfData.alpha = 255\n                }\n            }\n            _SDL_SetAlpha.sig = \"ipii\";\n\n            function _SDL_SetColorKey(surf, flag, key) {\n                surf >>>= 0;\n                warnOnce(\"SDL_SetColorKey is a no-op for performance reasons\");\n                return 0\n            }\n            _SDL_SetColorKey.sig = \"ipii\";\n\n            function _SDL_PollEvent(ptr) {\n                ptr >>>= 0;\n                return SDL.pollEvent(ptr)\n            }\n            _SDL_PollEvent.sig = \"ip\";\n\n            function _SDL_PushEvent(ptr) {\n                ptr >>>= 0;\n                var copy = _malloc(28);\n                _memcpy(copy, ptr, 28);\n                SDL.events.push(copy);\n                return 0\n            }\n            _SDL_PushEvent.sig = \"ip\";\n\n            function _SDL_PeepEvents(events, requestedEventCount, action, from, to) {\n                events >>>= 0;\n                switch (action) {\n                    case 2: {\n                        assert(requestedEventCount == 1);\n                        var index = 0;\n                        var retrievedEventCount = 0;\n                        while (index < SDL.events.length && retrievedEventCount < requestedEventCount) {\n                            var event = SDL.events[index];\n                            var type = SDL.DOMEventToSDLEvent[event.type];\n                            if (from <= type && type <= to) {\n                                if (SDL.makeCEvent(event, events) === false) {\n                                    index++\n                                } else {\n                                    SDL.events.splice(index, 1);\n                                    retrievedEventCount++\n                                }\n                            } else {\n                                index++\n                            }\n                        }\n                        return retrievedEventCount\n                    }\n                    default:\n                        throw \"SDL_PeepEvents does not yet support that action: \" + action\n                }\n            }\n            _SDL_PeepEvents.sig = \"ipiiii\";\n            var _SDL_PumpEvents = () => SDL.events.forEach(SDL.handleEvent);\n            _SDL_PumpEvents.sig = \"v\";\n\n            function _emscripten_SDL_SetEventHandler(handler, userdata) {\n                handler >>>= 0;\n                userdata >>>= 0;\n                SDL.eventHandler = handler;\n                SDL.eventHandlerContext = userdata;\n                SDL.eventHandlerTemp ||= _malloc(28)\n            }\n            _emscripten_SDL_SetEventHandler.sig = \"vpp\";\n\n            function _SDL_SetColors(surf, colors, firstColor, nColors) {\n                surf >>>= 0;\n                colors >>>= 0;\n                var surfData = SDL.surfaces[surf];\n                if (!surfData.colors) {\n                    var buffer = new ArrayBuffer(256 * 4);\n                    surfData.colors = new Uint8Array(buffer);\n                    surfData.colors32 = new Uint32Array(buffer)\n                }\n                for (var i = 0; i < nColors; ++i) {\n                    var index = (firstColor + i) * 4;\n                    surfData.colors[index] = HEAPU8[colors + i * 4 >>> 0];\n                    surfData.colors[index + 1] = HEAPU8[colors + (i * 4 + 1) >>> 0];\n                    surfData.colors[index + 2] = HEAPU8[colors + (i * 4 + 2) >>> 0];\n                    surfData.colors[index + 3] = 255\n                }\n                return 1\n            }\n            _SDL_SetColors.sig = \"ippii\";\n\n            function _SDL_SetPalette(surf, flags, colors, firstColor, nColors) {\n                surf >>>= 0;\n                colors >>>= 0;\n                return _SDL_SetColors(surf, colors, firstColor, nColors)\n            }\n            _SDL_SetPalette.sig = \"ipipii\";\n\n            function _SDL_MapRGB(fmt, r, g, b) {\n                fmt >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                return r & 255 | (g & 255) << 8 | (b & 255) << 16 | 4278190080\n            }\n            _SDL_MapRGB.sig = \"ipiii\";\n\n            function _SDL_MapRGBA(fmt, r, g, b, a) {\n                fmt >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                return r & 255 | (g & 255) << 8 | (b & 255) << 16 | (a & 255) << 24\n            }\n            _SDL_MapRGBA.sig = \"ipiiii\";\n\n            function _SDL_GetRGB(pixel, fmt, r, g, b) {\n                fmt >>>= 0;\n                r >>>= 0;\n                g >>>= 0;\n                b >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                if (r) {\n                    HEAP8[r >>> 0] = pixel & 255\n                }\n                if (g) {\n                    HEAP8[g >>> 0] = pixel >> 8 & 255\n                }\n                if (b) {\n                    HEAP8[b >>> 0] = pixel >> 16 & 255\n                }\n            }\n            _SDL_GetRGB.sig = \"vipppp\";\n\n            function _SDL_GetRGBA(pixel, fmt, r, g, b, a) {\n                fmt >>>= 0;\n                r >>>= 0;\n                g >>>= 0;\n                b >>>= 0;\n                a >>>= 0;\n                SDL.checkPixelFormat(fmt);\n                if (r) {\n                    HEAP8[r >>> 0] = pixel & 255\n                }\n                if (g) {\n                    HEAP8[g >>> 0] = pixel >> 8 & 255\n                }\n                if (b) {\n                    HEAP8[b >>> 0] = pixel >> 16 & 255\n                }\n                if (a) {\n                    HEAP8[a >>> 0] = pixel >> 24 & 255\n                }\n            }\n            _SDL_GetRGBA.sig = \"vippppp\";\n            var _SDL_GetAppState = () => {\n                var state = 0;\n                if (Browser.pointerLock) {\n                    state |= 1\n                }\n                if (document.hasFocus()) {\n                    state |= 2\n                }\n                state |= 4;\n                return state\n            };\n            _SDL_GetAppState.sig = \"i\";\n            var _SDL_WM_GrabInput = () => {};\n            _SDL_WM_GrabInput.sig = \"ii\";\n\n            function _SDL_WM_ToggleFullScreen(surf) {\n                surf >>>= 0;\n                if (Browser.exitFullscreen()) {\n                    return 1\n                }\n                if (!SDL.canRequestFullscreen) {\n                    return 0\n                }\n                SDL.isRequestingFullscreen = true;\n                return 1\n            }\n            _SDL_WM_ToggleFullScreen.sig = \"ip\";\n            var _IMG_Init = flags => flags;\n            _IMG_Init.sig = \"ii\";\n\n            function _SDL_FreeRW(rwopsID) {\n                rwopsID >>>= 0;\n                SDL.rwops[rwopsID] = null;\n                while (SDL.rwops.length > 0 && SDL.rwops[SDL.rwops.length - 1] === null) {\n                    SDL.rwops.pop()\n                }\n            }\n            _SDL_FreeRW.sig = \"vp\";\n            var _IMG_Load_RW = function(rwopsID, freeSrc) {\n                rwopsID >>>= 0;\n                var sp = stackSave();\n                try {\n                    var cleanup = () => {\n                        stackRestore(sp);\n                        if (rwops && freeSrc) _SDL_FreeRW(rwopsID)\n                    };\n                    var addCleanup = func => {\n                        var old = cleanup;\n                        cleanup = () => {\n                            old();\n                            func()\n                        }\n                    };\n                    var callStbImage = (func, params) => {\n                        var x = stackAlloc(4);\n                        var y = stackAlloc(4);\n                        var comp = stackAlloc(4);\n                        var data = Module[\"_\" + func](...params, x, y, comp, 0);\n                        if (!data) return null;\n                        addCleanup(() => Module[\"_stbi_image_free\"](data));\n                        return {\n                            rawData: true,\n                            data,\n                            width: HEAP32[x >>> 2 >>> 0],\n                            height: HEAP32[y >>> 2 >>> 0],\n                            size: HEAP32[x >>> 2 >>> 0] * HEAP32[y >>> 2 >>> 0] * HEAP32[comp >>> 2 >>> 0],\n                            bpp: HEAP32[comp >>> 2 >>> 0]\n                        }\n                    };\n                    var rwops = SDL.rwops[rwopsID];\n                    if (rwops === undefined) {\n                        return 0\n                    }\n                    var raw;\n                    var filename = rwops.filename;\n                    if (filename === undefined) {\n                        warnOnce(\"Only file names that have been preloaded are supported for IMG_Load_RW. Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins\");\n                        return 0\n                    }\n                    if (!raw) {\n                        filename = PATH_FS.resolve(filename);\n                        raw = preloadedImages[filename];\n                        if (!raw) {\n                            if (raw === null) err(\"Trying to reuse preloaded image, but freePreloadedMediaOnUse is set!\");\n                            warnOnce(\"Cannot find preloaded image \" + filename);\n                            warnOnce(\"Cannot find preloaded image \" + filename + \". Consider using STB_IMAGE=1 if you want synchronous image decoding (see settings.js), or package files with --use-preload-plugins\");\n                            return 0\n                        } else if (Module[\"freePreloadedMediaOnUse\"]) {\n                            preloadedImages[filename] = null\n                        }\n                    }\n                    var surf = SDL.makeSurface(raw.width, raw.height, 0, false, \"load:\" + filename);\n                    var surfData = SDL.surfaces[surf];\n                    surfData.ctx.globalCompositeOperation = \"copy\";\n                    if (!raw.rawData) {\n                        surfData.ctx.drawImage(raw, 0, 0, raw.width, raw.height, 0, 0, raw.width, raw.height)\n                    } else {\n                        var imageData = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height);\n                        if (raw.bpp == 4) {\n                            imageData.data.set(HEAPU8.subarray(raw.data >>> 0, raw.data + raw.size >>> 0))\n                        } else if (raw.bpp == 3) {\n                            var pixels = raw.size / 3;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = 255\n                            }\n                        } else if (raw.bpp == 2) {\n                            var pixels = raw.size;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                var gray = HEAPU8[sourcePtr++ >>> 0];\n                                var alpha = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = gray;\n                                data[destPtr++] = gray;\n                                data[destPtr++] = gray;\n                                data[destPtr++] = alpha\n                            }\n                        } else if (raw.bpp == 1) {\n                            var pixels = raw.size;\n                            var data = imageData.data;\n                            var sourcePtr = raw.data;\n                            var destPtr = 0;\n                            for (var i = 0; i < pixels; i++) {\n                                var value = HEAPU8[sourcePtr++ >>> 0];\n                                data[destPtr++] = value;\n                                data[destPtr++] = value;\n                                data[destPtr++] = value;\n                                data[destPtr++] = 255\n                            }\n                        } else {\n                            err(`cannot handle bpp ${raw.bpp}`);\n                            return 0\n                        }\n                        surfData.ctx.putImageData(imageData, 0, 0)\n                    }\n                    surfData.ctx.globalCompositeOperation = \"source-over\";\n                    _SDL_LockSurface(surf);\n                    surfData.locked--;\n                    if (SDL.GL) {\n                        surfData.canvas = surfData.ctx = null\n                    }\n                    return surf\n                } finally {\n                    cleanup()\n                }\n            };\n            _IMG_Load_RW.sig = \"ppi\";\n            var _SDL_LoadBMP_RW = _IMG_Load_RW;\n            _SDL_LoadBMP_RW.sig = \"ppi\";\n\n            function _SDL_RWFromFile(_name, mode) {\n                _name >>>= 0;\n                mode >>>= 0;\n                var id = SDL.rwops.length;\n                var filename = UTF8ToString(_name);\n                SDL.rwops.push({\n                    filename,\n                    mimetype: Browser.getMimetype(filename)\n                });\n                return id\n            }\n            _SDL_RWFromFile.sig = \"ppp\";\n\n            function _IMG_Load(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _IMG_Load_RW(rwops, 1);\n                return result\n            }\n            _IMG_Load.sig = \"pp\";\n            var _IMG_Quit = () => out(\"IMG_Quit called (and ignored)\");\n            _IMG_Quit.sig = \"v\";\n\n            function _SDL_OpenAudio(desired, obtained) {\n                desired >>>= 0;\n                obtained >>>= 0;\n                try {\n                    SDL.audio = {\n                        freq: HEAPU32[desired >>> 2 >>> 0],\n                        format: HEAPU16[desired + 4 >>> 1 >>> 0],\n                        channels: HEAPU8[desired + 6 >>> 0],\n                        samples: HEAPU16[desired + 8 >>> 1 >>> 0],\n                        callback: HEAPU32[desired + 16 >>> 2 >>> 0],\n                        userdata: HEAPU32[desired + 20 >>> 2 >>> 0],\n                        paused: true,\n                        timer: null\n                    };\n                    if (SDL.audio.format == 8) {\n                        SDL.audio.silence = 128\n                    } else if (SDL.audio.format == 32784) {\n                        SDL.audio.silence = 0\n                    } else if (SDL.audio.format == 33056) {\n                        SDL.audio.silence = 0\n                    } else {\n                        throw \"Invalid SDL audio format \" + SDL.audio.format + \"!\"\n                    }\n                    if (SDL.audio.freq <= 0) {\n                        throw \"Unsupported sound frequency \" + SDL.audio.freq + \"!\"\n                    } else if (SDL.audio.freq <= 22050) {\n                        SDL.audio.freq = 22050\n                    } else if (SDL.audio.freq <= 32e3) {\n                        SDL.audio.freq = 32e3\n                    } else if (SDL.audio.freq <= 44100) {\n                        SDL.audio.freq = 44100\n                    } else if (SDL.audio.freq <= 48e3) {\n                        SDL.audio.freq = 48e3\n                    } else if (SDL.audio.freq <= 96e3) {\n                        SDL.audio.freq = 96e3\n                    } else {\n                        throw `Unsupported sound frequency ${SDL.audio.freq}!`\n                    }\n                    if (SDL.audio.channels == 0) {\n                        SDL.audio.channels = 1\n                    } else if (SDL.audio.channels < 0 || SDL.audio.channels > 32) {\n                        throw `Unsupported number of audio channels for SDL audio: ${SDL.audio.channels}!`\n                    } else if (SDL.audio.channels != 1 && SDL.audio.channels != 2) {\n                        out(`Warning: Using untested number of audio channels ${SDL.audio.channels}`)\n                    }\n                    if (SDL.audio.samples < 128 || SDL.audio.samples > 524288) {\n                        throw `Unsupported audio callback buffer size ${SDL.audio.samples}!`\n                    } else if ((SDL.audio.samples & SDL.audio.samples - 1) != 0) {\n                        throw `Audio callback buffer size ${SDL.audio.samples} must be a power-of-two!`\n                    }\n                    var totalSamples = SDL.audio.samples * SDL.audio.channels;\n                    if (SDL.audio.format == 8) {\n                        SDL.audio.bytesPerSample = 1\n                    } else if (SDL.audio.format == 32784) {\n                        SDL.audio.bytesPerSample = 2\n                    } else if (SDL.audio.format == 33056) {\n                        SDL.audio.bytesPerSample = 4\n                    } else {\n                        throw `Invalid SDL audio format ${SDL.audio.format}!`\n                    }\n                    SDL.audio.bufferSize = totalSamples * SDL.audio.bytesPerSample;\n                    SDL.audio.bufferDurationSecs = SDL.audio.bufferSize / SDL.audio.bytesPerSample / SDL.audio.channels / SDL.audio.freq;\n                    SDL.audio.bufferingDelay = 50 / 1e3;\n                    SDL.audio.buffer = _malloc(SDL.audio.bufferSize);\n                    SDL.audio.numSimultaneouslyQueuedBuffers = Module[\"SDL_numSimultaneouslyQueuedBuffers\"] || 5;\n                    SDL.audio.queueNewAudioData = () => {\n                        if (!SDL.audio) return;\n                        for (var i = 0; i < SDL.audio.numSimultaneouslyQueuedBuffers; ++i) {\n                            var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext[\"currentTime\"];\n                            if (secsUntilNextPlayStart >= SDL.audio.bufferingDelay + SDL.audio.bufferDurationSecs * SDL.audio.numSimultaneouslyQueuedBuffers) return;\n                            getWasmTableEntry(SDL.audio.callback)(SDL.audio.userdata, SDL.audio.buffer, SDL.audio.bufferSize);\n                            SDL.audio.pushAudio(SDL.audio.buffer, SDL.audio.bufferSize)\n                        }\n                    };\n                    SDL.audio.caller = () => {\n                        if (!SDL.audio) return;\n                        --SDL.audio.numAudioTimersPending;\n                        SDL.audio.queueNewAudioData();\n                        var secsUntilNextPlayStart = SDL.audio.nextPlayTime - SDL.audioContext[\"currentTime\"];\n                        var preemptBufferFeedSecs = SDL.audio.bufferDurationSecs / 2;\n                        if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n                            ++SDL.audio.numAudioTimersPending;\n                            SDL.audio.timer = safeSetTimeout(SDL.audio.caller, Math.max(0, 1e3 * (secsUntilNextPlayStart - preemptBufferFeedSecs)));\n                            if (SDL.audio.numAudioTimersPending < SDL.audio.numSimultaneouslyQueuedBuffers) {\n                                ++SDL.audio.numAudioTimersPending;\n                                safeSetTimeout(SDL.audio.caller, 1)\n                            }\n                        }\n                    };\n                    SDL.audio.audioOutput = new Audio;\n                    SDL.openAudioContext();\n                    if (!SDL.audioContext) throw \"Web Audio API is not available!\";\n                    autoResumeAudioContext(SDL.audioContext);\n                    SDL.audio.nextPlayTime = 0;\n                    SDL.audio.pushAudio = (ptr, sizeBytes) => {\n                        try {\n                            if (SDL.audio.paused) return;\n                            var sizeSamples = sizeBytes / SDL.audio.bytesPerSample;\n                            var sizeSamplesPerChannel = sizeSamples / SDL.audio.channels;\n                            if (sizeSamplesPerChannel != SDL.audio.samples) {\n                                throw \"Received mismatching audio buffer size!\"\n                            }\n                            var source = SDL.audioContext[\"createBufferSource\"]();\n                            var soundBuffer = SDL.audioContext[\"createBuffer\"](SDL.audio.channels, sizeSamplesPerChannel, SDL.audio.freq);\n                            source[\"connect\"](SDL.audioContext[\"destination\"]);\n                            SDL.fillWebAudioBufferFromHeap(ptr, sizeSamplesPerChannel, soundBuffer);\n                            source[\"buffer\"] = soundBuffer;\n                            var curtime = SDL.audioContext[\"currentTime\"];\n                            var playtime = Math.max(curtime + SDL.audio.bufferingDelay, SDL.audio.nextPlayTime);\n                            if (typeof source[\"start\"] != \"undefined\") {\n                                source[\"start\"](playtime)\n                            } else if (typeof source[\"noteOn\"] != \"undefined\") {\n                                source[\"noteOn\"](playtime)\n                            }\n                            SDL.audio.nextPlayTime = playtime + SDL.audio.bufferDurationSecs\n                        } catch (e) {\n                            err(`Web Audio API error playing back audio: ${e.toString()}`)\n                        }\n                    };\n                    if (obtained) {\n                        HEAP32[obtained >>> 2 >>> 0] = SDL.audio.freq;\n                        HEAP16[obtained + 4 >>> 1 >>> 0] = SDL.audio.format;\n                        HEAP8[obtained + 6 >>> 0] = SDL.audio.channels;\n                        HEAP8[obtained + 7 >>> 0] = SDL.audio.silence;\n                        HEAP16[obtained + 8 >>> 1 >>> 0] = SDL.audio.samples;\n                        HEAPU32[obtained + 16 >>> 2 >>> 0] = SDL.audio.callback;\n                        HEAPU32[obtained + 20 >>> 2 >>> 0] = SDL.audio.userdata\n                    }\n                    SDL.allocateChannels(32)\n                } catch (e) {\n                    err(`Initializing SDL audio threw an exception: \"${e.toString()}\"! Continuing without audio`);\n                    SDL.audio = null;\n                    SDL.allocateChannels(0);\n                    if (obtained) {\n                        HEAP32[obtained >>> 2 >>> 0] = 0;\n                        HEAP16[obtained + 4 >>> 1 >>> 0] = 0;\n                        HEAP8[obtained + 6 >>> 0] = 0;\n                        HEAP8[obtained + 7 >>> 0] = 0;\n                        HEAP16[obtained + 8 >>> 1 >>> 0] = 0;\n                        HEAPU32[obtained + 16 >>> 2 >>> 0] = 0;\n                        HEAPU32[obtained + 20 >>> 2 >>> 0] = 0\n                    }\n                }\n                if (!SDL.audio) {\n                    return -1\n                }\n                return 0\n            }\n            _SDL_OpenAudio.sig = \"ipp\";\n            var _SDL_PauseAudio = pauseOn => {\n                if (!SDL.audio) {\n                    return\n                }\n                if (pauseOn) {\n                    if (SDL.audio.timer !== undefined) {\n                        clearTimeout(SDL.audio.timer);\n                        SDL.audio.numAudioTimersPending = 0;\n                        SDL.audio.timer = undefined\n                    }\n                } else if (!SDL.audio.timer) {\n                    SDL.audio.numAudioTimersPending = 1;\n                    SDL.audio.timer = safeSetTimeout(SDL.audio.caller, 1)\n                }\n                SDL.audio.paused = pauseOn\n            };\n            _SDL_PauseAudio.sig = \"vi\";\n            var _SDL_CloseAudio = () => {\n                if (SDL.audio) {\n                    if (SDL.audio.callbackRemover) {\n                        SDL.audio.callbackRemover();\n                        SDL.audio.callbackRemover = null\n                    }\n                    _SDL_PauseAudio(1);\n                    _free(SDL.audio.buffer);\n                    SDL.audio = null;\n                    SDL.allocateChannels(0)\n                }\n            };\n            _SDL_CloseAudio.sig = \"v\";\n            var _SDL_LockAudio = () => {};\n            _SDL_LockAudio.sig = \"v\";\n            var _SDL_UnlockAudio = () => {};\n            _SDL_UnlockAudio.sig = \"v\";\n\n            function _SDL_CreateMutex() {\n                return 0\n            }\n            _SDL_CreateMutex.sig = \"p\";\n\n            function _SDL_mutexP(mutex) {\n                mutex >>>= 0;\n                return 0\n            }\n            _SDL_mutexP.sig = \"ip\";\n\n            function _SDL_mutexV(mutex) {\n                mutex >>>= 0;\n                return 0\n            }\n            _SDL_mutexV.sig = \"ip\";\n\n            function _SDL_DestroyMutex(mutex) {\n                mutex >>>= 0\n            }\n            _SDL_DestroyMutex.sig = \"vp\";\n\n            function _SDL_CreateCond() {\n                return 0\n            }\n            _SDL_CreateCond.sig = \"p\";\n\n            function _SDL_CondSignal(cond) {\n                cond >>>= 0\n            }\n            _SDL_CondSignal.sig = \"ip\";\n\n            function _SDL_CondWait(cond, mutex) {\n                cond >>>= 0;\n                mutex >>>= 0\n            }\n            _SDL_CondWait.sig = \"ipp\";\n\n            function _SDL_DestroyCond(cond) {\n                cond >>>= 0\n            }\n            _SDL_DestroyCond.sig = \"vp\";\n            var _SDL_StartTextInput = () => {\n                SDL.textInput = true\n            };\n            _SDL_StartTextInput.sig = \"v\";\n            var _SDL_StopTextInput = () => {\n                SDL.textInput = false\n            };\n            _SDL_StopTextInput.sig = \"v\";\n            var _Mix_Init = flags => {\n                if (!flags) return 0;\n                return 8\n            };\n            _Mix_Init.sig = \"ii\";\n            var _Mix_Quit = () => {};\n            _Mix_Quit.sig = \"v\";\n            var _Mix_OpenAudio = (frequency, format, channels, chunksize) => {\n                SDL.openAudioContext();\n                autoResumeAudioContext(SDL.audioContext);\n                SDL.allocateChannels(32);\n                SDL.mixerFrequency = frequency;\n                SDL.mixerFormat = format;\n                SDL.mixerNumChannels = channels;\n                SDL.mixerChunkSize = chunksize;\n                return 0\n            };\n            _Mix_OpenAudio.sig = \"iiiii\";\n            var _Mix_CloseAudio = _SDL_CloseAudio;\n            _Mix_CloseAudio.sig = \"v\";\n            var _Mix_AllocateChannels = num => {\n                SDL.allocateChannels(num);\n                return num\n            };\n            _Mix_AllocateChannels.sig = \"ii\";\n\n            function _Mix_ChannelFinished(func) {\n                func >>>= 0;\n                SDL.channelFinished = func\n            }\n            _Mix_ChannelFinished.sig = \"vp\";\n            var _Mix_Volume = (channel, volume) => {\n                if (channel == -1) {\n                    for (var i = 0; i < SDL.numChannels - 1; i++) {\n                        _Mix_Volume(i, volume)\n                    }\n                    return _Mix_Volume(SDL.numChannels - 1, volume)\n                }\n                return SDL.setGetVolume(SDL.channels[channel], volume)\n            };\n            _Mix_Volume.sig = \"iii\";\n            var _Mix_SetPanning = (channel, left, right) => {\n                left /= 255;\n                right /= 255;\n                SDL.setPannerPosition(SDL.channels[channel], right - left, 0, .1);\n                return 1\n            };\n            _Mix_SetPanning.sig = \"iiii\";\n\n            function _Mix_LoadWAV_RW(rwopsID, freesrc) {\n                rwopsID >>>= 0;\n                var rwops = SDL.rwops[rwopsID];\n                if (rwops === undefined) return 0;\n                var filename = \"\";\n                var audio;\n                var webAudio;\n                var bytes;\n                if (rwops.filename !== undefined) {\n                    filename = PATH_FS.resolve(rwops.filename);\n                    var raw = preloadedAudios[filename];\n                    if (!raw) {\n                        if (raw === null) err(\"Trying to reuse preloaded audio, but freePreloadedMediaOnUse is set!\");\n                        if (!Module[\"noAudioDecoding\"]) warnOnce(\"Cannot find preloaded audio \" + filename);\n                        try {\n                            bytes = FS.readFile(filename)\n                        } catch (e) {\n                            err(`Couldn't find file for: ${filename}`);\n                            return 0\n                        }\n                    }\n                    if (Module[\"freePreloadedMediaOnUse\"]) {\n                        preloadedAudios[filename] = null\n                    }\n                    audio = raw\n                } else if (rwops.bytes !== undefined) {\n                    if (SDL.webAudioAvailable()) bytes = HEAPU8.buffer.slice(rwops.bytes, rwops.bytes + rwops.count);\n                    else bytes = HEAPU8.subarray(rwops.bytes >>> 0, rwops.bytes + rwops.count >>> 0)\n                } else {\n                    return 0\n                }\n                var arrayBuffer = bytes ? bytes.buffer || bytes : bytes;\n                var canPlayWithWebAudio = Module[\"SDL_canPlayWithWebAudio\"] === undefined || Module[\"SDL_canPlayWithWebAudio\"](filename, arrayBuffer);\n                if (bytes !== undefined && SDL.webAudioAvailable() && canPlayWithWebAudio) {\n                    audio = undefined;\n                    webAudio = {};\n                    webAudio.onDecodeComplete = [];\n                    var onDecodeComplete = data => {\n                        webAudio.decodedBuffer = data;\n                        webAudio.onDecodeComplete.forEach(e => e());\n                        webAudio.onDecodeComplete = undefined\n                    };\n                    SDL.audioContext[\"decodeAudioData\"](arrayBuffer, onDecodeComplete)\n                } else if (audio === undefined && bytes) {\n                    var blob = new Blob([bytes], {\n                        type: rwops.mimetype\n                    });\n                    var url = URL.createObjectURL(blob);\n                    audio = new Audio;\n                    audio.src = url;\n                    audio.mozAudioChannelType = \"content\"\n                }\n                var id = SDL.audios.length;\n                SDL.audios.push({\n                    source: filename,\n                    audio,\n                    webAudio\n                });\n                return id\n            }\n            _Mix_LoadWAV_RW.sig = \"ppi\";\n\n            function _Mix_LoadWAV(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _Mix_LoadWAV_RW(rwops, 0);\n                _SDL_FreeRW(rwops);\n                return result\n            }\n            _Mix_LoadWAV.sig = \"pp\";\n\n            function _Mix_QuickLoad_RAW(mem, len) {\n                mem >>>= 0;\n                var audio;\n                var webAudio;\n                var numSamples = len >> 1;\n                var buffer = new Float32Array(numSamples);\n                for (var i = 0; i < numSamples; ++i) {\n                    buffer[i] = HEAP16[mem + i * 2 >>> 1 >>> 0] / 32768\n                }\n                if (SDL.webAudioAvailable()) {\n                    webAudio = {};\n                    webAudio.decodedBuffer = buffer\n                } else {\n                    audio = new Audio;\n                    audio.mozAudioChannelType = \"content\";\n                    audio.numChannels = SDL.mixerNumChannels;\n                    audio.frequency = SDL.mixerFrequency\n                }\n                var id = SDL.audios.length;\n                SDL.audios.push({\n                    source: \"\",\n                    audio,\n                    webAudio,\n                    buffer\n                });\n                return id\n            }\n            _Mix_QuickLoad_RAW.sig = \"ppi\";\n\n            function _Mix_FreeChunk(id) {\n                id >>>= 0;\n                SDL.audios[id] = null\n            }\n            _Mix_FreeChunk.sig = \"vp\";\n            var _Mix_ReserveChannels = num => {\n                SDL.channelMinimumNumber = num\n            };\n            _Mix_ReserveChannels.sig = \"ii\";\n            var _Mix_HaltChannel = channel => {\n                function halt(channel) {\n                    var info = SDL.channels[channel];\n                    if (info.audio) {\n                        info.audio.pause();\n                        info.audio = null\n                    }\n                    if (SDL.channelFinished) {\n                        getWasmTableEntry(SDL.channelFinished)(channel)\n                    }\n                }\n                if (channel != -1) {\n                    halt(channel)\n                } else {\n                    for (var i = 0; i < SDL.channels.length; ++i) halt(i)\n                }\n                return 0\n            };\n            _Mix_HaltChannel.sig = \"ii\";\n\n            function _Mix_PlayChannelTimed(channel, id, loops, ticks) {\n                id >>>= 0;\n                assert(ticks == -1);\n                var info = SDL.audios[id];\n                if (!info) return -1;\n                if (!info.audio && !info.webAudio) return -1;\n                if (channel == -1) {\n                    for (var i = SDL.channelMinimumNumber; i < SDL.numChannels; i++) {\n                        if (!SDL.channels[i].audio) {\n                            channel = i;\n                            break\n                        }\n                    }\n                    if (channel == -1) {\n                        err(`All ${SDL.numChannels}  channels in use!`);\n                        return -1\n                    }\n                }\n                var channelInfo = SDL.channels[channel];\n                var audio;\n                if (info.webAudio) {\n                    audio = {};\n                    audio.resource = info;\n                    audio.paused = false;\n                    audio.currentPosition = 0;\n                    audio.play = function() {\n                        SDL.playWebAudio(this)\n                    };\n                    audio.pause = function() {\n                        SDL.pauseWebAudio(this)\n                    }\n                } else {\n                    audio = info.audio.cloneNode(true);\n                    audio.numChannels = info.audio.numChannels;\n                    audio.frequency = info.audio.frequency\n                }\n                audio[\"onended\"] = function() {\n                    if (channelInfo.audio === this || channelInfo.audio.webAudioNode === this) {\n                        channelInfo.audio.paused = true;\n                        channelInfo.audio = null\n                    }\n                    if (SDL.channelFinished) getWasmTableEntry(SDL.channelFinished)(channel)\n                };\n                if (channelInfo.audio) {\n                    _Mix_HaltChannel(channel)\n                }\n                channelInfo.audio = audio;\n                audio.loop = loops != 0;\n                audio.volume = channelInfo.volume;\n                audio.play();\n                return channel\n            }\n            _Mix_PlayChannelTimed.sig = \"iipii\";\n            var _Mix_FadingChannel = channel => 0;\n            _Mix_FadingChannel.sig = \"ii\";\n            var _Mix_HaltMusic = () => {\n                var audio = SDL.music.audio;\n                if (audio) {\n                    audio.src = audio.src;\n                    audio.currentPosition = 0;\n                    audio.pause()\n                }\n                SDL.music.audio = null;\n                if (SDL.hookMusicFinished) {\n                    getWasmTableEntry(SDL.hookMusicFinished)()\n                }\n                return 0\n            };\n            _Mix_HaltMusic.sig = \"i\";\n\n            function _Mix_HookMusicFinished(func) {\n                func >>>= 0;\n                SDL.hookMusicFinished = func;\n                if (SDL.music.audio) {\n                    SDL.music.audio[\"onended\"] = _Mix_HaltMusic\n                }\n            }\n            _Mix_HookMusicFinished.sig = \"vp\";\n            var _Mix_VolumeMusic = volume => SDL.setGetVolume(SDL.music, volume);\n            _Mix_VolumeMusic.sig = \"ii\";\n\n            function _Mix_LoadMUS_RW(filename) {\n                filename >>>= 0;\n                return _Mix_LoadWAV_RW(filename, 0)\n            }\n            _Mix_LoadMUS_RW.sig = \"pp\";\n\n            function _Mix_LoadMUS(filename) {\n                filename >>>= 0;\n                var rwops = _SDL_RWFromFile(filename, 0);\n                var result = _Mix_LoadMUS_RW(rwops);\n                _SDL_FreeRW(rwops);\n                return result\n            }\n            _Mix_LoadMUS.sig = \"pp\";\n            var _Mix_FreeMusic = _Mix_FreeChunk;\n            _Mix_FreeMusic.sig = \"vp\";\n\n            function _Mix_PlayMusic(id, loops) {\n                id >>>= 0;\n                if (SDL.music.audio) {\n                    if (!SDL.music.audio.paused) err(`Music is already playing. ${SDL.music.source}`);\n                    SDL.music.audio.pause()\n                }\n                var info = SDL.audios[id];\n                var audio;\n                if (info.webAudio) {\n                    audio = {};\n                    audio.resource = info;\n                    audio.paused = false;\n                    audio.currentPosition = 0;\n                    audio.play = function() {\n                        SDL.playWebAudio(this)\n                    };\n                    audio.pause = function() {\n                        SDL.pauseWebAudio(this)\n                    }\n                } else if (info.audio) {\n                    audio = info.audio\n                }\n                audio[\"onended\"] = function() {\n                    if (SDL.music.audio === this || SDL.music.audio?.webAudioNode === this) {\n                        _Mix_HaltMusic()\n                    }\n                };\n                audio.loop = loops != 0 && loops != 1;\n                audio.volume = SDL.music.volume;\n                SDL.music.audio = audio;\n                audio.play();\n                return 0\n            }\n            _Mix_PlayMusic.sig = \"ipi\";\n            var _Mix_PauseMusic = () => {\n                var audio = SDL.music.audio;\n                audio?.pause()\n            };\n            _Mix_PauseMusic.sig = \"v\";\n            var _Mix_ResumeMusic = () => {\n                var audio = SDL.music.audio;\n                audio?.play()\n            };\n            _Mix_ResumeMusic.sig = \"v\";\n            var _Mix_FadeInMusicPos = _Mix_PlayMusic;\n            _Mix_FadeInMusicPos.sig = \"ipiid\";\n            var _Mix_FadeOutMusic = _Mix_HaltMusic;\n            _Mix_FadeOutMusic.sig = \"ii\";\n            var _Mix_PlayingMusic = () => SDL.music.audio && !SDL.music.audio.paused ? 1 : 0;\n            _Mix_PlayingMusic.sig = \"i\";\n            var _Mix_Playing = channel => {\n                if (channel === -1) {\n                    var count = 0;\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        count += _Mix_Playing(i)\n                    }\n                    return count\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio && !info.audio.paused) {\n                    return 1\n                }\n                return 0\n            };\n            _Mix_Playing.sig = \"ii\";\n            var _Mix_Pause = channel => {\n                if (channel === -1) {\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        _Mix_Pause(i)\n                    }\n                    return\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio) {\n                    info.audio.pause()\n                } else {}\n            };\n            _Mix_Pause.sig = \"vi\";\n            var _Mix_Paused = channel => {\n                if (channel === -1) {\n                    var pausedCount = 0;\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        pausedCount += _Mix_Paused(i)\n                    }\n                    return pausedCount\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio?.paused) {\n                    return 1\n                }\n                return 0\n            };\n            _Mix_Paused.sig = \"ii\";\n            var _Mix_PausedMusic = () => SDL.music.audio?.paused ? 1 : 0;\n            _Mix_PausedMusic.sig = \"i\";\n            var _Mix_Resume = channel => {\n                if (channel === -1) {\n                    for (var i = 0; i < SDL.channels.length; i++) {\n                        _Mix_Resume(i)\n                    }\n                    return\n                }\n                var info = SDL.channels[channel];\n                if (info?.audio) info.audio.play()\n            };\n            _Mix_Resume.sig = \"vi\";\n            var _TTF_Init = () => {\n                try {\n                    var offscreenCanvas = new OffscreenCanvas(0, 0);\n                    SDL.ttfContext = offscreenCanvas.getContext(\"2d\");\n                    if (typeof SDL.ttfContext.measureText != \"function\") {\n                        throw \"bad context\"\n                    }\n                } catch (ex) {\n                    var canvas = document.createElement(\"canvas\");\n                    SDL.ttfContext = canvas.getContext(\"2d\")\n                }\n                return 0\n            };\n            _TTF_Init.sig = \"i\";\n\n            function _TTF_OpenFont(name, size) {\n                name >>>= 0;\n                name = PATH.normalize(UTF8ToString(name));\n                var id = SDL.fonts.length;\n                SDL.fonts.push({\n                    name,\n                    size\n                });\n                return id\n            }\n            _TTF_OpenFont.sig = \"ppi\";\n\n            function _TTF_CloseFont(font) {\n                font >>>= 0;\n                SDL.fonts[font] = null\n            }\n            _TTF_CloseFont.sig = \"vp\";\n\n            function _TTF_RenderText_Solid(font, text, color) {\n                font >>>= 0;\n                text >>>= 0;\n                color >>>= 0;\n                text = UTF8ToString(text) || \" \";\n                var fontData = SDL.fonts[font];\n                var w = SDL.estimateTextWidth(fontData, text);\n                var h = fontData.size;\n                color = SDL.loadColorToCSSRGB(color);\n                var fontString = SDL.makeFontString(h, fontData.name);\n                var surf = SDL.makeSurface(w, h, 0, false, \"text:\" + text);\n                var surfData = SDL.surfaces[surf];\n                surfData.ctx.save();\n                surfData.ctx.fillStyle = color;\n                surfData.ctx.font = fontString;\n                surfData.ctx.textBaseline = \"bottom\";\n                surfData.ctx.fillText(text, 0, h | 0);\n                surfData.ctx.restore();\n                return surf\n            }\n            _TTF_RenderText_Solid.sig = \"pppp\";\n            var _TTF_RenderText_Blended = _TTF_RenderText_Solid;\n            _TTF_RenderText_Blended.sig = \"pppp\";\n            var _TTF_RenderText_Shaded = _TTF_RenderText_Solid;\n            _TTF_RenderText_Shaded.sig = \"ppppp\";\n            var _TTF_RenderUTF8_Solid = _TTF_RenderText_Solid;\n            _TTF_RenderUTF8_Solid.sig = \"pppp\";\n\n            function _TTF_SizeText(font, text, w, h) {\n                font >>>= 0;\n                text >>>= 0;\n                w >>>= 0;\n                h >>>= 0;\n                var fontData = SDL.fonts[font];\n                if (w) {\n                    HEAP32[w >>> 2 >>> 0] = SDL.estimateTextWidth(fontData, UTF8ToString(text))\n                }\n                if (h) {\n                    HEAP32[h >>> 2 >>> 0] = fontData.size\n                }\n                return 0\n            }\n            _TTF_SizeText.sig = \"ipppp\";\n            var _TTF_SizeUTF8 = _TTF_SizeText;\n            _TTF_SizeUTF8.sig = \"ipppp\";\n\n            function _TTF_GlyphMetrics(font, ch, minx, maxx, miny, maxy, advance) {\n                font >>>= 0;\n                minx >>>= 0;\n                maxx >>>= 0;\n                miny >>>= 0;\n                maxy >>>= 0;\n                advance >>>= 0;\n                var fontData = SDL.fonts[font];\n                var width = SDL.estimateTextWidth(fontData, String.fromCharCode(ch));\n                if (advance) {\n                    HEAP32[advance >>> 2 >>> 0] = width\n                }\n                if (minx) {\n                    HEAP32[minx >>> 2 >>> 0] = 0\n                }\n                if (maxx) {\n                    HEAP32[maxx >>> 2 >>> 0] = width\n                }\n                if (miny) {\n                    HEAP32[miny >>> 2 >>> 0] = 0\n                }\n                if (maxy) {\n                    HEAP32[maxy >>> 2 >>> 0] = fontData.size\n                }\n            }\n            _TTF_GlyphMetrics.sig = \"ipippppp\";\n\n            function _TTF_FontAscent(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size * .98 | 0\n            }\n            _TTF_FontAscent.sig = \"ip\";\n\n            function _TTF_FontDescent(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size * .02 | 0\n            }\n            _TTF_FontDescent.sig = \"ip\";\n\n            function _TTF_FontHeight(font) {\n                font >>>= 0;\n                var fontData = SDL.fonts[font];\n                return fontData.size\n            }\n            _TTF_FontHeight.sig = \"ip\";\n            var _TTF_FontLineSkip = _TTF_FontHeight;\n            _TTF_FontLineSkip.sig = \"ip\";\n            var _TTF_Quit = () => out(\"TTF_Quit called (and ignored)\");\n            _TTF_Quit.sig = \"v\";\n            var SDL_gfx = {\n                drawRectangle: (surf, x1, y1, x2, y2, action, cssColor) => {\n                    x1 = x1 << 16 >> 16;\n                    y1 = y1 << 16 >> 16;\n                    x2 = x2 << 16 >> 16;\n                    y2 = y2 << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    var x = x1 < x2 ? x1 : x2;\n                    var y = y1 < y2 ? y1 : y2;\n                    var w = Math.abs(x2 - x1);\n                    var h = Math.abs(y2 - y1);\n                    surfData.ctx.save();\n                    surfData.ctx[action + \"Style\"] = cssColor;\n                    surfData.ctx[action + \"Rect\"](x, y, w, h);\n                    surfData.ctx.restore()\n                },\n                drawLine: (surf, x1, y1, x2, y2, cssColor) => {\n                    x1 = x1 << 16 >> 16;\n                    y1 = y1 << 16 >> 16;\n                    x2 = x2 << 16 >> 16;\n                    y2 = y2 << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    surfData.ctx.save();\n                    surfData.ctx.strokeStyle = cssColor;\n                    surfData.ctx.beginPath();\n                    surfData.ctx.moveTo(x1, y1);\n                    surfData.ctx.lineTo(x2, y2);\n                    surfData.ctx.stroke();\n                    surfData.ctx.restore()\n                },\n                drawEllipse: (surf, x, y, rx, ry, action, cssColor) => {\n                    x = x << 16 >> 16;\n                    y = y << 16 >> 16;\n                    rx = rx << 16 >> 16;\n                    ry = ry << 16 >> 16;\n                    var surfData = SDL.surfaces[surf];\n                    assert(!surfData.locked);\n                    surfData.ctx.save();\n                    surfData.ctx.beginPath();\n                    surfData.ctx.translate(x, y);\n                    surfData.ctx.scale(rx, ry);\n                    surfData.ctx.arc(0, 0, 1, 0, 2 * Math.PI);\n                    surfData.ctx.restore();\n                    surfData.ctx.save();\n                    surfData.ctx[action + \"Style\"] = cssColor;\n                    surfData.ctx[action]();\n                    surfData.ctx.restore()\n                },\n                translateColorToCSSRGBA: rgba => `rgba(${rgba>>>24},${rgba>>16&255},${rgba>>8&255},${rgba&255})`\n            };\n\n            function _boxColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"fill\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _boxColor.sig = \"ipiiiii\";\n\n            function _boxRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"fill\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _boxRGBA.sig = \"ipiiiiiiii\";\n\n            function _rectangleColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"stroke\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _rectangleColor.sig = \"ipiiiii\";\n\n            function _rectangleRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawRectangle(surf, x1, y1, x2, y2, \"stroke\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _rectangleRGBA.sig = \"ipiiiiiiii\";\n\n            function _ellipseColor(surf, x, y, rx, ry, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"stroke\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _ellipseColor.sig = \"ipiiiii\";\n\n            function _ellipseRGBA(surf, x, y, rx, ry, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"stroke\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _ellipseRGBA.sig = \"ipiiiiiiii\";\n\n            function _filledEllipseColor(surf, x, y, rx, ry, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"fill\", SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _filledEllipseColor.sig = \"ipiiiii\";\n\n            function _filledEllipseRGBA(surf, x, y, rx, ry, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawEllipse(surf, x, y, rx, ry, \"fill\", SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _filledEllipseRGBA.sig = \"ipiiiiiiii\";\n\n            function _lineColor(surf, x1, y1, x2, y2, color) {\n                surf >>>= 0;\n                return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL_gfx.translateColorToCSSRGBA(color))\n            }\n            _lineColor.sig = \"ipiiiii\";\n\n            function _lineRGBA(surf, x1, y1, x2, y2, r, g, b, a) {\n                surf >>>= 0;\n                return SDL_gfx.drawLine(surf, x1, y1, x2, y2, SDL.translateRGBAToCSSRGBA(r, g, b, a))\n            }\n            _lineRGBA.sig = \"ipiiiiiiii\";\n\n            function _pixelRGBA(surf, x1, y1, r, g, b, a) {\n                surf >>>= 0;\n                return _boxRGBA(surf, x1, y1, x1, y1, r, g, b, a)\n            }\n            _pixelRGBA.sig = \"ipiiiiii\";\n            var _SDL_GL_SetAttribute = (attr, value) => {\n                if (!(attr in SDL.glAttributes)) {\n                    abort(\"Unknown SDL GL attribute (\" + attr + \"). Please check if your SDL version is supported.\")\n                }\n                SDL.glAttributes[attr] = value\n            };\n            _SDL_GL_SetAttribute.sig = \"iii\";\n\n            function _SDL_GL_GetAttribute(attr, value) {\n                value >>>= 0;\n                if (!(attr in SDL.glAttributes)) {\n                    abort(\"Unknown SDL GL attribute (\" + attr + \"). Please check if your SDL version is supported.\")\n                }\n                if (value) HEAP32[value >>> 2 >>> 0] = SDL.glAttributes[attr];\n                return 0\n            }\n            _SDL_GL_GetAttribute.sig = \"iip\";\n            var _SDL_GL_SwapBuffers = () => {\n                Browser.doSwapBuffers?.()\n            };\n            _SDL_GL_SwapBuffers.sig = \"v\";\n\n            function _SDL_GL_ExtensionSupported(extension) {\n                extension >>>= 0;\n                return Module.ctx.getExtension(extension) | 0\n            }\n            _SDL_GL_ExtensionSupported.sig = \"ip\";\n\n            function _SDL_DestroyWindow(window) {\n                window >>>= 0\n            }\n            _SDL_DestroyWindow.sig = \"vp\";\n\n            function _SDL_DestroyRenderer(renderer) {\n                renderer >>>= 0\n            }\n            _SDL_DestroyRenderer.sig = \"vp\";\n\n            function _SDL_GetWindowFlags(window) {\n                window >>>= 0;\n                if (Browser.isFullscreen) {\n                    return 1\n                }\n                return 0\n            }\n            _SDL_GetWindowFlags.sig = \"ip\";\n\n            function _SDL_GL_SwapWindow(window) {\n                window >>>= 0\n            }\n            _SDL_GL_SwapWindow.sig = \"vp\";\n\n            function _SDL_GL_MakeCurrent(window, context) {\n                window >>>= 0;\n                context >>>= 0\n            }\n            _SDL_GL_MakeCurrent.sig = \"ipp\";\n\n            function _SDL_GL_DeleteContext(context) {\n                context >>>= 0\n            }\n            _SDL_GL_DeleteContext.sig = \"vp\";\n            var _SDL_GL_GetSwapInterval = () => {\n                if (MainLoop.timingMode == 1) return MainLoop.timingValue;\n                else return 0\n            };\n            _SDL_GL_GetSwapInterval.sig = \"i\";\n            var _SDL_GL_SetSwapInterval = state => {\n                _emscripten_set_main_loop_timing(1, state)\n            };\n            _SDL_GL_SetSwapInterval.sig = \"ii\";\n\n            function _SDL_SetWindowTitle(window, title) {\n                window >>>= 0;\n                title >>>= 0;\n                if (title) document.title = UTF8ToString(title)\n            }\n            _SDL_SetWindowTitle.sig = \"vpp\";\n\n            function _SDL_GetWindowSize(window, width, height) {\n                window >>>= 0;\n                width >>>= 0;\n                height >>>= 0;\n                var w = Module[\"canvas\"].width;\n                var h = Module[\"canvas\"].height;\n                if (width) HEAP32[width >>> 2 >>> 0] = w;\n                if (height) HEAP32[height >>> 2 >>> 0] = h\n            }\n            _SDL_GetWindowSize.sig = \"vppp\";\n\n            function _SDL_LogSetOutputFunction(callback, userdata) {\n                callback >>>= 0;\n                userdata >>>= 0\n            }\n            _SDL_LogSetOutputFunction.sig = \"vpp\";\n\n            function _SDL_SetWindowFullscreen(window, fullscreen) {\n                window >>>= 0;\n                if (Browser.isFullscreen) {\n                    Module[\"canvas\"].exitFullscreen();\n                    return 1\n                }\n                return 0\n            }\n            _SDL_SetWindowFullscreen.sig = \"ipi\";\n            var _SDL_ClearError = () => {};\n            _SDL_ClearError.sig = \"v\";\n            var _SDL_SetGamma = (r, g, b) => -1;\n            _SDL_SetGamma.sig = \"ifff\";\n\n            function _SDL_SetGammaRamp(redTable, greenTable, blueTable) {\n                redTable >>>= 0;\n                greenTable >>>= 0;\n                blueTable >>>= 0;\n                return -1\n            }\n            _SDL_SetGammaRamp.sig = \"ippp\";\n            var _SDL_NumJoysticks = () => {\n                var count = 0;\n                var gamepads = SDL.getGamepads();\n                for (var i = 0; i < gamepads.length; i++) {\n                    if (gamepads[i] !== undefined) count++\n                }\n                return count\n            };\n            _SDL_NumJoysticks.sig = \"i\";\n\n            function _SDL_JoystickName(deviceIndex) {\n                var gamepad = SDL.getGamepad(deviceIndex);\n                if (gamepad) {\n                    var name = gamepad.id;\n                    if (SDL.joystickNamePool.hasOwnProperty(name)) {\n                        return SDL.joystickNamePool[name]\n                    }\n                    return SDL.joystickNamePool[name] = stringToNewUTF8(name)\n                }\n                return 0\n            }\n            _SDL_JoystickName.sig = \"pi\";\n\n            function _SDL_JoystickOpen(deviceIndex) {\n                var gamepad = SDL.getGamepad(deviceIndex);\n                if (gamepad) {\n                    var joystick = deviceIndex + 1;\n                    SDL.recordJoystickState(joystick, gamepad);\n                    return joystick\n                }\n                return 0\n            }\n            _SDL_JoystickOpen.sig = \"pi\";\n            var _SDL_JoystickOpened = deviceIndex => SDL.lastJoystickState.hasOwnProperty(deviceIndex + 1) ? 1 : 0;\n            _SDL_JoystickOpened.sig = \"ii\";\n\n            function _SDL_JoystickIndex(joystick) {\n                joystick >>>= 0;\n                return joystick - 1\n            }\n            _SDL_JoystickIndex.sig = \"ip\";\n\n            function _SDL_JoystickNumAxes(joystick) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad) {\n                    return gamepad.axes.length\n                }\n                return 0\n            }\n            _SDL_JoystickNumAxes.sig = \"ip\";\n\n            function _SDL_JoystickNumBalls(joystick) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickNumBalls.sig = \"ip\";\n\n            function _SDL_JoystickNumHats(joystick) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickNumHats.sig = \"ip\";\n\n            function _SDL_JoystickNumButtons(joystick) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad) {\n                    return gamepad.buttons.length\n                }\n                return 0\n            }\n            _SDL_JoystickNumButtons.sig = \"ip\";\n            var _SDL_JoystickUpdate = () => SDL.queryJoysticks();\n            _SDL_JoystickUpdate.sig = \"v\";\n            var _SDL_JoystickEventState = state => {\n                if (state < 0) {\n                    return SDL.joystickEventState\n                }\n                return SDL.joystickEventState = state\n            };\n            _SDL_JoystickEventState.sig = \"ii\";\n\n            function _SDL_JoystickGetAxis(joystick, axis) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad && gamepad.axes.length > axis) {\n                    return SDL.joystickAxisValueConversion(gamepad.axes[axis])\n                }\n                return 0\n            }\n            _SDL_JoystickGetAxis.sig = \"ipi\";\n\n            function _SDL_JoystickGetHat(joystick, hat) {\n                joystick >>>= 0;\n                return 0\n            }\n            _SDL_JoystickGetHat.sig = \"ipi\";\n\n            function _SDL_JoystickGetBall(joystick, ball, dxptr, dyptr) {\n                joystick >>>= 0;\n                dxptr >>>= 0;\n                dyptr >>>= 0;\n                return -1\n            }\n            _SDL_JoystickGetBall.sig = \"ipipp\";\n\n            function _SDL_JoystickGetButton(joystick, button) {\n                joystick >>>= 0;\n                var gamepad = SDL.getGamepad(joystick - 1);\n                if (gamepad && gamepad.buttons.length > button) {\n                    return SDL.getJoystickButtonState(gamepad.buttons[button]) ? 1 : 0\n                }\n                return 0\n            }\n            _SDL_JoystickGetButton.sig = \"ipi\";\n\n            function _SDL_JoystickClose(joystick) {\n                joystick >>>= 0;\n                delete SDL.lastJoystickState[joystick]\n            }\n            _SDL_JoystickClose.sig = \"vp\";\n            var _SDL_InitSubSystem = flags => 0;\n            _SDL_InitSubSystem.sig = \"ii\";\n\n            function _SDL_RWFromConstMem(mem, size) {\n                mem >>>= 0;\n                var id = SDL.rwops.length;\n                SDL.rwops.push({\n                    bytes: mem,\n                    count: size\n                });\n                return id\n            }\n            _SDL_RWFromConstMem.sig = \"ppi\";\n            var _SDL_RWFromMem = _SDL_RWFromConstMem;\n            _SDL_RWFromMem.sig = \"ppi\";\n            var _SDL_GetNumAudioDrivers = () => 1;\n            _SDL_GetNumAudioDrivers.sig = \"i\";\n\n            function _SDL_GetCurrentAudioDriver() {\n                return stringToNewUTF8(\"Emscripten Audio\")\n            }\n            _SDL_GetCurrentAudioDriver.sig = \"p\";\n            var _SDL_GetScancodeFromKey = key => SDL.scanCodes[key];\n            _SDL_GetScancodeFromKey.sig = \"ii\";\n\n            function _SDL_GetAudioDriver(index) {\n                return _SDL_GetCurrentAudioDriver()\n            }\n            _SDL_GetAudioDriver.sig = \"pi\";\n            var _SDL_EnableUNICODE = on => {\n                var ret = SDL.unicode || 0;\n                SDL.unicode = on;\n                return ret\n            };\n            _SDL_EnableUNICODE.sig = \"ii\";\n            var _SDL_AddTimer = function(interval, callback, param) {\n                callback >>>= 0;\n                param >>>= 0;\n                return safeSetTimeout(() => getWasmTableEntry(callback)(interval, param), interval)\n            };\n            _SDL_AddTimer.sig = \"iipp\";\n            var _SDL_RemoveTimer = id => {\n                clearTimeout(id);\n                return true\n            };\n            _SDL_RemoveTimer.sig = \"ii\";\n\n            function _SDL_CreateThread(fs, data, pfnBeginThread, pfnEndThread) {\n                fs >>>= 0;\n                data >>>= 0;\n                throw \"SDL threads cannot be supported in the web platform because they assume shared state. See emscripten_create_worker etc. for a message-passing concurrency model that does let you run code in another thread.\"\n            }\n            _SDL_CreateThread.sig = \"ppp\";\n\n            function _SDL_WaitThread(thread, status) {\n                thread >>>= 0;\n                status >>>= 0;\n                throw \"SDL_WaitThread\"\n            }\n            _SDL_WaitThread.sig = \"vpp\";\n\n            function _SDL_GetThreadID(thread) {\n                thread >>>= 0;\n                throw \"SDL_GetThreadID\"\n            }\n            _SDL_GetThreadID.sig = \"pp\";\n\n            function _SDL_ThreadID() {\n                return 0\n            }\n            _SDL_ThreadID.sig = \"p\";\n\n            function _SDL_AllocRW() {\n                throw \"SDL_AllocRW: TODO\"\n            }\n            _SDL_AllocRW.sig = \"p\";\n\n            function _SDL_CondBroadcast(cond) {\n                cond >>>= 0;\n                throw \"SDL_CondBroadcast: TODO\"\n            }\n            _SDL_CondBroadcast.sig = \"ip\";\n\n            function _SDL_CondWaitTimeout(cond, mutex, ms) {\n                cond >>>= 0;\n                mutex >>>= 0;\n                throw \"SDL_CondWaitTimeout: TODO\"\n            }\n            _SDL_CondWaitTimeout.sig = \"ippi\";\n            var _SDL_WM_IconifyWindow = () => {\n                throw \"SDL_WM_IconifyWindow TODO\"\n            };\n            _SDL_WM_IconifyWindow.sig = \"i\";\n\n            function _Mix_SetPostMix(func, arg) {\n                func >>>= 0;\n                arg >>>= 0;\n                return warnOnce(\"Mix_SetPostMix: TODO\")\n            }\n            _Mix_SetPostMix.sig = \"vpp\";\n\n            function _Mix_VolumeChunk(chunk, volume) {\n                chunk >>>= 0;\n                throw \"Mix_VolumeChunk: TODO\"\n            }\n            _Mix_VolumeChunk.sig = \"ipi\";\n            var _Mix_SetPosition = (channel, angle, distance) => {\n                throw \"Mix_SetPosition: TODO\"\n            };\n            _Mix_SetPosition.sig = \"iiii\";\n\n            function _Mix_QuerySpec(frequency, format, channels) {\n                frequency >>>= 0;\n                format >>>= 0;\n                channels >>>= 0;\n                throw \"Mix_QuerySpec: TODO\"\n            }\n            _Mix_QuerySpec.sig = \"ippp\";\n\n            function _Mix_FadeInChannelTimed(channel, chunk, loop, ms, ticks) {\n                chunk >>>= 0;\n                throw \"Mix_FadeInChannelTimed\"\n            }\n            _Mix_FadeInChannelTimed.sig = \"iipiii\";\n            var _Mix_FadeOutChannel = () => {\n                throw \"Mix_FadeOutChannel\"\n            };\n            _Mix_FadeOutChannel.sig = \"iii\";\n\n            function _Mix_Linked_Version() {\n                throw \"Mix_Linked_Version: TODO\"\n            }\n            _Mix_Linked_Version.sig = \"p\";\n\n            function _SDL_SaveBMP_RW(surface, dst, freedst) {\n                surface >>>= 0;\n                dst >>>= 0;\n                throw \"SDL_SaveBMP_RW: TODO\"\n            }\n            _SDL_SaveBMP_RW.sig = \"ippi\";\n\n            function _SDL_WM_SetIcon(icon, mask) {\n                icon >>>= 0;\n                mask >>>= 0\n            }\n            _SDL_WM_SetIcon.sig = \"vpp\";\n            var _SDL_HasRDTSC = () => 0;\n            _SDL_HasRDTSC.sig = \"i\";\n            var _SDL_HasMMX = () => 0;\n            _SDL_HasMMX.sig = \"i\";\n            var _SDL_HasMMXExt = () => 0;\n            _SDL_HasMMXExt.sig = \"i\";\n            var _SDL_Has3DNow = () => 0;\n            _SDL_Has3DNow.sig = \"i\";\n            var _SDL_Has3DNowExt = () => 0;\n            _SDL_Has3DNowExt.sig = \"i\";\n            var _SDL_HasSSE = () => 0;\n            _SDL_HasSSE.sig = \"i\";\n            var _SDL_HasSSE2 = () => 0;\n            _SDL_HasSSE2.sig = \"i\";\n            var _SDL_HasAltiVec = () => 0;\n            _SDL_HasAltiVec.sig = \"i\";\n            var ALLOC_NORMAL = 0;\n            var ALLOC_STACK = 1;\n            var allocate = (slab, allocator) => {\n                var ret;\n                if (allocator == ALLOC_STACK) {\n                    ret = stackAlloc(slab.length)\n                } else {\n                    ret = _malloc(slab.length)\n                }\n                if (!slab.subarray && !slab.slice) {\n                    slab = new Uint8Array(slab)\n                }\n                HEAPU8.set(slab, ret >>> 0);\n                return ret\n            };\n            var writeStringToMemory = (string, buffer, dontAddNull) => {\n                warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");\n                var lastChar, end;\n                if (dontAddNull) {\n                    end = buffer + lengthBytesUTF8(string);\n                    lastChar = HEAP8[end >>> 0]\n                }\n                stringToUTF8(string, buffer, Infinity);\n                if (dontAddNull) HEAP8[end >>> 0] = lastChar\n            };\n            var writeAsciiToMemory = (str, buffer, dontAddNull) => {\n                for (var i = 0; i < str.length; ++i) {\n                    HEAP8[buffer++ >>> 0] = str.charCodeAt(i)\n                }\n                if (!dontAddNull) HEAP8[buffer >>> 0] = 0\n            };\n            var allocateUTF8 = stringToNewUTF8;\n            var allocateUTF8OnStack = stringToUTF8OnStack;\n            var setErrNo = value => {\n                HEAP32[___errno_location() >>> 2 >>> 0] = value;\n                return value\n            };\n            var demangle = func => {\n                demangle.recursionGuard = (demangle.recursionGuard | 0) + 1;\n                if (demangle.recursionGuard > 1) return func;\n                return withStackSave(() => {\n                    try {\n                        var s = func;\n                        if (s.startsWith(\"__Z\")) s = s.substr(1);\n                        var buf = stringToUTF8OnStack(s);\n                        var status = stackAlloc(4);\n                        var ret = ___cxa_demangle(buf, 0, 0, status);\n                        if (HEAP32[status >>> 2 >>> 0] === 0 && ret) {\n                            return UTF8ToString(ret)\n                        }\n                    } catch (e) {} finally {\n                        _free(ret);\n                        if (demangle.recursionGuard < 2) --demangle.recursionGuard\n                    }\n                    return func\n                })\n            };\n            var stackTrace = () => {\n                var js = jsStackTrace();\n                if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n                return js\n            };\n            var print = out;\n            var printErr = err;\n            var _emscripten_is_main_browser_thread = () => !ENVIRONMENT_IS_WORKER;\n            var tupleRegistrations = {};\n            var structRegistrations = {};\n            var getFunctionName = signature => {\n                signature = signature.trim();\n                const argsIndex = signature.indexOf(\"(\");\n                if (argsIndex !== -1) {\n                    return signature.substr(0, argsIndex)\n                } else {\n                    return signature\n                }\n            };\n            var getFunctionArgsName = signature => {\n                signature = signature.trim();\n                const argsIndex = signature.indexOf(\"(\") + 1;\n                if (argsIndex !== 0) {\n                    return signature.substr(argsIndex, signature.length - argsIndex - 1).replaceAll(\" \", \"\").split(\",\").filter(n => n.length)\n                } else {\n                    return []\n                }\n            };\n            var heap32VectorToArray = (count, firstElement) => {\n                var array = [];\n                for (var i = 0; i < count; i++) {\n                    array.push(HEAPU32[firstElement + i * 4 >>> 2 >>> 0])\n                }\n                return array\n            };\n\n            function usesDestructorStack(argTypes) {\n                for (var i = 1; i < argTypes.length; ++i) {\n                    if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) {\n                        return true\n                    }\n                }\n                return false\n            }\n\n            function createJsInvokerSignature(argTypes, isClassMethodFunc, returns, isAsync) {\n                const signature = [isClassMethodFunc ? \"t\" : \"f\", returns ? \"t\" : \"f\", isAsync ? \"t\" : \"f\"];\n                for (let i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                    const arg = argTypes[i];\n                    let destructorSig = \"\";\n                    if (arg.destructorFunction === undefined) {\n                        destructorSig = \"u\"\n                    } else if (arg.destructorFunction === null) {\n                        destructorSig = \"n\"\n                    } else {\n                        destructorSig = \"t\"\n                    }\n                    signature.push(destructorSig)\n                }\n                return signature.join(\"\")\n            }\n\n            function checkArgCount(numArgs, minArgs, maxArgs, humanName, throwBindingError) {\n                if (numArgs < minArgs || numArgs > maxArgs) {\n                    var argCountMessage = minArgs == maxArgs ? minArgs : `${minArgs} to ${maxArgs}`;\n                    throwBindingError(`function ${humanName} called with ${numArgs} arguments, expected ${argCountMessage}`)\n                }\n            }\n\n            function getRequiredArgCount(argTypes) {\n                var requiredArgCount = argTypes.length - 2;\n                for (var i = argTypes.length - 1; i >= 2; --i) {\n                    if (!argTypes[i].optional) {\n                        break\n                    }\n                    requiredArgCount--\n                }\n                return requiredArgCount\n            }\n\n            function createJsInvoker(argTypes, isClassMethodFunc, returns, isAsync) {\n                var needsDestructorStack = usesDestructorStack(argTypes);\n                var argCount = argTypes.length - 2;\n                var argsList = [];\n                var argsListWired = [\"fn\"];\n                if (isClassMethodFunc) {\n                    argsListWired.push(\"thisWired\")\n                }\n                for (var i = 0; i < argCount; ++i) {\n                    argsList.push(`arg${i}`);\n                    argsListWired.push(`arg${i}Wired`)\n                }\n                argsList = argsList.join(\",\");\n                argsListWired = argsListWired.join(\",\");\n                var invokerFnBody = `return function (${argsList}) {\\n`;\n                if (needsDestructorStack) {\n                    invokerFnBody += \"var destructors = [];\\n\"\n                }\n                var dtorStack = needsDestructorStack ? \"destructors\" : \"null\";\n                var args1 = [\"humanName\", \"throwBindingError\", \"invoker\", \"fn\", \"runDestructors\", \"retType\", \"classParam\"];\n                if (isClassMethodFunc) {\n                    invokerFnBody += `var thisWired = classParam['toWireType'](${dtorStack}, this);\\n`\n                }\n                for (var i = 0; i < argCount; ++i) {\n                    invokerFnBody += `var arg${i}Wired = argType${i}['toWireType'](${dtorStack}, arg${i});\\n`;\n                    args1.push(`argType${i}`)\n                }\n                invokerFnBody += (returns || isAsync ? \"var rv = \" : \"\") + `invoker(${argsListWired});\\n`;\n                var returnVal = returns ? \"rv\" : \"\";\n                if (needsDestructorStack) {\n                    invokerFnBody += \"runDestructors(destructors);\\n\"\n                } else {\n                    for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                        var paramName = i === 1 ? \"thisWired\" : \"arg\" + (i - 2) + \"Wired\";\n                        if (argTypes[i].destructorFunction !== null) {\n                            invokerFnBody += `${paramName}_dtor(${paramName});\\n`;\n                            args1.push(`${paramName}_dtor`)\n                        }\n                    }\n                }\n                if (returns) {\n                    invokerFnBody += \"var ret = retType['fromWireType'](rv);\\n\" + \"return ret;\\n\"\n                } else {}\n                invokerFnBody += \"}\\n\";\n                return [args1, invokerFnBody]\n            }\n            var extendError = (baseErrorType, errorName) => {\n                var errorClass = createNamedFunction(errorName, function(message) {\n                    this.name = errorName;\n                    this.message = message;\n                    var stack = new Error(message).stack;\n                    if (stack !== undefined) {\n                        this.stack = this.toString() + \"\\n\" + stack.replace(/^Error(:[^\\n]*)?\\n/, \"\")\n                    }\n                });\n                errorClass.prototype = Object.create(baseErrorType.prototype);\n                errorClass.prototype.constructor = errorClass;\n                errorClass.prototype.toString = function() {\n                    if (this.message === undefined) {\n                        return this.name\n                    } else {\n                        return `${this.name}: ${this.message}`\n                    }\n                };\n                return errorClass\n            };\n            var UnboundTypeError;\n            var PureVirtualError;\n            var EmValOptionalType = Object.assign({\n                optional: true\n            }, EmValType);\n            var throwUnboundTypeError = (message, types) => {\n                var unboundTypes = [];\n                var seen = {};\n\n                function visit(type) {\n                    if (seen[type]) {\n                        return\n                    }\n                    if (registeredTypes[type]) {\n                        return\n                    }\n                    if (typeDependencies[type]) {\n                        typeDependencies[type].forEach(visit);\n                        return\n                    }\n                    unboundTypes.push(type);\n                    seen[type] = true\n                }\n                types.forEach(visit);\n                throw new UnboundTypeError(`${message}: ` + unboundTypes.map(getTypeName).join([\", \"]))\n            };\n            var ensureOverloadTable = (proto, methodName, humanName) => {\n                if (undefined === proto[methodName].overloadTable) {\n                    var prevFunc = proto[methodName];\n                    proto[methodName] = function(...args) {\n                        if (!proto[methodName].overloadTable.hasOwnProperty(args.length)) {\n                            throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)\n                        }\n                        return proto[methodName].overloadTable[args.length].apply(this, args)\n                    };\n                    proto[methodName].overloadTable = [];\n                    proto[methodName].overloadTable[prevFunc.argCount] = prevFunc\n                }\n            };\n            var exposePublicSymbol = (name, value, numArguments) => {\n                if (Module.hasOwnProperty(name)) {\n                    if (undefined === numArguments || undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments]) {\n                        throwBindingError(`Cannot register public name '${name}' twice`)\n                    }\n                    ensureOverloadTable(Module, name, name);\n                    if (Module[name].overloadTable.hasOwnProperty(numArguments)) {\n                        throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)\n                    }\n                    Module[name].overloadTable[numArguments] = value\n                } else {\n                    Module[name] = value;\n                    Module[name].argCount = numArguments\n                }\n            };\n            var replacePublicSymbol = (name, value, numArguments) => {\n                if (!Module.hasOwnProperty(name)) {\n                    throwInternalError(\"Replacing nonexistent public symbol\")\n                }\n                if (undefined !== Module[name].overloadTable && undefined !== numArguments) {\n                    Module[name].overloadTable[numArguments] = value\n                } else {\n                    Module[name] = value;\n                    Module[name].argCount = numArguments\n                }\n            };\n            var registeredInstances = {};\n            var getBasestPointer = (class_, ptr) => {\n                if (ptr === undefined) {\n                    throwBindingError(\"ptr should not be undefined\")\n                }\n                while (class_.baseClass) {\n                    ptr = class_.upcast(ptr);\n                    class_ = class_.baseClass\n                }\n                return ptr\n            };\n            var registerInheritedInstance = (class_, ptr, instance) => {\n                ptr = getBasestPointer(class_, ptr);\n                if (registeredInstances.hasOwnProperty(ptr)) {\n                    throwBindingError(`Tried to register registered instance: ${ptr}`)\n                } else {\n                    registeredInstances[ptr] = instance\n                }\n            };\n            var unregisterInheritedInstance = (class_, ptr) => {\n                ptr = getBasestPointer(class_, ptr);\n                if (registeredInstances.hasOwnProperty(ptr)) {\n                    delete registeredInstances[ptr]\n                } else {\n                    throwBindingError(`Tried to unregister unregistered instance: ${ptr}`)\n                }\n            };\n            var getInheritedInstance = (class_, ptr) => {\n                ptr = getBasestPointer(class_, ptr);\n                return registeredInstances[ptr]\n            };\n            var getInheritedInstanceCount = () => Object.keys(registeredInstances).length;\n            var getLiveInheritedInstances = () => {\n                var rv = [];\n                for (var k in registeredInstances) {\n                    if (registeredInstances.hasOwnProperty(k)) {\n                        rv.push(registeredInstances[k])\n                    }\n                }\n                return rv\n            };\n            var registeredPointers = {};\n            var enumReadValueFromPointer = (name, width, signed) => {\n                switch (width) {\n                    case 1:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP8[pointer >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU8[pointer >>> 0])\n                        };\n                    case 2:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP16[pointer >>> 1 >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU16[pointer >>> 1 >>> 0])\n                        };\n                    case 4:\n                        return signed ? function(pointer) {\n                            return this[\"fromWireType\"](HEAP32[pointer >>> 2 >>> 0])\n                        } : function(pointer) {\n                            return this[\"fromWireType\"](HEAPU32[pointer >>> 2 >>> 0])\n                        };\n                    default:\n                        throw new TypeError(`invalid integer width (${width}): ${name}`)\n                }\n            };\n\n            function __embind_register_user_type(rawType, name) {\n                rawType >>>= 0;\n                name >>>= 0;\n                __embind_register_emval(rawType)\n            }\n            __embind_register_user_type.sig = \"vpp\";\n\n            function __embind_register_optional(rawOptionalType, rawType) {\n                rawOptionalType >>>= 0;\n                rawType >>>= 0;\n                registerType(rawOptionalType, EmValOptionalType)\n            }\n            __embind_register_optional.sig = \"vpp\";\n\n            function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc, isAsync) {\n                var argCount = argTypes.length;\n                if (argCount < 2) {\n                    throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")\n                }\n                var isClassMethodFunc = argTypes[1] !== null && classType !== null;\n                var needsDestructorStack = usesDestructorStack(argTypes);\n                var returns = argTypes[0].name !== \"void\";\n                var expectedArgCount = argCount - 2;\n                var closureArgs = [humanName, throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];\n                for (var i = 0; i < argCount - 2; ++i) {\n                    closureArgs.push(argTypes[i + 2])\n                }\n                if (!needsDestructorStack) {\n                    for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {\n                        if (argTypes[i].destructorFunction !== null) {\n                            closureArgs.push(argTypes[i].destructorFunction)\n                        }\n                    }\n                }\n                let [args, invokerFnBody] = createJsInvoker(argTypes, isClassMethodFunc, returns, isAsync);\n                args.push(invokerFnBody);\n                var invokerFn = newFunc(Function, args)(...closureArgs);\n                return createNamedFunction(humanName, invokerFn)\n            }\n            var embind__requireFunction = (signature, rawFunction) => {\n                signature = readLatin1String(signature);\n\n                function makeDynCaller() {\n                    if (signature.includes(\"j\")) {\n                        return getDynCaller(signature, rawFunction)\n                    }\n                    if (signature.includes(\"p\")) {\n                        return getDynCaller(signature, rawFunction)\n                    }\n                    return getWasmTableEntry(rawFunction)\n                }\n                var fp = makeDynCaller();\n                if (typeof fp != \"function\") {\n                    throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)\n                }\n                return fp\n            };\n\n            function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn, isAsync, isNonnullReturn) {\n                name >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                signature >>>= 0;\n                rawInvoker >>>= 0;\n                fn >>>= 0;\n                var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                name = readLatin1String(name);\n                name = getFunctionName(name);\n                rawInvoker = embind__requireFunction(signature, rawInvoker);\n                exposePublicSymbol(name, function() {\n                    throwUnboundTypeError(`Cannot call ${name} due to unbound types`, argTypes)\n                }, argCount - 1);\n                whenDependentTypesAreResolved([], argTypes, argTypes => {\n                    var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));\n                    replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn, isAsync), argCount - 1);\n                    return []\n                })\n            }\n            __embind_register_function.sig = \"vpippppii\";\n\n            function __embind_register_value_array(rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                name >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                tupleRegistrations[rawType] = {\n                    name: readLatin1String(name),\n                    rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),\n                    rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),\n                    elements: []\n                }\n            }\n            __embind_register_value_array.sig = \"vpppppp\";\n\n            function __embind_register_value_array_element(rawTupleType, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                rawTupleType >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                tupleRegistrations[rawTupleType].elements.push({\n                    getterReturnType,\n                    getter: embind__requireFunction(getterSignature, getter),\n                    getterContext,\n                    setterArgumentType,\n                    setter: embind__requireFunction(setterSignature, setter),\n                    setterContext\n                })\n            }\n            __embind_register_value_array_element.sig = \"vppppppppp\";\n            var __embind_finalize_value_array = function(rawTupleType) {\n                rawTupleType >>>= 0;\n                var reg = tupleRegistrations[rawTupleType];\n                delete tupleRegistrations[rawTupleType];\n                var elements = reg.elements;\n                var elementsLength = elements.length;\n                var elementTypes = elements.map(elt => elt.getterReturnType).concat(elements.map(elt => elt.setterArgumentType));\n                var rawConstructor = reg.rawConstructor;\n                var rawDestructor = reg.rawDestructor;\n                whenDependentTypesAreResolved([rawTupleType], elementTypes, elementTypes => {\n                    elements.forEach((elt, i) => {\n                        var getterReturnType = elementTypes[i];\n                        var getter = elt.getter;\n                        var getterContext = elt.getterContext;\n                        var setterArgumentType = elementTypes[i + elementsLength];\n                        var setter = elt.setter;\n                        var setterContext = elt.setterContext;\n                        elt.read = ptr => getterReturnType[\"fromWireType\"](getter(getterContext, ptr));\n                        elt.write = (ptr, o) => {\n                            var destructors = [];\n                            setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, o));\n                            runDestructors(destructors)\n                        }\n                    });\n                    return [{\n                        name: reg.name,\n                        fromWireType: ptr => {\n                            var rv = new Array(elementsLength);\n                            for (var i = 0; i < elementsLength; ++i) {\n                                rv[i] = elements[i].read(ptr)\n                            }\n                            rawDestructor(ptr);\n                            return rv\n                        },\n                        toWireType: (destructors, o) => {\n                            if (elementsLength !== o.length) {\n                                throw new TypeError(`Incorrect number of tuple elements for ${reg.name}: expected=${elementsLength}, actual=${o.length}`)\n                            }\n                            var ptr = rawConstructor();\n                            for (var i = 0; i < elementsLength; ++i) {\n                                elements[i].write(ptr, o[i])\n                            }\n                            if (destructors !== null) {\n                                destructors.push(rawDestructor, ptr)\n                            }\n                            return ptr\n                        },\n                        argPackAdvance: GenericWireTypeSize,\n                        readValueFromPointer: readPointer,\n                        destructorFunction: rawDestructor\n                    }]\n                })\n            };\n            __embind_finalize_value_array.sig = \"vp\";\n\n            function __embind_register_value_object(rawType, name, constructorSignature, rawConstructor, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                name >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                structRegistrations[rawType] = {\n                    name: readLatin1String(name),\n                    rawConstructor: embind__requireFunction(constructorSignature, rawConstructor),\n                    rawDestructor: embind__requireFunction(destructorSignature, rawDestructor),\n                    fields: []\n                }\n            }\n            __embind_register_value_object.sig = \"vpppppp\";\n\n            function __embind_register_value_object_field(structType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                structType >>>= 0;\n                fieldName >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                structRegistrations[structType].fields.push({\n                    fieldName: readLatin1String(fieldName),\n                    getterReturnType,\n                    getter: embind__requireFunction(getterSignature, getter),\n                    getterContext,\n                    setterArgumentType,\n                    setter: embind__requireFunction(setterSignature, setter),\n                    setterContext\n                })\n            }\n            __embind_register_value_object_field.sig = \"vpppppppppp\";\n            var __embind_finalize_value_object = function(structType) {\n                structType >>>= 0;\n                var reg = structRegistrations[structType];\n                delete structRegistrations[structType];\n                var rawConstructor = reg.rawConstructor;\n                var rawDestructor = reg.rawDestructor;\n                var fieldRecords = reg.fields;\n                var fieldTypes = fieldRecords.map(field => field.getterReturnType).concat(fieldRecords.map(field => field.setterArgumentType));\n                whenDependentTypesAreResolved([structType], fieldTypes, fieldTypes => {\n                    var fields = {};\n                    fieldRecords.forEach((field, i) => {\n                        var fieldName = field.fieldName;\n                        var getterReturnType = fieldTypes[i];\n                        var getter = field.getter;\n                        var getterContext = field.getterContext;\n                        var setterArgumentType = fieldTypes[i + fieldRecords.length];\n                        var setter = field.setter;\n                        var setterContext = field.setterContext;\n                        fields[fieldName] = {\n                            read: ptr => getterReturnType[\"fromWireType\"](getter(getterContext, ptr)),\n                            write: (ptr, o) => {\n                                var destructors = [];\n                                setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, o));\n                                runDestructors(destructors)\n                            }\n                        }\n                    });\n                    return [{\n                        name: reg.name,\n                        fromWireType: ptr => {\n                            var rv = {};\n                            for (var i in fields) {\n                                rv[i] = fields[i].read(ptr)\n                            }\n                            rawDestructor(ptr);\n                            return rv\n                        },\n                        toWireType: (destructors, o) => {\n                            for (var fieldName in fields) {\n                                if (!(fieldName in o)) {\n                                    throw new TypeError(`Missing field: \"${fieldName}\"`)\n                                }\n                            }\n                            var ptr = rawConstructor();\n                            for (fieldName in fields) {\n                                fields[fieldName].write(ptr, o[fieldName])\n                            }\n                            if (destructors !== null) {\n                                destructors.push(rawDestructor, ptr)\n                            }\n                            return ptr\n                        },\n                        argPackAdvance: GenericWireTypeSize,\n                        readValueFromPointer: readPointer,\n                        destructorFunction: rawDestructor\n                    }]\n                })\n            };\n            __embind_finalize_value_object.sig = \"vp\";\n            var upcastPointer = (ptr, ptrClass, desiredClass) => {\n                while (ptrClass !== desiredClass) {\n                    if (!ptrClass.upcast) {\n                        throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)\n                    }\n                    ptr = ptrClass.upcast(ptr);\n                    ptrClass = ptrClass.baseClass\n                }\n                return ptr\n            };\n\n            function genericPointerToWireType(destructors, handle) {\n                var ptr;\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    if (this.isSmartPointer) {\n                        ptr = this.rawConstructor();\n                        if (destructors !== null) {\n                            destructors.push(this.rawDestructor, ptr)\n                        }\n                        return ptr\n                    } else {\n                        return 0\n                    }\n                }\n                if (!handle || !handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                if (!this.isConst && handle.$$.ptrType.isConst) {\n                    throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                if (this.isSmartPointer) {\n                    if (undefined === handle.$$.smartPtr) {\n                        throwBindingError(\"Passing raw pointer to smart pointer is illegal\")\n                    }\n                    switch (this.sharingPolicy) {\n                        case 0:\n                            if (handle.$$.smartPtrType === this) {\n                                ptr = handle.$$.smartPtr\n                            } else {\n                                throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)\n                            }\n                            break;\n                        case 1:\n                            ptr = handle.$$.smartPtr;\n                            break;\n                        case 2:\n                            if (handle.$$.smartPtrType === this) {\n                                ptr = handle.$$.smartPtr\n                            } else {\n                                var clonedHandle = handle[\"clone\"]();\n                                ptr = this.rawShare(ptr, Emval.toHandle(() => clonedHandle[\"delete\"]()));\n                                if (destructors !== null) {\n                                    destructors.push(this.rawDestructor, ptr)\n                                }\n                            }\n                            break;\n                        default:\n                            throwBindingError(\"Unsupporting sharing policy\")\n                    }\n                }\n                return ptr\n            }\n\n            function constNoSmartPtrRawPointerToWireType(destructors, handle) {\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    return 0\n                }\n                if (!handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                return ptr\n            }\n\n            function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {\n                if (handle === null) {\n                    if (this.isReference) {\n                        throwBindingError(`null is not a valid ${this.name}`)\n                    }\n                    return 0\n                }\n                if (!handle.$$) {\n                    throwBindingError(`Cannot pass \"${embindRepr(handle)}\" as a ${this.name}`)\n                }\n                if (!handle.$$.ptr) {\n                    throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)\n                }\n                if (handle.$$.ptrType.isConst) {\n                    throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)\n                }\n                var handleClass = handle.$$.ptrType.registeredClass;\n                var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n                return ptr\n            }\n\n            function RegisteredPointer(name, registeredClass, isReference, isConst, isSmartPointer, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor) {\n                this.name = name;\n                this.registeredClass = registeredClass;\n                this.isReference = isReference;\n                this.isConst = isConst;\n                this.isSmartPointer = isSmartPointer;\n                this.pointeeType = pointeeType;\n                this.sharingPolicy = sharingPolicy;\n                this.rawGetPointee = rawGetPointee;\n                this.rawConstructor = rawConstructor;\n                this.rawShare = rawShare;\n                this.rawDestructor = rawDestructor;\n                if (!isSmartPointer && registeredClass.baseClass === undefined) {\n                    if (isConst) {\n                        this[\"toWireType\"] = constNoSmartPtrRawPointerToWireType;\n                        this.destructorFunction = null\n                    } else {\n                        this[\"toWireType\"] = nonConstNoSmartPtrRawPointerToWireType;\n                        this.destructorFunction = null\n                    }\n                } else {\n                    this[\"toWireType\"] = genericPointerToWireType\n                }\n            }\n            var downcastPointer = (ptr, ptrClass, desiredClass) => {\n                if (ptrClass === desiredClass) {\n                    return ptr\n                }\n                if (undefined === desiredClass.baseClass) {\n                    return null\n                }\n                var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);\n                if (rv === null) {\n                    return null\n                }\n                return desiredClass.downcast(rv)\n            };\n            var finalizationRegistry = false;\n            var detachFinalizer = handle => {};\n            var runDestructor = $$ => {\n                if ($$.smartPtr) {\n                    $$.smartPtrType.rawDestructor($$.smartPtr)\n                } else {\n                    $$.ptrType.registeredClass.rawDestructor($$.ptr)\n                }\n            };\n            var releaseClassHandle = $$ => {\n                $$.count.value -= 1;\n                var toDelete = 0 === $$.count.value;\n                if (toDelete) {\n                    runDestructor($$)\n                }\n            };\n            var attachFinalizer = handle => {\n                if (\"undefined\" === typeof FinalizationRegistry) {\n                    attachFinalizer = handle => handle;\n                    return handle\n                }\n                finalizationRegistry = new FinalizationRegistry(info => {\n                    releaseClassHandle(info.$$)\n                });\n                attachFinalizer = handle => {\n                    var $$ = handle.$$;\n                    var hasSmartPtr = !!$$.smartPtr;\n                    if (hasSmartPtr) {\n                        var info = {\n                            $$\n                        };\n                        finalizationRegistry.register(handle, info, handle)\n                    }\n                    return handle\n                };\n                detachFinalizer = handle => finalizationRegistry.unregister(handle);\n                return attachFinalizer(handle)\n            };\n            var makeClassHandle = (prototype, record) => {\n                if (!record.ptrType || !record.ptr) {\n                    throwInternalError(\"makeClassHandle requires ptr and ptrType\")\n                }\n                var hasSmartPtrType = !!record.smartPtrType;\n                var hasSmartPtr = !!record.smartPtr;\n                if (hasSmartPtrType !== hasSmartPtr) {\n                    throwInternalError(\"Both smartPtrType and smartPtr must be specified\")\n                }\n                record.count = {\n                    value: 1\n                };\n                return attachFinalizer(Object.create(prototype, {\n                    $$: {\n                        value: record,\n                        writable: true\n                    }\n                }))\n            };\n\n            function RegisteredPointer_fromWireType(ptr) {\n                var rawPointer = this.getPointee(ptr);\n                if (!rawPointer) {\n                    this.destructor(ptr);\n                    return null\n                }\n                var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer);\n                if (undefined !== registeredInstance) {\n                    if (0 === registeredInstance.$$.count.value) {\n                        registeredInstance.$$.ptr = rawPointer;\n                        registeredInstance.$$.smartPtr = ptr;\n                        return registeredInstance[\"clone\"]()\n                    } else {\n                        var rv = registeredInstance[\"clone\"]();\n                        this.destructor(ptr);\n                        return rv\n                    }\n                }\n\n                function makeDefaultHandle() {\n                    if (this.isSmartPointer) {\n                        return makeClassHandle(this.registeredClass.instancePrototype, {\n                            ptrType: this.pointeeType,\n                            ptr: rawPointer,\n                            smartPtrType: this,\n                            smartPtr: ptr\n                        })\n                    } else {\n                        return makeClassHandle(this.registeredClass.instancePrototype, {\n                            ptrType: this,\n                            ptr\n                        })\n                    }\n                }\n                var actualType = this.registeredClass.getActualType(rawPointer);\n                var registeredPointerRecord = registeredPointers[actualType];\n                if (!registeredPointerRecord) {\n                    return makeDefaultHandle.call(this)\n                }\n                var toType;\n                if (this.isConst) {\n                    toType = registeredPointerRecord.constPointerType\n                } else {\n                    toType = registeredPointerRecord.pointerType\n                }\n                var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass);\n                if (dp === null) {\n                    return makeDefaultHandle.call(this)\n                }\n                if (this.isSmartPointer) {\n                    return makeClassHandle(toType.registeredClass.instancePrototype, {\n                        ptrType: toType,\n                        ptr: dp,\n                        smartPtrType: this,\n                        smartPtr: ptr\n                    })\n                } else {\n                    return makeClassHandle(toType.registeredClass.instancePrototype, {\n                        ptrType: toType,\n                        ptr: dp\n                    })\n                }\n            }\n            var init_RegisteredPointer = () => {\n                Object.assign(RegisteredPointer.prototype, {\n                    getPointee(ptr) {\n                        if (this.rawGetPointee) {\n                            ptr = this.rawGetPointee(ptr)\n                        }\n                        return ptr\n                    },\n                    destructor(ptr) {\n                        this.rawDestructor?.(ptr)\n                    },\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: readPointer,\n                    fromWireType: RegisteredPointer_fromWireType\n                })\n            };\n            var detachFinalizer_deps = [\"$finalizationRegistry\"];\n\n            function ClassHandle() {}\n            var shallowCopyInternalPointer = o => ({\n                count: o.count,\n                deleteScheduled: o.deleteScheduled,\n                preservePointerOnDelete: o.preservePointerOnDelete,\n                ptr: o.ptr,\n                ptrType: o.ptrType,\n                smartPtr: o.smartPtr,\n                smartPtrType: o.smartPtrType\n            });\n            var throwInstanceAlreadyDeleted = obj => {\n                function getInstanceTypeName(handle) {\n                    return handle.$$.ptrType.registeredClass.name\n                }\n                throwBindingError(getInstanceTypeName(obj) + \" instance already deleted\")\n            };\n            var deletionQueue = [];\n            var flushPendingDeletes = () => {\n                while (deletionQueue.length) {\n                    var obj = deletionQueue.pop();\n                    obj.$$.deleteScheduled = false;\n                    obj[\"delete\"]()\n                }\n            };\n            var delayFunction;\n            var init_ClassHandle = () => {\n                Object.assign(ClassHandle.prototype, {\n                    isAliasOf(other) {\n                        if (!(this instanceof ClassHandle)) {\n                            return false\n                        }\n                        if (!(other instanceof ClassHandle)) {\n                            return false\n                        }\n                        var leftClass = this.$$.ptrType.registeredClass;\n                        var left = this.$$.ptr;\n                        other.$$ = other.$$;\n                        var rightClass = other.$$.ptrType.registeredClass;\n                        var right = other.$$.ptr;\n                        while (leftClass.baseClass) {\n                            left = leftClass.upcast(left);\n                            leftClass = leftClass.baseClass\n                        }\n                        while (rightClass.baseClass) {\n                            right = rightClass.upcast(right);\n                            rightClass = rightClass.baseClass\n                        }\n                        return leftClass === rightClass && left === right\n                    },\n                    clone() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.preservePointerOnDelete) {\n                            this.$$.count.value += 1;\n                            return this\n                        } else {\n                            var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), {\n                                $$: {\n                                    value: shallowCopyInternalPointer(this.$$)\n                                }\n                            }));\n                            clone.$$.count.value += 1;\n                            clone.$$.deleteScheduled = false;\n                            return clone\n                        }\n                    },\n                    delete() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n                            throwBindingError(\"Object already scheduled for deletion\")\n                        }\n                        detachFinalizer(this);\n                        releaseClassHandle(this.$$);\n                        if (!this.$$.preservePointerOnDelete) {\n                            this.$$.smartPtr = undefined;\n                            this.$$.ptr = undefined\n                        }\n                    },\n                    isDeleted() {\n                        return !this.$$.ptr\n                    },\n                    deleteLater() {\n                        if (!this.$$.ptr) {\n                            throwInstanceAlreadyDeleted(this)\n                        }\n                        if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n                            throwBindingError(\"Object already scheduled for deletion\")\n                        }\n                        deletionQueue.push(this);\n                        if (deletionQueue.length === 1 && delayFunction) {\n                            delayFunction(flushPendingDeletes)\n                        }\n                        this.$$.deleteScheduled = true;\n                        return this\n                    }\n                })\n            };\n            var setDelayFunction = fn => {\n                delayFunction = fn;\n                if (deletionQueue.length && delayFunction) {\n                    delayFunction(flushPendingDeletes)\n                }\n            };\n\n            function RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast) {\n                this.name = name;\n                this.constructor = constructor;\n                this.instancePrototype = instancePrototype;\n                this.rawDestructor = rawDestructor;\n                this.baseClass = baseClass;\n                this.getActualType = getActualType;\n                this.upcast = upcast;\n                this.downcast = downcast;\n                this.pureVirtualFunctions = []\n            }\n            var char_0 = 48;\n            var char_9 = 57;\n            var makeLegalFunctionName = name => {\n                name = name.replace(/[^a-zA-Z0-9_]/g, \"$\");\n                var f = name.charCodeAt(0);\n                if (f >= char_0 && f <= char_9) {\n                    return `_${name}`\n                }\n                return name\n            };\n\n            function __embind_register_class(rawType, rawPointerType, rawConstPointerType, baseClassRawType, getActualTypeSignature, getActualType, upcastSignature, upcast, downcastSignature, downcast, name, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                rawPointerType >>>= 0;\n                rawConstPointerType >>>= 0;\n                baseClassRawType >>>= 0;\n                getActualTypeSignature >>>= 0;\n                getActualType >>>= 0;\n                upcastSignature >>>= 0;\n                upcast >>>= 0;\n                downcastSignature >>>= 0;\n                downcast >>>= 0;\n                name >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                name = readLatin1String(name);\n                getActualType = embind__requireFunction(getActualTypeSignature, getActualType);\n                upcast &&= embind__requireFunction(upcastSignature, upcast);\n                downcast &&= embind__requireFunction(downcastSignature, downcast);\n                rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n                var legalFunctionName = makeLegalFunctionName(name);\n                exposePublicSymbol(legalFunctionName, function() {\n                    throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, [baseClassRawType])\n                });\n                whenDependentTypesAreResolved([rawType, rawPointerType, rawConstPointerType], baseClassRawType ? [baseClassRawType] : [], base => {\n                    base = base[0];\n                    var baseClass;\n                    var basePrototype;\n                    if (baseClassRawType) {\n                        baseClass = base.registeredClass;\n                        basePrototype = baseClass.instancePrototype\n                    } else {\n                        basePrototype = ClassHandle.prototype\n                    }\n                    var constructor = createNamedFunction(name, function(...args) {\n                        if (Object.getPrototypeOf(this) !== instancePrototype) {\n                            throw new BindingError(\"Use 'new' to construct \" + name)\n                        }\n                        if (undefined === registeredClass.constructor_body) {\n                            throw new BindingError(name + \" has no accessible constructor\")\n                        }\n                        var body = registeredClass.constructor_body[args.length];\n                        if (undefined === body) {\n                            throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)\n                        }\n                        return body.apply(this, args)\n                    });\n                    var instancePrototype = Object.create(basePrototype, {\n                        constructor: {\n                            value: constructor\n                        }\n                    });\n                    constructor.prototype = instancePrototype;\n                    var registeredClass = new RegisteredClass(name, constructor, instancePrototype, rawDestructor, baseClass, getActualType, upcast, downcast);\n                    if (registeredClass.baseClass) {\n                        registeredClass.baseClass.__derivedClasses ??= [];\n                        registeredClass.baseClass.__derivedClasses.push(registeredClass)\n                    }\n                    var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false);\n                    var pointerConverter = new RegisteredPointer(name + \"*\", registeredClass, false, false, false);\n                    var constPointerConverter = new RegisteredPointer(name + \" const*\", registeredClass, false, true, false);\n                    registeredPointers[rawType] = {\n                        pointerType: pointerConverter,\n                        constPointerType: constPointerConverter\n                    };\n                    replacePublicSymbol(legalFunctionName, constructor);\n                    return [referenceConverter, pointerConverter, constPointerConverter]\n                })\n            }\n            __embind_register_class.sig = \"vppppppppppppp\";\n            var __embind_register_class_constructor = function(rawClassType, argCount, rawArgTypesAddr, invokerSignature, invoker, rawConstructor) {\n                rawClassType >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                invoker >>>= 0;\n                rawConstructor >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                invoker = embind__requireFunction(invokerSignature, invoker);\n                var args = [rawConstructor];\n                var destructors = [];\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `constructor ${classType.name}`;\n                    if (undefined === classType.registeredClass.constructor_body) {\n                        classType.registeredClass.constructor_body = []\n                    }\n                    if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) {\n                        throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)\n                    }\n                    classType.registeredClass.constructor_body[argCount - 1] = () => {\n                        throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`, rawArgTypes)\n                    };\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        argTypes.splice(1, 0, null);\n                        classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_constructor.sig = \"vpipppp\";\n            var validateThis = (this_, classType, humanName) => {\n                if (!(this_ instanceof Object)) {\n                    throwBindingError(`${humanName} with invalid \"this\": ${this_}`)\n                }\n                if (!(this_ instanceof classType.registeredClass.constructor)) {\n                    throwBindingError(`${humanName} incompatible with \"this\" of type ${this_.constructor.name}`)\n                }\n                if (!this_.$$.ptr) {\n                    throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)\n                }\n                return upcastPointer(this_.$$.ptr, this_.$$.ptrType.registeredClass, classType.registeredClass)\n            };\n            var __embind_register_class_function = function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, context, isPureVirtual, isAsync, isNonnullReturn) {\n                rawClassType >>>= 0;\n                methodName >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                rawInvoker >>>= 0;\n                context >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                methodName = readLatin1String(methodName);\n                methodName = getFunctionName(methodName);\n                rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${methodName}`;\n                    if (methodName.startsWith(\"@@\")) {\n                        methodName = Symbol[methodName.substring(2)]\n                    }\n                    if (isPureVirtual) {\n                        classType.registeredClass.pureVirtualFunctions.push(methodName)\n                    }\n\n                    function unboundTypesHandler() {\n                        throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes)\n                    }\n                    var proto = classType.registeredClass.instancePrototype;\n                    var method = proto[methodName];\n                    if (undefined === method || undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2) {\n                        unboundTypesHandler.argCount = argCount - 2;\n                        unboundTypesHandler.className = classType.name;\n                        proto[methodName] = unboundTypesHandler\n                    } else {\n                        ensureOverloadTable(proto, methodName, humanName);\n                        proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler\n                    }\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context, isAsync);\n                        if (undefined === proto[methodName].overloadTable) {\n                            memberFunction.argCount = argCount - 2;\n                            proto[methodName] = memberFunction\n                        } else {\n                            proto[methodName].overloadTable[argCount - 2] = memberFunction\n                        }\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_function.sig = \"vppippppiii\";\n            var __embind_register_class_property = function(classType, fieldName, getterReturnType, getterSignature, getter, getterContext, setterArgumentType, setterSignature, setter, setterContext) {\n                classType >>>= 0;\n                fieldName >>>= 0;\n                getterReturnType >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                getterContext >>>= 0;\n                setterArgumentType >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                setterContext >>>= 0;\n                fieldName = readLatin1String(fieldName);\n                getter = embind__requireFunction(getterSignature, getter);\n                whenDependentTypesAreResolved([], [classType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${fieldName}`;\n                    var desc = {\n                        get() {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [getterReturnType, setterArgumentType])\n                        },\n                        enumerable: true,\n                        configurable: true\n                    };\n                    if (setter) {\n                        desc.set = () => throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [getterReturnType, setterArgumentType])\n                    } else {\n                        desc.set = v => throwBindingError(humanName + \" is a read-only property\")\n                    }\n                    Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);\n                    whenDependentTypesAreResolved([], setter ? [getterReturnType, setterArgumentType] : [getterReturnType], types => {\n                        var getterReturnType = types[0];\n                        var desc = {\n                            get() {\n                                var ptr = validateThis(this, classType, humanName + \" getter\");\n                                return getterReturnType[\"fromWireType\"](getter(getterContext, ptr))\n                            },\n                            enumerable: true\n                        };\n                        if (setter) {\n                            setter = embind__requireFunction(setterSignature, setter);\n                            var setterArgumentType = types[1];\n                            desc.set = function(v) {\n                                var ptr = validateThis(this, classType, humanName + \" setter\");\n                                var destructors = [];\n                                setter(setterContext, ptr, setterArgumentType[\"toWireType\"](destructors, v));\n                                runDestructors(destructors)\n                            }\n                        }\n                        Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_property.sig = \"vpppppppppp\";\n            var __embind_register_class_class_function = function(rawClassType, methodName, argCount, rawArgTypesAddr, invokerSignature, rawInvoker, fn, isAsync, isNonnullReturn) {\n                rawClassType >>>= 0;\n                methodName >>>= 0;\n                rawArgTypesAddr >>>= 0;\n                invokerSignature >>>= 0;\n                rawInvoker >>>= 0;\n                fn >>>= 0;\n                var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n                methodName = readLatin1String(methodName);\n                methodName = getFunctionName(methodName);\n                rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${methodName}`;\n\n                    function unboundTypesHandler() {\n                        throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`, rawArgTypes)\n                    }\n                    if (methodName.startsWith(\"@@\")) {\n                        methodName = Symbol[methodName.substring(2)]\n                    }\n                    var proto = classType.registeredClass.constructor;\n                    if (undefined === proto[methodName]) {\n                        unboundTypesHandler.argCount = argCount - 1;\n                        proto[methodName] = unboundTypesHandler\n                    } else {\n                        ensureOverloadTable(proto, methodName, humanName);\n                        proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler\n                    }\n                    whenDependentTypesAreResolved([], rawArgTypes, argTypes => {\n                        var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));\n                        var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn, isAsync);\n                        if (undefined === proto[methodName].overloadTable) {\n                            func.argCount = argCount - 1;\n                            proto[methodName] = func\n                        } else {\n                            proto[methodName].overloadTable[argCount - 1] = func\n                        }\n                        if (classType.registeredClass.__derivedClasses) {\n                            for (const derivedClass of classType.registeredClass.__derivedClasses) {\n                                if (!derivedClass.constructor.hasOwnProperty(methodName)) {\n                                    derivedClass.constructor[methodName] = func\n                                }\n                            }\n                        }\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_class_function.sig = \"vppippppii\";\n            var __embind_register_class_class_property = function(rawClassType, fieldName, rawFieldType, rawFieldPtr, getterSignature, getter, setterSignature, setter) {\n                rawClassType >>>= 0;\n                fieldName >>>= 0;\n                rawFieldType >>>= 0;\n                rawFieldPtr >>>= 0;\n                getterSignature >>>= 0;\n                getter >>>= 0;\n                setterSignature >>>= 0;\n                setter >>>= 0;\n                fieldName = readLatin1String(fieldName);\n                getter = embind__requireFunction(getterSignature, getter);\n                whenDependentTypesAreResolved([], [rawClassType], classType => {\n                    classType = classType[0];\n                    var humanName = `${classType.name}.${fieldName}`;\n                    var desc = {\n                        get() {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [rawFieldType])\n                        },\n                        enumerable: true,\n                        configurable: true\n                    };\n                    if (setter) {\n                        desc.set = () => {\n                            throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`, [rawFieldType])\n                        }\n                    } else {\n                        desc.set = v => {\n                            throwBindingError(`${humanName} is a read-only property`)\n                        }\n                    }\n                    Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n                    whenDependentTypesAreResolved([], [rawFieldType], fieldType => {\n                        fieldType = fieldType[0];\n                        var desc = {\n                            get() {\n                                return fieldType[\"fromWireType\"](getter(rawFieldPtr))\n                            },\n                            enumerable: true\n                        };\n                        if (setter) {\n                            setter = embind__requireFunction(setterSignature, setter);\n                            desc.set = v => {\n                                var destructors = [];\n                                setter(rawFieldPtr, fieldType[\"toWireType\"](destructors, v));\n                                runDestructors(destructors)\n                            }\n                        }\n                        Object.defineProperty(classType.registeredClass.constructor, fieldName, desc);\n                        return []\n                    });\n                    return []\n                })\n            };\n            __embind_register_class_class_property.sig = \"vpppppppp\";\n\n            function __embind_create_inheriting_constructor(constructorName, wrapperType, properties) {\n                constructorName >>>= 0;\n                wrapperType >>>= 0;\n                properties >>>= 0;\n                constructorName = readLatin1String(constructorName);\n                wrapperType = requireRegisteredType(wrapperType, \"wrapper\");\n                properties = Emval.toValue(properties);\n                var registeredClass = wrapperType.registeredClass;\n                var wrapperPrototype = registeredClass.instancePrototype;\n                var baseClass = registeredClass.baseClass;\n                var baseClassPrototype = baseClass.instancePrototype;\n                var baseConstructor = registeredClass.baseClass.constructor;\n                var ctor = createNamedFunction(constructorName, function(...args) {\n                    registeredClass.baseClass.pureVirtualFunctions.forEach(function(name) {\n                        if (this[name] === baseClassPrototype[name]) {\n                            throw new PureVirtualError(`Pure virtual function ${name} must be implemented in JavaScript`)\n                        }\n                    }.bind(this));\n                    Object.defineProperty(this, \"__parent\", {\n                        value: wrapperPrototype\n                    });\n                    this[\"__construct\"](...args)\n                });\n                wrapperPrototype[\"__construct\"] = function __construct(...args) {\n                    if (this === wrapperPrototype) {\n                        throwBindingError(\"Pass correct 'this' to __construct\")\n                    }\n                    var inner = baseConstructor[\"implement\"](this, ...args);\n                    detachFinalizer(inner);\n                    var $$ = inner.$$;\n                    inner[\"notifyOnDestruction\"]();\n                    $$.preservePointerOnDelete = true;\n                    Object.defineProperties(this, {\n                        $$: {\n                            value: $$\n                        }\n                    });\n                    attachFinalizer(this);\n                    registerInheritedInstance(registeredClass, $$.ptr, this)\n                };\n                wrapperPrototype[\"__destruct\"] = function __destruct() {\n                    if (this === wrapperPrototype) {\n                        throwBindingError(\"Pass correct 'this' to __destruct\")\n                    }\n                    detachFinalizer(this);\n                    unregisterInheritedInstance(registeredClass, this.$$.ptr)\n                };\n                ctor.prototype = Object.create(wrapperPrototype);\n                Object.assign(ctor.prototype, properties);\n                return Emval.toHandle(ctor)\n            }\n            __embind_create_inheriting_constructor.sig = \"pppp\";\n            var __embind_register_smart_ptr = function(rawType, rawPointeeType, name, sharingPolicy, getPointeeSignature, rawGetPointee, constructorSignature, rawConstructor, shareSignature, rawShare, destructorSignature, rawDestructor) {\n                rawType >>>= 0;\n                rawPointeeType >>>= 0;\n                name >>>= 0;\n                getPointeeSignature >>>= 0;\n                rawGetPointee >>>= 0;\n                constructorSignature >>>= 0;\n                rawConstructor >>>= 0;\n                shareSignature >>>= 0;\n                rawShare >>>= 0;\n                destructorSignature >>>= 0;\n                rawDestructor >>>= 0;\n                name = readLatin1String(name);\n                rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);\n                rawConstructor = embind__requireFunction(constructorSignature, rawConstructor);\n                rawShare = embind__requireFunction(shareSignature, rawShare);\n                rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n                whenDependentTypesAreResolved([rawType], [rawPointeeType], pointeeType => {\n                    pointeeType = pointeeType[0];\n                    var registeredPointer = new RegisteredPointer(name, pointeeType.registeredClass, false, false, true, pointeeType, sharingPolicy, rawGetPointee, rawConstructor, rawShare, rawDestructor);\n                    return [registeredPointer]\n                })\n            };\n            __embind_register_smart_ptr.sig = \"vpppipppppppp\";\n\n            function __embind_register_enum(rawType, name, size, isSigned) {\n                rawType >>>= 0;\n                name >>>= 0;\n                size >>>= 0;\n                name = readLatin1String(name);\n\n                function ctor() {}\n                ctor.values = {};\n                registerType(rawType, {\n                    name,\n                    constructor: ctor,\n                    fromWireType: function(c) {\n                        return this.constructor.values[c]\n                    },\n                    toWireType: (destructors, c) => c.value,\n                    argPackAdvance: GenericWireTypeSize,\n                    readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),\n                    destructorFunction: null\n                });\n                exposePublicSymbol(name, ctor)\n            }\n            __embind_register_enum.sig = \"vpppi\";\n\n            function __embind_register_enum_value(rawEnumType, name, enumValue) {\n                rawEnumType >>>= 0;\n                name >>>= 0;\n                var enumType = requireRegisteredType(rawEnumType, \"enum\");\n                name = readLatin1String(name);\n                var Enum = enumType.constructor;\n                var Value = Object.create(enumType.constructor.prototype, {\n                    value: {\n                        value: enumValue\n                    },\n                    constructor: {\n                        value: createNamedFunction(`${enumType.name}_${name}`, function() {})\n                    }\n                });\n                Enum.values[enumValue] = Value;\n                Enum[name] = Value\n            }\n            __embind_register_enum_value.sig = \"vppi\";\n            var __embind_register_constant = function(name, type, value) {\n                name >>>= 0;\n                type >>>= 0;\n                name = readLatin1String(name);\n                whenDependentTypesAreResolved([], [type], type => {\n                    type = type[0];\n                    Module[name] = type[\"fromWireType\"](value);\n                    return []\n                })\n            };\n            __embind_register_constant.sig = \"vppd\";\n\n            function __emval_register_symbol(address) {\n                address >>>= 0;\n                emval_symbols[address] = readLatin1String(address)\n            }\n            __emval_register_symbol.sig = \"vp\";\n\n            function __emval_incref(handle) {\n                handle >>>= 0;\n                if (handle > 9) {\n                    emval_handles[handle + 1] += 1\n                }\n            }\n            __emval_incref.sig = \"vp\";\n\n            function __emval_new_array() {\n                return Emval.toHandle([])\n            }\n            __emval_new_array.sig = \"p\";\n\n            function __emval_new_array_from_memory_view(view) {\n                view >>>= 0;\n                view = Emval.toValue(view);\n                var a = new Array(view.length);\n                for (var i = 0; i < view.length; i++) a[i] = view[i];\n                return Emval.toHandle(a)\n            }\n            __emval_new_array_from_memory_view.sig = \"pp\";\n\n            function __emval_new_object() {\n                return Emval.toHandle({})\n            }\n            __emval_new_object.sig = \"p\";\n\n            function __emval_new_cstring(v) {\n                v >>>= 0;\n                return Emval.toHandle(getStringOrSymbol(v))\n            }\n            __emval_new_cstring.sig = \"pp\";\n\n            function __emval_new_u8string(v) {\n                v >>>= 0;\n                return Emval.toHandle(UTF8ToString(v))\n            }\n            __emval_new_u8string.sig = \"pp\";\n\n            function __emval_new_u16string(v) {\n                v >>>= 0;\n                return Emval.toHandle(UTF16ToString(v))\n            }\n            __emval_new_u16string.sig = \"pp\";\n\n            function __emval_take_value(type, arg) {\n                type >>>= 0;\n                arg >>>= 0;\n                type = requireRegisteredType(type, \"_emval_take_value\");\n                var v = type[\"readValueFromPointer\"](arg);\n                return Emval.toHandle(v)\n            }\n            __emval_take_value.sig = \"ppp\";\n\n            function __emval_get_module_property(name) {\n                name >>>= 0;\n                name = getStringOrSymbol(name);\n                return Emval.toHandle(Module[name])\n            }\n            __emval_get_module_property.sig = \"pp\";\n\n            function __emval_get_property(handle, key) {\n                handle >>>= 0;\n                key >>>= 0;\n                handle = Emval.toValue(handle);\n                key = Emval.toValue(key);\n                return Emval.toHandle(handle[key])\n            }\n            __emval_get_property.sig = \"ppp\";\n\n            function __emval_set_property(handle, key, value) {\n                handle >>>= 0;\n                key >>>= 0;\n                value >>>= 0;\n                handle = Emval.toValue(handle);\n                key = Emval.toValue(key);\n                value = Emval.toValue(value);\n                handle[key] = value\n            }\n            __emval_set_property.sig = \"vppp\";\n\n            function __emval_as(handle, returnType, destructorsRef) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                destructorsRef >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return emval_returnValue(returnType, destructorsRef, handle)\n            }\n            __emval_as.sig = \"dppp\";\n\n            function __emval_as_int64(handle, returnType) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return returnType[\"toWireType\"](null, handle)\n            }\n            __emval_as_int64.sig = \"ipp\";\n\n            function __emval_as_uint64(handle, returnType) {\n                handle >>>= 0;\n                returnType >>>= 0;\n                handle = Emval.toValue(handle);\n                returnType = requireRegisteredType(returnType, \"emval::as\");\n                return returnType[\"toWireType\"](null, handle)\n            }\n            __emval_as_uint64.sig = \"ipp\";\n\n            function __emval_equals(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first == second\n            }\n            __emval_equals.sig = \"ipp\";\n\n            function __emval_strictly_equals(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first === second\n            }\n            __emval_strictly_equals.sig = \"ipp\";\n\n            function __emval_greater_than(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first > second\n            }\n            __emval_greater_than.sig = \"ipp\";\n\n            function __emval_less_than(first, second) {\n                first >>>= 0;\n                second >>>= 0;\n                first = Emval.toValue(first);\n                second = Emval.toValue(second);\n                return first < second\n            }\n            __emval_less_than.sig = \"ipp\";\n\n            function __emval_not(object) {\n                object >>>= 0;\n                object = Emval.toValue(object);\n                return !object\n            }\n            __emval_not.sig = \"ip\";\n\n            function __emval_call(caller, handle, destructorsRef, args) {\n                caller >>>= 0;\n                handle >>>= 0;\n                destructorsRef >>>= 0;\n                args >>>= 0;\n                caller = emval_methodCallers[caller];\n                handle = Emval.toValue(handle);\n                return caller(null, handle, destructorsRef, args)\n            }\n            __emval_call.sig = \"dpppp\";\n\n            function __emval_typeof(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return Emval.toHandle(typeof handle)\n            }\n            __emval_typeof.sig = \"pp\";\n\n            function __emval_instanceof(object, constructor) {\n                object >>>= 0;\n                constructor >>>= 0;\n                object = Emval.toValue(object);\n                constructor = Emval.toValue(constructor);\n                return object instanceof constructor\n            }\n            __emval_instanceof.sig = \"ipp\";\n\n            function __emval_is_number(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return typeof handle == \"number\"\n            }\n            __emval_is_number.sig = \"ip\";\n\n            function __emval_is_string(handle) {\n                handle >>>= 0;\n                handle = Emval.toValue(handle);\n                return typeof handle == \"string\"\n            }\n            __emval_is_string.sig = \"ip\";\n\n            function __emval_in(item, object) {\n                item >>>= 0;\n                object >>>= 0;\n                item = Emval.toValue(item);\n                object = Emval.toValue(object);\n                return item in object\n            }\n            __emval_in.sig = \"ipp\";\n\n            function __emval_delete(object, property) {\n                object >>>= 0;\n                property >>>= 0;\n                object = Emval.toValue(object);\n                property = Emval.toValue(property);\n                return delete object[property]\n            }\n            __emval_delete.sig = \"ipp\";\n\n            function __emval_throw(object) {\n                object >>>= 0;\n                object = Emval.toValue(object);\n                throw object\n            }\n            __emval_throw.sig = \"ip\";\n\n            function __emval_iter_begin(iterable) {\n                iterable >>>= 0;\n                iterable = Emval.toValue(iterable);\n                return Emval.toHandle(iterable[Symbol.iterator]())\n            }\n            __emval_iter_begin.sig = \"pp\";\n\n            function __emval_iter_next(iterator) {\n                iterator >>>= 0;\n                iterator = Emval.toValue(iterator);\n                var result = iterator.next();\n                return result.done ? 0 : Emval.toHandle(result.value)\n            }\n            __emval_iter_next.sig = \"pp\";\n            var __emval_coro_suspend = function(promiseHandle, awaiterPtr) {\n                promiseHandle >>>= 0;\n                awaiterPtr >>>= 0;\n                Emval.toValue(promiseHandle).then(result => {\n                    __emval_coro_resume(awaiterPtr, Emval.toHandle(result))\n                })\n            };\n            __emval_coro_suspend.sig = \"vpp\";\n            var __emval_coro_make_promise = function(resolveHandlePtr, rejectHandlePtr) {\n                resolveHandlePtr >>>= 0;\n                rejectHandlePtr >>>= 0;\n                return Emval.toHandle(new Promise((resolve, reject) => {\n                    const rejectWithCurrentException = () => {\n                        try {\n                            ___cxa_rethrow()\n                        } catch (e) {\n                            reject(e)\n                        }\n                    };\n                    HEAPU32[resolveHandlePtr >>> 2 >>> 0] = Emval.toHandle(resolve);\n                    HEAPU32[rejectHandlePtr >>> 2 >>> 0] = Emval.toHandle(rejectWithCurrentException)\n                }))\n            };\n            __emval_coro_make_promise.sig = \"ppp\";\n\n            function _duckdb_web_fs_file_sync(fileId) {\n                return globalThis.DUCKDB_RUNTIME.syncFile(Module, fileId)\n            }\n            _duckdb_web_fs_file_sync.sig = \"vi\";\n\n            function _duckdb_web_fs_file_get_last_modified_time(fileId) {\n                return globalThis.DUCKDB_RUNTIME.getLastFileModificationTime(Module, fileId)\n            }\n            _duckdb_web_fs_file_get_last_modified_time.sig = \"di\";\n\n            function _duckdb_web_fs_file_remove(path, pathLen) {\n                return globalThis.DUCKDB_RUNTIME.removeFile(Module, path, pathLen)\n            }\n            registerWasmPlugin();\n            FS.createPreloadedFile = FS_createPreloadedFile;\n            FS.staticInit();\n            embind_init_charCodes();\n            BindingError = Module[\"BindingError\"] = class BindingError extends Error {\n                constructor(message) {\n                    super(message);\n                    this.name = \"BindingError\"\n                }\n            };\n            InternalError = Module[\"InternalError\"] = class InternalError extends Error {\n                constructor(message) {\n                    super(message);\n                    this.name = \"InternalError\"\n                }\n            };\n            init_emval();\n            Module[\"requestAnimationFrame\"] = MainLoop.requestAnimationFrame;\n            Module[\"pauseMainLoop\"] = MainLoop.pause;\n            Module[\"resumeMainLoop\"] = MainLoop.resume;\n            MainLoop.init();\n            for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i));\n            var miniTempWebGLFloatBuffersStorage = new Float32Array(288);\n            for (var i = 0; i <= 288; ++i) {\n                miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i)\n            }\n            var miniTempWebGLIntBuffersStorage = new Int32Array(288);\n            for (var i = 0; i <= 288; ++i) {\n                miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i)\n            }\n            var emSetImmediate;\n            var emClearImmediate;\n            if (typeof setImmediate != \"undefined\") {\n                emSetImmediate = setImmediateWrapped;\n                emClearImmediate = clearImmediateWrapped\n            } else if (typeof addEventListener == \"function\") {\n                var __setImmediate_id_counter = 0;\n                var __setImmediate_queue = [];\n                var __setImmediate_message_id = \"_si\";\n                var __setImmediate_cb = e => {\n                    if (e.data === __setImmediate_message_id) {\n                        e.stopPropagation();\n                        __setImmediate_queue.shift()();\n                        ++__setImmediate_id_counter\n                    }\n                };\n                addEventListener(\"message\", __setImmediate_cb, true);\n                emSetImmediate = func => {\n                    postMessage(__setImmediate_message_id, \"*\");\n                    return __setImmediate_id_counter + __setImmediate_queue.push(func) - 1\n                };\n                emClearImmediate = id => {\n                    var index = id - __setImmediate_id_counter;\n                    if (index >= 0 && index < __setImmediate_queue.length) __setImmediate_queue[index] = () => {}\n                }\n            }\n            Module[\"requestFullscreen\"] = Browser.requestFullscreen;\n            Module[\"setCanvasSize\"] = Browser.setCanvasSize;\n            Module[\"getUserMedia\"] = Browser.getUserMedia;\n            Module[\"createContext\"] = Browser.createContext;\n            var preloadedImages = {};\n            var preloadedAudios = {};\n            registerPostMainLoop(() => SDL.audio?.queueNewAudioData?.());\n            UnboundTypeError = Module[\"UnboundTypeError\"] = extendError(Error, \"UnboundTypeError\");\n            PureVirtualError = Module[\"PureVirtualError\"] = extendError(Error, \"PureVirtualError\");\n            init_RegisteredPointer();\n            init_ClassHandle();\n            var wasmImports = {\n                IMG_Init: _IMG_Init,\n                IMG_Load: _IMG_Load,\n                IMG_Load_RW: _IMG_Load_RW,\n                IMG_Quit: _IMG_Quit,\n                Mix_AllocateChannels: _Mix_AllocateChannels,\n                Mix_ChannelFinished: _Mix_ChannelFinished,\n                Mix_CloseAudio: _Mix_CloseAudio,\n                Mix_FadeInChannelTimed: _Mix_FadeInChannelTimed,\n                Mix_FadeInMusicPos: _Mix_FadeInMusicPos,\n                Mix_FadeOutChannel: _Mix_FadeOutChannel,\n                Mix_FadeOutMusic: _Mix_FadeOutMusic,\n                Mix_FadingChannel: _Mix_FadingChannel,\n                Mix_FreeChunk: _Mix_FreeChunk,\n                Mix_FreeMusic: _Mix_FreeMusic,\n                Mix_HaltChannel: _Mix_HaltChannel,\n                Mix_HaltMusic: _Mix_HaltMusic,\n                Mix_HookMusicFinished: _Mix_HookMusicFinished,\n                Mix_Init: _Mix_Init,\n                Mix_Linked_Version: _Mix_Linked_Version,\n                Mix_LoadMUS: _Mix_LoadMUS,\n                Mix_LoadMUS_RW: _Mix_LoadMUS_RW,\n                Mix_LoadWAV: _Mix_LoadWAV,\n                Mix_LoadWAV_RW: _Mix_LoadWAV_RW,\n                Mix_OpenAudio: _Mix_OpenAudio,\n                Mix_Pause: _Mix_Pause,\n                Mix_PauseMusic: _Mix_PauseMusic,\n                Mix_Paused: _Mix_Paused,\n                Mix_PausedMusic: _Mix_PausedMusic,\n                Mix_PlayChannelTimed: _Mix_PlayChannelTimed,\n                Mix_PlayMusic: _Mix_PlayMusic,\n                Mix_Playing: _Mix_Playing,\n                Mix_PlayingMusic: _Mix_PlayingMusic,\n                Mix_QuerySpec: _Mix_QuerySpec,\n                Mix_QuickLoad_RAW: _Mix_QuickLoad_RAW,\n                Mix_Quit: _Mix_Quit,\n                Mix_ReserveChannels: _Mix_ReserveChannels,\n                Mix_Resume: _Mix_Resume,\n                Mix_ResumeMusic: _Mix_ResumeMusic,\n                Mix_SetPanning: _Mix_SetPanning,\n                Mix_SetPosition: _Mix_SetPosition,\n                Mix_SetPostMix: _Mix_SetPostMix,\n                Mix_Volume: _Mix_Volume,\n                Mix_VolumeChunk: _Mix_VolumeChunk,\n                Mix_VolumeMusic: _Mix_VolumeMusic,\n                SDL_AddTimer: _SDL_AddTimer,\n                SDL_AllocRW: _SDL_AllocRW,\n                SDL_AudioDriverName: _SDL_AudioDriverName,\n                SDL_AudioQuit: _SDL_AudioQuit,\n                SDL_ClearError: _SDL_ClearError,\n                SDL_CloseAudio: _SDL_CloseAudio,\n                SDL_CondBroadcast: _SDL_CondBroadcast,\n                SDL_CondSignal: _SDL_CondSignal,\n                SDL_CondWait: _SDL_CondWait,\n                SDL_CondWaitTimeout: _SDL_CondWaitTimeout,\n                SDL_ConvertSurface: _SDL_ConvertSurface,\n                SDL_CreateCond: _SDL_CreateCond,\n                SDL_CreateMutex: _SDL_CreateMutex,\n                SDL_CreateRGBSurface: _SDL_CreateRGBSurface,\n                SDL_CreateRGBSurfaceFrom: _SDL_CreateRGBSurfaceFrom,\n                SDL_CreateThread: _SDL_CreateThread,\n                SDL_Delay: _SDL_Delay,\n                SDL_DestroyCond: _SDL_DestroyCond,\n                SDL_DestroyMutex: _SDL_DestroyMutex,\n                SDL_DestroyRenderer: _SDL_DestroyRenderer,\n                SDL_DestroyWindow: _SDL_DestroyWindow,\n                SDL_DisplayFormatAlpha: _SDL_DisplayFormatAlpha,\n                SDL_EnableKeyRepeat: _SDL_EnableKeyRepeat,\n                SDL_EnableUNICODE: _SDL_EnableUNICODE,\n                SDL_FillRect: _SDL_FillRect,\n                SDL_Flip: _SDL_Flip,\n                SDL_FreeRW: _SDL_FreeRW,\n                SDL_FreeSurface: _SDL_FreeSurface,\n                SDL_GL_DeleteContext: _SDL_GL_DeleteContext,\n                SDL_GL_ExtensionSupported: _SDL_GL_ExtensionSupported,\n                SDL_GL_GetAttribute: _SDL_GL_GetAttribute,\n                SDL_GL_GetSwapInterval: _SDL_GL_GetSwapInterval,\n                SDL_GL_MakeCurrent: _SDL_GL_MakeCurrent,\n                SDL_GL_SetAttribute: _SDL_GL_SetAttribute,\n                SDL_GL_SetSwapInterval: _SDL_GL_SetSwapInterval,\n                SDL_GL_SwapBuffers: _SDL_GL_SwapBuffers,\n                SDL_GL_SwapWindow: _SDL_GL_SwapWindow,\n                SDL_GetAppState: _SDL_GetAppState,\n                SDL_GetAudioDriver: _SDL_GetAudioDriver,\n                SDL_GetClipRect: _SDL_GetClipRect,\n                SDL_GetCurrentAudioDriver: _SDL_GetCurrentAudioDriver,\n                SDL_GetError: _SDL_GetError,\n                SDL_GetKeyName: _SDL_GetKeyName,\n                SDL_GetKeyState: _SDL_GetKeyState,\n                SDL_GetKeyboardState: _SDL_GetKeyboardState,\n                SDL_GetModState: _SDL_GetModState,\n                SDL_GetMouseState: _SDL_GetMouseState,\n                SDL_GetNumAudioDrivers: _SDL_GetNumAudioDrivers,\n                SDL_GetRGB: _SDL_GetRGB,\n                SDL_GetRGBA: _SDL_GetRGBA,\n                SDL_GetScancodeFromKey: _SDL_GetScancodeFromKey,\n                SDL_GetThreadID: _SDL_GetThreadID,\n                SDL_GetTicks: _SDL_GetTicks,\n                SDL_GetVideoInfo: _SDL_GetVideoInfo,\n                SDL_GetVideoSurface: _SDL_GetVideoSurface,\n                SDL_GetWindowFlags: _SDL_GetWindowFlags,\n                SDL_GetWindowSize: _SDL_GetWindowSize,\n                SDL_Has3DNow: _SDL_Has3DNow,\n                SDL_Has3DNowExt: _SDL_Has3DNowExt,\n                SDL_HasAltiVec: _SDL_HasAltiVec,\n                SDL_HasMMX: _SDL_HasMMX,\n                SDL_HasMMXExt: _SDL_HasMMXExt,\n                SDL_HasRDTSC: _SDL_HasRDTSC,\n                SDL_HasSSE: _SDL_HasSSE,\n                SDL_HasSSE2: _SDL_HasSSE2,\n                SDL_Init: _SDL_Init,\n                SDL_InitSubSystem: _SDL_InitSubSystem,\n                SDL_JoystickClose: _SDL_JoystickClose,\n                SDL_JoystickEventState: _SDL_JoystickEventState,\n                SDL_JoystickGetAxis: _SDL_JoystickGetAxis,\n                SDL_JoystickGetBall: _SDL_JoystickGetBall,\n                SDL_JoystickGetButton: _SDL_JoystickGetButton,\n                SDL_JoystickGetHat: _SDL_JoystickGetHat,\n                SDL_JoystickIndex: _SDL_JoystickIndex,\n                SDL_JoystickName: _SDL_JoystickName,\n                SDL_JoystickNumAxes: _SDL_JoystickNumAxes,\n                SDL_JoystickNumBalls: _SDL_JoystickNumBalls,\n                SDL_JoystickNumButtons: _SDL_JoystickNumButtons,\n                SDL_JoystickNumHats: _SDL_JoystickNumHats,\n                SDL_JoystickOpen: _SDL_JoystickOpen,\n                SDL_JoystickOpened: _SDL_JoystickOpened,\n                SDL_JoystickUpdate: _SDL_JoystickUpdate,\n                SDL_Linked_Version: _SDL_Linked_Version,\n                SDL_ListModes: _SDL_ListModes,\n                SDL_LoadBMP_RW: _SDL_LoadBMP_RW,\n                SDL_LockAudio: _SDL_LockAudio,\n                SDL_LockSurface: _SDL_LockSurface,\n                SDL_LogSetOutputFunction: _SDL_LogSetOutputFunction,\n                SDL_LowerBlit: _SDL_LowerBlit,\n                SDL_LowerBlitScaled: _SDL_LowerBlitScaled,\n                SDL_MapRGB: _SDL_MapRGB,\n                SDL_MapRGBA: _SDL_MapRGBA,\n                SDL_NumJoysticks: _SDL_NumJoysticks,\n                SDL_OpenAudio: _SDL_OpenAudio,\n                SDL_PauseAudio: _SDL_PauseAudio,\n                SDL_PeepEvents: _SDL_PeepEvents,\n                SDL_PollEvent: _SDL_PollEvent,\n                SDL_PumpEvents: _SDL_PumpEvents,\n                SDL_PushEvent: _SDL_PushEvent,\n                SDL_Quit: _SDL_Quit,\n                SDL_QuitSubSystem: _SDL_QuitSubSystem,\n                SDL_RWFromConstMem: _SDL_RWFromConstMem,\n                SDL_RWFromFile: _SDL_RWFromFile,\n                SDL_RWFromMem: _SDL_RWFromMem,\n                SDL_RemoveTimer: _SDL_RemoveTimer,\n                SDL_SaveBMP_RW: _SDL_SaveBMP_RW,\n                SDL_SetAlpha: _SDL_SetAlpha,\n                SDL_SetClipRect: _SDL_SetClipRect,\n                SDL_SetColorKey: _SDL_SetColorKey,\n                SDL_SetColors: _SDL_SetColors,\n                SDL_SetError: _SDL_SetError,\n                SDL_SetGamma: _SDL_SetGamma,\n                SDL_SetGammaRamp: _SDL_SetGammaRamp,\n                SDL_SetPalette: _SDL_SetPalette,\n                SDL_SetVideoMode: _SDL_SetVideoMode,\n                SDL_SetWindowFullscreen: _SDL_SetWindowFullscreen,\n                SDL_SetWindowTitle: _SDL_SetWindowTitle,\n                SDL_ShowCursor: _SDL_ShowCursor,\n                SDL_StartTextInput: _SDL_StartTextInput,\n                SDL_StopTextInput: _SDL_StopTextInput,\n                SDL_ThreadID: _SDL_ThreadID,\n                SDL_UnlockAudio: _SDL_UnlockAudio,\n                SDL_UnlockSurface: _SDL_UnlockSurface,\n                SDL_UpdateRect: _SDL_UpdateRect,\n                SDL_UpdateRects: _SDL_UpdateRects,\n                SDL_UpperBlit: _SDL_UpperBlit,\n                SDL_UpperBlitScaled: _SDL_UpperBlitScaled,\n                SDL_VideoDriverName: _SDL_VideoDriverName,\n                SDL_VideoModeOK: _SDL_VideoModeOK,\n                SDL_VideoQuit: _SDL_VideoQuit,\n                SDL_WM_GrabInput: _SDL_WM_GrabInput,\n                SDL_WM_IconifyWindow: _SDL_WM_IconifyWindow,\n                SDL_WM_SetCaption: _SDL_WM_SetCaption,\n                SDL_WM_SetIcon: _SDL_WM_SetIcon,\n                SDL_WM_ToggleFullScreen: _SDL_WM_ToggleFullScreen,\n                SDL_WaitThread: _SDL_WaitThread,\n                SDL_WarpMouse: _SDL_WarpMouse,\n                SDL_WasInit: _SDL_WasInit,\n                SDL_mutexP: _SDL_mutexP,\n                SDL_mutexV: _SDL_mutexV,\n                TTF_CloseFont: _TTF_CloseFont,\n                TTF_FontAscent: _TTF_FontAscent,\n                TTF_FontDescent: _TTF_FontDescent,\n                TTF_FontHeight: _TTF_FontHeight,\n                TTF_FontLineSkip: _TTF_FontLineSkip,\n                TTF_GlyphMetrics: _TTF_GlyphMetrics,\n                TTF_Init: _TTF_Init,\n                TTF_OpenFont: _TTF_OpenFont,\n                TTF_Quit: _TTF_Quit,\n                TTF_RenderText_Blended: _TTF_RenderText_Blended,\n                TTF_RenderText_Shaded: _TTF_RenderText_Shaded,\n                TTF_RenderText_Solid: _TTF_RenderText_Solid,\n                TTF_RenderUTF8_Solid: _TTF_RenderUTF8_Solid,\n                TTF_SizeText: _TTF_SizeText,\n                TTF_SizeUTF8: _TTF_SizeUTF8,\n                XChangeWindowAttributes: _XChangeWindowAttributes,\n                XCreateWindow: _XCreateWindow,\n                XInternAtom: _XInternAtom,\n                XMapWindow: _XMapWindow,\n                XOpenDisplay: _XOpenDisplay,\n                XPending: _XPending,\n                XSendEvent: _XSendEvent,\n                XSetWMHints: _XSetWMHints,\n                XStoreName: _XStoreName,\n                _Unwind_Backtrace: __Unwind_Backtrace,\n                _Unwind_FindEnclosingFunction: __Unwind_FindEnclosingFunction,\n                _Unwind_GetIPInfo: __Unwind_GetIPInfo,\n                __asctime_r: ___asctime_r,\n                __assert_fail: ___assert_fail,\n                __c_longjmp: ___c_longjmp,\n                __call_sighandler: ___call_sighandler,\n                __cpp_exception: ___cpp_exception,\n                __global_base: ___global_base,\n                __heap_base: ___heap_base,\n                __indirect_function_table: wasmTable,\n                __memory_base: ___memory_base,\n                __stack_high: ___stack_high,\n                __stack_low: ___stack_low,\n                __stack_pointer: ___stack_pointer,\n                __syscall__newselect: ___syscall__newselect,\n                __syscall_accept4: ___syscall_accept4,\n                __syscall_bind: ___syscall_bind,\n                __syscall_chdir: ___syscall_chdir,\n                __syscall_chmod: ___syscall_chmod,\n                __syscall_connect: ___syscall_connect,\n                __syscall_dup: ___syscall_dup,\n                __syscall_dup3: ___syscall_dup3,\n                __syscall_faccessat: ___syscall_faccessat,\n                __syscall_fadvise64: ___syscall_fadvise64,\n                __syscall_fallocate: ___syscall_fallocate,\n                __syscall_fchdir: ___syscall_fchdir,\n                __syscall_fchmod: ___syscall_fchmod,\n                __syscall_fchmodat2: ___syscall_fchmodat2,\n                __syscall_fchown32: ___syscall_fchown32,\n                __syscall_fchownat: ___syscall_fchownat,\n                __syscall_fcntl64: ___syscall_fcntl64,\n                __syscall_fdatasync: ___syscall_fdatasync,\n                __syscall_fstat64: ___syscall_fstat64,\n                __syscall_fstatfs64: ___syscall_fstatfs64,\n                __syscall_ftruncate64: ___syscall_ftruncate64,\n                __syscall_getcwd: ___syscall_getcwd,\n                __syscall_getdents64: ___syscall_getdents64,\n                __syscall_getpeername: ___syscall_getpeername,\n                __syscall_getsockname: ___syscall_getsockname,\n                __syscall_getsockopt: ___syscall_getsockopt,\n                __syscall_ioctl: ___syscall_ioctl,\n                __syscall_listen: ___syscall_listen,\n                __syscall_lstat64: ___syscall_lstat64,\n                __syscall_mkdirat: ___syscall_mkdirat,\n                __syscall_mknodat: ___syscall_mknodat,\n                __syscall_newfstatat: ___syscall_newfstatat,\n                __syscall_openat: ___syscall_openat,\n                __syscall_pipe: ___syscall_pipe,\n                __syscall_poll: ___syscall_poll,\n                __syscall_readlinkat: ___syscall_readlinkat,\n                __syscall_recvfrom: ___syscall_recvfrom,\n                __syscall_recvmsg: ___syscall_recvmsg,\n                __syscall_renameat: ___syscall_renameat,\n                __syscall_rmdir: ___syscall_rmdir,\n                __syscall_sendmsg: ___syscall_sendmsg,\n                __syscall_sendto: ___syscall_sendto,\n                __syscall_socket: ___syscall_socket,\n                __syscall_stat64: ___syscall_stat64,\n                __syscall_statfs64: ___syscall_statfs64,\n                __syscall_symlink: ___syscall_symlink,\n                __syscall_symlinkat: ___syscall_symlinkat,\n                __syscall_truncate64: ___syscall_truncate64,\n                __syscall_unlinkat: ___syscall_unlinkat,\n                __syscall_utimensat: ___syscall_utimensat,\n                __table_base: ___table_base,\n                _abort_js: __abort_js,\n                _dlopen_js: __dlopen_js,\n                _dlsym_catchup_js: __dlsym_catchup_js,\n                _dlsym_js: __dlsym_js,\n                _embind_create_inheriting_constructor: __embind_create_inheriting_constructor,\n                _embind_finalize_value_array: __embind_finalize_value_array,\n                _embind_finalize_value_object: __embind_finalize_value_object,\n                _embind_register_bigint: __embind_register_bigint,\n                _embind_register_bool: __embind_register_bool,\n                _embind_register_class: __embind_register_class,\n                _embind_register_class_class_function: __embind_register_class_class_function,\n                _embind_register_class_class_property: __embind_register_class_class_property,\n                _embind_register_class_constructor: __embind_register_class_constructor,\n                _embind_register_class_function: __embind_register_class_function,\n                _embind_register_class_property: __embind_register_class_property,\n                _embind_register_constant: __embind_register_constant,\n                _embind_register_emval: __embind_register_emval,\n                _embind_register_enum: __embind_register_enum,\n                _embind_register_enum_value: __embind_register_enum_value,\n                _embind_register_float: __embind_register_float,\n                _embind_register_function: __embind_register_function,\n                _embind_register_integer: __embind_register_integer,\n                _embind_register_memory_view: __embind_register_memory_view,\n                _embind_register_optional: __embind_register_optional,\n                _embind_register_smart_ptr: __embind_register_smart_ptr,\n                _embind_register_std_string: __embind_register_std_string,\n                _embind_register_std_wstring: __embind_register_std_wstring,\n                _embind_register_user_type: __embind_register_user_type,\n                _embind_register_value_array: __embind_register_value_array,\n                _embind_register_value_array_element: __embind_register_value_array_element,\n                _embind_register_value_object: __embind_register_value_object,\n                _embind_register_value_object_field: __embind_register_value_object_field,\n                _embind_register_void: __embind_register_void,\n                _emscripten_dlopen_js: __emscripten_dlopen_js,\n                _emscripten_fs_load_embedded_files: __emscripten_fs_load_embedded_files,\n                _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,\n                _emscripten_get_progname: __emscripten_get_progname,\n                _emscripten_lookup_name: __emscripten_lookup_name,\n                _emscripten_memcpy_js: __emscripten_memcpy_js,\n                _emscripten_push_main_loop_blocker: __emscripten_push_main_loop_blocker,\n                _emscripten_push_uncounted_main_loop_blocker: __emscripten_push_uncounted_main_loop_blocker,\n                _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear,\n                _emscripten_set_offscreencanvas_size: __emscripten_set_offscreencanvas_size,\n                _emscripten_system: __emscripten_system,\n                _emval_as: __emval_as,\n                _emval_as_int64: __emval_as_int64,\n                _emval_as_uint64: __emval_as_uint64,\n                _emval_call: __emval_call,\n                _emval_call_method: __emval_call_method,\n                _emval_coro_make_promise: __emval_coro_make_promise,\n                _emval_coro_suspend: __emval_coro_suspend,\n                _emval_decref: __emval_decref,\n                _emval_delete: __emval_delete,\n                _emval_equals: __emval_equals,\n                _emval_get_global: __emval_get_global,\n                _emval_get_method_caller: __emval_get_method_caller,\n                _emval_get_module_property: __emval_get_module_property,\n                _emval_get_property: __emval_get_property,\n                _emval_greater_than: __emval_greater_than,\n                _emval_in: __emval_in,\n                _emval_incref: __emval_incref,\n                _emval_instanceof: __emval_instanceof,\n                _emval_is_number: __emval_is_number,\n                _emval_is_string: __emval_is_string,\n                _emval_iter_begin: __emval_iter_begin,\n                _emval_iter_next: __emval_iter_next,\n                _emval_less_than: __emval_less_than,\n                _emval_new_array: __emval_new_array,\n                _emval_new_array_from_memory_view: __emval_new_array_from_memory_view,\n                _emval_new_cstring: __emval_new_cstring,\n                _emval_new_object: __emval_new_object,\n                _emval_new_u16string: __emval_new_u16string,\n                _emval_new_u8string: __emval_new_u8string,\n                _emval_not: __emval_not,\n                _emval_register_symbol: __emval_register_symbol,\n                _emval_run_destructors: __emval_run_destructors,\n                _emval_set_property: __emval_set_property,\n                _emval_strictly_equals: __emval_strictly_equals,\n                _emval_take_value: __emval_take_value,\n                _emval_throw: __emval_throw,\n                _emval_typeof: __emval_typeof,\n                _glGetActiveAttribOrUniform: __glGetActiveAttribOrUniform,\n                _gmtime_js: __gmtime_js,\n                _localtime_js: __localtime_js,\n                _mktime_js: __mktime_js,\n                _mmap_js: __mmap_js,\n                _msync_js: __msync_js,\n                _munmap_js: __munmap_js,\n                _setitimer_js: __setitimer_js,\n                _timegm_js: __timegm_js,\n                _tzset_js: __tzset_js,\n                alBuffer3f: _alBuffer3f,\n                alBuffer3i: _alBuffer3i,\n                alBufferData: _alBufferData,\n                alBufferf: _alBufferf,\n                alBufferfv: _alBufferfv,\n                alBufferi: _alBufferi,\n                alBufferiv: _alBufferiv,\n                alDeleteBuffers: _alDeleteBuffers,\n                alDeleteSources: _alDeleteSources,\n                alDisable: _alDisable,\n                alDistanceModel: _alDistanceModel,\n                alDopplerFactor: _alDopplerFactor,\n                alDopplerVelocity: _alDopplerVelocity,\n                alEnable: _alEnable,\n                alGenBuffers: _alGenBuffers,\n                alGenSources: _alGenSources,\n                alGetBoolean: _alGetBoolean,\n                alGetBooleanv: _alGetBooleanv,\n                alGetBuffer3f: _alGetBuffer3f,\n                alGetBuffer3i: _alGetBuffer3i,\n                alGetBufferf: _alGetBufferf,\n                alGetBufferfv: _alGetBufferfv,\n                alGetBufferi: _alGetBufferi,\n                alGetBufferiv: _alGetBufferiv,\n                alGetDouble: _alGetDouble,\n                alGetDoublev: _alGetDoublev,\n                alGetEnumValue: _alGetEnumValue,\n                alGetError: _alGetError,\n                alGetFloat: _alGetFloat,\n                alGetFloatv: _alGetFloatv,\n                alGetInteger: _alGetInteger,\n                alGetIntegerv: _alGetIntegerv,\n                alGetListener3f: _alGetListener3f,\n                alGetListener3i: _alGetListener3i,\n                alGetListenerf: _alGetListenerf,\n                alGetListenerfv: _alGetListenerfv,\n                alGetListeneri: _alGetListeneri,\n                alGetListeneriv: _alGetListeneriv,\n                alGetSource3f: _alGetSource3f,\n                alGetSource3i: _alGetSource3i,\n                alGetSourcef: _alGetSourcef,\n                alGetSourcefv: _alGetSourcefv,\n                alGetSourcei: _alGetSourcei,\n                alGetSourceiv: _alGetSourceiv,\n                alGetString: _alGetString,\n                alIsBuffer: _alIsBuffer,\n                alIsEnabled: _alIsEnabled,\n                alIsExtensionPresent: _alIsExtensionPresent,\n                alIsSource: _alIsSource,\n                alListener3f: _alListener3f,\n                alListener3i: _alListener3i,\n                alListenerf: _alListenerf,\n                alListenerfv: _alListenerfv,\n                alListeneri: _alListeneri,\n                alListeneriv: _alListeneriv,\n                alSource3f: _alSource3f,\n                alSource3i: _alSource3i,\n                alSourcePause: _alSourcePause,\n                alSourcePausev: _alSourcePausev,\n                alSourcePlay: _alSourcePlay,\n                alSourcePlayv: _alSourcePlayv,\n                alSourceQueueBuffers: _alSourceQueueBuffers,\n                alSourceRewind: _alSourceRewind,\n                alSourceRewindv: _alSourceRewindv,\n                alSourceStop: _alSourceStop,\n                alSourceStopv: _alSourceStopv,\n                alSourceUnqueueBuffers: _alSourceUnqueueBuffers,\n                alSourcef: _alSourcef,\n                alSourcefv: _alSourcefv,\n                alSourcei: _alSourcei,\n                alSourceiv: _alSourceiv,\n                alSpeedOfSound: _alSpeedOfSound,\n                alcCaptureCloseDevice: _alcCaptureCloseDevice,\n                alcCaptureOpenDevice: _alcCaptureOpenDevice,\n                alcCaptureSamples: _alcCaptureSamples,\n                alcCaptureStart: _alcCaptureStart,\n                alcCaptureStop: _alcCaptureStop,\n                alcCloseDevice: _alcCloseDevice,\n                alcCreateContext: _alcCreateContext,\n                alcDestroyContext: _alcDestroyContext,\n                alcGetContextsDevice: _alcGetContextsDevice,\n                alcGetCurrentContext: _alcGetCurrentContext,\n                alcGetEnumValue: _alcGetEnumValue,\n                alcGetError: _alcGetError,\n                alcGetIntegerv: _alcGetIntegerv,\n                alcGetString: _alcGetString,\n                alcIsExtensionPresent: _alcIsExtensionPresent,\n                alcMakeContextCurrent: _alcMakeContextCurrent,\n                alcOpenDevice: _alcOpenDevice,\n                alcProcessContext: _alcProcessContext,\n                alcSuspendContext: _alcSuspendContext,\n                boxColor: _boxColor,\n                boxRGBA: _boxRGBA,\n                clock_res_get: _clock_res_get,\n                clock_time_get: _clock_time_get,\n                duckdb_web_fs_directory_create: _duckdb_web_fs_directory_create,\n                duckdb_web_fs_directory_exists: _duckdb_web_fs_directory_exists,\n                duckdb_web_fs_directory_list_files: _duckdb_web_fs_directory_list_files,\n                duckdb_web_fs_directory_remove: _duckdb_web_fs_directory_remove,\n                duckdb_web_fs_file_close: _duckdb_web_fs_file_close,\n                duckdb_web_fs_file_drop_file: _duckdb_web_fs_file_drop_file,\n                duckdb_web_fs_file_exists: _duckdb_web_fs_file_exists,\n                duckdb_web_fs_file_get_last_modified_time: _duckdb_web_fs_file_get_last_modified_time,\n                duckdb_web_fs_file_move: _duckdb_web_fs_file_move,\n                duckdb_web_fs_file_open: _duckdb_web_fs_file_open,\n                duckdb_web_fs_file_read: _duckdb_web_fs_file_read,\n                duckdb_web_fs_file_remove: _duckdb_web_fs_file_remove,\n                duckdb_web_fs_file_sync: _duckdb_web_fs_file_sync,\n                duckdb_web_fs_file_truncate: _duckdb_web_fs_file_truncate,\n                duckdb_web_fs_file_write: _duckdb_web_fs_file_write,\n                duckdb_web_fs_get_default_data_protocol: _duckdb_web_fs_get_default_data_protocol,\n                duckdb_web_fs_glob: _duckdb_web_fs_glob,\n                duckdb_web_test_platform_feature: _duckdb_web_test_platform_feature,\n                duckdb_web_udf_scalar_call: _duckdb_web_udf_scalar_call,\n                eglBindAPI: _eglBindAPI,\n                eglChooseConfig: _eglChooseConfig,\n                eglCreateContext: _eglCreateContext,\n                eglCreateWindowSurface: _eglCreateWindowSurface,\n                eglDestroyContext: _eglDestroyContext,\n                eglDestroySurface: _eglDestroySurface,\n                eglGetConfigAttrib: _eglGetConfigAttrib,\n                eglGetConfigs: _eglGetConfigs,\n                eglGetCurrentContext: _eglGetCurrentContext,\n                eglGetCurrentDisplay: _eglGetCurrentDisplay,\n                eglGetCurrentSurface: _eglGetCurrentSurface,\n                eglGetDisplay: _eglGetDisplay,\n                eglGetError: _eglGetError,\n                eglInitialize: _eglInitialize,\n                eglMakeCurrent: _eglMakeCurrent,\n                eglQueryAPI: _eglQueryAPI,\n                eglQueryContext: _eglQueryContext,\n                eglQueryString: _eglQueryString,\n                eglQuerySurface: _eglQuerySurface,\n                eglReleaseThread: _eglReleaseThread,\n                eglSwapBuffers: _eglSwapBuffers,\n                eglSwapInterval: _eglSwapInterval,\n                eglTerminate: _eglTerminate,\n                eglWaitClient: _eglWaitClient,\n                eglWaitGL: _eglWaitGL,\n                eglWaitNative: _eglWaitNative,\n                ellipseColor: _ellipseColor,\n                ellipseRGBA: _ellipseRGBA,\n                emscripten_SDL_SetEventHandler: _emscripten_SDL_SetEventHandler,\n                emscripten_alcDevicePauseSOFT: _emscripten_alcDevicePauseSOFT,\n                emscripten_alcDeviceResumeSOFT: _emscripten_alcDeviceResumeSOFT,\n                emscripten_alcGetStringiSOFT: _emscripten_alcGetStringiSOFT,\n                emscripten_alcResetDeviceSOFT: _emscripten_alcResetDeviceSOFT,\n                emscripten_asm_const_async_on_main_thread: _emscripten_asm_const_async_on_main_thread,\n                emscripten_asm_const_double: _emscripten_asm_const_double,\n                emscripten_asm_const_double_sync_on_main_thread: _emscripten_asm_const_double_sync_on_main_thread,\n                emscripten_asm_const_int: _emscripten_asm_const_int,\n                emscripten_asm_const_int_sync_on_main_thread: _emscripten_asm_const_int_sync_on_main_thread,\n                emscripten_asm_const_ptr: _emscripten_asm_const_ptr,\n                emscripten_asm_const_ptr_sync_on_main_thread: _emscripten_asm_const_ptr_sync_on_main_thread,\n                emscripten_async_call: _emscripten_async_call,\n                emscripten_async_load_script: _emscripten_async_load_script,\n                emscripten_async_run_script: _emscripten_async_run_script,\n                emscripten_async_wget: _emscripten_async_wget,\n                emscripten_async_wget2: _emscripten_async_wget2,\n                emscripten_async_wget2_abort: _emscripten_async_wget2_abort,\n                emscripten_async_wget2_data: _emscripten_async_wget2_data,\n                emscripten_async_wget_data: _emscripten_async_wget_data,\n                emscripten_call_worker: _emscripten_call_worker,\n                emscripten_cancel_animation_frame: _emscripten_cancel_animation_frame,\n                emscripten_cancel_main_loop: _emscripten_cancel_main_loop,\n                emscripten_clear_immediate: _emscripten_clear_immediate,\n                emscripten_clear_interval: _emscripten_clear_interval,\n                emscripten_clear_timeout: _emscripten_clear_timeout,\n                emscripten_console_error: _emscripten_console_error,\n                emscripten_console_log: _emscripten_console_log,\n                emscripten_console_trace: _emscripten_console_trace,\n                emscripten_console_warn: _emscripten_console_warn,\n                emscripten_create_worker: _emscripten_create_worker,\n                emscripten_date_now: _emscripten_date_now,\n                emscripten_debugger: _emscripten_debugger,\n                emscripten_destroy_worker: _emscripten_destroy_worker,\n                emscripten_enter_soft_fullscreen: _emscripten_enter_soft_fullscreen,\n                emscripten_err: _emscripten_err,\n                emscripten_errn: _emscripten_errn,\n                emscripten_exit_fullscreen: _emscripten_exit_fullscreen,\n                emscripten_exit_pointerlock: _emscripten_exit_pointerlock,\n                emscripten_exit_soft_fullscreen: _emscripten_exit_soft_fullscreen,\n                emscripten_exit_with_live_runtime: _emscripten_exit_with_live_runtime,\n                emscripten_fiber_swap: _emscripten_fiber_swap,\n                emscripten_force_exit: _emscripten_force_exit,\n                emscripten_get_battery_status: _emscripten_get_battery_status,\n                emscripten_get_callstack: _emscripten_get_callstack,\n                emscripten_get_canvas_element_size: _emscripten_get_canvas_element_size,\n                emscripten_get_canvas_size: _emscripten_get_canvas_size,\n                emscripten_get_compiler_setting: _emscripten_get_compiler_setting,\n                emscripten_get_device_pixel_ratio: _emscripten_get_device_pixel_ratio,\n                emscripten_get_devicemotion_status: _emscripten_get_devicemotion_status,\n                emscripten_get_deviceorientation_status: _emscripten_get_deviceorientation_status,\n                emscripten_get_element_css_size: _emscripten_get_element_css_size,\n                emscripten_get_fullscreen_status: _emscripten_get_fullscreen_status,\n                emscripten_get_gamepad_status: _emscripten_get_gamepad_status,\n                emscripten_get_heap_max: _emscripten_get_heap_max,\n                emscripten_get_main_loop_timing: _emscripten_get_main_loop_timing,\n                emscripten_get_mouse_status: _emscripten_get_mouse_status,\n                emscripten_get_now: _emscripten_get_now,\n                emscripten_get_now_res: _emscripten_get_now_res,\n                emscripten_get_num_gamepads: _emscripten_get_num_gamepads,\n                emscripten_get_orientation_status: _emscripten_get_orientation_status,\n                emscripten_get_pointerlock_status: _emscripten_get_pointerlock_status,\n                emscripten_get_preloaded_image_data: _emscripten_get_preloaded_image_data,\n                emscripten_get_preloaded_image_data_from_FILE: _emscripten_get_preloaded_image_data_from_FILE,\n                emscripten_get_screen_size: _emscripten_get_screen_size,\n                emscripten_get_visibility_status: _emscripten_get_visibility_status,\n                emscripten_get_window_title: _emscripten_get_window_title,\n                emscripten_get_worker_queue_size: _emscripten_get_worker_queue_size,\n                emscripten_glActiveTexture: _emscripten_glActiveTexture,\n                emscripten_glAttachShader: _emscripten_glAttachShader,\n                emscripten_glBegin: _emscripten_glBegin,\n                emscripten_glBeginQueryEXT: _emscripten_glBeginQueryEXT,\n                emscripten_glBindAttribLocation: _emscripten_glBindAttribLocation,\n                emscripten_glBindBuffer: _emscripten_glBindBuffer,\n                emscripten_glBindFramebuffer: _emscripten_glBindFramebuffer,\n                emscripten_glBindRenderbuffer: _emscripten_glBindRenderbuffer,\n                emscripten_glBindTexture: _emscripten_glBindTexture,\n                emscripten_glBindVertexArray: _emscripten_glBindVertexArray,\n                emscripten_glBindVertexArrayOES: _emscripten_glBindVertexArrayOES,\n                emscripten_glBlendColor: _emscripten_glBlendColor,\n                emscripten_glBlendEquation: _emscripten_glBlendEquation,\n                emscripten_glBlendEquationSeparate: _emscripten_glBlendEquationSeparate,\n                emscripten_glBlendFunc: _emscripten_glBlendFunc,\n                emscripten_glBlendFuncSeparate: _emscripten_glBlendFuncSeparate,\n                emscripten_glBufferData: _emscripten_glBufferData,\n                emscripten_glBufferSubData: _emscripten_glBufferSubData,\n                emscripten_glCheckFramebufferStatus: _emscripten_glCheckFramebufferStatus,\n                emscripten_glClear: _emscripten_glClear,\n                emscripten_glClearColor: _emscripten_glClearColor,\n                emscripten_glClearDepth: _emscripten_glClearDepth,\n                emscripten_glClearDepthf: _emscripten_glClearDepthf,\n                emscripten_glClearStencil: _emscripten_glClearStencil,\n                emscripten_glClipControlEXT: _emscripten_glClipControlEXT,\n                emscripten_glColorMask: _emscripten_glColorMask,\n                emscripten_glCompileShader: _emscripten_glCompileShader,\n                emscripten_glCompressedTexImage2D: _emscripten_glCompressedTexImage2D,\n                emscripten_glCompressedTexSubImage2D: _emscripten_glCompressedTexSubImage2D,\n                emscripten_glCopyTexImage2D: _emscripten_glCopyTexImage2D,\n                emscripten_glCopyTexSubImage2D: _emscripten_glCopyTexSubImage2D,\n                emscripten_glCreateProgram: _emscripten_glCreateProgram,\n                emscripten_glCreateShader: _emscripten_glCreateShader,\n                emscripten_glCullFace: _emscripten_glCullFace,\n                emscripten_glDeleteBuffers: _emscripten_glDeleteBuffers,\n                emscripten_glDeleteFramebuffers: _emscripten_glDeleteFramebuffers,\n                emscripten_glDeleteProgram: _emscripten_glDeleteProgram,\n                emscripten_glDeleteQueriesEXT: _emscripten_glDeleteQueriesEXT,\n                emscripten_glDeleteRenderbuffers: _emscripten_glDeleteRenderbuffers,\n                emscripten_glDeleteShader: _emscripten_glDeleteShader,\n                emscripten_glDeleteTextures: _emscripten_glDeleteTextures,\n                emscripten_glDeleteVertexArrays: _emscripten_glDeleteVertexArrays,\n                emscripten_glDeleteVertexArraysOES: _emscripten_glDeleteVertexArraysOES,\n                emscripten_glDepthFunc: _emscripten_glDepthFunc,\n                emscripten_glDepthMask: _emscripten_glDepthMask,\n                emscripten_glDepthRange: _emscripten_glDepthRange,\n                emscripten_glDepthRangef: _emscripten_glDepthRangef,\n                emscripten_glDetachShader: _emscripten_glDetachShader,\n                emscripten_glDisable: _emscripten_glDisable,\n                emscripten_glDisableVertexAttribArray: _emscripten_glDisableVertexAttribArray,\n                emscripten_glDrawArrays: _emscripten_glDrawArrays,\n                emscripten_glDrawArraysInstanced: _emscripten_glDrawArraysInstanced,\n                emscripten_glDrawArraysInstancedANGLE: _emscripten_glDrawArraysInstancedANGLE,\n                emscripten_glDrawArraysInstancedARB: _emscripten_glDrawArraysInstancedARB,\n                emscripten_glDrawArraysInstancedEXT: _emscripten_glDrawArraysInstancedEXT,\n                emscripten_glDrawArraysInstancedNV: _emscripten_glDrawArraysInstancedNV,\n                emscripten_glDrawBuffers: _emscripten_glDrawBuffers,\n                emscripten_glDrawBuffersEXT: _emscripten_glDrawBuffersEXT,\n                emscripten_glDrawBuffersWEBGL: _emscripten_glDrawBuffersWEBGL,\n                emscripten_glDrawElements: _emscripten_glDrawElements,\n                emscripten_glDrawElementsInstanced: _emscripten_glDrawElementsInstanced,\n                emscripten_glDrawElementsInstancedANGLE: _emscripten_glDrawElementsInstancedANGLE,\n                emscripten_glDrawElementsInstancedARB: _emscripten_glDrawElementsInstancedARB,\n                emscripten_glDrawElementsInstancedEXT: _emscripten_glDrawElementsInstancedEXT,\n                emscripten_glDrawElementsInstancedNV: _emscripten_glDrawElementsInstancedNV,\n                emscripten_glEnable: _emscripten_glEnable,\n                emscripten_glEnableVertexAttribArray: _emscripten_glEnableVertexAttribArray,\n                emscripten_glEndQueryEXT: _emscripten_glEndQueryEXT,\n                emscripten_glFinish: _emscripten_glFinish,\n                emscripten_glFlush: _emscripten_glFlush,\n                emscripten_glFramebufferRenderbuffer: _emscripten_glFramebufferRenderbuffer,\n                emscripten_glFramebufferTexture2D: _emscripten_glFramebufferTexture2D,\n                emscripten_glFrontFace: _emscripten_glFrontFace,\n                emscripten_glGenBuffers: _emscripten_glGenBuffers,\n                emscripten_glGenFramebuffers: _emscripten_glGenFramebuffers,\n                emscripten_glGenQueriesEXT: _emscripten_glGenQueriesEXT,\n                emscripten_glGenRenderbuffers: _emscripten_glGenRenderbuffers,\n                emscripten_glGenTextures: _emscripten_glGenTextures,\n                emscripten_glGenVertexArrays: _emscripten_glGenVertexArrays,\n                emscripten_glGenVertexArraysOES: _emscripten_glGenVertexArraysOES,\n                emscripten_glGenerateMipmap: _emscripten_glGenerateMipmap,\n                emscripten_glGetActiveAttrib: _emscripten_glGetActiveAttrib,\n                emscripten_glGetActiveUniform: _emscripten_glGetActiveUniform,\n                emscripten_glGetAttachedShaders: _emscripten_glGetAttachedShaders,\n                emscripten_glGetAttribLocation: _emscripten_glGetAttribLocation,\n                emscripten_glGetBooleanv: _emscripten_glGetBooleanv,\n                emscripten_glGetBufferParameteriv: _emscripten_glGetBufferParameteriv,\n                emscripten_glGetError: _emscripten_glGetError,\n                emscripten_glGetFloatv: _emscripten_glGetFloatv,\n                emscripten_glGetFramebufferAttachmentParameteriv: _emscripten_glGetFramebufferAttachmentParameteriv,\n                emscripten_glGetIntegerv: _emscripten_glGetIntegerv,\n                emscripten_glGetProgramInfoLog: _emscripten_glGetProgramInfoLog,\n                emscripten_glGetProgramiv: _emscripten_glGetProgramiv,\n                emscripten_glGetQueryObjecti64vEXT: _emscripten_glGetQueryObjecti64vEXT,\n                emscripten_glGetQueryObjectivEXT: _emscripten_glGetQueryObjectivEXT,\n                emscripten_glGetQueryObjectui64vEXT: _emscripten_glGetQueryObjectui64vEXT,\n                emscripten_glGetQueryObjectuivEXT: _emscripten_glGetQueryObjectuivEXT,\n                emscripten_glGetQueryivEXT: _emscripten_glGetQueryivEXT,\n                emscripten_glGetRenderbufferParameteriv: _emscripten_glGetRenderbufferParameteriv,\n                emscripten_glGetShaderInfoLog: _emscripten_glGetShaderInfoLog,\n                emscripten_glGetShaderPrecisionFormat: _emscripten_glGetShaderPrecisionFormat,\n                emscripten_glGetShaderSource: _emscripten_glGetShaderSource,\n                emscripten_glGetShaderiv: _emscripten_glGetShaderiv,\n                emscripten_glGetString: _emscripten_glGetString,\n                emscripten_glGetTexParameterfv: _emscripten_glGetTexParameterfv,\n                emscripten_glGetTexParameteriv: _emscripten_glGetTexParameteriv,\n                emscripten_glGetUniformLocation: _emscripten_glGetUniformLocation,\n                emscripten_glGetUniformfv: _emscripten_glGetUniformfv,\n                emscripten_glGetUniformiv: _emscripten_glGetUniformiv,\n                emscripten_glGetVertexAttribPointerv: _emscripten_glGetVertexAttribPointerv,\n                emscripten_glGetVertexAttribfv: _emscripten_glGetVertexAttribfv,\n                emscripten_glGetVertexAttribiv: _emscripten_glGetVertexAttribiv,\n                emscripten_glHint: _emscripten_glHint,\n                emscripten_glIsBuffer: _emscripten_glIsBuffer,\n                emscripten_glIsEnabled: _emscripten_glIsEnabled,\n                emscripten_glIsFramebuffer: _emscripten_glIsFramebuffer,\n                emscripten_glIsProgram: _emscripten_glIsProgram,\n                emscripten_glIsQueryEXT: _emscripten_glIsQueryEXT,\n                emscripten_glIsRenderbuffer: _emscripten_glIsRenderbuffer,\n                emscripten_glIsShader: _emscripten_glIsShader,\n                emscripten_glIsTexture: _emscripten_glIsTexture,\n                emscripten_glIsVertexArray: _emscripten_glIsVertexArray,\n                emscripten_glIsVertexArrayOES: _emscripten_glIsVertexArrayOES,\n                emscripten_glLineWidth: _emscripten_glLineWidth,\n                emscripten_glLinkProgram: _emscripten_glLinkProgram,\n                emscripten_glLoadIdentity: _emscripten_glLoadIdentity,\n                emscripten_glMatrixMode: _emscripten_glMatrixMode,\n                emscripten_glMultiDrawArrays: _emscripten_glMultiDrawArrays,\n                emscripten_glMultiDrawArraysANGLE: _emscripten_glMultiDrawArraysANGLE,\n                emscripten_glMultiDrawArraysInstancedANGLE: _emscripten_glMultiDrawArraysInstancedANGLE,\n                emscripten_glMultiDrawArraysInstancedWEBGL: _emscripten_glMultiDrawArraysInstancedWEBGL,\n                emscripten_glMultiDrawArraysWEBGL: _emscripten_glMultiDrawArraysWEBGL,\n                emscripten_glMultiDrawElements: _emscripten_glMultiDrawElements,\n                emscripten_glMultiDrawElementsANGLE: _emscripten_glMultiDrawElementsANGLE,\n                emscripten_glMultiDrawElementsInstancedANGLE: _emscripten_glMultiDrawElementsInstancedANGLE,\n                emscripten_glMultiDrawElementsInstancedWEBGL: _emscripten_glMultiDrawElementsInstancedWEBGL,\n                emscripten_glMultiDrawElementsWEBGL: _emscripten_glMultiDrawElementsWEBGL,\n                emscripten_glPixelStorei: _emscripten_glPixelStorei,\n                emscripten_glPolygonModeWEBGL: _emscripten_glPolygonModeWEBGL,\n                emscripten_glPolygonOffset: _emscripten_glPolygonOffset,\n                emscripten_glPolygonOffsetClampEXT: _emscripten_glPolygonOffsetClampEXT,\n                emscripten_glQueryCounterEXT: _emscripten_glQueryCounterEXT,\n                emscripten_glReadPixels: _emscripten_glReadPixels,\n                emscripten_glReleaseShaderCompiler: _emscripten_glReleaseShaderCompiler,\n                emscripten_glRenderbufferStorage: _emscripten_glRenderbufferStorage,\n                emscripten_glSampleCoverage: _emscripten_glSampleCoverage,\n                emscripten_glScissor: _emscripten_glScissor,\n                emscripten_glShaderBinary: _emscripten_glShaderBinary,\n                emscripten_glShaderSource: _emscripten_glShaderSource,\n                emscripten_glStencilFunc: _emscripten_glStencilFunc,\n                emscripten_glStencilFuncSeparate: _emscripten_glStencilFuncSeparate,\n                emscripten_glStencilMask: _emscripten_glStencilMask,\n                emscripten_glStencilMaskSeparate: _emscripten_glStencilMaskSeparate,\n                emscripten_glStencilOp: _emscripten_glStencilOp,\n                emscripten_glStencilOpSeparate: _emscripten_glStencilOpSeparate,\n                emscripten_glTexImage2D: _emscripten_glTexImage2D,\n                emscripten_glTexParameterf: _emscripten_glTexParameterf,\n                emscripten_glTexParameterfv: _emscripten_glTexParameterfv,\n                emscripten_glTexParameteri: _emscripten_glTexParameteri,\n                emscripten_glTexParameteriv: _emscripten_glTexParameteriv,\n                emscripten_glTexSubImage2D: _emscripten_glTexSubImage2D,\n                emscripten_glUniform1f: _emscripten_glUniform1f,\n                emscripten_glUniform1fv: _emscripten_glUniform1fv,\n                emscripten_glUniform1i: _emscripten_glUniform1i,\n                emscripten_glUniform1iv: _emscripten_glUniform1iv,\n                emscripten_glUniform2f: _emscripten_glUniform2f,\n                emscripten_glUniform2fv: _emscripten_glUniform2fv,\n                emscripten_glUniform2i: _emscripten_glUniform2i,\n                emscripten_glUniform2iv: _emscripten_glUniform2iv,\n                emscripten_glUniform3f: _emscripten_glUniform3f,\n                emscripten_glUniform3fv: _emscripten_glUniform3fv,\n                emscripten_glUniform3i: _emscripten_glUniform3i,\n                emscripten_glUniform3iv: _emscripten_glUniform3iv,\n                emscripten_glUniform4f: _emscripten_glUniform4f,\n                emscripten_glUniform4fv: _emscripten_glUniform4fv,\n                emscripten_glUniform4i: _emscripten_glUniform4i,\n                emscripten_glUniform4iv: _emscripten_glUniform4iv,\n                emscripten_glUniformMatrix2fv: _emscripten_glUniformMatrix2fv,\n                emscripten_glUniformMatrix3fv: _emscripten_glUniformMatrix3fv,\n                emscripten_glUniformMatrix4fv: _emscripten_glUniformMatrix4fv,\n                emscripten_glUseProgram: _emscripten_glUseProgram,\n                emscripten_glValidateProgram: _emscripten_glValidateProgram,\n                emscripten_glVertexAttrib1f: _emscripten_glVertexAttrib1f,\n                emscripten_glVertexAttrib1fv: _emscripten_glVertexAttrib1fv,\n                emscripten_glVertexAttrib2f: _emscripten_glVertexAttrib2f,\n                emscripten_glVertexAttrib2fv: _emscripten_glVertexAttrib2fv,\n                emscripten_glVertexAttrib3f: _emscripten_glVertexAttrib3f,\n                emscripten_glVertexAttrib3fv: _emscripten_glVertexAttrib3fv,\n                emscripten_glVertexAttrib4f: _emscripten_glVertexAttrib4f,\n                emscripten_glVertexAttrib4fv: _emscripten_glVertexAttrib4fv,\n                emscripten_glVertexAttribDivisor: _emscripten_glVertexAttribDivisor,\n                emscripten_glVertexAttribDivisorANGLE: _emscripten_glVertexAttribDivisorANGLE,\n                emscripten_glVertexAttribDivisorARB: _emscripten_glVertexAttribDivisorARB,\n                emscripten_glVertexAttribDivisorEXT: _emscripten_glVertexAttribDivisorEXT,\n                emscripten_glVertexAttribDivisorNV: _emscripten_glVertexAttribDivisorNV,\n                emscripten_glVertexAttribPointer: _emscripten_glVertexAttribPointer,\n                emscripten_glVertexPointer: _emscripten_glVertexPointer,\n                emscripten_glViewport: _emscripten_glViewport,\n                emscripten_has_asyncify: _emscripten_has_asyncify,\n                emscripten_hide_mouse: _emscripten_hide_mouse,\n                emscripten_html5_remove_all_event_listeners: _emscripten_html5_remove_all_event_listeners,\n                emscripten_idb_async_clear: _emscripten_idb_async_clear,\n                emscripten_idb_async_delete: _emscripten_idb_async_delete,\n                emscripten_idb_async_exists: _emscripten_idb_async_exists,\n                emscripten_idb_async_load: _emscripten_idb_async_load,\n                emscripten_idb_async_store: _emscripten_idb_async_store,\n                emscripten_idb_clear: _emscripten_idb_clear,\n                emscripten_idb_delete: _emscripten_idb_delete,\n                emscripten_idb_exists: _emscripten_idb_exists,\n                emscripten_idb_load: _emscripten_idb_load,\n                emscripten_idb_store: _emscripten_idb_store,\n                emscripten_is_main_browser_thread: _emscripten_is_main_browser_thread,\n                emscripten_is_webgl_context_lost: _emscripten_is_webgl_context_lost,\n                emscripten_lock_orientation: _emscripten_lock_orientation,\n                emscripten_log: _emscripten_log,\n                emscripten_math_acos: _emscripten_math_acos,\n                emscripten_math_acosh: _emscripten_math_acosh,\n                emscripten_math_asin: _emscripten_math_asin,\n                emscripten_math_asinh: _emscripten_math_asinh,\n                emscripten_math_atan: _emscripten_math_atan,\n                emscripten_math_atan2: _emscripten_math_atan2,\n                emscripten_math_atanh: _emscripten_math_atanh,\n                emscripten_math_cbrt: _emscripten_math_cbrt,\n                emscripten_math_cos: _emscripten_math_cos,\n                emscripten_math_cosh: _emscripten_math_cosh,\n                emscripten_math_exp: _emscripten_math_exp,\n                emscripten_math_expm1: _emscripten_math_expm1,\n                emscripten_math_fmod: _emscripten_math_fmod,\n                emscripten_math_hypot: _emscripten_math_hypot,\n                emscripten_math_log: _emscripten_math_log,\n                emscripten_math_log10: _emscripten_math_log10,\n                emscripten_math_log1p: _emscripten_math_log1p,\n                emscripten_math_log2: _emscripten_math_log2,\n                emscripten_math_pow: _emscripten_math_pow,\n                emscripten_math_random: _emscripten_math_random,\n                emscripten_math_round: _emscripten_math_round,\n                emscripten_math_sign: _emscripten_math_sign,\n                emscripten_math_sin: _emscripten_math_sin,\n                emscripten_math_sinh: _emscripten_math_sinh,\n                emscripten_math_sqrt: _emscripten_math_sqrt,\n                emscripten_math_tan: _emscripten_math_tan,\n                emscripten_math_tanh: _emscripten_math_tanh,\n                emscripten_notify_memory_growth: _emscripten_notify_memory_growth,\n                emscripten_out: _emscripten_out,\n                emscripten_outn: _emscripten_outn,\n                emscripten_pause_main_loop: _emscripten_pause_main_loop,\n                emscripten_pc_get_column: _emscripten_pc_get_column,\n                emscripten_pc_get_file: _emscripten_pc_get_file,\n                emscripten_pc_get_function: _emscripten_pc_get_function,\n                emscripten_pc_get_line: _emscripten_pc_get_line,\n                emscripten_performance_now: _emscripten_performance_now,\n                emscripten_print_double: _emscripten_print_double,\n                emscripten_promise_all: _emscripten_promise_all,\n                emscripten_promise_all_settled: _emscripten_promise_all_settled,\n                emscripten_promise_any: _emscripten_promise_any,\n                emscripten_promise_await: _emscripten_promise_await,\n                emscripten_promise_create: _emscripten_promise_create,\n                emscripten_promise_destroy: _emscripten_promise_destroy,\n                emscripten_promise_race: _emscripten_promise_race,\n                emscripten_promise_resolve: _emscripten_promise_resolve,\n                emscripten_promise_then: _emscripten_promise_then,\n                emscripten_random: _emscripten_random,\n                emscripten_request_animation_frame: _emscripten_request_animation_frame,\n                emscripten_request_animation_frame_loop: _emscripten_request_animation_frame_loop,\n                emscripten_request_fullscreen: _emscripten_request_fullscreen,\n                emscripten_request_fullscreen_strategy: _emscripten_request_fullscreen_strategy,\n                emscripten_request_pointerlock: _emscripten_request_pointerlock,\n                emscripten_resize_heap: _emscripten_resize_heap,\n                emscripten_resume_main_loop: _emscripten_resume_main_loop,\n                emscripten_return_address: _emscripten_return_address,\n                emscripten_run_preload_plugins: _emscripten_run_preload_plugins,\n                emscripten_run_preload_plugins_data: _emscripten_run_preload_plugins_data,\n                emscripten_run_script: _emscripten_run_script,\n                emscripten_run_script_int: _emscripten_run_script_int,\n                emscripten_run_script_string: _emscripten_run_script_string,\n                emscripten_runtime_keepalive_check: _emscripten_runtime_keepalive_check,\n                emscripten_runtime_keepalive_pop: _emscripten_runtime_keepalive_pop,\n                emscripten_runtime_keepalive_push: _emscripten_runtime_keepalive_push,\n                emscripten_sample_gamepad_data: _emscripten_sample_gamepad_data,\n                emscripten_scan_registers: _emscripten_scan_registers,\n                emscripten_set_batterychargingchange_callback_on_thread: _emscripten_set_batterychargingchange_callback_on_thread,\n                emscripten_set_batterylevelchange_callback_on_thread: _emscripten_set_batterylevelchange_callback_on_thread,\n                emscripten_set_beforeunload_callback_on_thread: _emscripten_set_beforeunload_callback_on_thread,\n                emscripten_set_blur_callback_on_thread: _emscripten_set_blur_callback_on_thread,\n                emscripten_set_canvas_element_size: _emscripten_set_canvas_element_size,\n                emscripten_set_canvas_size: _emscripten_set_canvas_size,\n                emscripten_set_click_callback_on_thread: _emscripten_set_click_callback_on_thread,\n                emscripten_set_dblclick_callback_on_thread: _emscripten_set_dblclick_callback_on_thread,\n                emscripten_set_devicemotion_callback_on_thread: _emscripten_set_devicemotion_callback_on_thread,\n                emscripten_set_deviceorientation_callback_on_thread: _emscripten_set_deviceorientation_callback_on_thread,\n                emscripten_set_element_css_size: _emscripten_set_element_css_size,\n                emscripten_set_focus_callback_on_thread: _emscripten_set_focus_callback_on_thread,\n                emscripten_set_focusin_callback_on_thread: _emscripten_set_focusin_callback_on_thread,\n                emscripten_set_focusout_callback_on_thread: _emscripten_set_focusout_callback_on_thread,\n                emscripten_set_fullscreenchange_callback_on_thread: _emscripten_set_fullscreenchange_callback_on_thread,\n                emscripten_set_gamepadconnected_callback_on_thread: _emscripten_set_gamepadconnected_callback_on_thread,\n                emscripten_set_gamepaddisconnected_callback_on_thread: _emscripten_set_gamepaddisconnected_callback_on_thread,\n                emscripten_set_immediate: _emscripten_set_immediate,\n                emscripten_set_immediate_loop: _emscripten_set_immediate_loop,\n                emscripten_set_interval: _emscripten_set_interval,\n                emscripten_set_keydown_callback_on_thread: _emscripten_set_keydown_callback_on_thread,\n                emscripten_set_keypress_callback_on_thread: _emscripten_set_keypress_callback_on_thread,\n                emscripten_set_keyup_callback_on_thread: _emscripten_set_keyup_callback_on_thread,\n                emscripten_set_main_loop: _emscripten_set_main_loop,\n                emscripten_set_main_loop_arg: _emscripten_set_main_loop_arg,\n                emscripten_set_main_loop_expected_blockers: _emscripten_set_main_loop_expected_blockers,\n                emscripten_set_main_loop_timing: _emscripten_set_main_loop_timing,\n                emscripten_set_mousedown_callback_on_thread: _emscripten_set_mousedown_callback_on_thread,\n                emscripten_set_mouseenter_callback_on_thread: _emscripten_set_mouseenter_callback_on_thread,\n                emscripten_set_mouseleave_callback_on_thread: _emscripten_set_mouseleave_callback_on_thread,\n                emscripten_set_mousemove_callback_on_thread: _emscripten_set_mousemove_callback_on_thread,\n                emscripten_set_mouseout_callback_on_thread: _emscripten_set_mouseout_callback_on_thread,\n                emscripten_set_mouseover_callback_on_thread: _emscripten_set_mouseover_callback_on_thread,\n                emscripten_set_mouseup_callback_on_thread: _emscripten_set_mouseup_callback_on_thread,\n                emscripten_set_orientationchange_callback_on_thread: _emscripten_set_orientationchange_callback_on_thread,\n                emscripten_set_pointerlockchange_callback_on_thread: _emscripten_set_pointerlockchange_callback_on_thread,\n                emscripten_set_pointerlockerror_callback_on_thread: _emscripten_set_pointerlockerror_callback_on_thread,\n                emscripten_set_resize_callback_on_thread: _emscripten_set_resize_callback_on_thread,\n                emscripten_set_scroll_callback_on_thread: _emscripten_set_scroll_callback_on_thread,\n                emscripten_set_socket_close_callback: _emscripten_set_socket_close_callback,\n                emscripten_set_socket_connection_callback: _emscripten_set_socket_connection_callback,\n                emscripten_set_socket_error_callback: _emscripten_set_socket_error_callback,\n                emscripten_set_socket_listen_callback: _emscripten_set_socket_listen_callback,\n                emscripten_set_socket_message_callback: _emscripten_set_socket_message_callback,\n                emscripten_set_socket_open_callback: _emscripten_set_socket_open_callback,\n                emscripten_set_timeout: _emscripten_set_timeout,\n                emscripten_set_timeout_loop: _emscripten_set_timeout_loop,\n                emscripten_set_touchcancel_callback_on_thread: _emscripten_set_touchcancel_callback_on_thread,\n                emscripten_set_touchend_callback_on_thread: _emscripten_set_touchend_callback_on_thread,\n                emscripten_set_touchmove_callback_on_thread: _emscripten_set_touchmove_callback_on_thread,\n                emscripten_set_touchstart_callback_on_thread: _emscripten_set_touchstart_callback_on_thread,\n                emscripten_set_visibilitychange_callback_on_thread: _emscripten_set_visibilitychange_callback_on_thread,\n                emscripten_set_webglcontextlost_callback_on_thread: _emscripten_set_webglcontextlost_callback_on_thread,\n                emscripten_set_webglcontextrestored_callback_on_thread: _emscripten_set_webglcontextrestored_callback_on_thread,\n                emscripten_set_wheel_callback_on_thread: _emscripten_set_wheel_callback_on_thread,\n                emscripten_set_window_title: _emscripten_set_window_title,\n                emscripten_sleep: _emscripten_sleep,\n                emscripten_stack_snapshot: _emscripten_stack_snapshot,\n                emscripten_stack_unwind_buffer: _emscripten_stack_unwind_buffer,\n                emscripten_supports_offscreencanvas: _emscripten_supports_offscreencanvas,\n                emscripten_throw_number: _emscripten_throw_number,\n                emscripten_throw_string: _emscripten_throw_string,\n                emscripten_unlock_orientation: _emscripten_unlock_orientation,\n                emscripten_unwind_to_js_event_loop: _emscripten_unwind_to_js_event_loop,\n                emscripten_vibrate: _emscripten_vibrate,\n                emscripten_vibrate_pattern: _emscripten_vibrate_pattern,\n                emscripten_webgl_commit_frame: _emscripten_webgl_commit_frame,\n                emscripten_webgl_create_context: _emscripten_webgl_create_context,\n                emscripten_webgl_destroy_context: _emscripten_webgl_destroy_context,\n                emscripten_webgl_do_commit_frame: _emscripten_webgl_do_commit_frame,\n                emscripten_webgl_do_create_context: _emscripten_webgl_do_create_context,\n                emscripten_webgl_do_get_current_context: _emscripten_webgl_do_get_current_context,\n                emscripten_webgl_enable_ANGLE_instanced_arrays: _emscripten_webgl_enable_ANGLE_instanced_arrays,\n                emscripten_webgl_enable_EXT_clip_control: _emscripten_webgl_enable_EXT_clip_control,\n                emscripten_webgl_enable_EXT_polygon_offset_clamp: _emscripten_webgl_enable_EXT_polygon_offset_clamp,\n                emscripten_webgl_enable_OES_vertex_array_object: _emscripten_webgl_enable_OES_vertex_array_object,\n                emscripten_webgl_enable_WEBGL_draw_buffers: _emscripten_webgl_enable_WEBGL_draw_buffers,\n                emscripten_webgl_enable_WEBGL_multi_draw: _emscripten_webgl_enable_WEBGL_multi_draw,\n                emscripten_webgl_enable_WEBGL_polygon_mode: _emscripten_webgl_enable_WEBGL_polygon_mode,\n                emscripten_webgl_enable_extension: _emscripten_webgl_enable_extension,\n                emscripten_webgl_get_context_attributes: _emscripten_webgl_get_context_attributes,\n                emscripten_webgl_get_current_context: _emscripten_webgl_get_current_context,\n                emscripten_webgl_get_drawing_buffer_size: _emscripten_webgl_get_drawing_buffer_size,\n                emscripten_webgl_get_parameter_d: _emscripten_webgl_get_parameter_d,\n                emscripten_webgl_get_parameter_i64v: _emscripten_webgl_get_parameter_i64v,\n                emscripten_webgl_get_parameter_o: _emscripten_webgl_get_parameter_o,\n                emscripten_webgl_get_parameter_utf8: _emscripten_webgl_get_parameter_utf8,\n                emscripten_webgl_get_parameter_v: _emscripten_webgl_get_parameter_v,\n                emscripten_webgl_get_program_info_log_utf8: _emscripten_webgl_get_program_info_log_utf8,\n                emscripten_webgl_get_program_parameter_d: _emscripten_webgl_get_program_parameter_d,\n                emscripten_webgl_get_shader_info_log_utf8: _emscripten_webgl_get_shader_info_log_utf8,\n                emscripten_webgl_get_shader_parameter_d: _emscripten_webgl_get_shader_parameter_d,\n                emscripten_webgl_get_shader_source_utf8: _emscripten_webgl_get_shader_source_utf8,\n                emscripten_webgl_get_supported_extensions: _emscripten_webgl_get_supported_extensions,\n                emscripten_webgl_get_uniform_d: _emscripten_webgl_get_uniform_d,\n                emscripten_webgl_get_uniform_v: _emscripten_webgl_get_uniform_v,\n                emscripten_webgl_get_vertex_attrib_d: _emscripten_webgl_get_vertex_attrib_d,\n                emscripten_webgl_get_vertex_attrib_o: _emscripten_webgl_get_vertex_attrib_o,\n                emscripten_webgl_get_vertex_attrib_v: _emscripten_webgl_get_vertex_attrib_v,\n                emscripten_webgl_make_context_current: _emscripten_webgl_make_context_current,\n                emscripten_wget_data: _emscripten_wget_data,\n                endprotoent: _endprotoent,\n                environ_get: _environ_get,\n                environ_sizes_get: _environ_sizes_get,\n                exit: _exit,\n                fd_close: _fd_close,\n                fd_fdstat_get: _fd_fdstat_get,\n                fd_pread: _fd_pread,\n                fd_pwrite: _fd_pwrite,\n                fd_read: _fd_read,\n                fd_seek: _fd_seek,\n                fd_sync: _fd_sync,\n                fd_write: _fd_write,\n                filledEllipseColor: _filledEllipseColor,\n                filledEllipseRGBA: _filledEllipseRGBA,\n                getaddrinfo: _getaddrinfo,\n                getnameinfo: _getnameinfo,\n                getprotobyname: _getprotobyname,\n                getprotobynumber: _getprotobynumber,\n                getprotoent: _getprotoent,\n                glActiveTexture: _glActiveTexture,\n                glAttachShader: _glAttachShader,\n                glBegin: _glBegin,\n                glBeginQueryEXT: _glBeginQueryEXT,\n                glBindAttribLocation: _glBindAttribLocation,\n                glBindBuffer: _glBindBuffer,\n                glBindFramebuffer: _glBindFramebuffer,\n                glBindRenderbuffer: _glBindRenderbuffer,\n                glBindTexture: _glBindTexture,\n                glBindVertexArray: _glBindVertexArray,\n                glBindVertexArrayOES: _glBindVertexArrayOES,\n                glBlendColor: _glBlendColor,\n                glBlendEquation: _glBlendEquation,\n                glBlendEquationSeparate: _glBlendEquationSeparate,\n                glBlendFunc: _glBlendFunc,\n                glBlendFuncSeparate: _glBlendFuncSeparate,\n                glBufferData: _glBufferData,\n                glBufferSubData: _glBufferSubData,\n                glCheckFramebufferStatus: _glCheckFramebufferStatus,\n                glClear: _glClear,\n                glClearColor: _glClearColor,\n                glClearDepth: _glClearDepth,\n                glClearDepthf: _glClearDepthf,\n                glClearStencil: _glClearStencil,\n                glClipControlEXT: _glClipControlEXT,\n                glColorMask: _glColorMask,\n                glCompileShader: _glCompileShader,\n                glCompressedTexImage2D: _glCompressedTexImage2D,\n                glCompressedTexSubImage2D: _glCompressedTexSubImage2D,\n                glCopyTexImage2D: _glCopyTexImage2D,\n                glCopyTexSubImage2D: _glCopyTexSubImage2D,\n                glCreateProgram: _glCreateProgram,\n                glCreateShader: _glCreateShader,\n                glCullFace: _glCullFace,\n                glDeleteBuffers: _glDeleteBuffers,\n                glDeleteFramebuffers: _glDeleteFramebuffers,\n                glDeleteProgram: _glDeleteProgram,\n                glDeleteQueriesEXT: _glDeleteQueriesEXT,\n                glDeleteRenderbuffers: _glDeleteRenderbuffers,\n                glDeleteShader: _glDeleteShader,\n                glDeleteTextures: _glDeleteTextures,\n                glDeleteVertexArrays: _glDeleteVertexArrays,\n                glDeleteVertexArraysOES: _glDeleteVertexArraysOES,\n                glDepthFunc: _glDepthFunc,\n                glDepthMask: _glDepthMask,\n                glDepthRange: _glDepthRange,\n                glDepthRangef: _glDepthRangef,\n                glDetachShader: _glDetachShader,\n                glDisable: _glDisable,\n                glDisableVertexAttribArray: _glDisableVertexAttribArray,\n                glDrawArrays: _glDrawArrays,\n                glDrawArraysInstanced: _glDrawArraysInstanced,\n                glDrawArraysInstancedANGLE: _glDrawArraysInstancedANGLE,\n                glDrawArraysInstancedARB: _glDrawArraysInstancedARB,\n                glDrawArraysInstancedEXT: _glDrawArraysInstancedEXT,\n                glDrawArraysInstancedNV: _glDrawArraysInstancedNV,\n                glDrawBuffers: _glDrawBuffers,\n                glDrawBuffersEXT: _glDrawBuffersEXT,\n                glDrawBuffersWEBGL: _glDrawBuffersWEBGL,\n                glDrawElements: _glDrawElements,\n                glDrawElementsInstanced: _glDrawElementsInstanced,\n                glDrawElementsInstancedANGLE: _glDrawElementsInstancedANGLE,\n                glDrawElementsInstancedARB: _glDrawElementsInstancedARB,\n                glDrawElementsInstancedEXT: _glDrawElementsInstancedEXT,\n                glDrawElementsInstancedNV: _glDrawElementsInstancedNV,\n                glEnable: _glEnable,\n                glEnableVertexAttribArray: _glEnableVertexAttribArray,\n                glEndQueryEXT: _glEndQueryEXT,\n                glFinish: _glFinish,\n                glFlush: _glFlush,\n                glFramebufferRenderbuffer: _glFramebufferRenderbuffer,\n                glFramebufferTexture2D: _glFramebufferTexture2D,\n                glFrontFace: _glFrontFace,\n                glGenBuffers: _glGenBuffers,\n                glGenFramebuffers: _glGenFramebuffers,\n                glGenQueriesEXT: _glGenQueriesEXT,\n                glGenRenderbuffers: _glGenRenderbuffers,\n                glGenTextures: _glGenTextures,\n                glGenVertexArrays: _glGenVertexArrays,\n                glGenVertexArraysOES: _glGenVertexArraysOES,\n                glGenerateMipmap: _glGenerateMipmap,\n                glGetActiveAttrib: _glGetActiveAttrib,\n                glGetActiveUniform: _glGetActiveUniform,\n                glGetAttachedShaders: _glGetAttachedShaders,\n                glGetAttribLocation: _glGetAttribLocation,\n                glGetBooleanv: _glGetBooleanv,\n                glGetBufferParameteriv: _glGetBufferParameteriv,\n                glGetError: _glGetError,\n                glGetFloatv: _glGetFloatv,\n                glGetFramebufferAttachmentParameteriv: _glGetFramebufferAttachmentParameteriv,\n                glGetIntegerv: _glGetIntegerv,\n                glGetProgramInfoLog: _glGetProgramInfoLog,\n                glGetProgramiv: _glGetProgramiv,\n                glGetQueryObjecti64vEXT: _glGetQueryObjecti64vEXT,\n                glGetQueryObjectivEXT: _glGetQueryObjectivEXT,\n                glGetQueryObjectui64vEXT: _glGetQueryObjectui64vEXT,\n                glGetQueryObjectuivEXT: _glGetQueryObjectuivEXT,\n                glGetQueryivEXT: _glGetQueryivEXT,\n                glGetRenderbufferParameteriv: _glGetRenderbufferParameteriv,\n                glGetShaderInfoLog: _glGetShaderInfoLog,\n                glGetShaderPrecisionFormat: _glGetShaderPrecisionFormat,\n                glGetShaderSource: _glGetShaderSource,\n                glGetShaderiv: _glGetShaderiv,\n                glGetString: _glGetString,\n                glGetTexParameterfv: _glGetTexParameterfv,\n                glGetTexParameteriv: _glGetTexParameteriv,\n                glGetUniformLocation: _glGetUniformLocation,\n                glGetUniformfv: _glGetUniformfv,\n                glGetUniformiv: _glGetUniformiv,\n                glGetVertexAttribPointerv: _glGetVertexAttribPointerv,\n                glGetVertexAttribfv: _glGetVertexAttribfv,\n                glGetVertexAttribiv: _glGetVertexAttribiv,\n                glHint: _glHint,\n                glIsBuffer: _glIsBuffer,\n                glIsEnabled: _glIsEnabled,\n                glIsFramebuffer: _glIsFramebuffer,\n                glIsProgram: _glIsProgram,\n                glIsQueryEXT: _glIsQueryEXT,\n                glIsRenderbuffer: _glIsRenderbuffer,\n                glIsShader: _glIsShader,\n                glIsTexture: _glIsTexture,\n                glIsVertexArray: _glIsVertexArray,\n                glIsVertexArrayOES: _glIsVertexArrayOES,\n                glLineWidth: _glLineWidth,\n                glLinkProgram: _glLinkProgram,\n                glLoadIdentity: _glLoadIdentity,\n                glMatrixMode: _glMatrixMode,\n                glMultiDrawArrays: _glMultiDrawArrays,\n                glMultiDrawArraysANGLE: _glMultiDrawArraysANGLE,\n                glMultiDrawArraysInstancedANGLE: _glMultiDrawArraysInstancedANGLE,\n                glMultiDrawArraysInstancedWEBGL: _glMultiDrawArraysInstancedWEBGL,\n                glMultiDrawArraysWEBGL: _glMultiDrawArraysWEBGL,\n                glMultiDrawElements: _glMultiDrawElements,\n                glMultiDrawElementsANGLE: _glMultiDrawElementsANGLE,\n                glMultiDrawElementsInstancedANGLE: _glMultiDrawElementsInstancedANGLE,\n                glMultiDrawElementsInstancedWEBGL: _glMultiDrawElementsInstancedWEBGL,\n                glMultiDrawElementsWEBGL: _glMultiDrawElementsWEBGL,\n                glPixelStorei: _glPixelStorei,\n                glPolygonModeWEBGL: _glPolygonModeWEBGL,\n                glPolygonOffset: _glPolygonOffset,\n                glPolygonOffsetClampEXT: _glPolygonOffsetClampEXT,\n                glQueryCounterEXT: _glQueryCounterEXT,\n                glReadPixels: _glReadPixels,\n                glReleaseShaderCompiler: _glReleaseShaderCompiler,\n                glRenderbufferStorage: _glRenderbufferStorage,\n                glSampleCoverage: _glSampleCoverage,\n                glScissor: _glScissor,\n                glShaderBinary: _glShaderBinary,\n                glShaderSource: _glShaderSource,\n                glStencilFunc: _glStencilFunc,\n                glStencilFuncSeparate: _glStencilFuncSeparate,\n                glStencilMask: _glStencilMask,\n                glStencilMaskSeparate: _glStencilMaskSeparate,\n                glStencilOp: _glStencilOp,\n                glStencilOpSeparate: _glStencilOpSeparate,\n                glTexImage2D: _glTexImage2D,\n                glTexParameterf: _glTexParameterf,\n                glTexParameterfv: _glTexParameterfv,\n                glTexParameteri: _glTexParameteri,\n                glTexParameteriv: _glTexParameteriv,\n                glTexSubImage2D: _glTexSubImage2D,\n                glUniform1f: _glUniform1f,\n                glUniform1fv: _glUniform1fv,\n                glUniform1i: _glUniform1i,\n                glUniform1iv: _glUniform1iv,\n                glUniform2f: _glUniform2f,\n                glUniform2fv: _glUniform2fv,\n                glUniform2i: _glUniform2i,\n                glUniform2iv: _glUniform2iv,\n                glUniform3f: _glUniform3f,\n                glUniform3fv: _glUniform3fv,\n                glUniform3i: _glUniform3i,\n                glUniform3iv: _glUniform3iv,\n                glUniform4f: _glUniform4f,\n                glUniform4fv: _glUniform4fv,\n                glUniform4i: _glUniform4i,\n                glUniform4iv: _glUniform4iv,\n                glUniformMatrix2fv: _glUniformMatrix2fv,\n                glUniformMatrix3fv: _glUniformMatrix3fv,\n                glUniformMatrix4fv: _glUniformMatrix4fv,\n                glUseProgram: _glUseProgram,\n                glValidateProgram: _glValidateProgram,\n                glVertexAttrib1f: _glVertexAttrib1f,\n                glVertexAttrib1fv: _glVertexAttrib1fv,\n                glVertexAttrib2f: _glVertexAttrib2f,\n                glVertexAttrib2fv: _glVertexAttrib2fv,\n                glVertexAttrib3f: _glVertexAttrib3f,\n                glVertexAttrib3fv: _glVertexAttrib3fv,\n                glVertexAttrib4f: _glVertexAttrib4f,\n                glVertexAttrib4fv: _glVertexAttrib4fv,\n                glVertexAttribDivisor: _glVertexAttribDivisor,\n                glVertexAttribDivisorANGLE: _glVertexAttribDivisorANGLE,\n                glVertexAttribDivisorARB: _glVertexAttribDivisorARB,\n                glVertexAttribDivisorEXT: _glVertexAttribDivisorEXT,\n                glVertexAttribDivisorNV: _glVertexAttribDivisorNV,\n                glVertexAttribPointer: _glVertexAttribPointer,\n                glVertexPointer: _glVertexPointer,\n                glViewport: _glViewport,\n                glewGetErrorString: _glewGetErrorString,\n                glewGetExtension: _glewGetExtension,\n                glewGetString: _glewGetString,\n                glewInit: _glewInit,\n                glewIsSupported: _glewIsSupported,\n                glutCreateWindow: _glutCreateWindow,\n                glutDestroyWindow: _glutDestroyWindow,\n                glutDisplayFunc: _glutDisplayFunc,\n                glutFullScreen: _glutFullScreen,\n                glutGet: _glutGet,\n                glutGetModifiers: _glutGetModifiers,\n                glutIdleFunc: _glutIdleFunc,\n                glutInit: _glutInit,\n                glutInitDisplayMode: _glutInitDisplayMode,\n                glutInitWindowPosition: _glutInitWindowPosition,\n                glutInitWindowSize: _glutInitWindowSize,\n                glutKeyboardFunc: _glutKeyboardFunc,\n                glutKeyboardUpFunc: _glutKeyboardUpFunc,\n                glutMainLoop: _glutMainLoop,\n                glutMotionFunc: _glutMotionFunc,\n                glutMouseFunc: _glutMouseFunc,\n                glutPassiveMotionFunc: _glutPassiveMotionFunc,\n                glutPositionWindow: _glutPositionWindow,\n                glutPostRedisplay: _glutPostRedisplay,\n                glutReshapeFunc: _glutReshapeFunc,\n                glutReshapeWindow: _glutReshapeWindow,\n                glutSetCursor: _glutSetCursor,\n                glutSpecialFunc: _glutSpecialFunc,\n                glutSpecialUpFunc: _glutSpecialUpFunc,\n                glutSwapBuffers: _glutSwapBuffers,\n                glutTimerFunc: _glutTimerFunc,\n                lineColor: _lineColor,\n                lineRGBA: _lineRGBA,\n                memory: wasmMemory,\n                pixelRGBA: _pixelRGBA,\n                proc_exit: _proc_exit,\n                pthread_kill: _pthread_kill,\n                random_get: _random_get,\n                rectangleColor: _rectangleColor,\n                rectangleRGBA: _rectangleRGBA,\n                rotozoomSurface: _rotozoomSurface,\n                setNetworkCallback: _setNetworkCallback,\n                setprotoent: _setprotoent,\n                stackAlloc: _stackAlloc,\n                stackRestore: _stackRestore,\n                stackSave: _stackSave,\n                strptime: _strptime,\n                strptime_l: _strptime_l,\n                uuid_clear: _uuid_clear,\n                uuid_compare: _uuid_compare,\n                uuid_copy: _uuid_copy,\n                uuid_generate: _uuid_generate,\n                uuid_is_null: _uuid_is_null,\n                uuid_parse: _uuid_parse,\n                uuid_type: _uuid_type,\n                uuid_unparse: _uuid_unparse,\n                uuid_unparse_lower: _uuid_unparse_lower,\n                uuid_unparse_upper: _uuid_unparse_upper,\n                uuid_variant: _uuid_variant,\n                zoomSurface: _zoomSurface\n            };\n            var wasmExports = createWasm();\n            var __emval_coro_resume = (a0, a1) => (__emval_coro_resume = wasmExports[\"_emval_coro_resume\"])(a0, a1);\n            var _main = Module[\"_main\"] = (a0, a1) => (_main = Module[\"_main\"] = wasmExports[\"main\"])(a0, a1);\n            var _duckdb_web_fs_glob_add_path = Module[\"_duckdb_web_fs_glob_add_path\"] = a0 => (_duckdb_web_fs_glob_add_path = Module[\"_duckdb_web_fs_glob_add_path\"] = wasmExports[\"duckdb_web_fs_glob_add_path\"])(a0);\n            var _duckdb_web_clear_response = Module[\"_duckdb_web_clear_response\"] = () => (_duckdb_web_clear_response = Module[\"_duckdb_web_clear_response\"] = wasmExports[\"duckdb_web_clear_response\"])();\n            var _duckdb_web_fail_with = Module[\"_duckdb_web_fail_with\"] = a0 => (_duckdb_web_fail_with = Module[\"_duckdb_web_fail_with\"] = wasmExports[\"duckdb_web_fail_with\"])(a0);\n            var _duckdb_web_reset = Module[\"_duckdb_web_reset\"] = a0 => (_duckdb_web_reset = Module[\"_duckdb_web_reset\"] = wasmExports[\"duckdb_web_reset\"])(a0);\n            var _duckdb_web_connect = Module[\"_duckdb_web_connect\"] = () => (_duckdb_web_connect = Module[\"_duckdb_web_connect\"] = wasmExports[\"duckdb_web_connect\"])();\n            var _duckdb_web_disconnect = Module[\"_duckdb_web_disconnect\"] = a0 => (_duckdb_web_disconnect = Module[\"_duckdb_web_disconnect\"] = wasmExports[\"duckdb_web_disconnect\"])(a0);\n            var _duckdb_web_flush_files = Module[\"_duckdb_web_flush_files\"] = () => (_duckdb_web_flush_files = Module[\"_duckdb_web_flush_files\"] = wasmExports[\"duckdb_web_flush_files\"])();\n            var _duckdb_web_flush_file = Module[\"_duckdb_web_flush_file\"] = a0 => (_duckdb_web_flush_file = Module[\"_duckdb_web_flush_file\"] = wasmExports[\"duckdb_web_flush_file\"])(a0);\n            var _duckdb_web_open = Module[\"_duckdb_web_open\"] = (a0, a1) => (_duckdb_web_open = Module[\"_duckdb_web_open\"] = wasmExports[\"duckdb_web_open\"])(a0, a1);\n            var _duckdb_web_get_global_file_info = Module[\"_duckdb_web_get_global_file_info\"] = (a0, a1) => (_duckdb_web_get_global_file_info = Module[\"_duckdb_web_get_global_file_info\"] = wasmExports[\"duckdb_web_get_global_file_info\"])(a0, a1);\n            var _duckdb_web_collect_file_stats = Module[\"_duckdb_web_collect_file_stats\"] = (a0, a1, a2) => (_duckdb_web_collect_file_stats = Module[\"_duckdb_web_collect_file_stats\"] = wasmExports[\"duckdb_web_collect_file_stats\"])(a0, a1, a2);\n            var _duckdb_web_export_file_stats = Module[\"_duckdb_web_export_file_stats\"] = (a0, a1) => (_duckdb_web_export_file_stats = Module[\"_duckdb_web_export_file_stats\"] = wasmExports[\"duckdb_web_export_file_stats\"])(a0, a1);\n            var _duckdb_web_fs_drop_file = Module[\"_duckdb_web_fs_drop_file\"] = (a0, a1) => (_duckdb_web_fs_drop_file = Module[\"_duckdb_web_fs_drop_file\"] = wasmExports[\"duckdb_web_fs_drop_file\"])(a0, a1);\n            var _duckdb_web_fs_drop_files = Module[\"_duckdb_web_fs_drop_files\"] = (a0, a1, a2) => (_duckdb_web_fs_drop_files = Module[\"_duckdb_web_fs_drop_files\"] = wasmExports[\"duckdb_web_fs_drop_files\"])(a0, a1, a2);\n            var _duckdb_web_fs_glob_file_infos = Module[\"_duckdb_web_fs_glob_file_infos\"] = (a0, a1) => (_duckdb_web_fs_glob_file_infos = Module[\"_duckdb_web_fs_glob_file_infos\"] = wasmExports[\"duckdb_web_fs_glob_file_infos\"])(a0, a1);\n            var _duckdb_web_fs_get_file_info_by_id = Module[\"_duckdb_web_fs_get_file_info_by_id\"] = (a0, a1, a2) => (_duckdb_web_fs_get_file_info_by_id = Module[\"_duckdb_web_fs_get_file_info_by_id\"] = wasmExports[\"duckdb_web_fs_get_file_info_by_id\"])(a0, a1, a2);\n            var _duckdb_web_fs_get_file_info_by_name = Module[\"_duckdb_web_fs_get_file_info_by_name\"] = (a0, a1, a2) => (_duckdb_web_fs_get_file_info_by_name = Module[\"_duckdb_web_fs_get_file_info_by_name\"] = wasmExports[\"duckdb_web_fs_get_file_info_by_name\"])(a0, a1, a2);\n            var _duckdb_web_fs_register_file_url = Module[\"_duckdb_web_fs_register_file_url\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_fs_register_file_url = Module[\"_duckdb_web_fs_register_file_url\"] = wasmExports[\"duckdb_web_fs_register_file_url\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_fs_register_file_buffer = Module[\"_duckdb_web_fs_register_file_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_fs_register_file_buffer = Module[\"_duckdb_web_fs_register_file_buffer\"] = wasmExports[\"duckdb_web_fs_register_file_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_copy_file_to_buffer = Module[\"_duckdb_web_copy_file_to_buffer\"] = (a0, a1) => (_duckdb_web_copy_file_to_buffer = Module[\"_duckdb_web_copy_file_to_buffer\"] = wasmExports[\"duckdb_web_copy_file_to_buffer\"])(a0, a1);\n            var _duckdb_web_copy_file_to_path = Module[\"_duckdb_web_copy_file_to_path\"] = (a0, a1, a2) => (_duckdb_web_copy_file_to_path = Module[\"_duckdb_web_copy_file_to_path\"] = wasmExports[\"duckdb_web_copy_file_to_path\"])(a0, a1, a2);\n            var _duckdb_web_get_version = Module[\"_duckdb_web_get_version\"] = a0 => (_duckdb_web_get_version = Module[\"_duckdb_web_get_version\"] = wasmExports[\"duckdb_web_get_version\"])(a0);\n            var _duckdb_web_get_feature_flags = Module[\"_duckdb_web_get_feature_flags\"] = () => (_duckdb_web_get_feature_flags = Module[\"_duckdb_web_get_feature_flags\"] = wasmExports[\"duckdb_web_get_feature_flags\"])();\n            var _duckdb_web_tokenize = Module[\"_duckdb_web_tokenize\"] = (a0, a1) => (_duckdb_web_tokenize = Module[\"_duckdb_web_tokenize\"] = wasmExports[\"duckdb_web_tokenize\"])(a0, a1);\n            var _duckdb_web_tokenize_buffer = Module[\"_duckdb_web_tokenize_buffer\"] = (a0, a1, a2) => (_duckdb_web_tokenize_buffer = Module[\"_duckdb_web_tokenize_buffer\"] = wasmExports[\"duckdb_web_tokenize_buffer\"])(a0, a1, a2);\n            var _duckdb_web_udf_scalar_create = Module[\"_duckdb_web_udf_scalar_create\"] = (a0, a1, a2) => (_duckdb_web_udf_scalar_create = Module[\"_duckdb_web_udf_scalar_create\"] = wasmExports[\"duckdb_web_udf_scalar_create\"])(a0, a1, a2);\n            var _duckdb_web_prepared_create = Module[\"_duckdb_web_prepared_create\"] = (a0, a1, a2) => (_duckdb_web_prepared_create = Module[\"_duckdb_web_prepared_create\"] = wasmExports[\"duckdb_web_prepared_create\"])(a0, a1, a2);\n            var _duckdb_web_prepared_create_buffer = Module[\"_duckdb_web_prepared_create_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_create_buffer = Module[\"_duckdb_web_prepared_create_buffer\"] = wasmExports[\"duckdb_web_prepared_create_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_prepared_close = Module[\"_duckdb_web_prepared_close\"] = (a0, a1, a2) => (_duckdb_web_prepared_close = Module[\"_duckdb_web_prepared_close\"] = wasmExports[\"duckdb_web_prepared_close\"])(a0, a1, a2);\n            var _duckdb_web_prepared_run = Module[\"_duckdb_web_prepared_run\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_run = Module[\"_duckdb_web_prepared_run\"] = wasmExports[\"duckdb_web_prepared_run\"])(a0, a1, a2, a3);\n            var _duckdb_web_prepared_send = Module[\"_duckdb_web_prepared_send\"] = (a0, a1, a2, a3) => (_duckdb_web_prepared_send = Module[\"_duckdb_web_prepared_send\"] = wasmExports[\"duckdb_web_prepared_send\"])(a0, a1, a2, a3);\n            var _duckdb_web_query_run = Module[\"_duckdb_web_query_run\"] = (a0, a1, a2) => (_duckdb_web_query_run = Module[\"_duckdb_web_query_run\"] = wasmExports[\"duckdb_web_query_run\"])(a0, a1, a2);\n            var _duckdb_web_query_run_buffer = Module[\"_duckdb_web_query_run_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_query_run_buffer = Module[\"_duckdb_web_query_run_buffer\"] = wasmExports[\"duckdb_web_query_run_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_pending_query_start = Module[\"_duckdb_web_pending_query_start\"] = (a0, a1, a2, a3) => (_duckdb_web_pending_query_start = Module[\"_duckdb_web_pending_query_start\"] = wasmExports[\"duckdb_web_pending_query_start\"])(a0, a1, a2, a3);\n            var _duckdb_web_pending_query_start_buffer = Module[\"_duckdb_web_pending_query_start_buffer\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_pending_query_start_buffer = Module[\"_duckdb_web_pending_query_start_buffer\"] = wasmExports[\"duckdb_web_pending_query_start_buffer\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_pending_query_poll = Module[\"_duckdb_web_pending_query_poll\"] = (a0, a1, a2) => (_duckdb_web_pending_query_poll = Module[\"_duckdb_web_pending_query_poll\"] = wasmExports[\"duckdb_web_pending_query_poll\"])(a0, a1, a2);\n            var _duckdb_web_pending_query_cancel = Module[\"_duckdb_web_pending_query_cancel\"] = (a0, a1) => (_duckdb_web_pending_query_cancel = Module[\"_duckdb_web_pending_query_cancel\"] = wasmExports[\"duckdb_web_pending_query_cancel\"])(a0, a1);\n            var _duckdb_web_query_fetch_results = Module[\"_duckdb_web_query_fetch_results\"] = (a0, a1) => (_duckdb_web_query_fetch_results = Module[\"_duckdb_web_query_fetch_results\"] = wasmExports[\"duckdb_web_query_fetch_results\"])(a0, a1);\n            var _duckdb_web_get_tablenames = Module[\"_duckdb_web_get_tablenames\"] = (a0, a1, a2) => (_duckdb_web_get_tablenames = Module[\"_duckdb_web_get_tablenames\"] = wasmExports[\"duckdb_web_get_tablenames\"])(a0, a1, a2);\n            var _duckdb_web_get_tablenames_buffer = Module[\"_duckdb_web_get_tablenames_buffer\"] = (a0, a1, a2, a3) => (_duckdb_web_get_tablenames_buffer = Module[\"_duckdb_web_get_tablenames_buffer\"] = wasmExports[\"duckdb_web_get_tablenames_buffer\"])(a0, a1, a2, a3);\n            var _duckdb_web_insert_arrow_from_ipc_stream = Module[\"_duckdb_web_insert_arrow_from_ipc_stream\"] = (a0, a1, a2, a3, a4) => (_duckdb_web_insert_arrow_from_ipc_stream = Module[\"_duckdb_web_insert_arrow_from_ipc_stream\"] = wasmExports[\"duckdb_web_insert_arrow_from_ipc_stream\"])(a0, a1, a2, a3, a4);\n            var _duckdb_web_insert_csv_from_path = Module[\"_duckdb_web_insert_csv_from_path\"] = (a0, a1, a2, a3) => (_duckdb_web_insert_csv_from_path = Module[\"_duckdb_web_insert_csv_from_path\"] = wasmExports[\"duckdb_web_insert_csv_from_path\"])(a0, a1, a2, a3);\n            var _duckdb_web_insert_json_from_path = Module[\"_duckdb_web_insert_json_from_path\"] = (a0, a1, a2, a3) => (_duckdb_web_insert_json_from_path = Module[\"_duckdb_web_insert_json_from_path\"] = wasmExports[\"duckdb_web_insert_json_from_path\"])(a0, a1, a2, a3);\n            var ___dl_seterr = (a0, a1) => (___dl_seterr = wasmExports[\"__dl_seterr\"])(a0, a1);\n            var __emscripten_timeout = (a0, a1) => (__emscripten_timeout = wasmExports[\"_emscripten_timeout\"])(a0, a1);\n            var _malloc = Module[\"_malloc\"] = a0 => (_malloc = Module[\"_malloc\"] = wasmExports[\"malloc\"])(a0);\n            var _free = Module[\"_free\"] = a0 => (_free = Module[\"_free\"] = wasmExports[\"free\"])(a0);\n            var _calloc = Module[\"_calloc\"] = (a0, a1) => (_calloc = Module[\"_calloc\"] = wasmExports[\"calloc\"])(a0, a1);\n            var _emscripten_builtin_memalign = (a0, a1) => (_emscripten_builtin_memalign = wasmExports[\"emscripten_builtin_memalign\"])(a0, a1);\n            var __emscripten_tempret_set = a0 => (__emscripten_tempret_set = wasmExports[\"_emscripten_tempret_set\"])(a0);\n            var __emscripten_tempret_get = () => (__emscripten_tempret_get = wasmExports[\"_emscripten_tempret_get\"])();\n            var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports[\"_emscripten_stack_restore\"])(a0);\n            var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports[\"_emscripten_stack_alloc\"])(a0);\n            var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports[\"emscripten_stack_get_current\"])();\n\n            function applySignatureConversions(wasmExports) {\n                wasmExports = Object.assign({}, wasmExports);\n                var makeWrapper_pp = f => a0 => f(a0) >>> 0;\n                var makeWrapper_p = f => () => f() >>> 0;\n                var makeWrapper_pppp = f => (a0, a1, a2) => f(a0, a1, a2) >>> 0;\n                var makeWrapper_ppp = f => (a0, a1) => f(a0, a1) >>> 0;\n                var makeWrapper_p_ = f => a0 => f(a0) >>> 0;\n                var makeWrapper_pP = f => a0 => f(a0) >>> 0;\n                wasmExports[\"__getTypeName\"] = makeWrapper_pp(wasmExports[\"__getTypeName\"]);\n                wasmExports[\"pthread_self\"] = makeWrapper_p(wasmExports[\"pthread_self\"]);\n                wasmExports[\"memcpy\"] = makeWrapper_pppp(wasmExports[\"memcpy\"]);\n                wasmExports[\"malloc\"] = makeWrapper_pp(wasmExports[\"malloc\"]);\n                wasmExports[\"calloc\"] = makeWrapper_ppp(wasmExports[\"calloc\"]);\n                wasmExports[\"__errno_location\"] = makeWrapper_p(wasmExports[\"__errno_location\"]);\n                wasmExports[\"strerror\"] = makeWrapper_p_(wasmExports[\"strerror\"]);\n                wasmExports[\"emscripten_builtin_malloc\"] = makeWrapper_pp(wasmExports[\"emscripten_builtin_malloc\"]);\n                wasmExports[\"emscripten_stack_get_base\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_base\"]);\n                wasmExports[\"emscripten_stack_get_end\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_end\"]);\n                wasmExports[\"emscripten_builtin_memalign\"] = makeWrapper_ppp(wasmExports[\"emscripten_builtin_memalign\"]);\n                wasmExports[\"emscripten_stack_get_current\"] = makeWrapper_p(wasmExports[\"emscripten_stack_get_current\"]);\n                wasmExports[\"emscripten_main_runtime_thread_id\"] = makeWrapper_p(wasmExports[\"emscripten_main_runtime_thread_id\"]);\n                wasmExports[\"sbrk\"] = makeWrapper_pP(wasmExports[\"sbrk\"]);\n                wasmExports[\"memalign\"] = makeWrapper_ppp(wasmExports[\"memalign\"]);\n                wasmExports[\"emscripten_builtin_calloc\"] = makeWrapper_ppp(wasmExports[\"emscripten_builtin_calloc\"]);\n                wasmExports[\"_emscripten_stack_alloc\"] = makeWrapper_pp(wasmExports[\"_emscripten_stack_alloc\"]);\n                wasmExports[\"__cxa_get_exception_ptr\"] = makeWrapper_pp(wasmExports[\"__cxa_get_exception_ptr\"]);\n                return wasmExports\n            }\n            Module[\"stackSave\"] = stackSave;\n            Module[\"stackRestore\"] = stackRestore;\n            Module[\"stackAlloc\"] = stackAlloc;\n            Module[\"getTempRet0\"] = getTempRet0;\n            Module[\"setTempRet0\"] = setTempRet0;\n            Module[\"ccall\"] = ccall;\n            Module[\"createDyncallWrapper\"] = createDyncallWrapper;\n            var calledRun;\n            dependenciesFulfilled = function runCaller() {\n                if (!calledRun) run();\n                if (!calledRun) dependenciesFulfilled = runCaller\n            };\n\n            function callMain(args = []) {\n                var entryFunction = resolveGlobalSymbol(\"main\").sym;\n                if (!entryFunction) return;\n                args.unshift(thisProgram);\n                var argc = args.length;\n                var argv = stackAlloc((argc + 1) * 4);\n                var argv_ptr = argv;\n                args.forEach(arg => {\n                    HEAPU32[argv_ptr >>> 2 >>> 0] = stringToUTF8OnStack(arg);\n                    argv_ptr += 4\n                });\n                HEAPU32[argv_ptr >>> 2 >>> 0] = 0;\n                try {\n                    var ret = entryFunction(argc, argv);\n                    exitJS(ret, true);\n                    return ret\n                } catch (e) {\n                    return handleException(e)\n                }\n            }\n\n            function run(args = arguments_) {\n                if (runDependencies > 0) {\n                    return\n                }\n                preRun();\n                if (runDependencies > 0) {\n                    return\n                }\n\n                function doRun() {\n                    if (calledRun) return;\n                    calledRun = true;\n                    Module[\"calledRun\"] = true;\n                    if (ABORT) return;\n                    initRuntime();\n                    preMain();\n                    readyPromiseResolve(Module);\n                    Module[\"onRuntimeInitialized\"]?.();\n                    if (shouldRunNow) callMain(args);\n                    postRun()\n                }\n                if (Module[\"setStatus\"]) {\n                    Module[\"setStatus\"](\"Running...\");\n                    setTimeout(() => {\n                        setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n                        doRun()\n                    }, 1)\n                } else {\n                    doRun()\n                }\n            }\n            if (Module[\"preInit\"]) {\n                if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n                while (Module[\"preInit\"].length > 0) {\n                    Module[\"preInit\"].pop()()\n                }\n            }\n            var shouldRunNow = true;\n            if (Module[\"noInitialRun\"]) shouldRunNow = false;\n            run();\n            moduleRtn = readyPromise;\n\n\n            return moduleRtn;\n        }\n    );\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n    module.exports = DuckDB;\nelse if (typeof define === 'function' && define['amd'])\n    define([], () => DuckDB);\n", "import * as arrow from 'apache-arrow';\nimport { DuckDBBindings } from './bindings_interface';\nimport { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from './insert_options';\n\n/** A thin helper to bind the connection id and talk record batches */\nexport class DuckDBConnection {\n    /** The bindings */\n    protected _bindings: DuckDBBindings;\n    /** The connection handle */\n    protected _conn: number;\n\n    /** Constructor */\n    constructor(bindings: DuckDBBindings, conn: number) {\n        this._bindings = bindings;\n        this._conn = conn;\n    }\n\n    /** Close a connection */\n    public close(): void {\n        this._bindings.disconnect(this._conn);\n    }\n\n    /** Brave souls may use this function to consume the underlying connection id */\n    public useUnsafe<R>(callback: (bindings: DuckDBBindings, conn: number) => R) {\n        return callback(this._bindings, this._conn);\n    }\n\n    /** Run a query */\n    public query<T extends { [key: string]: arrow.DataType } = any>(text: string): arrow.Table<T> {\n        const buffer = this._bindings.runQuery(this._conn, text);\n        const reader = arrow.RecordBatchReader.from<T>(buffer);\n        console.assert(reader.isSync());\n        console.assert(reader.isFile());\n        return new arrow.Table(reader);\n    }\n\n    /** Send a query */\n    public async send<T extends { [key: string]: arrow.DataType } = any>(\n        text: string,\n        allowStreamResult: boolean = false,\n    ): Promise<arrow.RecordBatchStreamReader<T>> {\n        let header = this._bindings.startPendingQuery(this._conn, text, allowStreamResult);\n        while (header == null) {\n            header = await new Promise((resolve, reject) => {\n                try {\n                    resolve(this._bindings.pollPendingQuery(this._conn));\n                } catch (e: any) {\n                    console.log(e);\n                    // If the worker is not set, the worker has been terminated\n                    if (e.message.includes('worker is not set!')) {\n                        reject(new Error('Worker has been terminated'));\n                    } else {\n                        //Otherwise, reject with the error\n                        reject(e);\n                    }\n                }\n            });\n        }\n        const iter = new ResultStreamIterator(this._bindings, this._conn, header);\n        const reader = arrow.RecordBatchReader.from<T>(iter);\n        console.assert(reader.isSync());\n        console.assert(reader.isStream());\n        return reader;\n    }\n\n    /** Cancel a query that was sent earlier */\n    public cancelSent(): boolean {\n        return this._bindings.cancelPendingQuery(this._conn);\n    }\n\n    /** Get table names */\n    public getTableNames(query: string): string[] {\n        return this._bindings.getTableNames(this._conn, query);\n    }\n\n    /** Create a prepared statement */\n    public prepare<T extends { [key: string]: arrow.DataType } = any>(text: string): PreparedStatement {\n        const stmt = this._bindings.createPrepared(this._conn, text);\n        return new PreparedStatement<T>(this._bindings, this._conn, stmt);\n    }\n\n    /** Create a scalar function */\n    public createScalarFunction(name: string, returns: arrow.DataType, func: (...args: any[]) => void): void {\n        this._bindings.createScalarFunction(this._conn, name, returns, func);\n    }\n\n    /** Insert an arrow table */\n    public insertArrowTable(table: arrow.Table, options: ArrowInsertOptions): void {\n        const buffer = arrow.tableToIPC(table, 'stream');\n        this.insertArrowFromIPCStream(buffer, options);\n    }\n    /** Insert an arrow table from an ipc stream */\n    public insertArrowFromIPCStream(buffer: Uint8Array, options: ArrowInsertOptions): void {\n        this._bindings.insertArrowFromIPCStream(this._conn, buffer, options);\n    }\n\n    /** Inesrt csv file from path */\n    public insertCSVFromPath(path: string, options: CSVInsertOptions): void {\n        this._bindings.insertCSVFromPath(this._conn, path, options);\n    }\n    /** Insert json file from path */\n    public insertJSONFromPath(path: string, options: JSONInsertOptions): void {\n        this._bindings.insertJSONFromPath(this._conn, path, options);\n    }\n}\n\n/** A result stream iterator */\nexport class ResultStreamIterator implements Iterable<Uint8Array> {\n    /** First chunk? */\n    _first: boolean;\n    /** Reached end of stream? */\n    _depleted: boolean;\n\n    constructor(\n        protected bindings: DuckDBBindings,\n        protected conn: number,\n        protected header: Uint8Array,\n    ) {\n        this._first = true;\n        this._depleted = false;\n    }\n\n    next(): IteratorResult<Uint8Array> {\n        if (this._first) {\n            this._first = false;\n            return { done: false, value: this.header };\n        }\n        if (this._depleted) {\n            return { done: true, value: null };\n        }\n        let bufferI8 = null;\n        do {\n            bufferI8 = this.bindings.fetchQueryResults(this.conn);\n        } while (bufferI8 == null);\n        this._depleted = bufferI8.length == 0;\n        return {\n            done: this._depleted,\n            value: bufferI8,\n        };\n    }\n\n    [Symbol.iterator]() {\n        return this;\n    }\n}\n\n/** A thin helper to bind the prepared statement id*/\nexport class PreparedStatement<T extends { [key: string]: arrow.DataType } = any> {\n    /** The bindings */\n    protected readonly bindings: DuckDBBindings;\n    /** The connection id */\n    protected readonly connectionId: number;\n    /** The statement id */\n    protected readonly statementId: number;\n\n    /** Constructor */\n    constructor(bindings: DuckDBBindings, connectionId: number, statementId: number) {\n        this.bindings = bindings;\n        this.connectionId = connectionId;\n        this.statementId = statementId;\n    }\n\n    /** Close a prepared statement */\n    public close() {\n        this.bindings.closePrepared(this.connectionId, this.statementId);\n    }\n\n    /** Run a prepared statement */\n    public query(...params: any[]): arrow.Table<T> {\n        const buffer = this.bindings.runPrepared(this.connectionId, this.statementId, params);\n        const reader = arrow.RecordBatchReader.from<T>(buffer);\n        console.assert(reader.isSync());\n        console.assert(reader.isFile());\n        return new arrow.Table(reader as arrow.RecordBatchFileReader);\n    }\n\n    /** Send a prepared statement */\n    public send(...params: any[]): arrow.RecordBatchStreamReader<T> {\n        const header = this.bindings.sendPrepared(this.connectionId, this.statementId, params);\n        const iter = new ResultStreamIterator(this.bindings, this.connectionId, header);\n        const reader = arrow.RecordBatchReader.from<T>(iter);\n        console.assert(reader.isSync());\n        console.assert(reader.isStream());\n        return reader as arrow.RecordBatchStreamReader;\n    }\n}\n", "export enum StatusCode {\n    SUCCESS = 0,\n    MAX_ARROW_ERROR = 255,\n    DUCKDB_WASM_RETRY = 256,\n}\n\nexport function IsArrowBuffer(status: StatusCode): boolean {\n    return status <= StatusCode.MAX_ARROW_ERROR;\n}\n\nexport function IsDuckDBWasmRetry(status: StatusCode): boolean {\n    return status === StatusCode.DUCKDB_WASM_RETRY;\n}\n", "import { DuckDBRuntime } from './runtime';\nimport { DuckDBModule } from './duckdb_module';\n\nconst TEXT_ENCODER = new TextEncoder();\nconst TEXT_DECODER = new TextDecoder('utf-8');\n\nfunction storeError(mod: DuckDBModule, response: number, message: string) {\n    const msgBuffer = TEXT_ENCODER.encode(message);\n    const heapAddr = mod._malloc(msgBuffer.byteLength);\n    const heapArray = mod.HEAPU8.subarray(heapAddr, heapAddr + msgBuffer.byteLength);\n    heapArray.set(msgBuffer);\n    mod.HEAPF64[(response >> 3) + 0] = 1;\n    mod.HEAPF64[(response >> 3) + 1] = heapAddr;\n    mod.HEAPF64[(response >> 3) + 2] = heapArray.byteLength;\n}\n\nfunction getTypeSize(ptype: string) {\n    switch (ptype) {\n        case 'UINT8':\n        case 'INT8':\n            return 1;\n        case 'INT32':\n        case 'FLOAT':\n            return 4;\n        case 'INT64':\n        case 'UINT64':\n        case 'DOUBLE':\n        case 'VARCHAR':\n            return 8;\n        default:\n            return 0;\n    }\n}\n\nfunction ptrToArray(mod: DuckDBModule, ptr: number, ptype: string, n: number) {\n    const heap = mod.HEAPU8.subarray(ptr, ptr + n * getTypeSize(ptype));\n    switch (ptype) {\n        case 'UINT8':\n            return new Uint8Array(heap.buffer, heap.byteOffset, n);\n        case 'INT8':\n            return new Int8Array(heap.buffer, heap.byteOffset, n);\n        case 'INT32':\n            return new Int32Array(heap.buffer, heap.byteOffset, n);\n        case 'FLOAT':\n            return new Float32Array(heap.buffer, heap.byteOffset, n);\n        case 'DOUBLE':\n            return new Float64Array(heap.buffer, heap.byteOffset, n);\n        case 'VARCHAR':\n            return new Float64Array(heap.buffer, heap.byteOffset, n);\n        default:\n            return new Array<string | undefined | null>(0); // cough\n    }\n}\n\nfunction ptrToUint8Array(mod: DuckDBModule, ptr: number, n: number) {\n    const heap = mod.HEAPU8.subarray(ptr, ptr + n);\n    return new Uint8Array(heap.buffer, heap.byteOffset, n);\n}\nfunction ptrToFloat64Array(mod: DuckDBModule, ptr: number, n: number) {\n    const heap = mod.HEAPU8.subarray(ptr, ptr + n * 8);\n    return new Float64Array(heap.buffer, heap.byteOffset, n);\n}\n\ninterface ArgumentTypeDescription {\n    name?: string;\n    sqlType: string;\n    physicalType: string;\n    validityBuffer?: number;\n    dataBuffer?: number;\n    lengthBuffer?: number;\n    children?: ArgumentTypeDescription[];\n}\n\ninterface ReturnTypeDescription {\n    sqlType: string;\n    physicalType: string;\n}\n\ninterface SchemaDescription {\n    rows: number;\n    args: ArgumentTypeDescription[];\n    ret: ReturnTypeDescription;\n}\n\ntype ArgumentResolver = (row: number) => any | null;\n\n// this is called from webdb.cc/CallScalarUDFFunction, changes here need to be matched there\nexport function callScalarUDF(\n    runtime: DuckDBRuntime,\n    mod: DuckDBModule,\n    response: number,\n    funcId: number,\n    descPtr: number,\n    descSize: number,\n    ptrsPtr: number,\n    ptrsSize: number,\n) {\n    try {\n        const udf = runtime._udfFunctions.get(funcId);\n        if (!udf) {\n            storeError(mod, response, 'Unknown UDF with id: ' + funcId);\n            return;\n        }\n        const rawDesc = TEXT_DECODER.decode(mod.HEAPU8.subarray(descPtr, descPtr + descSize));\n        const desc = JSON.parse(rawDesc) as SchemaDescription;\n        const ptrs = ptrToFloat64Array(mod, ptrsPtr, ptrsSize / 8);\n\n        const buildResolver = (arg: ArgumentTypeDescription): ArgumentResolver => {\n            let validity: Uint8Array | null = null;\n            if (arg.validityBuffer !== undefined) {\n                validity = ptrToUint8Array(mod, ptrs[arg.validityBuffer] as number, desc.rows);\n            }\n            switch (arg.physicalType) {\n                case 'VARCHAR': {\n                    if (arg.dataBuffer === null || arg.dataBuffer === undefined) {\n                        throw new Error('malformed data view, expected data buffer for VARCHAR argument');\n                    }\n                    if (arg.lengthBuffer === null || arg.lengthBuffer === undefined) {\n                        throw new Error('malformed data view, expected data length buffer for VARCHAR argument');\n                    }\n                    const raw = ptrToArray(mod, ptrs[arg.dataBuffer] as number, arg.physicalType, desc.rows);\n                    const strings: (string | null)[] = [];\n                    const stringLengths = ptrToFloat64Array(mod, ptrs[arg.lengthBuffer] as number, desc.rows);\n                    for (let j = 0; j < desc.rows; ++j) {\n                        if (validity != null && !validity[j]) {\n                            strings.push(null);\n                            continue;\n                        }\n                        const subarray = mod.HEAPU8.subarray(\n                            raw[j] as number,\n                            (raw[j] as number) + (stringLengths[j] as number),\n                        );\n                        const str = TEXT_DECODER.decode(subarray);\n                        strings.push(str);\n                    }\n                    return (row: number) => strings[row];\n                }\n                case 'STRUCT': {\n                    const tmp: any = {};\n                    const children: ArgumentResolver[] = [];\n                    for (let j = 0; j < (arg.children?.length || 0); ++j) {\n                        const attr = arg.children![j];\n                        const child = buildResolver(attr);\n                        children.push((row: number) => {\n                            tmp[attr.name!] = child(row);\n                        });\n                    }\n                    if (validity != null) {\n                        return (row: number) => {\n                            if (!validity![row]) {\n                                return null;\n                            }\n                            for (const resolver of children) {\n                                resolver(row);\n                            }\n                            return tmp;\n                        };\n                    } else {\n                        return (row: number) => {\n                            for (const resolver of children) {\n                                resolver(row);\n                            }\n                            return tmp;\n                        };\n                    }\n                }\n                default: {\n                    if (arg.dataBuffer === undefined) {\n                        throw new Error(\n                            'malformed data view, expected data buffer for argument of type: ' + arg.physicalType,\n                        );\n                    }\n                    const data = ptrToArray(mod, ptrs[arg.dataBuffer] as number, arg.physicalType, desc.rows);\n                    if (validity != null) {\n                        return (row: number) => (!validity![row] ? null : data[row]);\n                    } else {\n                        return (row: number) => data[row];\n                    }\n                }\n            }\n        };\n\n        // Translate argument data\n        const argResolvers = [];\n        for (let i = 0; i < desc.args.length; ++i) {\n            argResolvers.push(buildResolver(desc.args[i]));\n        }\n\n        // Prepare result buffers\n        // TODO: we probably do not want to recreate those every time\n        const resultDataLen = desc.rows * getTypeSize(desc.ret.physicalType);\n        const resultDataPtr = mod._malloc(resultDataLen);\n        const resultData = ptrToArray(mod, resultDataPtr, desc.ret.physicalType, desc.rows);\n        const resultValidityPtr = mod._malloc(desc.rows);\n        const resultValidity = ptrToUint8Array(mod, resultValidityPtr, desc.rows);\n        if (resultData.length == 0 || resultValidity.length == 0) {\n            storeError(mod, response, \"Can't create physical arrays for result\");\n            return;\n        }\n        let rawResultData = resultData;\n        if (desc.ret.physicalType == 'VARCHAR') {\n            rawResultData = new Array<string | undefined | null>(desc.rows);\n        }\n\n        // Call the function\n        const args = [];\n        for (let i = 0; i < desc.args.length; ++i) {\n            args.push(null);\n        }\n        for (let i = 0; i < desc.rows; ++i) {\n            for (let j = 0; j < desc.args.length; ++j) {\n                args[j] = argResolvers[j](i);\n            }\n            const res = udf.func(...args);\n            rawResultData[i] = res;\n            resultValidity[i] = res === undefined || res === null ? 0 : 1;\n        }\n\n        // Encode return values\n        let resultLengthsPtr = 0;\n        switch (desc.ret.physicalType) {\n            case 'VARCHAR': {\n                // Allocate result buffers\n                const resultDataUTF8 = new Array<Uint8Array>(0); // cough\n                resultLengthsPtr = mod._malloc(desc.rows * getTypeSize('DOUBLE'));\n                const resultLengths = ptrToFloat64Array(mod, resultLengthsPtr, desc.rows);\n\n                // TODO: We need two loops to figure out the total length but maybe we can avoid the double allocation\n                let totalLength = 0;\n                for (let row = 0; row < desc.rows; ++row) {\n                    const utf8 = TEXT_ENCODER.encode((rawResultData as (string | null | undefined)[])[row] || '');\n                    resultDataUTF8.push(utf8);\n                    resultLengths[row] = utf8.length;\n                    totalLength += utf8.length;\n                }\n\n                // We malloc a buffer for the strings to live in for now\n                const resultStringPtr = mod._malloc(totalLength);\n                const resultStringBuf = mod.HEAPU8.subarray(resultStringPtr, resultStringPtr + totalLength);\n\n                // Now copy all the strings to the new buffer back to back\n                let writerOffset = 0;\n                for (let row = 0; row < desc.rows; ++row) {\n                    resultData[row] = writerOffset;\n                    const resultUTF8 = resultDataUTF8[row];\n                    const writer = resultStringBuf.subarray(writerOffset, writerOffset + resultUTF8.length);\n                    writer.set(resultUTF8);\n                    writerOffset += resultUTF8.length;\n                }\n            }\n        }\n\n        // Need to store three pointers, data, validity and length\n        const retLen = 3 * 8;\n        const retPtr = mod._malloc(retLen);\n        const retBuffer = ptrToFloat64Array(mod, retPtr, 3);\n        retBuffer[0] = resultDataPtr;\n        retBuffer[1] = resultValidityPtr;\n        retBuffer[2] = resultLengthsPtr;\n\n        // Pack response\n        mod.HEAPF64[(response >> 3) + 0] = 0;\n        mod.HEAPF64[(response >> 3) + 1] = retPtr;\n        mod.HEAPF64[(response >> 3) + 2] = 0;\n    } catch (e: any) {\n        storeError(mod, response, e.toString());\n    }\n}\n", "import { DuckDBModule } from './duckdb_module';\nimport { UDFFunction } from './udf_function';\nimport * as udf_rt from './udf_runtime';\n\n/** Wrapper for TextDecoder to support shared array buffers */\nfunction TextDecoderWrapper(): (input?: BufferSource) => string {\n    const decoder = new TextDecoder();\n    return (data: any) => {\n        if (typeof SharedArrayBuffer !== 'undefined' && data.buffer instanceof SharedArrayBuffer) {\n            data = new Uint8Array(data);\n        }\n        return decoder.decode(data);\n    };\n}\n/** Helper to decode text */\nexport const decodeText = TextDecoderWrapper();\n\n/** Copy a buffer */\nexport function failWith(mod: DuckDBModule, msg: string): void {\n    console.error(`FAIL WITH: ${msg}`);\n    mod.ccall('duckdb_web_fail_with', null, ['string'], [msg]);\n}\n\n/** Copy a buffer */\nexport function copyBuffer(mod: DuckDBModule, begin: number, length: number): Uint8Array {\n    const buffer = mod.HEAPU8.subarray(begin, begin + length);\n    const copy = new Uint8Array(new ArrayBuffer(buffer.byteLength));\n    copy.set(buffer);\n    return copy;\n}\n\n/** Decode a string */\nexport function readString(mod: DuckDBModule, begin: number, length: number): string {\n    return decodeText(mod.HEAPU8.subarray(begin, begin + length));\n}\n\n/** The data protocol */\nexport enum DuckDBDataProtocol {\n    BUFFER = 0,\n    NODE_FS = 1,\n    BROWSER_FILEREADER = 2,\n    BROWSER_FSACCESS = 3,\n    HTTP = 4,\n    S3 = 5,\n}\n\n/** File flags for opening files*/\nexport enum FileFlags {\n    //! Open file with read access\n    FILE_FLAGS_READ = 1 << 0,\n    //! Open file with write access\n    FILE_FLAGS_WRITE = 1 << 1,\n    //! Use direct IO when reading/writing to the file\n    FILE_FLAGS_DIRECT_IO = 1 << 2,\n    //! Create file if not exists, can only be used together with WRITE\n    FILE_FLAGS_FILE_CREATE = 1 << 3,\n    //! Always create a new file. If a file exists, the file is truncated. Cannot be used together with CREATE.\n    FILE_FLAGS_FILE_CREATE_NEW = 1 << 4,\n    //! Open file in append mode\n    FILE_FLAGS_APPEND = 1 << 5,\n    FILE_FLAGS_PRIVATE = 1 << 6,\n    FILE_FLAGS_NULL_IF_NOT_EXISTS = 1 << 7,\n    FILE_FLAGS_PARALLEL_ACCESS = 1 << 8,\n    FILE_FLAGS_EXCLUSIVE_CREATE = 1 << 9,\n    FILE_FLAGS_NULL_IF_EXISTS = 1 << 10\n}\n\n/** Configuration for the AWS S3 Filesystem */\nexport interface S3Config {\n    region?: string;\n    endpoint?: string;\n    accessKeyId?: string;\n    secretAccessKey?: string;\n    sessionToken?: string;\n}\n\n/** An info for a file registered with DuckDB */\nexport interface DuckDBFileInfo {\n    cacheEpoch: number;\n    fileId: number;\n    fileName: string;\n    dataProtocol: DuckDBDataProtocol;\n    dataUrl: string | null;\n    reliableHeadRequests?: boolean;\n    allowFullHttpReads?: boolean;\n    forceFullHttpReads?: boolean;\n    s3Config?: S3Config;\n}\n\n/** Global info for all files registered with DuckDB */\nexport interface DuckDBGlobalFileInfo {\n    cacheEpoch: number;\n    reliableHeadRequests?: boolean;\n    allowFullHttpReads?: boolean;\n    forceFullHttpReads?: boolean;\n    s3Config?: S3Config;\n}\n\nexport interface PreparedDBFileHandle {\n    path: string;\n    handle: any;\n    fromCached: boolean;\n}\n\n/** Call a function with packed response buffer */\nexport function callSRet(\n    mod: DuckDBModule,\n    funcName: string,\n    argTypes: Array<Emscripten.JSType>,\n    args: Array<any>,\n): [number, number, number] {\n    const stackPointer = mod.stackSave();\n\n    // Allocate the packed response buffer\n    const response = mod.stackAlloc(3 * 8);\n    argTypes.unshift('number');\n    args.unshift(response);\n\n    // Do the call\n    mod.ccall(funcName, null, argTypes, args);\n\n    // Read the response\n    const status = mod.HEAPF64[(response >> 3) + 0];\n    const data = mod.HEAPF64[(response >> 3) + 1];\n    const dataSize = mod.HEAPF64[(response >> 3) + 2];\n\n    // Restore the stack\n    mod.stackRestore(stackPointer);\n    return [status, data, dataSize];\n}\n\n/** Drop response buffers */\nexport function dropResponseBuffers(mod: DuckDBModule): void {\n    mod.ccall('duckdb_web_clear_response', null, [], []);\n}\n\n/** The duckdb runtime */\nexport interface DuckDBRuntime {\n    _files?: Map<string, any>;\n    _udfFunctions: Map<number, UDFFunction>;\n\n    // Test a platform feature\n    testPlatformFeature(mod: DuckDBModule, feature: number): boolean;\n\n    // File APIs with dedicated file identifier\n    getDefaultDataProtocol(mod: DuckDBModule): number;\n    openFile(mod: DuckDBModule, fileId: number, flags: FileFlags): void;\n    syncFile(mod: DuckDBModule, fileId: number): void;\n    closeFile(mod: DuckDBModule, fileId: number): void;\n    dropFile(mod: DuckDBModule, fileNamePtr: number, fileNameLen: number): void;\n    getLastFileModificationTime(mod: DuckDBModule, fileId: number): number;\n    truncateFile(mod: DuckDBModule, fileId: number, newSize: number): void;\n    readFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;\n    writeFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;\n\n    // File APIs with path parameter\n    removeDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    checkDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    createDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    listDirectoryEntries(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    glob(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    moveFile(mod: DuckDBModule, fromPtr: number, fromLen: number, toPtr: number, toLen: number): void;\n    checkFile(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    removeFile(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n\n    // Prepare a file handle that could only be acquired aschronously\n    prepareFileHandle?: (path: string, protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n    prepareFileHandles?: (path: string[], protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n    prepareDBFileHandle?: (path: string, protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n\n    // Internal API - experimental\n    progressUpdate(final: number, percentage: number, iteration: number): void;\n\n    // Call a scalar UDF function\n    callScalarUDF(\n        mod: DuckDBModule,\n        response: number,\n        funcId: number,\n        descPtr: number,\n        descSize: number,\n        ptrsPtr: number,\n        ptrsSize: number,\n    ): void;\n}\n\nexport const DEFAULT_RUNTIME: DuckDBRuntime = {\n    _udfFunctions: new Map(),\n\n    testPlatformFeature: (_mod: DuckDBModule, _feature: number): boolean => false,\n    getDefaultDataProtocol: (_mod: DuckDBModule): number => DuckDBDataProtocol.BUFFER,\n    openFile: (_mod: DuckDBModule, _fileId: number, flags: FileFlags): void => {},\n    syncFile: (_mod: DuckDBModule, _fileId: number): void => {},\n    closeFile: (_mod: DuckDBModule, _fileId: number): void => {},\n    dropFile: (_mod: DuckDBModule, _fileNamePtr: number, _fileNameLen: number): void => {},\n    getLastFileModificationTime: (_mod: DuckDBModule, _fileId: number): number => {\n        return 0;\n    },\n    progressUpdate: (_final: number, _percentage: number, _iteration: number): void => {\n        return;\n    },\n    truncateFile: (_mod: DuckDBModule, _fileId: number, _newSize: number): void => {},\n    readFile: (_mod: DuckDBModule, _fileId: number, _buffer: number, _bytes: number, _location: number): number => {\n        return 0;\n    },\n    writeFile: (_mod: DuckDBModule, _fileId: number, _buffer: number, _bytes: number, _location: number): number => {\n        return 0;\n    },\n\n    removeDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    checkDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    createDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    listDirectoryEntries: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    glob: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    moveFile: (_mod: DuckDBModule, _fromPtr: number, _fromLen: number, _toPtr: number, _toLen: number): void => {},\n    checkFile: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    removeFile: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    callScalarUDF: (\n        mod: DuckDBModule,\n        response: number,\n        funcId: number,\n        descPtr: number,\n        descSize: number,\n        ptrsPtr: number,\n        ptrsSize: number,\n    ): void => {\n        udf_rt.callScalarUDF(DEFAULT_RUNTIME, mod, response, funcId, descPtr, descSize, ptrsPtr, ptrsSize);\n    },\n};\n", "export interface FileBlockStatistics {\n    /** The file reads cold */\n    file_reads_cold: number;\n    /** The file reads aheads */\n    file_reads_ahead: number;\n    /** The file reads cached */\n    file_reads_cached: number;\n    /** The file writes */\n    file_writes: number;\n    /** The page accesses */\n    page_accesses: number;\n    /** The page loads */\n    page_loads: number;\n}\n\n/** The file block statistics */\nexport class FileStatistics {\n    /** The cold file reads */\n    public totalFileReadsCold: number;\n    /** The file readaheads */\n    public totalFileReadsAhead: number;\n    /** The cached file reads */\n    public totalFileReadsCached: number;\n    /** The file writes */\n    public totalFileWrites: number;\n    /** The page accesses */\n    public totalPageAccesses: number;\n    /** The page loads */\n    public totalPageLoads: number;\n    /** The blocks */\n    public blockSize: number;\n    /** The blocks */\n    public blockStats: Uint8Array;\n\n    constructor(u8array: Uint8Array) {\n        const f64 = new Float64Array(u8array.buffer, u8array.byteOffset, u8array.byteLength / 8);\n        const blocks = new Uint8Array(new ArrayBuffer(u8array.byteLength));\n        blocks.set(u8array.subarray(7 * 8));\n        this.totalFileReadsCold = f64[0];\n        this.totalFileReadsAhead = f64[1];\n        this.totalFileReadsCached = f64[2];\n        this.totalFileWrites = f64[3];\n        this.totalPageAccesses = f64[4];\n        this.totalPageLoads = f64[5];\n        this.blockSize = f64[6];\n        this.blockStats = blocks;\n    }\n\n    /** The block stats */\n    public getBlockStats(index: number, out?: FileBlockStatistics): FileBlockStatistics {\n        out = out || {\n            file_reads_cold: 0,\n            file_reads_ahead: 0,\n            file_reads_cached: 0,\n            file_writes: 0,\n            page_accesses: 0,\n            page_loads: 0,\n        };\n        out.file_writes = this.blockStats[index * 3 + 0] & 0b1111;\n        out.file_reads_cold = this.blockStats[index * 3 + 0] >> 4;\n        out.file_reads_ahead = this.blockStats[index * 3 + 1] & 0b1111;\n        out.file_reads_cached = this.blockStats[index * 3 + 1] >> 4;\n        out.page_accesses = this.blockStats[index * 3 + 1] & 0b1111;\n        out.page_loads = this.blockStats[index * 3 + 1] >> 4;\n        return out;\n    }\n}\n", "import * as arrow from 'apache-arrow';\n\nexport interface SQLType {\n    /// The sql type\n    sqlType: string;\n    /// Is nullable?\n    nullable?: boolean;\n    /// Decimal precision\n    precision?: number;\n    /// Decimal scaling\n    scale?: number;\n    /// Timezone\n    timezone?: string;\n    /// Byte width (FixedSizeBinary)\n    byteWidth?: number;\n    /// Key type\n    keyType?: SQLType;\n    /// Value type\n    valueType?: SQLType;\n    /// Fields\n    fields?: SQLField[];\n}\n\nexport function arrowToSQLType(type: arrow.DataType): SQLType {\n    switch (type.typeId) {\n        case arrow.Type.Binary:\n            return { sqlType: 'binary' };\n        case arrow.Type.Bool:\n            return { sqlType: 'bool' };\n        case arrow.Type.Date:\n            return { sqlType: 'date' };\n        case arrow.Type.DateDay:\n            return { sqlType: 'date32[d]' };\n        case arrow.Type.DateMillisecond:\n            return { sqlType: 'date64[ms]' };\n        case arrow.Type.Decimal: {\n            const dec = type as arrow.Decimal;\n            return { sqlType: 'decimal', precision: dec.precision, scale: dec.scale };\n        }\n        case arrow.Type.Float:\n            return { sqlType: 'float' };\n        case arrow.Type.Float16:\n            return { sqlType: 'float16' };\n        case arrow.Type.Float32:\n            return { sqlType: 'float32' };\n        case arrow.Type.Float64:\n            return { sqlType: 'float64' };\n        case arrow.Type.Int:\n            return { sqlType: 'int32' };\n        case arrow.Type.Int16:\n            return { sqlType: 'int16' };\n        case arrow.Type.Int32:\n            return { sqlType: 'int32' };\n        case arrow.Type.Int64:\n            return { sqlType: 'int64' };\n        case arrow.Type.Uint16:\n            return { sqlType: 'uint16' };\n        case arrow.Type.Uint32:\n            return { sqlType: 'uint32' };\n        case arrow.Type.Uint64:\n            return { sqlType: 'uint64' };\n        case arrow.Type.Uint8:\n            return { sqlType: 'uint8' };\n        case arrow.Type.IntervalDayTime:\n            return { sqlType: 'interval[dt]' };\n        case arrow.Type.IntervalYearMonth:\n            return { sqlType: 'interval[m]' };\n        case arrow.Type.List: {\n            const list = type as arrow.List;\n            return {\n                sqlType: 'list',\n                valueType: arrowToSQLType(list.valueType),\n            };\n        }\n        case arrow.Type.FixedSizeBinary: {\n            const bin = type as arrow.FixedSizeBinary;\n            return { sqlType: 'fixedsizebinary', byteWidth: bin.byteWidth };\n        }\n        case arrow.Type.Null:\n            return { sqlType: 'null' };\n        case arrow.Type.Utf8:\n            return { sqlType: 'utf8' };\n        case arrow.Type.Struct: {\n            const struct_ = type as arrow.Struct;\n            return {\n                sqlType: 'struct',\n                fields: struct_.children.map(c => arrowToSQLField(c.name, c.type)),\n            };\n        }\n        case arrow.Type.Map: {\n            const map_ = type as arrow.Map_;\n            return {\n                sqlType: 'map',\n                keyType: arrowToSQLType(map_.keyType),\n                valueType: arrowToSQLType(map_.valueType),\n            };\n        }\n        case arrow.Type.Time:\n            return { sqlType: 'time[s]' };\n        case arrow.Type.TimeMicrosecond:\n            return { sqlType: 'time[us]' };\n        case arrow.Type.TimeMillisecond:\n            return { sqlType: 'time[ms]' };\n        case arrow.Type.TimeNanosecond:\n            return { sqlType: 'time[ns]' };\n        case arrow.Type.TimeSecond:\n            return { sqlType: 'time[s]' };\n        case arrow.Type.Timestamp: {\n            const ts = type as arrow.Timestamp;\n            return { sqlType: 'timestamp', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampSecond: {\n            const ts = type as arrow.TimestampSecond;\n            return { sqlType: 'timestamp[s]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampMicrosecond: {\n            const ts = type as arrow.TimestampMicrosecond;\n            return { sqlType: 'timestamp[us]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampNanosecond: {\n            const ts = type as arrow.TimestampNanosecond;\n            return { sqlType: 'timestamp[ns]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampMillisecond: {\n            const ts = type as arrow.TimestampMillisecond;\n            return { sqlType: 'timestamp[ms]', timezone: ts.timezone || undefined };\n        }\n    }\n    throw new Error(`unsupported arrow type: ${type.toString()}`);\n}\n\nexport type SQLField = SQLType & { name: string };\n\nexport function arrowToSQLField(name: string, type: arrow.DataType): SQLField {\n    const t = arrowToSQLType(type) as SQLField;\n    t.name = name;\n    return t;\n}\n", "import { DuckDBModule, PThread } from './duckdb_module';\nimport { DuckDBConfig } from './config';\nimport { Logger } from '../log';\nimport { InstantiationProgress } from './progress';\nimport { DuckDBBindings } from './bindings_interface';\nimport { DuckDBConnection } from './connection';\nimport { StatusCode, IsArrowBuffer, IsDuckDBWasmRetry } from '../status';\nimport { dropResponseBuffers, DuckDBRuntime, readString, callSRet, copyBuffer, DuckDBDataProtocol } from './runtime';\nimport { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from './insert_options';\nimport { ScriptTokens } from './tokens';\nimport { FileStatistics } from './file_stats';\nimport { arrowToSQLField, arrowToSQLType } from '../json_typedef';\nimport { WebFile } from './web_file';\nimport { UDFFunction, UDFFunctionDeclaration } from './udf_function';\nimport * as arrow from 'apache-arrow';\n\nconst TEXT_ENCODER = new TextEncoder();\n\ndeclare global {\n    // eslint-disable-next-line no-var\n    var DUCKDB_RUNTIME: any;\n}\n\n/** A DuckDB Feature */\nexport enum DuckDBFeature {\n    WASM_EXCEPTIONS = 1 << 0,\n    WASM_THREADS = 1 << 1,\n    WASM_SIMD = 1 << 2,\n    WASM_BULK_MEMORY = 1 << 3,\n    EMIT_BIGINT = 1 << 4,\n}\n\n/** The proxy for either the browser- order node-based DuckDB API */\nexport abstract class DuckDBBindingsBase implements DuckDBBindings {\n    /** The logger */\n    protected readonly _logger: Logger;\n    /** Backend-dependent native-glue code for DuckDB */\n    protected readonly _runtime: DuckDBRuntime;\n    /** The instance */\n    protected _instance: DuckDBModule | null = null;\n    /** The loading promise */\n    protected _initPromise: Promise<void> | null = null;\n    /** The resolver for the open promise (called by onRuntimeInitialized) */\n    protected _initPromiseResolver: () => void = () => {};\n    /** The next UDF id */\n    protected _nextUDFId: number;\n\n    constructor(logger: Logger, runtime: DuckDBRuntime) {\n        this._logger = logger;\n        this._runtime = runtime;\n        this._nextUDFId = 1;\n    }\n\n    /** Get the logger */\n    public get logger(): Logger {\n        return this._logger;\n    }\n    /** Get the instance */\n    public get mod(): DuckDBModule {\n        return this._instance!;\n    }\n    /** Get the instance */\n    public get pthread(): PThread | null {\n        return this.mod.PThread || null;\n    }\n\n    /** Instantiate the module */\n    protected abstract instantiateImpl(moduleOverrides: Partial<DuckDBModule>): Promise<DuckDBModule>;\n    /** Instantiate the module */\n    protected onInstantiationProgress: ((p: InstantiationProgress) => void)[] = [];\n    /** Instantiate the database */\n    public async instantiate(onProgress: (progress: InstantiationProgress) => void = _ => {}): Promise<this> {\n        // Already opened?\n        if (this._instance != null) {\n            return this;\n        }\n        // Open in progress?\n        if (this._initPromise != null) {\n            this.onInstantiationProgress.push(onProgress);\n            await this._initPromise;\n        }\n        // Create a promise that we can await\n        this._initPromise = new Promise(resolve => {\n            this._initPromiseResolver = resolve;\n        });\n        // Register progress handler\n        this.onInstantiationProgress = [onProgress];\n        // Initialize duckdb\n        this._instance = await this.instantiateImpl({\n            print: console.log.bind(console),\n            printErr: console.log.bind(console),\n            onRuntimeInitialized: this._initPromiseResolver,\n        });\n        // Wait for onRuntimeInitialized\n        await this._initPromise;\n        this._initPromise = null;\n        // Remove own progress callback\n        this.onInstantiationProgress = this.onInstantiationProgress.filter(x => x != onProgress);\n        (globalThis as any).DUCKDB_BINDINGS = this;\n        return this;\n    }\n    /** Open a database with a config */\n    public open(config: DuckDBConfig): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_open', ['string'], [JSON.stringify(config)]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n\n    /** Reset the database */\n    public reset(): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_reset', [], []);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n\n    /** Get the version */\n    public getVersion(): string {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_get_version', [], []);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const version = readString(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return version;\n    }\n    /** Get the feature flags */\n    public getFeatureFlags(): number {\n        return this.mod.ccall('duckdb_web_get_feature_flags', 'number', [], []);\n    }\n\n    /** Tokenize a script */\n    public tokenize(text: string): ScriptTokens {\n        const BUF = TEXT_ENCODER.encode(text);\n        const bufferPtr = this.mod._malloc(BUF.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + BUF.length);\n        bufferOfs.set(BUF);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_tokenize_buffer',\n            ['number', 'number'],\n            [bufferPtr, BUF.length],\n        );\n        this.mod._free(bufferPtr);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const res = readString(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return JSON.parse(res) as ScriptTokens;\n    }\n\n    /** Connect to database */\n    public connect(): DuckDBConnection {\n        const conn = this.mod.ccall('duckdb_web_connect', 'number', [], []);\n        return new DuckDBConnection(this, conn);\n    }\n    /** Disconnect from database */\n    public disconnect(conn: number): void {\n        this.mod.ccall('duckdb_web_disconnect', null, ['number'], [conn]);\n        if (this.pthread) {\n            for (const worker of [...this.pthread.runningWorkers, ...this.pthread.unusedWorkers]) {\n                worker.postMessage({\n                    cmd: 'dropUDFFunctions',\n                    connectionId: conn,\n                });\n            }\n        }\n    }\n\n    /** Send a query and return the full result */\n    public runQuery(conn: number, text: string): Uint8Array {\n        const BUF = TEXT_ENCODER.encode(text);\n        const bufferPtr = this.mod._malloc(BUF.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + BUF.length);\n        bufferOfs.set(BUF);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_query_run_buffer',\n            ['number', 'number', 'number'],\n            [conn, bufferPtr, BUF.length],\n        );\n        this.mod._free(bufferPtr);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n    /**\n     *  Start a pending query asynchronously.\n     *  This method returns either the arrow ipc schema or null.\n     *  On null, the query has to be executed using `pollPendingQuery` until that returns != null.\n     *  Results can then be fetched using `fetchQueryResults`\n     */\n    public startPendingQuery(conn: number, text: string, allowStreamResult: boolean = false): Uint8Array | null {\n        const BUF = TEXT_ENCODER.encode(text);\n        const bufferPtr = this.mod._malloc(BUF.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + BUF.length);\n        bufferOfs.set(BUF);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_pending_query_start_buffer',\n            ['number', 'number', 'number', 'boolean'],\n            [conn, bufferPtr, BUF.length, allowStreamResult],\n        );\n        this.mod._free(bufferPtr);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        if (d == 0) {\n            return null;\n        }\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n    /** Poll a pending query */\n    public pollPendingQuery(conn: number): Uint8Array | null {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_pending_query_poll', ['number'], [conn]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        if (d == 0) {\n            return null;\n        }\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n    /** Cancel a pending query */\n    public cancelPendingQuery(conn: number): boolean {\n        return this.mod.ccall('duckdb_web_pending_query_cancel', 'boolean', ['number'], [conn]);\n    }\n    /** Fetch query results */\n    public fetchQueryResults(conn: number): Uint8Array | null {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_query_fetch_results', ['number'], [conn]);\n        if (IsDuckDBWasmRetry(s)) {\n            dropResponseBuffers(this.mod);\n            return null; // Retry\n        }\n\n        if (!IsArrowBuffer(s)) {\n            throw new Error(\n                'Unexpected StatusCode from duckdb_web_query_fetch_results (' +\n                    s +\n                    ') and with self reported error as' +\n                    readString(this.mod, d, n),\n            );\n        }\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n    /** Get table names */\n    public getTableNames(conn: number, text: string): string[] {\n        const BUF = TEXT_ENCODER.encode(text);\n        const bufferPtr = this.mod._malloc(BUF.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + BUF.length);\n        bufferOfs.set(BUF);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_get_tablenames_buffer',\n            ['number', 'number', 'number'],\n            [conn, bufferPtr, BUF.length],\n        );\n        this.mod._free(bufferPtr);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const res = readString(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return JSON.parse(res) as string[];\n    }\n\n    /** Create a scalar function */\n    public createScalarFunction(\n        conn: number,\n        name: string,\n        returns: arrow.DataType,\n        func: (...args: any[]) => void,\n    ): void {\n        const decl: UDFFunctionDeclaration = {\n            functionId: this._nextUDFId,\n            name: name,\n            returnType: arrowToSQLType(returns),\n        };\n        const def: UDFFunction = {\n            functionId: decl.functionId,\n            connectionId: conn,\n            name: name,\n            returnType: returns,\n            func,\n        };\n        this._nextUDFId += 1;\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_udf_scalar_create',\n            ['number', 'string'],\n            [conn, JSON.stringify(decl)],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n        globalThis.DUCKDB_RUNTIME._udfFunctions = (globalThis.DUCKDB_RUNTIME._udfFunctions || new Map()).set(\n            def.functionId,\n            def,\n        );\n        if (this.pthread) {\n            for (const worker of [...this.pthread.runningWorkers, ...this.pthread.unusedWorkers]) {\n                worker.postMessage({\n                    cmd: 'registerUDFFunction',\n                    udf: def,\n                });\n            }\n        }\n    }\n\n    /** Prepare a statement and return its identifier */\n    public createPrepared(conn: number, text: string): number {\n        const BUF = TEXT_ENCODER.encode(text);\n        const bufferPtr = this.mod._malloc(BUF.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + BUF.length);\n        bufferOfs.set(BUF);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_prepared_create_buffer',\n            ['number', 'number', 'number'],\n            [conn, bufferPtr, BUF.length],\n        );\n        this.mod._free(bufferPtr);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n        return d;\n    }\n\n    /** Close a prepared statement */\n    public closePrepared(conn: number, statement: number): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_prepared_close', ['number', 'number'], [conn, statement]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n\n    /** Execute a prepared statement and return the full result */\n    public runPrepared(conn: number, statement: number, params: any[]): Uint8Array {\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_prepared_run',\n            ['number', 'number', 'string'],\n            [conn, statement, JSON.stringify(params)],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n\n    /** Execute a prepared statement and stream the result */\n    public sendPrepared(conn: number, statement: number, params: any[]): Uint8Array {\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_prepared_send',\n            ['number', 'number', 'string'],\n            [conn, statement, JSON.stringify(params)],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const res = copyBuffer(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        return res;\n    }\n\n    /** Insert record batches from an arrow ipc stream */\n    public insertArrowFromIPCStream(conn: number, buffer: Uint8Array, options?: ArrowInsertOptions): void {\n        if (buffer.length == 0) return;\n        // Store buffer\n        const bufferPtr = this.mod._malloc(buffer.length);\n        const bufferOfs = this.mod.HEAPU8.subarray(bufferPtr, bufferPtr + buffer.length);\n        bufferOfs.set(buffer);\n        const optJSON = options ? JSON.stringify(options) : '';\n\n        // Call wasm function\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_insert_arrow_from_ipc_stream',\n            ['number', 'number', 'number', 'string'],\n            [conn, bufferPtr, buffer.length, optJSON],\n        );\n\n        this.mod._free(bufferPtr);\n\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n    }\n\n    /** Insert csv from path */\n    public insertCSVFromPath(conn: number, path: string, options: CSVInsertOptions): void {\n        // Stringify options\n        if (options.columns !== undefined) {\n            options.columnsFlat = [];\n            for (const k in options.columns) {\n                options.columnsFlat.push(arrowToSQLField(k, options.columns[k]));\n            }\n        }\n        const opt = { ...options } as any;\n        opt.columns = opt.columnsFlat;\n        delete opt.columnsFlat;\n        const optJSON = JSON.stringify(opt);\n\n        // Call wasm function\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_insert_csv_from_path',\n            ['number', 'string', 'string'],\n            [conn, path, optJSON],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n    }\n    /** Insert json from path */\n    public insertJSONFromPath(conn: number, path: string, options: JSONInsertOptions): void {\n        // Stringify options\n        if (options.columns !== undefined) {\n            options.columnsFlat = [];\n            for (const k in options.columns) {\n                options.columnsFlat.push(arrowToSQLField(k, options.columns[k]));\n            }\n        }\n        const opt = { ...options } as any;\n        opt.columns = opt.columnsFlat;\n        delete opt.columnsFlat;\n        const optJSON = JSON.stringify(opt);\n\n        // Call wasm function\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_insert_json_from_path',\n            ['number', 'string', 'string'],\n            [conn, path, optJSON],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n    }\n    /** Glob file infos */\n    public globFiles(path: string): WebFile[] {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_fs_glob_file_infos', ['string'], [path]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const infoStr = readString(this.mod, d, n);\n        dropResponseBuffers(this.mod);\n        const info = JSON.parse(infoStr) as WebFile[];\n        if (info == null) {\n            return [];\n        }\n        return info;\n    }\n    /** Register a file object URL */\n    public registerFileURL(name: string, url: string, proto: DuckDBDataProtocol, directIO = false): void {\n        if (url === undefined) {\n            url = name;\n        }\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_fs_register_file_url',\n            ['string', 'string'],\n            [name, url, proto, directIO],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n    /** Register file text */\n    public registerFileText(name: string, text: string): void {\n        const buffer = TEXT_ENCODER.encode(text);\n        this.registerFileBuffer(name, buffer);\n    }\n    /** Register a file buffer */\n    public registerFileBuffer(name: string, buffer: Uint8Array): void {\n        const ptr = this.mod._malloc(buffer.length);\n        const dst = this.mod.HEAPU8.subarray(ptr, ptr + buffer.length);\n        dst.set(buffer);\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_fs_register_file_buffer',\n            ['string', 'number', 'number'],\n            [name, ptr, buffer.length],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n    public async prepareFileHandle(fileName: string, protocol: DuckDBDataProtocol): Promise<void> {\n        if (protocol === DuckDBDataProtocol.BROWSER_FSACCESS && this._runtime.prepareFileHandles) {\n            const list = await this._runtime.prepareFileHandles([fileName], DuckDBDataProtocol.BROWSER_FSACCESS);\n            for (const item of list) {\n                const { handle, path: filePath, fromCached } = item;\n                if (!fromCached && handle.getSize()) {\n                    await this.registerFileHandleAsync(filePath, handle, DuckDBDataProtocol.BROWSER_FSACCESS, true);\n                }\n            }\n            return;\n        }\n        throw new Error(`prepareFileHandle: unsupported protocol ${protocol}`);\n    }\n    /** Prepare a file handle that could only be acquired aschronously */\n    public async prepareDBFileHandle(path: string, protocol: DuckDBDataProtocol): Promise<void> {\n        if (protocol === DuckDBDataProtocol.BROWSER_FSACCESS && this._runtime.prepareDBFileHandle) {\n            const list = await this._runtime.prepareDBFileHandle(path, DuckDBDataProtocol.BROWSER_FSACCESS);\n            for (const item of list) {\n                const { handle, path: filePath, fromCached } = item;\n                if (!fromCached && handle.getSize()) {\n                    await this.registerFileHandleAsync(filePath, handle, DuckDBDataProtocol.BROWSER_FSACCESS, true);\n                }\n            }\n            return;\n        }\n        throw new Error(`prepareDBFileHandle: unsupported protocol ${protocol}`);\n    }\n    /** Prepare a file object URL */\n    public async prepareFileHandleAsync<HandleType>(\n        name: string,\n        handle: HandleType,\n        protocol: DuckDBDataProtocol,\n        directIO: boolean,\n    ): Promise<HandleType> {\n        if (protocol === DuckDBDataProtocol.BROWSER_FSACCESS) {\n            if (handle instanceof FileSystemSyncAccessHandle) {\n                // already a handle is sync handle.\n            } else if (handle instanceof FileSystemFileHandle) {\n                // handle is an async handle, should convert to sync handle\n                const fileHandle: FileSystemFileHandle = handle as any;\n                try {\n                    handle = (await fileHandle.createSyncAccessHandle()) as any;\n                } catch (e: any) {\n                    throw new Error(e.message + ':' + name);\n                }\n            } else if (name != null) {\n                // should get sync handle from the file name.\n                try {\n                    const opfsRoot = await navigator.storage.getDirectory();\n                    const fileHandle = await opfsRoot.getFileHandle(name);\n                    handle = (await fileHandle.createSyncAccessHandle()) as any;\n                } catch (e: any) {\n                    throw new Error(e.message + ':' + name);\n                }\n            }\n        }\n        return handle;\n    }\n    /** Register a file object URL async */\n    public async registerFileHandleAsync<HandleType>(\n        name: string,\n        handle: HandleType,\n        protocol: DuckDBDataProtocol,\n        directIO: boolean,\n    ): Promise<void> {\n        const handle_inner = await this.prepareFileHandleAsync(name, handle, protocol, directIO);\n        this.registerFileHandle(name, handle_inner, protocol, directIO);\n    }\n    /** Register a file object URL */\n    public registerFileHandle<HandleType>(\n        name: string,\n        handle: HandleType,\n        protocol: DuckDBDataProtocol,\n        directIO: boolean,\n    ): void {\n        const [s, d, n] = callSRet(\n            this.mod,\n            'duckdb_web_fs_register_file_url',\n            ['string', 'string', 'number', 'boolean'],\n            [name, name, protocol, directIO],\n        );\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n        globalThis.DUCKDB_RUNTIME._files = (globalThis.DUCKDB_RUNTIME._files || new Map()).set(name, handle);\n        if (globalThis.DUCKDB_RUNTIME._preparedHandles?.[name]) {\n            delete globalThis.DUCKDB_RUNTIME._preparedHandles[name];\n        }\n        if (this.pthread) {\n            for (const worker of this.pthread.runningWorkers) {\n                worker.postMessage({\n                    cmd: 'registerFileHandle',\n                    fileName: name,\n                    fileHandle: handle,\n                });\n            }\n            for (const worker of this.pthread.unusedWorkers) {\n                worker.postMessage({\n                    cmd: 'dropFileHandle',\n                    fileName: name,\n                });\n            }\n        }\n    }\n    /** Drop file */\n    public dropFile(name: string): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_fs_drop_file', ['string'], [name]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n    /** Drop files */\n    public dropFiles(names?:string[]): void {\n        const pointers:number[] = [];\n        let pointerOfArray:number = -1;\n        try {\n            for (const str of (names ?? [])) {\n                if (str !== null && str !== undefined && str.length > 0) {\n                    const size = this.mod.lengthBytesUTF8(str) + 1;\n                    const ret = this.mod._malloc(size);\n                    if (!ret) {\n                        throw new Error(`Failed to allocate memory for string: ${str}`);\n                    }\n                    this.mod.stringToUTF8(str, ret, size);\n                    pointers.push(ret);\n                }\n            }\n            pointerOfArray = this.mod._malloc(pointers.length * 4);\n            if (!pointerOfArray) {\n                throw new Error(`Failed to allocate memory for pointers array`);\n            }\n            for (let i = 0; i < pointers.length; i++) {\n                this.mod.HEAP32[(pointerOfArray >> 2) + i] = pointers[i];\n            }\n            const [s, d, n] = callSRet(\n                this.mod,\n                'duckdb_web_fs_drop_files',\n                [\n                    'number',\n                    'number'\n                ],\n                [\n                    pointerOfArray,\n                    pointers.length\n                ]\n            );\n            if (s !== StatusCode.SUCCESS) {\n                throw new Error(readString(this.mod, d, n));\n            }\n            dropResponseBuffers(this.mod);\n        } finally {\n            for (const pointer of pointers) {\n                this.mod._free(pointer);\n            }\n            if( pointerOfArray > 0 ){\n                this.mod._free(pointerOfArray);\n            }\n        }\n    }\n    /** Flush all files */\n    public flushFiles(): void {\n        this.mod.ccall('duckdb_web_flush_files', null, [], []);\n    }\n    /** Write a file to a path */\n    public copyFileToPath(name: string, path: string): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_copy_file_to_path', ['string', 'string'], [name, path]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        dropResponseBuffers(this.mod);\n    }\n    /** Write a file to a buffer */\n    public copyFileToBuffer(name: string): Uint8Array {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_copy_file_to_buffer', ['string'], [name]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        const buffer = this.mod.HEAPU8.subarray(d, d + n);\n        const copy = new Uint8Array(buffer.length);\n        copy.set(buffer);\n        dropResponseBuffers(this.mod);\n        return copy;\n    }\n    /** Enable tracking of file statistics */\n    public async registerOPFSFileName(file: string): Promise<void> {\n        if (file.startsWith('opfs://')) {\n            return this.prepareFileHandle(file, DuckDBDataProtocol.BROWSER_FSACCESS);\n        } else {\n            throw new Error('Not an OPFS file name: ' + file);\n        }\n    }\n    public collectFileStatistics(file: string, enable: boolean): void {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_collect_file_stats', ['string', 'boolean'], [file, enable]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n    }\n    /** Export file statistics */\n    public exportFileStatistics(file: string): FileStatistics {\n        const [s, d, n] = callSRet(this.mod, 'duckdb_web_export_file_stats', ['string'], [file]);\n        if (s !== StatusCode.SUCCESS) {\n            throw new Error(readString(this.mod, d, n));\n        }\n        return new FileStatistics(this.mod.HEAPU8.subarray(d, d + n));\n    }\n}\n", "export interface DuckDBQueryConfig {\n    /**\n     * The polling interval for queries\n     */\n    queryPollingInterval?: number;\n    /**\n     * Cast BigInt to Double?\n     */\n    castBigIntToDouble?: boolean;\n    /**\n     * Cast Timestamp to Date64?\n     */\n    castTimestampToDate?: boolean;\n    /**\n     * Cast Timestamp to Date64?\n     */\n    castDurationToTime64?: boolean;\n    /**\n     * Cast Decimal to Double?\n     */\n    castDecimalToDouble?: boolean;\n}\n\nexport interface DuckDBFilesystemConfig {\n    reliableHeadRequests?: boolean;\n    /**\n     * Allow falling back to full HTTP reads if the server does not support range requests.\n     */\n    allowFullHTTPReads?: boolean;\n    /**\n     * Force use of full HTTP reads, suppressing range requests.\n     */\n    forceFullHTTPReads?: boolean;\n}\n\nexport interface DuckDBOPFSConfig {\n    /**\n     * Defines how `opfs://` files are handled during SQL execution.\n     * - \"auto\": Automatically register `opfs://` files and drop them after execution.\n     * - \"manual\": Files must be manually registered and dropped.\n     */\n    fileHandling?: \"auto\" | \"manual\";\n}\n\nexport enum DuckDBAccessMode {\n    UNDEFINED = 0,\n    AUTOMATIC = 1,\n    READ_ONLY = 2,\n    READ_WRITE = 3,\n}\n\nexport interface DuckDBConfig {\n    /**\n     * The database path\n     */\n    path?: string;\n    /**\n     * The access mode\n     */\n    accessMode?: DuckDBAccessMode;\n    /**\n     * The maximum number of threads.\n     * Note that this will only work with cross-origin isolated sites since it requires SharedArrayBuffers.\n     */\n    maximumThreads?: number;\n    /**\n     * The direct io flag\n     */\n    useDirectIO?: boolean;\n    /**\n     * The query config\n     */\n    query?: DuckDBQueryConfig;\n    /**\n     * The filesystem config\n     */\n    filesystem?: DuckDBFilesystemConfig;\n    /**\n     * Whether to allow unsigned extensions\n     */\n    allowUnsignedExtensions?: boolean;\n    /**\n     * Whether to use alternate Arrow conversion that preserves full range and precision of data.\n     */\n    arrowLosslessConversion?: boolean;\n    /**\n     * Custom user agent string\n     */\n    customUserAgent?: string;\n    /**\n     * opfs string\n     */\n    opfs?: DuckDBOPFSConfig;\n}\n", "import * as arrow from 'apache-arrow';\nimport { SQLField } from '../json_typedef';\n\nexport enum JSONTableShape {\n    ROW_ARRAY = 'row-array',\n    COLUMN_OBJECT = 'column-object',\n}\n\nexport interface JSONInsertOptions {\n    name: string;\n    schema?: string;\n    create?: boolean;\n    shape?: JSONTableShape;\n    columns?: {\n        [key: string]: arrow.DataType;\n    };\n    columnsFlat?: SQLField[];\n}\n\nexport interface CSVInsertOptions {\n    name: string;\n    schema?: string;\n    create?: boolean;\n    header?: boolean;\n    delimiter?: string;\n    quote?: string;\n    escape?: string;\n    skip?: number;\n    detect?: boolean;\n    dateFormat?: string;\n    timestampFormat?: string;\n    columns?: {\n        [key: string]: arrow.DataType;\n    };\n    columnsFlat?: SQLField[];\n}\n\nexport interface ArrowInsertOptions {\n    name: string;\n    schema?: string;\n    create?: boolean;\n}\n", "export enum TokenType {\n    IDENTIFIER = 0,\n    NUMERIC_CONSTANT = 1,\n    STRING_CONSTANT = 2,\n    OPERATOR = 3,\n    KEYWORD = 4,\n    COMMENT = 5,\n}\n\nexport interface ScriptTokens {\n    offsets: number[];\n    types: TokenType[];\n}\n", "export enum LogLevel {\n    NONE = 0,\n    DEBUG = 1,\n    INFO = 2,\n    WARNING = 3,\n    ERROR = 4,\n}\n\nexport enum LogTopic {\n    NONE = 0,\n    CONNECT = 1,\n    DISCONNECT = 2,\n    OPEN = 3,\n    QUERY = 4,\n    INSTANTIATE = 5,\n}\n\nexport enum LogEvent {\n    NONE = 0,\n    OK = 1,\n    ERROR = 2,\n    START = 3,\n    RUN = 4,\n    CAPTURE = 5,\n}\n\nexport enum LogOrigin {\n    NONE = 0,\n    WEB_WORKER = 1,\n    NODE_WORKER = 2,\n    BINDINGS = 3,\n    ASYNC_DUCKDB = 4,\n}\n\nexport type LogEntry<O, T, E, V> = {\n    readonly timestamp: Date;\n    readonly level: LogLevel;\n    readonly origin: O;\n    readonly topic: T;\n    readonly event: E;\n    readonly value: V;\n};\n\nexport type ProgressEntry = {\n    readonly status: string;\n    readonly percentage: string;\n    readonly repetitions: string;\n};\n\n/** An execution progress handler */\nexport type ExecutionProgressHandler = (p: ProgressEntry) => void;\n\nexport type LogEntryVariant =\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.INSTANTIATE, LogEvent.ERROR, string>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.START, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.CONNECT, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.CONNECT, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.DISCONNECT, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.DISCONNECT, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.START, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.ASYNC_DUCKDB, LogTopic.QUERY, LogEvent.RUN, string>;\n\nexport interface Logger {\n    log(entry: LogEntryVariant): void;\n}\n\nexport class VoidLogger implements Logger {\n    public log(_entry: LogEntryVariant): void {}\n}\n\nexport class ConsoleLogger implements Logger {\n    constructor(protected level: LogLevel = LogLevel.INFO) {}\n    public log(entry: LogEntryVariant): void {\n        if (entry.level >= this.level) {\n            console.log(entry);\n        }\n    }\n}\n\nexport function getLogLevelLabel(level: LogLevel): string {\n    switch (level) {\n        case LogLevel.NONE:\n            return 'NONE';\n        case LogLevel.DEBUG:\n            return 'DEBUG';\n        case LogLevel.INFO:\n            return 'INFO';\n        case LogLevel.WARNING:\n            return 'WARNING';\n        case LogLevel.ERROR:\n            return 'ERROR';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogEventLabel(event: LogEvent): string {\n    switch (event) {\n        case LogEvent.NONE:\n            return 'NONE';\n        case LogEvent.OK:\n            return 'OK';\n        case LogEvent.ERROR:\n            return 'ERROR';\n        case LogEvent.START:\n            return 'START';\n        case LogEvent.RUN:\n            return 'RUN';\n        case LogEvent.CAPTURE:\n            return 'CAPTURE';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogTopicLabel(topic: LogTopic): string {\n    switch (topic) {\n        case LogTopic.CONNECT:\n            return 'CONNECT';\n        case LogTopic.DISCONNECT:\n            return 'DISCONNECT';\n        case LogTopic.INSTANTIATE:\n            return 'INSTANTIATE';\n        case LogTopic.OPEN:\n            return 'OPEN';\n        case LogTopic.QUERY:\n            return 'QUERY';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogOriginLabel(origin: LogOrigin): string {\n    switch (origin) {\n        case LogOrigin.NONE:\n            return 'NONE';\n        case LogOrigin.WEB_WORKER:\n            return 'WEB WORKER';\n        case LogOrigin.NODE_WORKER:\n            return 'NODE WORKER';\n        case LogOrigin.BINDINGS:\n            return 'DUCKDB BINDINGS';\n        case LogOrigin.ASYNC_DUCKDB:\n            return 'DUCKDB';\n        default:\n            return '?';\n    }\n}\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspender\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "{\n    \"name\": \"@duckdb/duckdb-wasm\",\n    \"version\": \"1.33.1-dev45.0\",\n    \"description\": \"DuckDB powered by WebAssembly\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/duckdb/duckdb-wasm.git\"\n    },\n    \"keywords\": [\n        \"sql\",\n        \"duckdb\",\n        \"relational\",\n        \"database\",\n        \"data\",\n        \"query\",\n        \"wasm\",\n        \"analytics\",\n        \"olap\",\n        \"arrow\",\n        \"parquet\",\n        \"json\",\n        \"csv\"\n    ],\n    \"dependencies\": {\n        \"apache-arrow\": \"^17.0.0\",\n        \"qs\": \"^6.14.1\"\n    },\n    \"devDependencies\": {\n        \"@types/emscripten\": \"^1.39.10\",\n        \"@types/jasmine\": \"^5.1.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^6.21.0\",\n        \"@typescript-eslint/parser\": \"^6.21.0\",\n        \"esbuild\": \"^0.20.2\",\n        \"eslint\": \"^8.57.0\",\n        \"eslint-plugin-jasmine\": \"^4.1.3\",\n        \"eslint-plugin-react\": \"^7.37.5\",\n        \"fast-glob\": \"^3.3.2\",\n        \"jasmine\": \"^5.13.0\",\n        \"jasmine-core\": \"^5.1.2\",\n        \"jasmine-spec-reporter\": \"^7.0.0\",\n        \"js-sha256\": \"^0.11.1\",\n        \"karma\": \"^6.4.2\",\n        \"karma-chrome-launcher\": \"^3.2.0\",\n        \"karma-coverage\": \"^2.2.1\",\n        \"karma-firefox-launcher\": \"^2.1.3\",\n        \"karma-jasmine\": \"^5.1.0\",\n        \"karma-jasmine-html-reporter\": \"^2.1.0\",\n        \"karma-sourcemap-loader\": \"^0.4.0\",\n        \"karma-spec-reporter\": \"^0.0.36\",\n        \"make-dir\": \"^4.0.0\",\n        \"nyc\": \"^15.1.0\",\n        \"prettier\": \"^3.2.5\",\n        \"puppeteer\": \"^22.8.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"s3rver\": \"^3.7.1\",\n        \"typedoc\": \"^0.28.15\",\n        \"typescript\": \"^5.3.3\",\n        \"wasm-feature-detect\": \"^1.6.1\",\n        \"web-worker\": \"^1.2.0\"\n    },\n    \"scripts\": {\n        \"build:debug\": \"node bundle.mjs debug && tsc --emitDeclarationOnly\",\n        \"build:release\": \"node bundle.mjs release && tsc --emitDeclarationOnly\",\n        \"docs\": \"typedoc\",\n        \"format\": \"prettier --write \\\"**/*.+(js|ts)\\\"\",\n        \"report\": \"node ./coverage.mjs\",\n        \"test:node\": \"node --enable-source-maps ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:node:debug\": \"node --inspect-brk --enable-source-maps ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:node:coverage\": \"nyc -r json --report-dir ./coverage/node node ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:firefox\": \"karma start ./karma/tests-firefox.cjs\",\n        \"test:chrome\": \"karma start ./karma/tests-chrome.cjs\",\n        \"test:chrome:eh\": \"karma start ./karma/tests-chrome-eh.cjs\",\n        \"test:chrome:coverage\": \"karma start ./karma/tests-chrome-coverage.cjs\",\n        \"test:browser\": \"karma start ./karma/tests-all.cjs\",\n        \"test:browser:debug\": \"karma start ./karma/tests-debug.cjs\",\n        \"test\": \"npm run test:chrome && npm run test:node\",\n        \"test:coverage\": \"npm run test:chrome:coverage && npm run test:node:coverage && npm run report\",\n        \"lint\": \"eslint src test\"\n    },\n    \"files\": [\n        \"dist\",\n        \"!dist/tests-*\",\n        \"!dist/duckdb-browser-mvp.worker.js.map\",\n        \"!dist/types/test\"\n    ],\n    \"main\": \"dist/duckdb-browser.cjs\",\n    \"module\": \"dist/duckdb-browser.mjs\",\n    \"types\": \"dist/duckdb-browser.d.ts\",\n    \"jsdelivr\": \"dist/duckdb-browser.cjs\",\n    \"unpkg\": \"dist/duckdb-browser.mjs\",\n    \"sideEffects\": false,\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false,\n        \"perf_hooks\": false,\n        \"os\": false,\n        \"worker_threads\": false\n    },\n    \"exports\": {\n        \"./dist/duckdb-mvp.wasm\": \"./dist/duckdb-mvp.wasm\",\n        \"./dist/duckdb-eh.wasm\": \"./dist/duckdb-eh.wasm\",\n        \"./dist/duckdb-coi.wasm\": \"./dist/duckdb-coi.wasm\",\n        \"./dist/duckdb-browser\": \"./dist/duckdb-browser.mjs\",\n        \"./dist/duckdb-browser.cjs\": \"./dist/duckdb-browser.cjs\",\n        \"./dist/duckdb-browser.mjs\": \"./dist/duckdb-browser.mjs\",\n        \"./dist/duckdb-browser-coi.pthread.worker.js\": \"./dist/duckdb-browser-coi.pthread.worker.js\",\n        \"./dist/duckdb-browser-coi.worker.js\": \"./dist/duckdb-browser-coi.worker.js\",\n        \"./dist/duckdb-browser-eh.worker.js\": \"./dist/duckdb-browser-eh.worker.js\",\n        \"./dist/duckdb-browser-mvp.worker.js\": \"./dist/duckdb-browser-mvp.worker.js\",\n        \"./dist/duckdb-node\": \"./dist/duckdb-node.cjs\",\n        \"./dist/duckdb-node.cjs\": \"./dist/duckdb-node.cjs\",\n        \"./dist/duckdb-node-blocking\": \"./dist/duckdb-node-blocking.cjs\",\n        \"./dist/duckdb-node-blocking.cjs\": \"./dist/duckdb-node-blocking.cjs\",\n        \"./dist/duckdb-node-eh.worker.cjs\": \"./dist/duckdb-node-eh.worker.cjs\",\n        \"./dist/duckdb-node-mvp.worker.cjs\": \"./dist/duckdb-node-mvp.worker.cjs\",\n        \"./blocking\": {\n            \"node\": {\n                \"types\": \"./dist/duckdb-node-blocking.d.ts\",\n                \"require\": \"./dist/duckdb-node-blocking.cjs\",\n                \"import\": \"./dist/duckdb-node-blocking.cjs\"\n            },\n            \"types\": \"./dist/duckdb-node-blocking.d.ts\",\n            \"import\": \"./dist/duckdb-node-blocking.mjs\",\n            \"require\": \"./dist/duckdb-node-blocking.cjs\"\n        },\n        \".\": {\n            \"browser\": {\n                \"types\": \"./dist/duckdb-browser.d.ts\",\n                \"import\": \"./dist/duckdb-browser.mjs\",\n                \"require\": \"./dist/duckdb-browser.cjs\"\n            },\n            \"node\": {\n                \"types\": \"./dist/duckdb-node.d.ts\",\n                \"import\": \"./dist/duckdb-node.cjs\",\n                \"require\": \"./dist/duckdb-node.cjs\"\n            },\n            \"types\": \"./dist/duckdb-browser.d.ts\",\n            \"import\": \"./dist/duckdb-browser.mjs\",\n            \"require\": \"./dist/duckdb-browser.cjs\"\n        }\n    }\n}\n", "import config from '../package.json';\n\nexport const PACKAGE_NAME = config.name;\nexport const PACKAGE_VERSION = config.version;\n\nconst VERSION_PARTS = config.version.split('.');\nexport const PACKAGE_VERSION_MAJOR = VERSION_PARTS[0];\nexport const PACKAGE_VERSION_MINOR = VERSION_PARTS[1];\nexport const PACKAGE_VERSION_PATCH = VERSION_PARTS[2];\n", "import * as check from 'wasm-feature-detect';\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\n// Platform check taken from here:\n// https://github.com/xtermjs/xterm.js/blob/master/src/common/Platform.ts#L21\n\ninterface INavigator {\n    userAgent: string;\n    language: string;\n    platform: string;\n}\n\n// We're declaring a navigator global here as we expect it in all runtimes (node and browser), but\n// we want this module to live in common.\ndeclare const navigator: INavigator;\n\nexport const isNode = () => (typeof navigator === 'undefined' ? true : false);\nconst userAgent = () => (isNode() ? 'node' : navigator.userAgent);\nexport const isFirefox = () => userAgent().includes('Firefox');\nexport const isSafari = () => /^((?!chrome|android).)*safari/i.test(userAgent());\n\n/** Bundles have different characteristics:\n * - MVP: minimum viable product (uses features from first stable version of WebAssembly standard)\n * - EH: exception handling\n * - COI: cross origin isolation\n */\nexport interface DuckDBBundles {\n    mvp: {\n        mainModule: string;\n        mainWorker: string;\n    };\n    eh?: {\n        mainModule: string;\n        mainWorker: string;\n    };\n    coi?: {\n        mainModule: string;\n        mainWorker: string;\n        pthreadWorker: string;\n    };\n}\n\nexport function getJsDelivrBundles(): DuckDBBundles {\n    const jsdelivr_dist_url = `https://cdn.jsdelivr.net/npm/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/`;\n    return {\n        mvp: {\n            mainModule: `${jsdelivr_dist_url}duckdb-mvp.wasm`,\n            mainWorker: `${jsdelivr_dist_url}duckdb-browser-mvp.worker.js`,\n        },\n        eh: {\n            mainModule: `${jsdelivr_dist_url}duckdb-eh.wasm`,\n            mainWorker: `${jsdelivr_dist_url}duckdb-browser-eh.worker.js`,\n        },\n        // COI is still experimental, let the user opt in explicitly\n    };\n}\n\nexport interface DuckDBBundle {\n    mainModule: string;\n    mainWorker: string | null;\n    pthreadWorker: string | null;\n}\n\nexport interface PlatformFeatures {\n    bigInt64Array: boolean;\n    crossOriginIsolated: boolean;\n    wasmExceptions: boolean;\n    wasmSIMD: boolean;\n    wasmBulkMemory: boolean;\n    wasmThreads: boolean;\n}\n\nlet bigInt64Array: boolean | null = null;\nlet wasmExceptions: boolean | null = null;\nlet wasmThreads: boolean | null = null;\nlet wasmSIMD: boolean | null = null;\nlet wasmBulkMemory: boolean | null = null;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace globalThis {\n    let crossOriginIsolated: boolean;\n}\n\nexport async function getPlatformFeatures(): Promise<PlatformFeatures> {\n    if (bigInt64Array == null) {\n        bigInt64Array = typeof BigInt64Array != 'undefined';\n    }\n    if (wasmExceptions == null) {\n        wasmExceptions = await check.exceptions();\n    }\n    if (wasmThreads == null) {\n        wasmThreads = await check.threads();\n    }\n    if (wasmSIMD == null) {\n        wasmSIMD = await check.simd();\n    }\n    if (wasmBulkMemory == null) {\n        wasmBulkMemory = await check.bulkMemory();\n    }\n    return {\n        bigInt64Array: bigInt64Array!,\n        crossOriginIsolated: isNode() || globalThis.crossOriginIsolated || false,\n        wasmExceptions: wasmExceptions!,\n        wasmSIMD: wasmSIMD!,\n        wasmThreads: wasmThreads!,\n        wasmBulkMemory: wasmBulkMemory!,\n    };\n}\n\nexport async function selectBundle(bundles: DuckDBBundles): Promise<DuckDBBundle> {\n    const platform = await getPlatformFeatures();\n    if (platform.wasmExceptions) {\n        if (platform.wasmSIMD && platform.wasmThreads && platform.crossOriginIsolated && bundles.coi) {\n            return {\n                mainModule: bundles.coi.mainModule,\n                mainWorker: bundles.coi.mainWorker,\n                pthreadWorker: bundles.coi.pthreadWorker,\n            };\n        }\n        if (bundles.eh) {\n            return {\n                mainModule: bundles.eh.mainModule,\n                mainWorker: bundles.eh.mainWorker,\n                pthreadWorker: null,\n            };\n        }\n    }\n    return {\n        mainModule: bundles.mvp.mainModule,\n        mainWorker: bundles.mvp.mainWorker,\n        pthreadWorker: null,\n    };\n}\n", "import { S3Config } from '../bindings';\nimport { sha256 } from 'js-sha256';\n\nexport interface S3Params {\n    url: string;\n    query: string;\n    host: string;\n    region: string;\n    service: string;\n    method: string;\n    accessKeyId: string;\n    secretAccessKey: string;\n    sessionToken: string;\n    dateNow: string;\n    datetimeNow: string;\n}\n\nexport interface S3PayloadParams {\n    contentHash: string | null;\n    contentType: string | null;\n}\n\nconst getHTTPHost = function (config: S3Config | undefined, url: string, bucket: string): string {\n    if (config?.endpoint?.startsWith('http')) {\n        // Endpoint is a full url, extract just the host (no path)\n        const endpointUrl = new URL(config.endpoint);\n        return endpointUrl.host;\n    } else if (config?.endpoint) {\n        // Endpoint is not a full url and the https://{bucket}.{domain} format will be used\n        return `${bucket}.${config?.endpoint}`;\n    } else {\n        // Default aws s3 url\n        return `${bucket}.s3.amazonaws.com`;\n    }\n};\n\nexport function getS3Params(config: S3Config | undefined, url: string, method: string): S3Params {\n    const parsedS3Url = parseS3Url(url);\n\n    // when using S3 path-style access, the signed URL should also include the endpoint's path + bucket name,\n    //  as they will both be present in the HTTP URL path.\n    // See: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html#path-style-url-ex\n    let path = parsedS3Url.path;\n    if (isPathStyleAccess(config)) {\n        // Extract endpoint path if present (e.g., \"/some/path\" from \"https://host/some/path\")\n        let endpointPath = '';\n        if (config?.endpoint) {\n            const endpointUrl = new URL(config.endpoint);\n            if (endpointUrl.pathname !== '/') {\n                endpointPath = endpointUrl.pathname;\n            }\n        }\n        path = `${endpointPath}/${parsedS3Url.bucket}${path}`;\n    }\n    return {\n        url: path,\n        query: '',\n        host: getHTTPHost(config, url, parsedS3Url.bucket),\n        region: config?.region ?? '',\n        service: 's3',\n        method: method,\n        accessKeyId: config?.accessKeyId ?? '',\n        secretAccessKey: config?.secretAccessKey ?? '',\n        sessionToken: config?.sessionToken ?? '',\n        dateNow: new Date().toISOString().replace(/-/g, '').split('T')[0],\n        datetimeNow: new Date().toISOString().replace(/-/g, '').replace(/:/g, '').split('.')[0] + 'Z',\n    };\n}\n\nexport function uriEncode(input: string, encode_slash = false) {\n    // https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html\n\n    const hexDigit = '0123456789ABCDEF';\n    let result = '';\n\n    for (let i = 0; i < input.length; i++) {\n        const ch: string = input[i];\n\n        if (\n            (ch >= 'A' && ch <= 'Z') ||\n            (ch >= 'a' && ch <= 'z') ||\n            (ch >= '0' && ch <= '9') ||\n            ch == '_' ||\n            ch == '-' ||\n            ch == '~' ||\n            ch == '.'\n        ) {\n            result += ch;\n        } else if (ch == '/') {\n            if (encode_slash) {\n                result += '%2F';\n            } else {\n                result += ch;\n            }\n        } else {\n            result += '%';\n            result += hexDigit[ch.charCodeAt(0) >> 4];\n            result += hexDigit[ch.charCodeAt(0) & 15];\n        }\n    }\n    return result;\n}\n\nexport function createS3Headers(params: S3Params, payloadParams: S3PayloadParams | null = null): Map<string, string> {\n    // this is the sha256 of the empty string, its useful since we have no payload for GET requests\n    const payloadHash =\n        payloadParams?.contentHash ?? 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';\n\n    const res = new Map<string, string>();\n    // res.set(\"host\", params.host)\n    res.set('x-amz-date', params.datetimeNow);\n    res.set('x-amz-content-sha256', payloadHash);\n\n    if (params.sessionToken) {\n        res.set('x-amz-security-token', params.sessionToken);\n    }\n\n    // construct string to sign\n    let signedHeaders = '';\n    if (payloadParams?.contentType) {\n        signedHeaders += 'content-type;';\n    }\n    signedHeaders += 'host;x-amz-content-sha256;x-amz-date';\n    if (params.sessionToken) {\n        signedHeaders += ';x-amz-security-token';\n    }\n\n    let canonicalRequest = params.method + '\\n' + uriEncode(params.url) + '\\n' + params.query;\n    if (payloadParams?.contentType) {\n        canonicalRequest += '\\ncontent-type:' + payloadParams?.contentType;\n    }\n    canonicalRequest +=\n        '\\nhost:' + params.host + '\\nx-amz-content-sha256:' + payloadHash + '\\nx-amz-date:' + params.datetimeNow;\n    if (params.sessionToken && params.sessionToken.length > 0) {\n        canonicalRequest += '\\nx-amz-security-token:' + params.sessionToken;\n    }\n\n    canonicalRequest += '\\n\\n' + signedHeaders + '\\n' + payloadHash;\n    const canonicalRequestHashStr = sha256(canonicalRequest);\n\n    const stringToSign =\n        'AWS4-HMAC-SHA256\\n' +\n        params.datetimeNow +\n        '\\n' +\n        params.dateNow +\n        '/' +\n        params.region +\n        '/' +\n        params.service +\n        '/aws4_request\\n' +\n        canonicalRequestHashStr;\n\n    const signKey = 'AWS4' + params.secretAccessKey;\n    const kDate = sha256.hmac.arrayBuffer(signKey, params.dateNow);\n\n    const kRegion = sha256.hmac.arrayBuffer(kDate, params.region);\n    const kService = sha256.hmac.arrayBuffer(kRegion, params.service);\n    const signingKey = sha256.hmac.arrayBuffer(kService, 'aws4_request');\n    const signature = sha256.hmac(signingKey, stringToSign);\n\n    res.set(\n        'Authorization',\n        'AWS4-HMAC-SHA256 Credential=' +\n            params.accessKeyId +\n            '/' +\n            params.dateNow +\n            '/' +\n            params.region +\n            '/' +\n            params.service +\n            '/aws4_request, SignedHeaders=' +\n            signedHeaders +\n            ', Signature=' +\n            signature,\n    );\n\n    return res;\n}\n\nconst createS3HeadersFromS3Config = function (\n    config: S3Config | undefined,\n    url: string,\n    method: string,\n    contentType: string | null = null,\n    payload: Uint8Array | null = null,\n): Map<string, string> {\n    const params = getS3Params(config, url, method);\n    const payloadParams = {\n        contentType: contentType,\n        contentHash: payload ? sha256.hex(payload!) : null,\n    } as S3PayloadParams;\n    return createS3Headers(params, payloadParams);\n};\n\nexport function addS3Headers(\n    xhr: XMLHttpRequest,\n    config: S3Config | undefined,\n    url: string,\n    method: string,\n    contentType: string | null = null,\n    payload: Uint8Array | null = null,\n) {\n    if (config?.accessKeyId || config?.sessionToken) {\n        const headers = createS3HeadersFromS3Config(config, url, method, contentType, payload);\n        headers.forEach((value: string, header: string) => {\n            xhr.setRequestHeader(header, value);\n        });\n\n        if (contentType) {\n            xhr.setRequestHeader('content-type', contentType);\n        }\n    }\n}\n\nexport function parseS3Url(url: string): { bucket: string; path: string } {\n    if (url.indexOf('s3://') != 0) {\n        throw new Error('URL needs to start with s3://');\n    }\n    const slashPos = url.indexOf('/', 5);\n\n    if (slashPos == -1) {\n        throw new Error(\"URL needs to contain a '/' after the host\");\n    }\n\n    const bucket = url.substring(5, slashPos);\n    if (!bucket) {\n        throw new Error('URL needs to contain a bucket name');\n    }\n    const path = url.substring(slashPos);\n    if (!path) {\n        throw new Error('URL needs to contain key');\n    }\n\n    return { bucket: bucket, path: path };\n}\n\nfunction isPathStyleAccess(config: S3Config | undefined): boolean {\n    if (config?.endpoint?.startsWith('http')) {\n        return true;\n    }\n    return false;\n}\n\nexport function getHTTPUrl(config: S3Config | undefined, url: string): string {\n    const parsedUrl = parseS3Url(url);\n    if (isPathStyleAccess(config)) {\n        // Endpoint is a full url, we append the bucket\n        return `${config?.endpoint}/${parsedUrl.bucket}` + parsedUrl.path;\n    }\n    return 'https://' + getHTTPHost(config, url, parsedUrl.bucket) + parsedUrl.path;\n}\n", "import { StatusCode } from '../status';\nimport { WorkerResponseType } from '../parallel/worker_request';\nimport { addS3Headers, getHTTPUrl } from '../utils';\n\nimport {\n    callSRet,\n    dropResponseBuffers,\n    DuckDBDataProtocol,\n    DuckDBFileInfo,\n    DuckDBGlobalFileInfo,\n    DuckDBRuntime,\n    failWith,\n    FileFlags,\n    readString,\n    PreparedDBFileHandle,\n} from './runtime';\nimport { DuckDBModule } from './duckdb_module';\nimport * as udf from './udf_runtime';\n\nconst OPFS_PREFIX_LEN = 'opfs://'.length;\nconst PATH_SEP_REGEX = /\\/|\\\\/;\n\nexport const BROWSER_RUNTIME: DuckDBRuntime & {\n    _files: Map<string, any>;\n    _fileInfoCache: Map<number, DuckDBFileInfo>;\n    _globalFileInfo: DuckDBGlobalFileInfo | null;\n    _preparedHandles: Record<string, FileSystemSyncAccessHandle>;\n    _opfsRoot: FileSystemDirectoryHandle | null;\n\n    getFileInfo(mod: DuckDBModule, fileId: number): DuckDBFileInfo | null;\n    getGlobalFileInfo(mod: DuckDBModule): DuckDBGlobalFileInfo | null;\n    assignOPFSRoot(): Promise<void>;\n} = {\n    _files: new Map<string, any>(),\n    _fileInfoCache: new Map<number, DuckDBFileInfo>(),\n    _udfFunctions: new Map(),\n    _globalFileInfo: null,\n    _preparedHandles: {} as any,\n    _opfsRoot: null,\n\n    getFileInfo(mod: DuckDBModule, fileId: number): DuckDBFileInfo | null {\n        try {\n            const cached = BROWSER_RUNTIME._fileInfoCache.get(fileId);\n            const [s, d, n] = callSRet(\n                mod,\n                'duckdb_web_fs_get_file_info_by_id',\n                ['number', 'number'],\n                [fileId, cached?.cacheEpoch || 0],\n            );\n            if (s !== StatusCode.SUCCESS) {\n                return null;\n            } else if (n === 0) {\n                // Epoch is up to date\n                return cached!;\n            }\n            const infoStr = readString(mod, d, n);\n            dropResponseBuffers(mod);\n            try {\n                const info = JSON.parse(infoStr);\n                if (info == null) {\n                    return null;\n                }\n                const file = { ...info, blob: null } as DuckDBFileInfo;\n                BROWSER_RUNTIME._fileInfoCache.set(fileId, file);\n                if (!BROWSER_RUNTIME._files.has(file.fileName) && BROWSER_RUNTIME._preparedHandles[file.fileName]) {\n                    BROWSER_RUNTIME._files.set(file.fileName, BROWSER_RUNTIME._preparedHandles[file.fileName]);\n                    delete BROWSER_RUNTIME._preparedHandles[file.fileName];\n                }\n                return file;\n            } catch (error) {\n                console.warn(error);\n                return null;\n            }\n        } catch (e: any) {\n            console.log(e);\n            return null;\n        }\n    },\n\n    getGlobalFileInfo(mod: DuckDBModule): DuckDBGlobalFileInfo | null {\n        try {\n            const [s, d, n] = callSRet(\n                mod,\n                'duckdb_web_get_global_file_info',\n                ['number'],\n                [BROWSER_RUNTIME._globalFileInfo?.cacheEpoch || 0],\n            );\n            if (s !== StatusCode.SUCCESS) {\n                return null;\n            } else if (n === 0) {\n                // Epoch is up to date\n                return BROWSER_RUNTIME._globalFileInfo!;\n            }\n            const infoStr = readString(mod, d, n);\n            dropResponseBuffers(mod);\n            const info = JSON.parse(infoStr);\n            if (info == null) {\n                return null;\n            }\n            BROWSER_RUNTIME._globalFileInfo = { ...info, blob: null } as DuckDBGlobalFileInfo;\n\n            return BROWSER_RUNTIME._globalFileInfo;\n        } catch (e: any) {\n            console.log(e);\n            return null;\n        }\n    },\n    async assignOPFSRoot(): Promise<void> {\n        if (!BROWSER_RUNTIME._opfsRoot) {\n            BROWSER_RUNTIME._opfsRoot = await navigator.storage.getDirectory();\n        }\n    },\n    /** Prepare a file handle that could only be acquired aschronously */\n    async prepareFileHandles(filePaths: string[], protocol: DuckDBDataProtocol): Promise<PreparedDBFileHandle[]> {\n        if (protocol === DuckDBDataProtocol.BROWSER_FSACCESS) {\n            await BROWSER_RUNTIME.assignOPFSRoot();\n            const prepare = async (path: string): Promise<PreparedDBFileHandle> => {\n                if (BROWSER_RUNTIME._files.has(path)) {\n                    return {\n                        path,\n                        handle: BROWSER_RUNTIME._files.get(path),\n                        fromCached: true,\n                    };\n                }\n                const opfsRoot = BROWSER_RUNTIME._opfsRoot!;\n                let dirHandle: FileSystemDirectoryHandle = opfsRoot;\n                // check if mkdir -p is needed\n                const opfsPath = path.slice(OPFS_PREFIX_LEN);\n                let fileName = opfsPath;\n                if (PATH_SEP_REGEX.test(opfsPath)) {\n                    const folders = opfsPath.split(PATH_SEP_REGEX);\n                    if (folders.length === 0) {\n                        throw new Error(`Invalid path ${opfsPath}`);\n                    }\n                    fileName = folders[folders.length - 1];\n                    if (!fileName) {\n                        throw new Error(`Invalid path ${opfsPath}. File Not Found.`);\n                    }\n                    folders.pop();\n                    for (const folder of folders) {\n                        dirHandle = await dirHandle.getDirectoryHandle(folder, { create: true });\n                    }\n                }\n                const fileHandle = await dirHandle.getFileHandle(fileName, { create: false }).catch(e => {\n                    if (e?.name === 'NotFoundError') {\n                        console.debug(`File ${path} does not exists yet, creating...`);\n                        return dirHandle.getFileHandle(fileName, { create: true });\n                    }\n                    throw e;\n                });\n                try {\n                    const handle = await fileHandle.createSyncAccessHandle();\n                    BROWSER_RUNTIME._preparedHandles[path] = handle;\n                    return {\n                        path,\n                        handle,\n                        fromCached: false,\n                    };\n                } catch (e: any) {\n                    throw new Error(e.message + ':' + name);\n                }\n            };\n            const result: PreparedDBFileHandle[] = [];\n            for (const filePath of filePaths) {\n                const res = await prepare(filePath);\n                result.push(res);\n            }\n            return result;\n        }\n        throw new Error(`Unsupported protocol ${protocol} for paths ${filePaths} with protocol ${protocol}`);\n    },\n    /** Prepare a file handle that could only be acquired aschronously */\n    async prepareDBFileHandle(dbPath: string, protocol: DuckDBDataProtocol): Promise<PreparedDBFileHandle[]> {\n        if (protocol === DuckDBDataProtocol.BROWSER_FSACCESS && this.prepareFileHandles) {\n            const filePaths = [dbPath, `${dbPath}.wal`];\n            return this.prepareFileHandles(filePaths, protocol);\n        }\n        throw new Error(`Unsupported protocol ${protocol} for path ${dbPath} with protocol ${protocol}`);\n    },\n\n    testPlatformFeature: (_mod: DuckDBModule, feature: number): boolean => {\n        switch (feature) {\n            case 1:\n                return typeof BigInt64Array !== 'undefined';\n            default:\n                console.warn(`test for unknown feature: ${feature}`);\n                return false;\n        }\n    },\n\n    getDefaultDataProtocol(mod: DuckDBModule): number {\n        return DuckDBDataProtocol.BROWSER_FILEREADER;\n    },\n\n    openFile: (mod: DuckDBModule, fileId: number, flags: FileFlags): number => {\n        try {\n            BROWSER_RUNTIME._fileInfoCache.delete(fileId);\n            const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n            switch (file?.dataProtocol) {\n                case DuckDBDataProtocol.HTTP:\n                case DuckDBDataProtocol.S3: {\n                    if (flags & FileFlags.FILE_FLAGS_READ && flags & FileFlags.FILE_FLAGS_WRITE) {\n                        throw new Error(\n                            `Opening file ${file.fileName} failed: cannot open file with both read and write flags set`,\n                        );\n                    } else if (flags & FileFlags.FILE_FLAGS_APPEND) {\n                        throw new Error(\n                            `Opening file ${file.fileName} failed: appending to HTTP/S3 files is not supported`,\n                        );\n                    } else if (flags & FileFlags.FILE_FLAGS_WRITE) {\n                        // We send a HEAD request to try to determine if we can write to data_url\n                        const xhr = new XMLHttpRequest();\n                        if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                            xhr.open('HEAD', getHTTPUrl(file.s3Config, file.dataUrl!), false);\n                            addS3Headers(xhr, file.s3Config, file.dataUrl!, 'HEAD');\n                        } else {\n                            xhr.open('HEAD', file.dataUrl!, false);\n                        }\n                        xhr.send(null);\n\n                        // Expect 200 for existing files that we will overwrite or 404 for non-existent files can be created\n                        if (xhr.status != 200 && xhr.status != 404) {\n                            throw new Error(\n                                `Opening file ${file.fileName} failed: Unexpected return status from server (${xhr.status})`,\n                            );\n                        } else if (\n                            xhr.status == 404 &&\n                            !(flags & FileFlags.FILE_FLAGS_FILE_CREATE || flags & FileFlags.FILE_FLAGS_FILE_CREATE_NEW)\n                        ) {\n                            throw new Error(\n                                `Opening file ${file.fileName} failed: Cannot write to non-existent file without FILE_FLAGS_FILE_CREATE or FILE_FLAGS_FILE_CREATE_NEW flag.`,\n                            );\n                        }\n                        // Return an empty buffer that can be used to buffer the writes to this s3/http file\n                        const data = mod._malloc(1);\n                        const src = new Uint8Array();\n                        mod.HEAPU8.set(src, data);\n                        const result = mod._malloc(3 * 8);\n                        mod.HEAPF64[(result >> 3) + 0] = 1;\n                        mod.HEAPF64[(result >> 3) + 1] = data;\n                        mod.HEAPF64[(result >> 3) + 2] = new Date().getTime() / 1000;\n                        return result;\n                    } else if ((flags & FileFlags.FILE_FLAGS_READ) == 0) {\n                        throw new Error(`Opening file ${file.fileName} failed: unsupported file flags: ${flags}`);\n                    }\n\n                    // Supports ranges?\n                    let contentLength = null;\n                    let error: any | null = null;\n                    if (!file.forceFullHttpReads && (file.reliableHeadRequests || !file.allowFullHttpReads)) {\n                        try {\n                            // Send a dummy HEAD request with range protocol\n                            //          -> good IFF status is 206 and contentLenght is present\n                            const xhr = new XMLHttpRequest();\n                            if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                                xhr.open('HEAD', getHTTPUrl(file.s3Config, file.dataUrl!), false);\n                                addS3Headers(xhr, file.s3Config, file.dataUrl!, 'HEAD');\n                            } else {\n                                xhr.open('HEAD', file.dataUrl!, false);\n                            }\n                            xhr.setRequestHeader('Range', `bytes=0-`);\n                            xhr.send(null);\n\n                            // Supports range requests\n                            contentLength = null;\n                            try { contentLength = xhr.getResponseHeader('Content-Length'); } catch (e: any) {console.warn(`Failed to get Content-Length on request`);}\n                            if (contentLength !== null && xhr.status == 206) {\n                                const result = mod._malloc(3 * 8);\n                                mod.HEAPF64[(result >> 3) + 0] = +contentLength;\n                                mod.HEAPF64[(result >> 3) + 1] = 0;\n                                let modification_time = 0;\n                                try { modification_time = new Date(xhr.getResponseHeader('Last-Modified')??\"\").getTime() / 1000; } catch (e: any) {console.warn(`Failed to get Last-Modified on request`);}\n                                mod.HEAPF64[(result >> 3) + 2] = +modification_time;\n                                return result;\n                            }\n                        } catch (e: any) {\n                            error = e;\n                            console.warn(`HEAD request with range header failed: ${e}`);\n                        }\n                    }\n\n                    // Try to fallback to full read?\n                    if (file.allowFullHttpReads) {\n                        if (!file.forceFullHttpReads) {\n                            // 2. Send a dummy GET range request querying the first byte of the file\n                            //          -> good IFF status is 206 and contentLenght2 is 1\n                            //          -> otherwise, iff 200 and contentLenght2 == contentLenght\n                            //                 we just downloaded the file, save it and move further\n                            const xhr = new XMLHttpRequest();\n                            if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                                xhr.open('GET', getHTTPUrl(file.s3Config, file.dataUrl!), false);\n                                addS3Headers(xhr, file.s3Config, file.dataUrl!, 'GET');\n                            } else {\n                                xhr.open('GET', file.dataUrl!, false);\n                            }\n                            xhr.responseType = 'arraybuffer';\n                            xhr.setRequestHeader('Range', `bytes=0-0`);\n                            xhr.send(null);\n                            let actualContentLength = null;\n                            try { actualContentLength = xhr.getResponseHeader('Content-Length'); } catch (e: any) {console.warn(`Failed to get Content-Length on request`);}\n                            const contentRange = actualContentLength?.split('/')[1];\n                            const contentLength2 = actualContentLength;\n\n                            let presumedLength = null;\n                            if (contentRange !== undefined) {\n                                presumedLength = contentRange;\n                            } else if (!file.reliableHeadRequests) {\n                                // Send a dummy HEAD request with range protocol\n                                //          -> good IFF status is 206 and contentLenght is present\n                                const head = new XMLHttpRequest();\n                                if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                                    head.open('HEAD', getHTTPUrl(file.s3Config, file.dataUrl!), false);\n                                    addS3Headers(head, file.s3Config, file.dataUrl!, 'HEAD');\n                                } else {\n                                    head.open('HEAD', file.dataUrl!, false);\n                                }\n                                head.setRequestHeader('Range', `bytes=0-`);\n                                head.send(null);\n\n                                // Supports range requests\n                                contentLength = null;\n                                try { contentLength = head.getResponseHeader('Content-Length'); } catch (e: any) {console.warn(`Failed to get Content-Length on request`);}\n                                if (contentLength !== null && +contentLength > 1) {\n                                    presumedLength = contentLength;\n                                }\n                            }\n\n                            if (\n                                xhr.status == 206 &&\n                                contentLength2 !== null &&\n                                +contentLength2 == 1 &&\n                                presumedLength !== null\n                            ) {\n                                const result = mod._malloc(3 * 8);\n                                mod.HEAPF64[(result >> 3) + 0] = +presumedLength;\n                                mod.HEAPF64[(result >> 3) + 1] = 0;\n                                let modification_time = 0;\n                                try { modification_time = new Date(xhr.getResponseHeader('Last-Modified')??\"\").getTime() / 1000; } catch (e: any) {console.warn(`Failed to get Last-Modified on request`);}\n                                mod.HEAPF64[(result >> 3) + 2] = +modification_time;\n                                return result;\n                            }\n                            if (\n                                xhr.status == 200 &&\n                                contentLength2 !== null &&\n                                contentLength !== null &&\n                                +contentLength2 == +contentLength\n                            ) {\n                                console.warn(`fall back to full HTTP read for: ${file.dataUrl}`);\n                                const data = mod._malloc(xhr.response.byteLength);\n                                const src = new Uint8Array(xhr.response, 0, xhr.response.byteLength);\n                                mod.HEAPU8.set(src, data);\n                                const result = mod._malloc(3 * 8);\n                                mod.HEAPF64[(result >> 3) + 0] = xhr.response.byteLength;\n                                mod.HEAPF64[(result >> 3) + 1] = data;\n                                let modification_time = 0;\n                                try { modification_time = new Date(xhr.getResponseHeader('Last-Modified')??\"\").getTime() / 1000; } catch (e: any) {console.warn(`Failed to get Last-Modified on request`);}\n                                mod.HEAPF64[(result >> 3) + 2] = +modification_time;\n                                return result;\n                            }\n                            console.warn(`falling back to full HTTP read for: ${file.dataUrl}`);\n                        }\n                        // 3. Send non-range request\n                        const xhr = new XMLHttpRequest();\n                        if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                            xhr.open('GET', getHTTPUrl(file.s3Config, file.dataUrl!), false);\n                            addS3Headers(xhr, file.s3Config, file.dataUrl!, 'GET');\n                        } else {\n                            xhr.open('GET', file.dataUrl!, false);\n                        }\n                        xhr.responseType = 'arraybuffer';\n                        xhr.send(null);\n\n                        // Return buffer\n                        if (xhr.status == 200) {\n                            const data = mod._malloc(xhr.response.byteLength);\n                            const src = new Uint8Array(xhr.response, 0, xhr.response.byteLength);\n                            mod.HEAPU8.set(src, data);\n                            const result = mod._malloc(3 * 8);\n                            mod.HEAPF64[(result >> 3) + 0] = xhr.response.byteLength;\n                            mod.HEAPF64[(result >> 3) + 1] = data;\n                            let modification_time = 0;\n                            try { modification_time = new Date(xhr.getResponseHeader('Last-Modified')??\"\").getTime() / 1000; } catch (e: any) {console.warn(`Failed to get Last-Modified on request`);}\n                            mod.HEAPF64[(result >> 3) + 2] = +modification_time;\n                            return result;\n                        }\n                    }\n\n                    // Raise error?\n                    if (error != null) {\n                        throw new Error(`Reading file ${file.fileName} failed with error: ${error}`);\n                    }\n                    return 0;\n                }\n                // File reader File\n                case DuckDBDataProtocol.BROWSER_FILEREADER: {\n                    const handle = BROWSER_RUNTIME._files?.get(file.fileName);\n                    if (handle) {\n                        const result = mod._malloc(3 * 8);\n                        mod.HEAPF64[(result >> 3) + 0] = handle.size;\n                        mod.HEAPF64[(result >> 3) + 1] = 0;\n                        mod.HEAPF64[(result >> 3) + 2] = 0;\n                        return result;\n                    }\n\n                    // Depending on file flags, return nullptr\n                    if (flags & FileFlags.FILE_FLAGS_NULL_IF_NOT_EXISTS) {\n                       return 0;\n                    }\n\n                    // Fall back to empty buffered file in the browser\n                    console.warn(`Buffering missing file: ${file.fileName}`);\n                    const result = mod._malloc(3 * 8);\n                    const buffer = mod._malloc(1); // malloc(0) is allowed to return a nullptr\n                    mod.HEAPF64[(result >> 3) + 0] = 1;\n                    mod.HEAPF64[(result >> 3) + 1] = buffer;\n                    mod.HEAPF64[(result >> 3) + 2] = 0;\n                    return result;\n                }\n                case DuckDBDataProtocol.BROWSER_FSACCESS: {\n                    const handle: FileSystemSyncAccessHandle = BROWSER_RUNTIME._files?.get(file.fileName);\n                    if (!handle) {\n                        throw new Error(`No OPFS access handle registered with name: ${file.fileName}`);\n                    }\n                    if (flags & FileFlags.FILE_FLAGS_FILE_CREATE_NEW) {\n                        handle.truncate(0);\n                    }\n                    const result = mod._malloc(3 * 8);\n                    const fileSize = handle.getSize();\n                    mod.HEAPF64[(result >> 3) + 0] = fileSize;\n                    mod.HEAPF64[(result >> 3) + 1] = 0;\n                    mod.HEAPF64[(result >> 3) + 2] = 0;\n                    return result;\n                }\n            }\n        } catch (e: any) {\n            // TODO (samansmink): this path causes the WASM code to hang\n            console.error(e.toString());\n            failWith(mod, e.toString());\n        }\n        return 0;\n    },\n    glob: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {\n        try {\n            const path = readString(mod, pathPtr, pathLen);\n            // Starts with http?\n            // Try a HTTP HEAD request\n            if (path.startsWith('http') || path.startsWith('s3://')) {\n                // Send a dummy range request querying the first byte of the file\n                const xhr = new XMLHttpRequest();\n                if (path.startsWith('s3://')) {\n                    const globalInfo = BROWSER_RUNTIME.getGlobalFileInfo(mod);\n                    xhr.open('HEAD', getHTTPUrl(globalInfo?.s3Config, path), false);\n                    addS3Headers(xhr, globalInfo?.s3Config, path, 'HEAD');\n                } else {\n                    xhr.open('HEAD', path!, false);\n                }\n                xhr.send(null);\n                if (xhr.status != 200 && xhr.status !== 206) {\n                    // Pre-signed resources on S3 in common configurations fail on any HEAD request\n                    // https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-presigned-urls.html\n                    // so we need (if enabled) to bump to a ranged GET\n                    if (!BROWSER_RUNTIME.getGlobalFileInfo(mod)?.allowFullHttpReads) {\n                        console.log(`HEAD request failed: ${path}, with full http reads are disabled`);\n                        return 0;\n                    }\n                    const xhr2 = new XMLHttpRequest();\n                    if (path.startsWith('s3://')) {\n                        const globalInfo = BROWSER_RUNTIME.getGlobalFileInfo(mod);\n                        xhr2.open('GET', getHTTPUrl(globalInfo?.s3Config, path), false);\n                        addS3Headers(xhr2, globalInfo?.s3Config, path, 'HEAD');\n                    } else {\n                        xhr2.open('GET', path!, false);\n                    }\n                    xhr2.setRequestHeader('Range', `bytes=0-0`);\n                    xhr2.send(null);\n                    if (xhr2.status != 200 && xhr2.status !== 206) {\n                        console.log(`HEAD and GET requests failed: ${path}`);\n                        return 0;\n                    }\n                    let contentLength = null;\n                    try { contentLength = xhr2.getResponseHeader('Content-Length'); } catch (e: any) {console.warn(`Failed to get Content-Length on request`);}\n                    if (contentLength && +contentLength > 1) {\n                        console.warn(\n                            `Range request for ${path} did not return a partial response: ${xhr2.status} \"${xhr2.statusText}\"`,\n                        );\n                    }\n                }\n                mod.ccall('duckdb_web_fs_glob_add_path', null, ['string'], [path]);\n            } else {\n                for (const [filePath] of BROWSER_RUNTIME._files!.entries() || []) {\n                    if (filePath.startsWith(path)) {\n                        mod.ccall('duckdb_web_fs_glob_add_path', null, ['string'], [filePath]);\n                    }\n                }\n            }\n        } catch (e: any) {\n            console.log(e);\n            failWith(mod, e.toString());\n            return 0;\n        }\n    },\n    checkFile: (mod: DuckDBModule, pathPtr: number, pathLen: number): boolean => {\n        try {\n            const path = readString(mod, pathPtr, pathLen);\n            // Starts with http or S3?\n            // Try a HTTP HEAD request\n            if (path.startsWith('http') || path.startsWith('s3://')) {\n                // Send a dummy range request querying the first byte of the file\n                const xhr = new XMLHttpRequest();\n                if (path.startsWith('s3://')) {\n                    const globalInfo = BROWSER_RUNTIME.getGlobalFileInfo(mod);\n                    xhr.open('HEAD', getHTTPUrl(globalInfo?.s3Config, path), false);\n                    addS3Headers(xhr, globalInfo?.s3Config, path, 'HEAD');\n                } else {\n                    xhr.open('HEAD', path!, false);\n                }\n                xhr.send(null);\n                return xhr.status == 206 || xhr.status == 200;\n            } else {\n                return BROWSER_RUNTIME._files.has(path);\n            }\n        } catch (e: any) {\n            console.log(e);\n            return false;\n        }\n        return false;\n    },\n    syncFile: (_mod: DuckDBModule, _fileId: number) => {},\n    closeFile: (mod: DuckDBModule, fileId: number) => {\n        const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n        BROWSER_RUNTIME._fileInfoCache.delete(fileId);\n        try {\n            switch (file?.dataProtocol) {\n                case DuckDBDataProtocol.BUFFER:\n                case DuckDBDataProtocol.HTTP:\n                case DuckDBDataProtocol.S3:\n                    break;\n                case DuckDBDataProtocol.NODE_FS:\n                case DuckDBDataProtocol.BROWSER_FILEREADER:\n                    // XXX Remove from registry\n                    return;\n                case DuckDBDataProtocol.BROWSER_FSACCESS: {\n                    const handle: FileSystemSyncAccessHandle = BROWSER_RUNTIME._files?.get(file.fileName);\n                    if (!handle) {\n                        throw new Error(`No OPFS access handle registered with name: ${file.fileName}`);\n                    }\n                    return handle.flush();\n                }\n            }\n        } catch (e: any) {\n            console.log(e);\n            failWith(mod, e.toString());\n        }\n    },\n    dropFile: (mod: DuckDBModule, fileNamePtr: number, fileNameLen: number) => {\n        const fileName = readString(mod, fileNamePtr, fileNameLen);\n        const handle: FileSystemSyncAccessHandle = BROWSER_RUNTIME._files?.get(fileName);\n        if (handle) {\n            BROWSER_RUNTIME._files.delete(fileName);\n            if (handle instanceof FileSystemSyncAccessHandle) {\n                try {\n                    handle.flush();\n                    handle.close();\n                } catch (e: any) {\n                    throw new Error(`Cannot drop file with name: ${fileName}`);\n                }\n            }\n            if (handle instanceof Blob) {\n                // nothing\n            }\n        }\n    },\n    truncateFile: (mod: DuckDBModule, fileId: number, newSize: number) => {\n        const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n        switch (file?.dataProtocol) {\n            case DuckDBDataProtocol.HTTP:\n                failWith(mod, `Cannot truncate a http file`);\n                return;\n            case DuckDBDataProtocol.S3:\n                failWith(mod, `Cannot truncate an s3 file`);\n                return;\n            case DuckDBDataProtocol.BUFFER:\n            case DuckDBDataProtocol.NODE_FS:\n            case DuckDBDataProtocol.BROWSER_FILEREADER:\n                failWith(mod, `truncateFile not implemented`);\n                return;\n            case DuckDBDataProtocol.BROWSER_FSACCESS: {\n                const handle = BROWSER_RUNTIME._files?.get(file.fileName);\n                if (!handle) {\n                    throw new Error(`No OPFS access handle registered with name: ${file.fileName}`);\n                }\n                return handle.truncate(newSize);\n            }\n        }\n        return 0;\n    },\n    readFile(mod: DuckDBModule, fileId: number, buf: number, bytes: number, location: number) {\n        if (bytes == 0) {\n            // Be robust to empty reads\n            return 0;\n        }\n        try {\n            const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n            switch (file?.dataProtocol) {\n                // File reading from BLOB or HTTP MUST be done with range requests.\n                // We have to check in OPEN if such file supports range requests and upgrade to BUFFER if not.\n                case DuckDBDataProtocol.HTTP:\n                case DuckDBDataProtocol.S3: {\n                    if (!file.dataUrl) {\n                        throw new Error(`Missing data URL for file ${fileId}`);\n                    }\n                    try {\n                        const xhr = new XMLHttpRequest();\n                        if (file.dataProtocol == DuckDBDataProtocol.S3) {\n                            xhr.open('GET', getHTTPUrl(file?.s3Config, file.dataUrl!), false);\n                            addS3Headers(xhr, file?.s3Config, file.dataUrl!, 'GET');\n                        } else {\n                            xhr.open('GET', file.dataUrl!, false);\n                        }\n                        xhr.responseType = 'arraybuffer';\n                        xhr.setRequestHeader('Range', `bytes=${location}-${location + bytes - 1}`);\n                        xhr.send(null);\n                        if (\n                            xhr.status == 206 /* Partial content */ ||\n                            (xhr.status == 200 && bytes == xhr.response.byteLength && location == 0)\n                        ) {\n                            const src = new Uint8Array(xhr.response, 0, Math.min(xhr.response.byteLength, bytes));\n                            mod.HEAPU8.set(src, buf);\n                            return src.byteLength;\n                        } else if (xhr.status == 200) {\n                            // TODO: here we are actually throwing away all non-relevant bytes, but this is still better than failing\n                            //       proper solution would require notifying duckdb-wasm cache, while we are piggybackign on browser cache\n                            console.warn(\n                                `Range request for ${file.dataUrl} did not return a partial response: ${xhr.status} \"${xhr.statusText}\"`,\n                            );\n                            const src = new Uint8Array(\n                                xhr.response,\n                                location,\n                                Math.min(xhr.response.byteLength - location, bytes),\n                            );\n                            mod.HEAPU8.set(src, buf);\n                            return src.byteLength;\n                        } else {\n                            throw new Error(\n                                `Range request for ${file.dataUrl} did returned non-success status: ${xhr.status} \"${xhr.statusText}\"`,\n                            );\n                        }\n                    } catch (e) {\n                        console.log(e);\n                        throw new Error(`Range request for ${file.dataUrl} failed with error: ${e}\"`);\n                    }\n                }\n                case DuckDBDataProtocol.BROWSER_FILEREADER: {\n                    const handle = BROWSER_RUNTIME._files?.get(file.fileName);\n                    if (!handle) {\n                        throw new Error(`No HTML5 file registered with name: ${file.fileName}`);\n                    }\n                    const sliced = handle!.slice(location, location + bytes);\n                    const data = new Uint8Array(new FileReaderSync().readAsArrayBuffer(sliced));\n                    mod.HEAPU8.set(data, buf);\n                    return data.byteLength;\n                }\n                case DuckDBDataProtocol.BROWSER_FSACCESS: {\n                    const handle: FileSystemSyncAccessHandle = BROWSER_RUNTIME._files.get(file.fileName);\n                    if (!handle) {\n                        throw new Error(`No OPFS access handle registered with name: ${file.fileName}`);\n                    }\n                    const out = mod.HEAPU8.subarray(buf, buf + bytes);\n                    return handle.read(out, { at: location });\n                }\n            }\n            return 0;\n        } catch (e: any) {\n            console.log(e);\n            failWith(mod, e.toString());\n            return 0;\n        }\n    },\n    writeFile: (mod: DuckDBModule, fileId: number, buf: number, bytes: number, location: number) => {\n        const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n        switch (file?.dataProtocol) {\n            case DuckDBDataProtocol.HTTP:\n                failWith(mod, 'Cannot write to HTTP file');\n                return 0;\n            case DuckDBDataProtocol.S3: {\n                const buffer = mod.HEAPU8.subarray(buf, buf + bytes);\n                const xhr = new XMLHttpRequest();\n                xhr.open('PUT', getHTTPUrl(file?.s3Config, file.dataUrl!), false);\n                addS3Headers(xhr, file?.s3Config, file.dataUrl!, 'PUT', '', buffer);\n                xhr.send(buffer);\n                if (xhr.status !== 200) {\n                    failWith(mod, 'Failed writing file: HTTP ' + xhr.status);\n                    return 0;\n                }\n                return bytes;\n            }\n            case DuckDBDataProtocol.BROWSER_FILEREADER:\n                failWith(mod, 'cannot write using the html5 file reader api');\n                return 0;\n            case DuckDBDataProtocol.BROWSER_FSACCESS: {\n                const handle: FileSystemSyncAccessHandle = BROWSER_RUNTIME._files?.get(file.fileName);\n                if (!handle) {\n                    throw new Error(`No OPFS access handle registered with name: ${file.fileName}`);\n                }\n                const input = mod.HEAPU8.subarray(buf, buf + bytes);\n                return handle.write(input, { at: location });\n            }\n        }\n        return 0;\n    },\n    getLastFileModificationTime: (mod: DuckDBModule, fileId: number) => {\n        const file = BROWSER_RUNTIME.getFileInfo(mod, fileId);\n        switch (file?.dataProtocol) {\n            case DuckDBDataProtocol.BROWSER_FILEREADER: {\n                const handle = BROWSER_RUNTIME._files?.get(file.fileName);\n                if (!handle) {\n                    throw Error(`No handle available for file: ${file.fileName}`);\n                }\n                return 0;\n            }\n\n            case DuckDBDataProtocol.HTTP:\n            case DuckDBDataProtocol.S3:\n                // getTime() returns milliseconds, we need seconds\n                return new Date().getTime() / 1000;\n        }\n        return 0;\n    },\n    progressUpdate: (done: number, percentage: number, repeat: number): void => {\n        if (postMessage) {\n            postMessage({\n                requestId: 0,\n                type: WorkerResponseType.PROGRESS_UPDATE,\n                data: { status: done ? 'completed' : 'in-progress', percentage: percentage, repetitions: repeat },\n            });\n        }\n    },\n    checkDirectory: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {\n        const path = readString(mod, pathPtr, pathLen);\n        console.log(`checkDirectory: ${path}`);\n        return false;\n    },\n    createDirectory: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {\n        const path = readString(mod, pathPtr, pathLen);\n        console.log(`createDirectory: ${path}`);\n    },\n    removeDirectory: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {\n        const path = readString(mod, pathPtr, pathLen);\n        console.log(`removeDirectory: ${path}`);\n    },\n    listDirectoryEntries: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {\n        const path = readString(mod, pathPtr, pathLen);\n        console.log(`listDirectoryEntries: ${path}`);\n        return false;\n    },\n    moveFile: (mod: DuckDBModule, fromPtr: number, fromLen: number, toPtr: number, toLen: number) => {\n        const from = readString(mod, fromPtr, fromLen);\n        const to = readString(mod, toPtr, toLen);\n        const handle = BROWSER_RUNTIME._files?.get(from);\n        if (handle !== undefined) {\n            BROWSER_RUNTIME._files!.delete(handle);\n            BROWSER_RUNTIME._files!.set(to, handle);\n        }\n        for (const [key, value] of BROWSER_RUNTIME._fileInfoCache?.entries() || []) {\n            if (value.dataUrl == from) {\n                BROWSER_RUNTIME._fileInfoCache.delete(key);\n                break;\n            }\n        }\n        return true;\n    },\n    removeFile: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number) => {},\n    callScalarUDF: (\n        mod: DuckDBModule,\n        response: number,\n        funcId: number,\n        descPtr: number,\n        descSize: number,\n        ptrsPtr: number,\n        ptrsSize: number,\n    ): void => {\n        udf.callScalarUDF(BROWSER_RUNTIME, mod, response, funcId, descPtr, descSize, ptrsPtr, ptrsSize);\n    },\n};\n\nexport default BROWSER_RUNTIME;\n", "import DuckDBWasm from './duckdb-mvp.js';\nimport { DuckDBBrowserBindings } from './bindings_browser_base';\nimport { DuckDBModule } from './duckdb_module';\nimport { DuckDBRuntime } from './runtime';\nimport { Logger } from '../log';\n\n/** DuckDB bindings for the browser */\nexport class DuckDB extends DuckDBBrowserBindings {\n    /** Constructor */\n    public constructor(\n        logger: Logger,\n        runtime: DuckDBRuntime,\n        mainModuleURL: string,\n        pthreadWorkerURL: string | null = null,\n    ) {\n        super(logger, runtime, mainModuleURL, pthreadWorkerURL);\n    }\n\n    /** Instantiate the bindings */\n    protected instantiateImpl(moduleOverrides: Partial<DuckDBModule>): Promise<DuckDBModule> {\n        return DuckDBWasm({\n            ...moduleOverrides,\n            instantiateWasm: this.instantiateWasm.bind(this),\n            locateFile: this.locateFile.bind(this),\n        });\n    }\n}\n", "import { DuckDBModule } from './duckdb_module';\nimport { DuckDBBindingsBase } from './bindings_base';\nimport { DuckDBRuntime } from './runtime';\nimport { LogLevel, LogTopic, LogOrigin, LogEvent } from '../log';\nimport { Logger } from '../log';\nimport { InstantiationProgress } from '.';\n\n/** DuckDB bindings for the browser */\nexport abstract class DuckDBBrowserBindings extends DuckDBBindingsBase {\n    /** The path of the wasm module */\n    protected readonly mainModuleURL: string;\n    /** The path of the pthread worker script */\n    protected readonly pthreadWorkerURL: string | null;\n\n    /** Constructor */\n    public constructor(logger: Logger, runtime: DuckDBRuntime, mainModuleURL: string, pthreadWorkerURL: string | null) {\n        super(logger, runtime);\n        this.mainModuleURL = mainModuleURL;\n        this.pthreadWorkerURL = pthreadWorkerURL;\n    }\n\n    /** Locate a file */\n    protected locateFile(path: string, prefix: string): string {\n        if (path.endsWith('.wasm')) {\n            return this.mainModuleURL;\n        }\n        if (path.endsWith('.worker.js')) {\n            if (!this.pthreadWorkerURL) {\n                throw new Error('Missing DuckDB worker URL!');\n            }\n            return this.pthreadWorkerURL!;\n        }\n        throw new Error(`WASM instantiation requested unexpected file: prefix=${prefix} path=${path}`);\n    }\n\n    /** Instantiate the wasm module */\n    protected instantiateWasm(\n        // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n        imports: any,\n        success: (instance: WebAssembly.Instance, module: WebAssembly.Module) => void,\n    ): Emscripten.WebAssemblyExports {\n        // We rely on the following here:\n        //\n        // ...when a Request object is created using the Request.Request constructor,\n        // the value of the mode property for that Request is set to cors.\n        // [ref: MDN]\n        //\n        // Cloudflare throws when mode: 'cors' is set\n        //\n        globalThis.DUCKDB_RUNTIME = this._runtime;\n        const handlers = this.onInstantiationProgress;\n\n        // Does the browser support streaming instantiation?\n        if (WebAssembly.instantiateStreaming) {\n            // Does the browser support transform streams?\n            if (typeof TransformStream === 'function') {\n                const fetchWithProgress = async () => {\n                    // Try to determine file size\n                    const request = new Request(this.mainModuleURL);\n                    const response = await fetch(request);\n                    const contentLengthHdr = response.headers.get('content-length');\n                    const contentLength = contentLengthHdr ? parseInt(contentLengthHdr, 10) || 0 : 0;\n\n                    // Transform the stream\n                    const start = new Date();\n                    const progress: InstantiationProgress = {\n                        startedAt: start,\n                        updatedAt: start,\n                        bytesTotal: contentLength || 0,\n                        bytesLoaded: 0,\n                    };\n                    const tracker = {\n                        transform(chunk: any, ctrl: TransformStreamDefaultController) {\n                            progress.bytesLoaded += chunk.byteLength;\n                            const now = new Date();\n                            if (now.getTime() - progress.updatedAt.getTime() < 20) {\n                                progress.updatedAt = now;\n                                ctrl.enqueue(chunk);\n                                return;\n                            }\n                            for (const p of handlers) {\n                                p(progress);\n                            }\n                            ctrl.enqueue(chunk);\n                        },\n                    };\n                    const ts = new TransformStream(tracker);\n                    return new Response(response.body?.pipeThrough(ts), response);\n                };\n                // Instantiate streaming\n                const response = fetchWithProgress();\n                WebAssembly.instantiateStreaming(response, imports).then(output => {\n                    success(output.instance, output.module);\n                });\n            } else {\n                console.warn('instantiating without progress handler since transform streams are unavailable');\n                const request = new Request(this.mainModuleURL);\n                WebAssembly.instantiateStreaming(fetch(request), imports).then(output => {\n                    success(output.instance, output.module);\n                });\n            }\n        } else if (typeof XMLHttpRequest == 'function') {\n            // Otherwise we fall back to XHRs\n            const xhr = new XMLHttpRequest();\n            const url = this.mainModuleURL;\n            const start = new Date();\n            const progress: InstantiationProgress = {\n                startedAt: start,\n                updatedAt: start,\n                bytesTotal: 0,\n                bytesLoaded: 0,\n            };\n            xhr.open('GET', url);\n            xhr.responseType = 'arraybuffer';\n            xhr.onerror = error => {\n                this.logger.log({\n                    timestamp: new Date(),\n                    level: LogLevel.ERROR,\n                    origin: LogOrigin.BINDINGS,\n                    topic: LogTopic.INSTANTIATE,\n                    event: LogEvent.ERROR,\n                    value: 'Failed to load WASM: ' + error,\n                });\n                throw new Error(error.toString());\n            };\n            xhr.onprogress = e => {\n                progress.bytesTotal = e.total;\n                progress.bytesLoaded = e.loaded;\n                const now = new Date();\n                if (now.getTime() - progress.updatedAt.getTime() < 20) {\n                    progress.updatedAt = now;\n                    return;\n                }\n                for (const p of handlers) {\n                    p(progress);\n                }\n            };\n            xhr.onload = () => {\n                WebAssembly.instantiate(xhr.response, imports)\n                    .then(output => {\n                        success(output.instance, output.module);\n                    })\n                    .catch(error => {\n                        this.logger.log({\n                            timestamp: new Date(),\n                            level: LogLevel.ERROR,\n                            origin: LogOrigin.BINDINGS,\n                            topic: LogTopic.INSTANTIATE,\n                            event: LogEvent.ERROR,\n                            value: 'Failed to instantiate WASM: ' + error,\n                        });\n                        throw new Error(error);\n                    });\n            };\n            xhr.send();\n        } else {\n            console.warn('instantiating with manual fetch since streaming instantiation and xhrs are unavailable');\n            const run = async () => {\n                const request = new Request(this.mainModuleURL);\n                const response = await fetch(request);\n                const buffer = await response.arrayBuffer();\n                WebAssembly.instantiate(buffer, imports).then(output => {\n                    success(output.instance, output.module);\n                });\n            };\n            run();\n        }\n        return [];\n    }\n\n    /// Instantiation must be done by the browser variants\n    protected abstract instantiateImpl(moduleOverrides: Partial<DuckDBModule>): Promise<DuckDBModule>;\n}\n", "import DuckDBWasm from './duckdb-eh.js';\nimport { DuckDBBrowserBindings } from './bindings_browser_base';\nimport { DuckDBModule } from './duckdb_module';\nimport { DuckDBRuntime } from './runtime';\nimport { Logger } from '../log';\n\n/** DuckDB bindings for the browser */\nexport class DuckDB extends DuckDBBrowserBindings {\n    /** Constructor */\n    public constructor(\n        logger: Logger,\n        runtime: DuckDBRuntime,\n        mainModuleURL: string,\n        pthreadWorkerURL: string | null = null,\n    ) {\n        super(logger, runtime, mainModuleURL, pthreadWorkerURL);\n    }\n\n    /** Instantiate the bindings */\n    protected instantiateImpl(moduleOverrides: Partial<DuckDBModule>): Promise<DuckDBModule> {\n        return DuckDBWasm({\n            ...moduleOverrides,\n            instantiateWasm: this.instantiateWasm.bind(this),\n            locateFile: this.locateFile.bind(this),\n        });\n    }\n}\n\nexport default DuckDB;\n", "export * from '../bindings';\nexport * from '../log';\nexport * from '../platform';\nexport * from '../status';\nexport * from '../version';\nexport { DuckDBDataProtocol } from '../bindings/runtime';\nexport { DEFAULT_RUNTIME } from '../bindings/runtime';\nexport { BROWSER_RUNTIME } from '../bindings/runtime_browser';\n\nimport { Logger } from '../log';\nimport { DuckDBRuntime, DuckDBBindings } from '../bindings';\nimport { DuckDBBundles, getPlatformFeatures } from '../platform';\nimport { DuckDB as DuckDBMVP } from '../bindings/bindings_browser_mvp';\nimport { DuckDB as DuckDBNext } from '../bindings/bindings_browser_eh';\n\nexport async function createDuckDB(\n    bundles: DuckDBBundles,\n    logger: Logger,\n    runtime: DuckDBRuntime,\n): Promise<DuckDBBindings> {\n    const platform = await getPlatformFeatures();\n    if (platform.wasmExceptions) {\n        if (bundles.eh) {\n            return new DuckDBNext(logger, runtime, bundles.eh!.mainModule);\n        }\n    }\n    return new DuckDBMVP(logger, runtime, bundles.mvp.mainModule);\n}\n"],
  "mappings": "s8BAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EASC,UAAY,CACX,aAEA,IAAIC,EAAQ,wBACRC,EAAS,OAAO,QAAW,SAC3BC,EAAOD,EAAS,OAAS,CAAC,EAC1BC,EAAK,sBACPD,EAAS,IAEX,IAAIE,EAAa,CAACF,GAAU,OAAO,MAAS,SACxCG,EAAU,CAACF,EAAK,sBAAwB,OAAO,SAAY,UAAY,QAAQ,UAAY,QAAQ,SAAS,MAAQ,QAAQ,MAAQ,WACpIE,EACFF,EAAO,OACEC,IACTD,EAAO,MAET,IAAIG,EAAY,CAACH,EAAK,wBAA0B,OAAOH,IAAW,UAAYA,GAAO,QACjFO,EAAM,OAAO,QAAW,YAAc,OAAO,IAC7CC,EAAe,CAACL,EAAK,2BAA6B,OAAO,YAAgB,IACzEM,EAAY,mBAAmB,MAAM,EAAE,EACvCC,EAAQ,CAAC,YAAa,QAAS,MAAO,GAAG,EACzCC,EAAQ,CAAC,GAAI,GAAI,EAAG,CAAC,EACrBC,EAAI,CACN,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UACpF,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACpF,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UACtF,EACIC,EAAe,CAAC,MAAO,QAAS,SAAU,aAAa,EAEvDC,EAAS,CAAC,GAEVX,EAAK,sBAAwB,CAAC,MAAM,WACtC,MAAM,QAAU,SAAUY,EAAK,CAC7B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,gBACjD,GAGEP,IAAiBL,EAAK,mCAAqC,CAAC,YAAY,UAC1E,YAAY,OAAS,SAAUY,EAAK,CAClC,OAAO,OAAOA,GAAQ,UAAYA,EAAI,QAAUA,EAAI,OAAO,cAAgB,WAC7E,GAGF,IAAIC,EAAqB,SAAUC,EAAYC,EAAO,CACpD,OAAO,SAAUC,EAAS,CACxB,OAAO,IAAIC,EAAOF,EAAO,EAAI,EAAE,OAAOC,CAAO,EAAEF,CAAU,EAAE,CAC7D,CACF,EAEII,EAAe,SAAUH,EAAO,CAClC,IAAII,EAASN,EAAmB,MAAOE,CAAK,EACxCb,IACFiB,EAASC,EAASD,EAAQJ,CAAK,GAEjCI,EAAO,OAAS,UAAY,CAC1B,OAAO,IAAIF,EAAOF,CAAK,CACzB,EACAI,EAAO,OAAS,SAAUH,EAAS,CACjC,OAAOG,EAAO,OAAO,EAAE,OAAOH,CAAO,CACvC,EACA,QAASK,EAAI,EAAGA,EAAIX,EAAa,OAAQ,EAAEW,EAAG,CAC5C,IAAIC,EAAOZ,EAAaW,CAAC,EACzBF,EAAOG,CAAI,EAAIT,EAAmBS,EAAMP,CAAK,CAC/C,CACA,OAAOI,CACT,EAEIC,EAAW,SAAUD,EAAQJ,EAAO,CACtC,IAAIQ,EAAS,KACTC,EAAS,KAAkB,OAC3BC,EAAYV,EAAQ,SAAW,SAC/BW,EACAF,EAAO,MAAQ,CAACxB,EAAK,yBACvB0B,EAAaF,EAAO,KAEpBE,EAAa,SAAUV,EAAS,CAC9B,OAAO,IAAIQ,EAAOR,CAAO,CAC3B,EAEF,IAAIW,EAAa,SAAUX,EAAS,CAClC,GAAI,OAAOA,GAAY,SACrB,OAAOO,EAAO,WAAWE,CAAS,EAAE,OAAOT,EAAS,MAAM,EAAE,OAAO,KAAK,EAExE,GAAIA,GAAY,KACd,MAAM,IAAI,MAAMlB,CAAK,EAKzB,OAJakB,EAAQ,cAAgB,cACjCA,EAAU,IAAI,WAAWA,CAAO,GAGhC,MAAM,QAAQA,CAAO,GAAK,YAAY,OAAOA,CAAO,GACtDA,EAAQ,cAAgBQ,EACjBD,EAAO,WAAWE,CAAS,EAAE,OAAOC,EAAWV,CAAO,CAAC,EAAE,OAAO,KAAK,EAErEG,EAAOH,CAAO,CAEzB,EACA,OAAOW,CACT,EAEIC,EAAyB,SAAUd,EAAYC,EAAO,CACxD,OAAO,SAAUc,EAAKb,EAAS,CAC7B,OAAO,IAAIc,EAAWD,EAAKd,EAAO,EAAI,EAAE,OAAOC,CAAO,EAAEF,CAAU,EAAE,CACtE,CACF,EAEIiB,EAAmB,SAAUhB,EAAO,CACtC,IAAII,EAASS,EAAuB,MAAOb,CAAK,EAChDI,EAAO,OAAS,SAAUU,EAAK,CAC7B,OAAO,IAAIC,EAAWD,EAAKd,CAAK,CAClC,EACAI,EAAO,OAAS,SAAUU,EAAKb,EAAS,CACtC,OAAOG,EAAO,OAAOU,CAAG,EAAE,OAAOb,CAAO,CAC1C,EACA,QAASK,EAAI,EAAGA,EAAIX,EAAa,OAAQ,EAAEW,EAAG,CAC5C,IAAIC,EAAOZ,EAAaW,CAAC,EACzBF,EAAOG,CAAI,EAAIM,EAAuBN,EAAMP,CAAK,CACnD,CACA,OAAOI,CACT,EAEA,SAASF,EAAOF,EAAOiB,EAAc,CAC/BA,GACFrB,EAAO,CAAC,EAAIA,EAAO,EAAE,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACvDA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAC5CA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAC9CA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAI,EACtD,KAAK,OAASA,GAEd,KAAK,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAG9DI,GACF,KAAK,GAAK,WACV,KAAK,GAAK,UACV,KAAK,GAAK,UACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,aAEV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,UACV,KAAK,GAAK,YAGZ,KAAK,MAAQ,KAAK,MAAQ,KAAK,MAAQ,KAAK,OAAS,EACrD,KAAK,UAAY,KAAK,OAAS,GAC/B,KAAK,MAAQ,GACb,KAAK,MAAQA,CACf,CAEAE,EAAO,UAAU,OAAS,SAAUD,EAAS,CAC3C,GAAI,MAAK,UAGT,KAAIiB,EAAWX,EAAO,OAAON,EAC7B,GAAIM,IAAS,SAAU,CACrB,GAAIA,IAAS,SAAU,CACrB,GAAIN,IAAY,KACd,MAAM,IAAI,MAAMlB,CAAK,EAChB,GAAIO,GAAgBW,EAAQ,cAAgB,YACjDA,EAAU,IAAI,WAAWA,CAAO,UACvB,CAAC,MAAM,QAAQA,CAAO,IAC3B,CAACX,GAAgB,CAAC,YAAY,OAAOW,CAAO,GAC9C,MAAM,IAAI,MAAMlB,CAAK,CAG3B,KACE,OAAM,IAAI,MAAMA,CAAK,EAEvBmC,EAAY,EACd,CAEA,QADIC,EAAMC,EAAQ,EAAGd,EAAGe,EAASpB,EAAQ,OAAQL,EAAS,KAAK,OACxDwB,EAAQC,GAAQ,CAUrB,GATI,KAAK,SACP,KAAK,OAAS,GACdzB,EAAO,CAAC,EAAI,KAAK,MACjB,KAAK,MAAQA,EAAO,EAAE,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EACxDA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAC5CA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAC9CA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAI,GAGpDsB,EACF,IAAKZ,EAAI,KAAK,MAAOc,EAAQC,GAAUf,EAAI,GAAI,EAAEc,EAC/CxB,EAAOU,IAAM,CAAC,GAAKL,EAAQmB,CAAK,GAAK3B,EAAMa,IAAM,CAAC,MAGpD,KAAKA,EAAI,KAAK,MAAOc,EAAQC,GAAUf,EAAI,GAAI,EAAEc,EAC/CD,EAAOlB,EAAQ,WAAWmB,CAAK,EAC3BD,EAAO,IACTvB,EAAOU,IAAM,CAAC,GAAKa,GAAQ1B,EAAMa,IAAM,CAAC,EAC/Ba,EAAO,MAChBvB,EAAOU,IAAM,CAAC,IAAM,IAAQa,IAAS,IAAO1B,EAAMa,IAAM,CAAC,EACzDV,EAAOU,IAAM,CAAC,IAAM,IAAQa,EAAO,KAAU1B,EAAMa,IAAM,CAAC,GACjDa,EAAO,OAAUA,GAAQ,OAClCvB,EAAOU,IAAM,CAAC,IAAM,IAAQa,IAAS,KAAQ1B,EAAMa,IAAM,CAAC,EAC1DV,EAAOU,IAAM,CAAC,IAAM,IAASa,IAAS,EAAK,KAAU1B,EAAMa,IAAM,CAAC,EAClEV,EAAOU,IAAM,CAAC,IAAM,IAAQa,EAAO,KAAU1B,EAAMa,IAAM,CAAC,IAE1Da,EAAO,QAAaA,EAAO,OAAU,GAAOlB,EAAQ,WAAW,EAAEmB,CAAK,EAAI,MAC1ExB,EAAOU,IAAM,CAAC,IAAM,IAAQa,IAAS,KAAQ1B,EAAMa,IAAM,CAAC,EAC1DV,EAAOU,IAAM,CAAC,IAAM,IAASa,IAAS,GAAM,KAAU1B,EAAMa,IAAM,CAAC,EACnEV,EAAOU,IAAM,CAAC,IAAM,IAASa,IAAS,EAAK,KAAU1B,EAAMa,IAAM,CAAC,EAClEV,EAAOU,IAAM,CAAC,IAAM,IAAQa,EAAO,KAAU1B,EAAMa,IAAM,CAAC,GAKhE,KAAK,cAAgBA,EACrB,KAAK,OAASA,EAAI,KAAK,MACnBA,GAAK,IACP,KAAK,MAAQV,EAAO,EAAE,EACtB,KAAK,MAAQU,EAAI,GACjB,KAAK,KAAK,EACV,KAAK,OAAS,IAEd,KAAK,MAAQA,CAEjB,CACA,OAAI,KAAK,MAAQ,aACf,KAAK,QAAU,KAAK,MAAQ,YAAc,EAC1C,KAAK,MAAQ,KAAK,MAAQ,YAErB,KACT,EAEAJ,EAAO,UAAU,SAAW,UAAY,CACtC,GAAI,MAAK,UAGT,MAAK,UAAY,GACjB,IAAIN,EAAS,KAAK,OAAQU,EAAI,KAAK,cACnCV,EAAO,EAAE,EAAI,KAAK,MAClBA,EAAOU,IAAM,CAAC,GAAKd,EAAMc,EAAI,CAAC,EAC9B,KAAK,MAAQV,EAAO,EAAE,EAClBU,GAAK,KACF,KAAK,QACR,KAAK,KAAK,EAEZV,EAAO,CAAC,EAAI,KAAK,MACjBA,EAAO,EAAE,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAC3CA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAC5CA,EAAO,CAAC,EAAIA,EAAO,CAAC,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAC9CA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAIA,EAAO,EAAE,EAAI,GAExDA,EAAO,EAAE,EAAI,KAAK,QAAU,EAAI,KAAK,QAAU,GAC/CA,EAAO,EAAE,EAAI,KAAK,OAAS,EAC3B,KAAK,KAAK,EACZ,EAEAM,EAAO,UAAU,KAAO,UAAY,CAClC,IAAIoB,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIC,EAAI,KAAK,GAAIC,EAAI,KAAK,GACzFC,EAAI,KAAK,GAAIjC,EAAS,KAAK,OAAQkC,EAAGC,EAAIC,EAAIC,EAAKC,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,EAAIC,EAE7E,IAAKV,EAAI,GAAIA,EAAI,GAAI,EAAEA,EAErBI,EAAKtC,EAAOkC,EAAI,EAAE,EAClBC,GAAOG,IAAO,EAAMA,GAAM,KAASA,IAAO,GAAOA,GAAM,IAAQA,IAAO,EACtEA,EAAKtC,EAAOkC,EAAI,CAAC,EACjBE,GAAOE,IAAO,GAAOA,GAAM,KAASA,IAAO,GAAOA,GAAM,IAAQA,IAAO,GACvEtC,EAAOkC,CAAC,EAAIlC,EAAOkC,EAAI,EAAE,EAAIC,EAAKnC,EAAOkC,EAAI,CAAC,EAAIE,GAAM,EAI1D,IADAQ,EAAKjB,EAAIC,EACJM,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACnB,KAAK,OACH,KAAK,OACPO,EAAK,OACLH,EAAKtC,EAAO,CAAC,EAAI,WACjBiC,EAAIK,EAAK,WAAa,EACtBT,EAAIS,EAAK,UAAY,IAErBG,EAAK,UACLH,EAAKtC,EAAO,CAAC,EAAI,UACjBiC,EAAIK,EAAK,YAAc,EACvBT,EAAIS,EAAK,WAAa,GAExB,KAAK,MAAQ,KAEbH,GAAOT,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAC9EU,GAAON,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,GAC9EW,EAAKf,EAAIC,EACTU,EAAMI,EAAMf,EAAIE,EAAKgB,EACrBJ,EAAMV,EAAIC,EAAM,CAACD,EAAIE,EACrBM,EAAKL,EAAIG,EAAKI,EAAK1C,EAAEoC,CAAC,EAAIlC,EAAOkC,CAAC,EAClCK,EAAKJ,EAAKE,EACVJ,EAAIJ,EAAIS,GAAM,EACdT,EAAIS,EAAKC,GAAM,GAEjBJ,GAAON,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAC9EO,GAAOH,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,GAC9ES,GAAKb,EAAIH,EACTW,EAAMK,GAAMb,EAAIF,EAAKc,EACrBD,EAAMP,EAAIH,EAAM,CAACG,EAAIF,EACrBO,EAAKN,EAAII,EAAKI,EAAK1C,EAAEoC,EAAI,CAAC,EAAIlC,EAAOkC,EAAI,CAAC,EAC1CK,EAAKJ,EAAKE,EACVL,EAAIJ,EAAIU,GAAM,EACdV,EAAIU,EAAKC,GAAM,EACfJ,GAAOP,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAC9EQ,GAAOJ,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,GAC9EW,EAAKf,EAAIC,EACTQ,EAAMM,EAAMf,EAAIF,EAAKgB,GACrBF,EAAMR,EAAIC,EAAM,CAACD,EAAIF,EACrBQ,EAAKP,EAAIK,EAAKI,EAAK1C,EAAEoC,EAAI,CAAC,EAAIlC,EAAOkC,EAAI,CAAC,EAC1CK,EAAKJ,EAAKE,EACVN,EAAIJ,EAAIW,GAAM,EACdX,EAAIW,EAAKC,GAAM,EACfJ,GAAOR,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,IAC9ES,GAAOL,IAAM,EAAMA,GAAK,KAASA,IAAM,GAAOA,GAAK,KAASA,IAAM,GAAOA,GAAK,GAC9Ea,EAAKjB,EAAIC,EACTS,EAAMO,EAAMjB,EAAIE,EAAKc,EACrBH,EAAMT,EAAIC,EAAM,CAACD,EAAIE,EACrBK,EAAKR,EAAIM,EAAKI,EAAK1C,EAAEoC,EAAI,CAAC,EAAIlC,EAAOkC,EAAI,CAAC,EAC1CK,EAAKJ,EAAKE,EACVP,EAAIJ,EAAIY,GAAM,EACdZ,EAAIY,EAAKC,GAAM,EACf,KAAK,oBAAsB,GAG7B,KAAK,GAAK,KAAK,GAAKb,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,EACzB,KAAK,GAAK,KAAK,GAAKC,GAAK,CAC3B,EAEA3B,EAAO,UAAU,IAAM,UAAY,CACjC,KAAK,SAAS,EAEd,IAAIuC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAClFC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAEtBC,EAAM1D,EAAWkD,IAAO,GAAM,EAAI,EAAIlD,EAAWkD,IAAO,GAAM,EAAI,EACpElD,EAAWkD,IAAO,GAAM,EAAI,EAAIlD,EAAWkD,IAAO,GAAM,EAAI,EAC5DlD,EAAWkD,IAAO,GAAM,EAAI,EAAIlD,EAAWkD,IAAO,EAAK,EAAI,EAC3DlD,EAAWkD,IAAO,EAAK,EAAI,EAAIlD,EAAUkD,EAAK,EAAI,EAClDlD,EAAWmD,IAAO,GAAM,EAAI,EAAInD,EAAWmD,IAAO,GAAM,EAAI,EAC5DnD,EAAWmD,IAAO,GAAM,EAAI,EAAInD,EAAWmD,IAAO,GAAM,EAAI,EAC5DnD,EAAWmD,IAAO,GAAM,EAAI,EAAInD,EAAWmD,IAAO,EAAK,EAAI,EAC3DnD,EAAWmD,IAAO,EAAK,EAAI,EAAInD,EAAUmD,EAAK,EAAI,EAClDnD,EAAWoD,IAAO,GAAM,EAAI,EAAIpD,EAAWoD,IAAO,GAAM,EAAI,EAC5DpD,EAAWoD,IAAO,GAAM,EAAI,EAAIpD,EAAWoD,IAAO,GAAM,EAAI,EAC5DpD,EAAWoD,IAAO,GAAM,EAAI,EAAIpD,EAAWoD,IAAO,EAAK,EAAI,EAC3DpD,EAAWoD,IAAO,EAAK,EAAI,EAAIpD,EAAUoD,EAAK,EAAI,EAClDpD,EAAWqD,IAAO,GAAM,EAAI,EAAIrD,EAAWqD,IAAO,GAAM,EAAI,EAC5DrD,EAAWqD,IAAO,GAAM,EAAI,EAAIrD,EAAWqD,IAAO,GAAM,EAAI,EAC5DrD,EAAWqD,IAAO,GAAM,EAAI,EAAIrD,EAAWqD,IAAO,EAAK,EAAI,EAC3DrD,EAAWqD,IAAO,EAAK,EAAI,EAAIrD,EAAUqD,EAAK,EAAI,EAClDrD,EAAWsD,IAAO,GAAM,EAAI,EAAItD,EAAWsD,IAAO,GAAM,EAAI,EAC5DtD,EAAWsD,IAAO,GAAM,EAAI,EAAItD,EAAWsD,IAAO,GAAM,EAAI,EAC5DtD,EAAWsD,IAAO,GAAM,EAAI,EAAItD,EAAWsD,IAAO,EAAK,EAAI,EAC3DtD,EAAWsD,IAAO,EAAK,EAAI,EAAItD,EAAUsD,EAAK,EAAI,EAClDtD,EAAWuD,IAAO,GAAM,EAAI,EAAIvD,EAAWuD,IAAO,GAAM,EAAI,EAC5DvD,EAAWuD,IAAO,GAAM,EAAI,EAAIvD,EAAWuD,IAAO,GAAM,EAAI,EAC5DvD,EAAWuD,IAAO,GAAM,EAAI,EAAIvD,EAAWuD,IAAO,EAAK,EAAI,EAC3DvD,EAAWuD,IAAO,EAAK,EAAI,EAAIvD,EAAUuD,EAAK,EAAI,EAClDvD,EAAWwD,IAAO,GAAM,EAAI,EAAIxD,EAAWwD,IAAO,GAAM,EAAI,EAC5DxD,EAAWwD,IAAO,GAAM,EAAI,EAAIxD,EAAWwD,IAAO,GAAM,EAAI,EAC5DxD,EAAWwD,IAAO,GAAM,EAAI,EAAIxD,EAAWwD,IAAO,EAAK,EAAI,EAC3DxD,EAAWwD,IAAO,EAAK,EAAI,EAAIxD,EAAUwD,EAAK,EAAI,EACpD,OAAK,KAAK,QACRE,GAAO1D,EAAWyD,IAAO,GAAM,EAAI,EAAIzD,EAAWyD,IAAO,GAAM,EAAI,EACjEzD,EAAWyD,IAAO,GAAM,EAAI,EAAIzD,EAAWyD,IAAO,GAAM,EAAI,EAC5DzD,EAAWyD,IAAO,GAAM,EAAI,EAAIzD,EAAWyD,IAAO,EAAK,EAAI,EAC3DzD,EAAWyD,IAAO,EAAK,EAAI,EAAIzD,EAAUyD,EAAK,EAAI,GAE/CC,CACT,EAEA/C,EAAO,UAAU,SAAWA,EAAO,UAAU,IAE7CA,EAAO,UAAU,OAAS,UAAY,CACpC,KAAK,SAAS,EAEd,IAAIuC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAClFC,EAAK,KAAK,GAAIC,EAAK,KAAK,GAEtBE,EAAM,CACPT,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,IAC/DC,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,GAClE,EACA,OAAK,KAAK,OACRG,EAAI,KAAMF,IAAO,GAAM,IAAOA,IAAO,GAAM,IAAOA,IAAO,EAAK,IAAMA,EAAK,GAAI,EAExEE,CACT,EAEAhD,EAAO,UAAU,MAAQA,EAAO,UAAU,OAE1CA,EAAO,UAAU,YAAc,UAAY,CACzC,KAAK,SAAS,EAEd,IAAIiD,EAAS,IAAI,YAAY,KAAK,MAAQ,GAAK,EAAE,EAC7CC,EAAW,IAAI,SAASD,CAAM,EAClC,OAAAC,EAAS,UAAU,EAAG,KAAK,EAAE,EAC7BA,EAAS,UAAU,EAAG,KAAK,EAAE,EAC7BA,EAAS,UAAU,EAAG,KAAK,EAAE,EAC7BA,EAAS,UAAU,GAAI,KAAK,EAAE,EAC9BA,EAAS,UAAU,GAAI,KAAK,EAAE,EAC9BA,EAAS,UAAU,GAAI,KAAK,EAAE,EAC9BA,EAAS,UAAU,GAAI,KAAK,EAAE,EACzB,KAAK,OACRA,EAAS,UAAU,GAAI,KAAK,EAAE,EAEzBD,CACT,EAEA,SAASpC,EAAWD,EAAKd,EAAOiB,EAAc,CAC5C,IAAIX,EAAGC,EAAO,OAAOO,EACrB,GAAIP,IAAS,SAAU,CACrB,IAAI8C,EAAQ,CAAC,EAAGhC,EAASP,EAAI,OAAQM,EAAQ,EAAGD,EAChD,IAAKb,EAAI,EAAGA,EAAIe,EAAQ,EAAEf,EACxBa,EAAOL,EAAI,WAAWR,CAAC,EACnBa,EAAO,IACTkC,EAAMjC,GAAO,EAAID,EACRA,EAAO,MAChBkC,EAAMjC,GAAO,EAAK,IAAQD,IAAS,EACnCkC,EAAMjC,GAAO,EAAK,IAAQD,EAAO,IACxBA,EAAO,OAAUA,GAAQ,OAClCkC,EAAMjC,GAAO,EAAK,IAAQD,IAAS,GACnCkC,EAAMjC,GAAO,EAAK,IAASD,IAAS,EAAK,GACzCkC,EAAMjC,GAAO,EAAK,IAAQD,EAAO,KAEjCA,EAAO,QAAaA,EAAO,OAAU,GAAOL,EAAI,WAAW,EAAER,CAAC,EAAI,MAClE+C,EAAMjC,GAAO,EAAK,IAAQD,IAAS,GACnCkC,EAAMjC,GAAO,EAAK,IAASD,IAAS,GAAM,GAC1CkC,EAAMjC,GAAO,EAAK,IAASD,IAAS,EAAK,GACzCkC,EAAMjC,GAAO,EAAK,IAAQD,EAAO,IAGrCL,EAAMuC,CACR,SACM9C,IAAS,SAAU,CACrB,GAAIO,IAAQ,KACV,MAAM,IAAI,MAAM/B,CAAK,EAChB,GAAIO,GAAgBwB,EAAI,cAAgB,YAC7CA,EAAM,IAAI,WAAWA,CAAG,UACf,CAAC,MAAM,QAAQA,CAAG,IACvB,CAACxB,GAAgB,CAAC,YAAY,OAAOwB,CAAG,GAC1C,MAAM,IAAI,MAAM/B,CAAK,CAG3B,KACE,OAAM,IAAI,MAAMA,CAAK,EAIrB+B,EAAI,OAAS,KACfA,EAAO,IAAIZ,EAAOF,EAAO,EAAI,EAAG,OAAOc,CAAG,EAAE,MAAM,GAGpD,IAAIwC,EAAU,CAAC,EAAGC,EAAU,CAAC,EAC7B,IAAKjD,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG,CACvB,IAAIiB,EAAIT,EAAIR,CAAC,GAAK,EAClBgD,EAAQhD,CAAC,EAAI,GAAOiB,EACpBgC,EAAQjD,CAAC,EAAI,GAAOiB,CACtB,CAEArB,EAAO,KAAK,KAAMF,EAAOiB,CAAY,EAErC,KAAK,OAAOsC,CAAO,EACnB,KAAK,QAAUD,EACf,KAAK,MAAQ,GACb,KAAK,aAAerC,CACtB,CACAF,EAAW,UAAY,IAAIb,EAE3Ba,EAAW,UAAU,SAAW,UAAY,CAE1C,GADAb,EAAO,UAAU,SAAS,KAAK,IAAI,EAC/B,KAAK,MAAO,CACd,KAAK,MAAQ,GACb,IAAIsD,EAAY,KAAK,MAAM,EAC3BtD,EAAO,KAAK,KAAM,KAAK,MAAO,KAAK,YAAY,EAC/C,KAAK,OAAO,KAAK,OAAO,EACxB,KAAK,OAAOsD,CAAS,EACrBtD,EAAO,UAAU,SAAS,KAAK,IAAI,CACrC,CACF,EAEA,IAAIrB,EAAUsB,EAAa,EAC3BtB,EAAQ,OAASA,EACjBA,EAAQ,OAASsB,EAAa,EAAI,EAClCtB,EAAQ,OAAO,KAAOmC,EAAiB,EACvCnC,EAAQ,OAAO,KAAOmC,EAAiB,EAAI,EAEvC5B,EACFN,GAAO,QAAUD,GAEjBI,EAAK,OAASJ,EAAQ,OACtBI,EAAK,OAASJ,EAAQ,OAClBQ,GACF,OAAO,UAAY,CACjB,OAAOR,CACT,CAAC,EAGP,GAAG,0DC7gBH,IAAA4E,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEAA,GAAO,QAAU,UAAY,CAC3B,MAAM,IAAI,MACR,uFAEF,CACF,ICPA,IAAAC,GAAAC,GAAA,oCAAI,QAAU,IAAM,CAApB,IAAAC,EACI,IAAI,YAAc,OAAO,SAAY,KAAcA,EAAA,SAAS,gBAAT,YAAAA,EAAwB,IAAM,OACjF,OAAI,OAAO,WAAc,MAAa,YAAc,aAAe,YAE/D,SAAS,UAAY,CAAC,EAAG,CACrB,IAAI,UAEA,OAAS,UACT,oBAAqB,mBACrB,aAAe,IAAI,QAAQ,CAACC,EAASC,IAAW,CAChD,oBAAsBD,EACtB,mBAAqBC,CACzB,CAAC,EACG,mBAAqB,OAAO,QAAU,SACtC,sBAAwB,OAAO,kBAAqB,IACpD,oBAAsB,OAAO,SAAW,UAAY,OAAO,QAAQ,UAAY,UAAY,OAAO,QAAQ,SAAS,MAAQ,UAAY,QAAQ,MAAQ,WACvJ,qBAAuB,CAAC,oBAAsB,CAAC,qBAAuB,CAAC,sBAEvE,gBAAkB,OAAO,OAAO,CAAC,EAAG,MAAM,EAC1C,WAAa,CAAC,EACd,YAAc,iBACd,MAAQ,CAACC,EAAQC,IAAY,CAC7B,MAAMA,CACV,EACI,gBAAkB,GAEtB,SAAS,WAAWC,EAAM,CACtB,OAAI,OAAO,WACA,OAAO,WAAcA,EAAM,eAAe,EAE9C,gBAAkBA,CAC7B,CACA,IAAI,UAAW,WACf,GAAI,oBAAqB,CACrB,IAAI,GAAK,KACL,SAAW,KACf,gBAAkB,UAAY,IAC9B,WAAaC,GAAY,CACrBA,EAAW,UAAUA,CAAQ,EAAI,IAAI,IAAIA,CAAQ,EAAI,SAAS,UAAUA,CAAQ,EAChF,IAAIC,EAAM,GAAG,aAAaD,CAAQ,EAClC,OAAOC,CACX,EACA,UAAY,CAACD,EAAUE,EAAS,MAC5BF,EAAW,UAAUA,CAAQ,EAAI,IAAI,IAAIA,CAAQ,EAAI,SAAS,UAAUA,CAAQ,EACzE,IAAI,QAAQ,CAACL,EAASC,IAAW,CACpC,GAAG,SAASI,EAAUE,EAAS,OAAY,OAAQ,CAACC,EAAKC,IAAS,CAC1DD,EAAKP,EAAOO,CAAG,EACdR,EAAQO,EAASE,EAAK,OAASA,CAAI,CAC5C,CAAC,CACL,CAAC,GAED,CAAC,OAAO,aAAkB,QAAQ,KAAK,OAAS,IAChD,YAAc,QAAQ,KAAK,CAAC,EAAE,QAAQ,MAAO,GAAG,GAEpD,WAAa,QAAQ,KAAK,MAAM,CAAC,EACjC,MAAQ,CAACP,EAAQC,IAAY,CACzB,cAAQ,SAAWD,EACbC,CACV,CACJ,MAAW,oBAAsB,yBACzB,sBACA,gBAAkB,KAAK,SAAS,KACzB,OAAO,SAAY,KAAe,SAAS,gBAClD,gBAAkB,SAAS,cAAc,KAEzC,cACA,gBAAkB,aAElB,gBAAgB,WAAW,OAAO,EAClC,gBAAkB,GAElB,gBAAkB,gBAAgB,OAAO,EAAG,gBAAgB,QAAQ,SAAU,EAAE,EAAE,YAAY,GAAG,EAAI,CAAC,EAElG,wBACA,WAAaO,GAAO,CAChB,IAAIC,EAAM,IAAI,eACd,OAAAA,EAAI,KAAK,MAAOD,EAAK,EAAK,EAC1BC,EAAI,aAAe,cACnBA,EAAI,KAAK,IAAI,EACN,IAAI,WAAWA,EAAI,QAAQ,CACtC,GAEJ,UAAYD,GAAO,MAAMA,EAAK,CAC1B,YAAa,aACjB,CAAC,EAAE,KAAKE,GACAA,EAAS,GACFA,EAAS,YAAY,EAEzB,QAAQ,OAAO,IAAI,MAAMA,EAAS,OAAS,MAAQA,EAAS,GAAG,CAAC,CAC1E,GAGT,IAAI,IAAM,OAAO,OAAY,QAAQ,IAAI,KAAK,OAAO,EACjD,IAAM,OAAO,UAAe,QAAQ,MAAM,KAAK,OAAO,EAC1D,OAAO,OAAO,OAAQ,eAAe,EACrC,gBAAkB,KACd,OAAO,YAAc,WAAa,OAAO,WACzC,OAAO,cAAgB,YAAc,OAAO,aAChD,IAAI,iBAAmB,OAAO,kBAAuB,CAAC,EAClD,WAAa,OAAO,WACpB,WACA,MAAQ,GACR,WAEJ,SAAS,OAAOC,EAAWC,EAAM,CACxBD,GACD,MAAMC,CAAI,CAElB,CACA,IAAI,KAAM,MAAO,OAAQ,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAEpE,SAAS,mBAAoB,CACzB,IAAIC,EAAI,WAAW,OACnB,OAAO,MAAW,MAAQ,IAAI,UAAUA,CAAC,EACzC,OAAO,OAAY,OAAS,IAAI,WAAWA,CAAC,EAC5C,OAAO,OAAY,OAAS,IAAI,WAAWA,CAAC,EAC5C,OAAO,QAAa,QAAU,IAAI,YAAYA,CAAC,EAC/C,OAAO,OAAY,OAAS,IAAI,WAAWA,CAAC,EAC5C,OAAO,QAAa,QAAU,IAAI,YAAYA,CAAC,EAC/C,OAAO,QAAa,QAAU,IAAI,aAAaA,CAAC,EAChD,OAAO,QAAa,QAAU,IAAI,aAAaA,CAAC,CACpD,CACA,GAAI,OAAO,WACP,WAAa,OAAO,eACjB,CACH,IAAI,eAAiB,OAAO,gBAAqB,SACjD,WAAa,IAAI,YAAY,OAAO,CAChC,QAAS,eAAiB,MAC1B,QAAS,KACb,CAAC,CACL,CACA,kBAAkB,EAClB,IAAI,aAAe,CAAC,EAChB,WAAa,CAAC,EACd,WAAa,CAAC,EACd,WAAa,CAAC,EACd,cAAgB,CAAC,EACjB,gBAAkB,CAAC,EACnB,mBAAqB,GAEzB,SAAS,QAAS,CACd,GAAI,OAAO,OAEP,IADI,OAAO,OAAO,QAAa,aAAY,OAAO,OAAY,CAAC,OAAO,MAAS,GACxE,OAAO,OAAU,QACpB,YAAY,OAAO,OAAU,MAAM,CAAC,EAG5C,qBAAqB,YAAY,CACrC,CAEA,SAAS,aAAc,CACnB,mBAAqB,GACrB,qBAAqB,eAAe,EAChC,CAAC,OAAO,UAAe,CAAC,GAAG,aAAa,GAAG,KAAK,EACpD,GAAG,kBAAoB,GACvB,IAAI,KAAK,EACT,OAAO,KAAO,GAAG,MAAM,OAAQ,CAAC,EAAG,IAAI,EACvC,OAAO,KAAO,GAAG,MAAM,OAAQ,CAAC,EAAG,IAAI,EACvC,qBAAqB,UAAU,CACnC,CAEA,SAAS,SAAU,CACf,qBAAqB,UAAU,CACnC,CAEA,SAAS,SAAU,CACf,GAAI,OAAO,QAEP,IADI,OAAO,OAAO,SAAc,aAAY,OAAO,QAAa,CAAC,OAAO,OAAU,GAC3E,OAAO,QAAW,QACrB,aAAa,OAAO,QAAW,MAAM,CAAC,EAG9C,qBAAqB,aAAa,CACtC,CAEA,SAAS,YAAYC,EAAI,CACrB,aAAa,QAAQA,CAAE,CAC3B,CAEA,SAAS,UAAUA,EAAI,CACnB,WAAW,QAAQA,CAAE,CACzB,CAEA,SAAS,aAAaA,EAAI,CACtB,WAAW,QAAQA,CAAE,CACzB,CAEA,SAAS,UAAUA,EAAI,CAAC,CAExB,SAAS,aAAaA,EAAI,CACtB,cAAc,QAAQA,CAAE,CAC5B,CACA,IAAI,gBAAkB,EAClB,qBAAuB,KACvB,sBAAwB,KAE5B,SAAS,uBAAuBC,EAAI,CAChC,OAAOA,CACX,CAEA,SAAS,iBAAiBA,EAAI,CAxM1C,IAAAlB,EAyMgB,mBACAA,EAAA,OAAO,yBAAP,MAAAA,EAAA,YAAmC,gBACvC,CAEA,SAAS,oBAAoBkB,EAAI,CA7M7C,IAAAlB,EAgNgB,GAFA,mBACAA,EAAA,OAAO,yBAAP,MAAAA,EAAA,YAAmC,iBAC/B,iBAAmB,IACf,uBAAyB,OACzB,cAAc,oBAAoB,EAClC,qBAAuB,MAEvB,uBAAuB,CACvB,IAAImB,EAAW,sBACf,sBAAwB,KACxBA,EAAS,CACb,CAER,CAEA,SAAS,MAAMC,EAAM,CA7NjC,IAAApB,GA8NgBA,EAAA,OAAO,UAAP,MAAAA,EAAA,YAAoBoB,GACpBA,EAAO,WAAaA,EAAO,IAC3B,IAAIA,CAAI,EACR,MAAQ,GACRA,GAAQ,2CACR,IAAIC,EAAI,IAAI,YAAY,aAAaD,CAAI,EACzC,yBAAmBC,CAAC,EACdA,CACV,CACA,IAAI,cAAgB,wCAChB,UAAYf,GAAYA,EAAS,WAAW,aAAa,EACzD,UAAYA,GAAYA,EAAS,WAAW,SAAS,EAEzD,SAAS,gBAAiB,CACtB,IAAIgB,EAAI,oBACR,OAAK,UAAUA,CAAC,EAGTA,EAFI,WAAWA,CAAC,CAG3B,CACA,IAAI,eAEJ,SAAS,cAAcC,EAAM,CACzB,GAAIA,GAAQ,gBAAkB,WAC1B,OAAO,IAAI,WAAW,UAAU,EAEpC,GAAI,WACA,OAAO,WAAWA,CAAI,EAE1B,KAAM,iDACV,CAEA,SAAS,iBAAiBC,EAAY,CAClC,OAAK,WAGE,QAAQ,QAAQ,EAAE,KAAK,IAAM,cAAcA,CAAU,CAAC,EAFlD,UAAUA,CAAU,EAAE,KAAKX,GAAY,IAAI,WAAWA,CAAQ,EAAG,IAAM,cAAcW,CAAU,CAAC,CAG/G,CAEA,SAAS,uBAAuBA,EAAYC,EAASC,EAAU,CAC3D,OAAO,iBAAiBF,CAAU,EAAE,KAAKhB,GAAU,YAAY,YAAYA,EAAQiB,CAAO,CAAC,EAAE,KAAKC,EAAUC,GAAU,CAClH,IAAI,0CAA0C,OAAAA,EAAQ,EACtD,MAAMA,CAAM,CAChB,CAAC,CACL,CAEA,SAAS,iBAAiBnB,EAAQgB,EAAYC,EAASN,EAAU,CAC7D,MAAI,CAACX,GAAU,OAAO,YAAY,sBAAwB,YAAc,CAAC,UAAUgB,CAAU,GAAK,CAAC,qBAAuB,OAAO,OAAS,WAC/H,MAAMA,EAAY,CACrB,YAAa,aACjB,CAAC,EAAE,KAAKX,GAAY,CAChB,IAAIe,EAAS,YAAY,qBAAqBf,EAAUY,CAAO,EAC/D,OAAOG,EAAO,KAAKT,EAAU,SAASQ,EAAQ,CAC1C,WAAI,kCAAkC,OAAAA,EAAQ,EAC9C,IAAI,2CAA2C,EACxC,uBAAuBH,EAAYC,EAASN,CAAQ,CAC/D,CAAC,CACL,CAAC,EAEE,uBAAuBK,EAAYC,EAASN,CAAQ,CAC/D,CAEA,SAAS,gBAAiB,CACtB,MAAO,CACH,IAAK,YACL,uBAAwB,YACxB,UAAW,IAAI,MAAM,YAAa,UAAU,EAC5C,WAAY,IAAI,MAAM,YAAa,UAAU,CACjD,CACJ,CAEA,SAAS,YAAa,CAClB,IAAIU,EAAO,eAAe,EAE1B,SAASC,EAAgBC,EAAUC,EAAQ,CACvC,YAAcD,EAAS,QACvB,YAAc,gBAAgB,YAAa,IAAI,EAC/C,IAAIE,EAAW,kBAAkBD,CAAM,EACvC,OAAIC,EAAS,gBACT,iBAAmBA,EAAS,cAAc,OAAO,gBAAgB,GAErE,gBAAgB,YAAa,MAAM,EACnC,KAAK,KAAK,EACV,WAAW,EACX,YAAc,0BAA0B,WAAW,EACnD,UAAU,YAAY,iBAAoB,EAC1C,gBAAgB,KAAK,YAAY,wBAA2B,EAC5D,oBAAoB,kBAAkB,EAC/B,WACX,CACA,iBAAiB,kBAAkB,EAEnC,SAASC,EAA2BN,EAAQ,CACxCE,EAAgBF,EAAO,SAAaA,EAAO,MAAS,CACxD,CACA,GAAI,OAAO,gBACP,GAAI,CACA,OAAO,OAAO,gBAAmBC,EAAMC,CAAe,CAC1D,OAAST,EAAG,CACR,IAAI,sDAAsD,OAAAA,EAAG,EAC7D,mBAAmBA,CAAC,CACxB,CAEJ,6CAAmB,eAAe,GAClC,iBAAiB,WAAY,eAAgBQ,EAAMK,CAA0B,EAAE,MAAM,kBAAkB,EAChG,CAAC,CACZ,CACA,IAAI,WACA,QACA,WAAa,CACb,QAAS,CAACC,EAAIC,EAAIC,EAAIC,IAAO,CACzB,IAAI3B,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAC1B,MAAO,GAEX,IAAMvB,EAAM,IAAI,eAIhBA,EAAI,KAAK,aAAa0B,CAAE,EAAG3B,EAAK,EAAK,EACrCC,EAAI,aAAe,cAGnB,QAFI2B,EAAI,EACJC,EAAMJ,EACHG,EAAIC,EAAM,GAAG,CAChB,IAAIC,EAAO,OAAOJ,EAAK,EAAIE,IAAM,CAAC,EAC9BG,EAAO,OAAOL,EAAK,EAAIE,EAAI,IAAM,CAAC,EACtC,GAAI,CACA,IAAII,EAAI,UAAU,aAAaF,CAAI,CAAC,EAChCE,IAAM,SAAQA,EAAI,mBAClBA,IAAM,eAAcA,EAAI,gBACxBA,IAAM,gBACN/B,EAAI,iBAAiB+B,EAAG,aAAaD,CAAI,CAAC,EAE1C9B,EAAI,iBAAiB+B,EAAG,UAAU,aAAaD,CAAI,CAAC,CAAC,CAE7D,OAASE,EAAO,CACZ,QAAQ,KAAK,2DAA4DA,CAAK,CAClF,CACAL,GAAK,CACT,CACA,GAAI,CACA3B,EAAI,KAAK,IAAI,CACjB,OAAQS,EAAA,CACJ,MAAO,EACX,CACA,GAAIT,EAAI,QAAU,IAAK,MAAO,GAK9B,QAJIiC,EAAajC,EAAI,SACjB4B,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7B,OAAAA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACjCA,CACX,EACA,QAAS,CAACX,EAAIC,EAAIC,EAAIC,EAAIY,EAAIC,IAAO,CACjC,IAAIxC,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAC1B,MAAO,GAEX,IAAMvB,EAAM,IAAI,eAIhBA,EAAI,KAAK,aAAa0B,CAAE,EAAG3B,EAAK,EAAK,EACrCC,EAAI,aAAe,cAGnB,QAFI2B,EAAI,EACJC,EAAMJ,EACHG,EAAIC,EAAM,GAAG,CAChB,IAAIC,EAAO,OAAOJ,EAAK,EAAIE,IAAM,CAAC,EAC9BG,EAAO,OAAOL,EAAK,EAAIE,EAAI,IAAM,CAAC,EACtC,GAAI,CACA,IAAII,EAAI,UAAU,aAAaF,CAAI,CAAC,EAChCE,IAAM,SAAQA,EAAI,mBAClBA,IAAM,eAAcA,EAAI,gBACxBA,IAAM,gBACN/B,EAAI,iBAAiB+B,EAAG,aAAaD,CAAI,CAAC,EAE1C9B,EAAI,iBAAiB+B,EAAG,UAAU,aAAaD,CAAI,CAAC,CAAC,CAE7D,OAASE,EAAO,CACZ,QAAQ,KAAK,2DAA4DA,CAAK,CAClF,CACAL,GAAK,CACT,CACA,GAAI,CAEA,QADIa,EAAe,IAAI,WAAWD,CAAE,EAC3BH,EAAM,EAAGA,EAAMG,EAAIH,IACxBI,EAAaJ,CAAG,EAAI,OAAO,OAAOA,EAAME,CAAE,EAE9CtC,EAAI,KAAKwC,CAAY,CACzB,OAAQ/B,EAAA,CACJ,MAAO,EACX,CACA,GAAIT,EAAI,QAAU,IAAK,MAAO,GAK9B,QAJIiC,EAAa,WAAW,KAAK,MAAM,KAAKjC,EAAI,kBAAkB,MAAM,CAAC,EAAE,IAAIyC,GAAUA,EAAO,WAAW,CAAC,CAAC,CAAC,EAC1Gb,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7B,OAAAA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACjCA,CACX,EACA,QAAS,CAACX,EAAIC,EAAIC,EAAIC,IAAO,CACzB,IAAI3B,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAC1B,MAAO,GAEX,IAAMvB,EAAM,IAAI,eAIhBA,EAAI,KAAK,aAAa0B,CAAE,EAAG3B,EAAK,EAAK,EACrCC,EAAI,aAAe,cAGnB,QAFI2B,EAAI,EACJC,EAAMJ,EACHG,EAAIC,EAAM,GAAG,CAChB,IAAIC,EAAO,OAAOJ,EAAK,EAAIE,IAAM,CAAC,EAC9BG,EAAO,OAAOL,EAAK,EAAIE,EAAI,IAAM,CAAC,EACtC,QAAQ,IAAI,OAAQ,aAAaE,CAAI,EAAG,aAAaC,CAAI,CAAC,EAC1D,GAAI,CACA,IAAIC,EAAI,UAAU,aAAaF,CAAI,CAAC,EAChCE,IAAM,SAAQA,EAAI,mBAClBA,IAAM,eAAcA,EAAI,gBACxBA,IAAM,gBACN/B,EAAI,iBAAiB+B,EAAG,aAAaD,CAAI,CAAC,EAE1C9B,EAAI,iBAAiB+B,EAAG,UAAU,aAAaD,CAAI,CAAC,CAAC,CAE7D,OAASE,EAAO,CACZ,QAAQ,KAAK,2DAA4DA,CAAK,CAClF,CACAL,GAAK,CACT,CACA,GAAI,CACA3B,EAAI,KAAK,IAAI,CACjB,OAAQS,EAAA,CACJ,MAAO,EACX,CACA,GAAIT,EAAI,QAAU,IAAK,MAAO,GAK9B,QAJIiC,EAAajC,EAAI,SACjB4B,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7BA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,EAAiB,CAAC,EAC5C,IAAIQ,EAAU,WAAW,KAAK,MAAM,KAAK1C,EAAI,sBAAsB,CAAC,EAAE,IAAIyC,GAAUA,EAAO,WAAW,CAAC,CAAC,CAAC,EACzGb,EAAMc,EAAQ,WAEd,QADIC,EAAoB,QAAQf,EAAM,CAAC,EAC9BQ,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMO,EAAoB,CAAC,EAAID,EAAQN,CAAG,EAE5D,OAAAC,EAAS,IAAI,WAAW,CAAC,EACzBA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQM,EAAoB,CAAC,EAC/Cf,EAAMe,EACNN,EAAS,IAAI,WAAW,CAAC,EACzBA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACjCA,CACX,EACA,QAAS,CAACX,EAAIC,EAAIC,EAAIC,IAAO,CACzB,IAAI3B,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAC1B,MAAO,GAEX,IAAMvB,EAAM,IAAI,eAIhBA,EAAI,KAAK,aAAa0B,CAAE,EAAG3B,EAAK,EAAK,EACrCC,EAAI,aAAe,cAGnB,QAFI2B,EAAI,EACJC,EAAMJ,EACHG,EAAIC,EAAM,GAAG,CAChB,IAAIC,EAAO,OAAOJ,EAAK,EAAIE,IAAM,CAAC,EAC9BG,EAAO,OAAOL,EAAK,EAAIE,EAAI,IAAM,CAAC,EACtC,GAAI,CACA,IAAII,EAAI,UAAU,aAAaF,CAAI,CAAC,EAChCE,IAAM,SAAQA,EAAI,mBAClBA,IAAM,eAAcA,EAAI,gBACxBA,IAAM,gBACN/B,EAAI,iBAAiB+B,EAAG,aAAaD,CAAI,CAAC,EAE1C9B,EAAI,iBAAiB+B,EAAG,UAAU,aAAaD,CAAI,CAAC,CAAC,CAE7D,OAASE,EAAO,CACZ,QAAQ,KAAK,2DAA4DA,CAAK,CAClF,CACAL,GAAK,CACT,CACA,GAAI,CACA3B,EAAI,KAAK,IAAI,CACjB,OAAQS,EAAA,CACJ,MAAO,EACX,CACA,GAAIT,EAAI,QAAU,IAAK,MAAO,GAK9B,QAJIiC,EAAajC,EAAI,SACjB4B,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7B,OAAAA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACjCA,CACX,EACA,QAAS,CAACX,EAAIC,EAAIC,EAAIC,EAAIY,EAAIC,IAAO,CACjC,IAAIxC,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAC1B,MAAO,GAEX,IAAMvB,EAAM,IAAI,eAIhBA,EAAI,KAAK,aAAa0B,CAAE,EAAG3B,EAAK,EAAK,EACrCC,EAAI,aAAe,cAGnB,QAFI2B,EAAI,EACJC,EAAMJ,EACHG,EAAIC,EAAM,GAAG,CAChB,IAAIC,EAAO,OAAOJ,EAAK,EAAIE,IAAM,CAAC,EAC9BG,EAAO,OAAOL,EAAK,EAAIE,EAAI,IAAM,CAAC,EACtC,GAAI,CACA,IAAII,EAAI,UAAU,aAAaF,CAAI,CAAC,EAChCE,IAAM,SAAQA,EAAI,mBAClBA,IAAM,eAAcA,EAAI,gBACxBA,IAAM,gBACN/B,EAAI,iBAAiB+B,EAAG,aAAaD,CAAI,CAAC,EAE1C9B,EAAI,iBAAiB+B,EAAG,UAAU,aAAaD,CAAI,CAAC,CAAC,CAE7D,OAASE,EAAO,CACZ,QAAQ,KAAK,2DAA4DA,CAAK,CAClF,CACAL,GAAK,CACT,CACA,GAAI,CAEA,QADIa,EAAe,IAAI,WAAWD,CAAE,EAC3BH,EAAM,EAAGA,EAAMG,EAAIH,IACxBI,EAAaJ,CAAG,EAAI,OAAO,OAAOA,EAAME,CAAE,EAE9CtC,EAAI,KAAKwC,CAAY,CACzB,OAAQ/B,EAAA,CACJ,MAAO,EACX,CACA,GAAIT,EAAI,QAAU,IAAK,MAAO,GAK9B,QAJIiC,EAAajC,EAAI,SACjB4B,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7B,OAAAA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACjCA,CACX,EACA,QAAS,CAACX,EAAIC,IAAO,CACjB,IAAIoB,EAAW,OAAO,SAAW,UAAY,SAAW,OAAO,QAAQ,aAAe,YAAc,QAAQ,YAAc,QAAQ,YAAY,aAAarB,CAAE,CAAC,EAAI,aAAaC,CAAE,EAC7KqB,EAAc,gBAAgBD,CAAQ,EAAI,EAC1CE,EAAmB,QAAQD,CAAW,EAC1C,oBAAaD,EAAUE,EAAkBD,CAAW,EAC7CC,CACX,EACA,QAAS,CAACvB,EAAIC,IAAO,CACjB,IAAIzB,EAAM,aAAawB,CAAE,EACzB,GAAI,OAAO,eAAmB,IAAa,CACvC,IAAMwB,EAAK,KACLtD,EAAO,KACPuD,EAAK,KACX,IAAIC,EAAQlD,EAAI,MAAM,GAAG,EACrBmD,EAAID,EAAM,OACVE,EAAS1D,EAAK,KAAKsD,EAAG,QAAQ,EAAG,sBAAwBE,EAAMC,EAAI,CAAC,EAAI,IAAMD,EAAMC,EAAI,CAAC,EAAI,IAAMD,EAAMC,EAAI,CAAC,EAAI,GAAG,EACrHE,EAAW3D,EAAK,KAAK0D,EAAQF,EAAMC,EAAI,CAAC,CAAC,EAC7C,GAAI,CAMA,GALKF,EAAG,WAAWG,CAAM,GACrBH,EAAG,UAAUG,EAAQ,CACjB,UAAW,EACf,CAAC,EAEAH,EAAG,WAAWI,CAAQ,EAoBvBnB,EAAae,EAAG,aAAaI,CAAQ,MApBX,CAC1B,IAAMC,EAAQ,IAAI,WAAW,IAAI,kBAAkB,CAAC,CAAC,EACrD,IAAIC,EAAS,EAAQ,qBAAqB,EAAE,OACxCC,EAAS,IAAID,EAAO,opBAAqpB,CACzqB,KAAM,EACV,CAAC,EACGrB,EACJoB,EAAM,CAAC,EAAI,EACXA,EAAM,CAAC,EAAI,EACXE,EAAO,YAAYF,CAAK,EACxBE,EAAO,YAAYxD,CAAG,EACtB,QAAQ,KAAKsD,EAAO,EAAG,CAAC,EACxB,IAAMG,EAAU,IAAI,WAAW,IAAI,kBAAkBH,EAAM,CAAC,EAAI,GAAKA,EAAM,CAAC,EAAI,GAAK,CAAC,CAAC,EACvFE,EAAO,YAAYC,CAAO,EAC1B,QAAQ,KAAKH,EAAO,EAAG,CAAC,EACxB,IAAII,EAAI,IAAI,WAAWD,EAAQ,OAAQ,EAAGH,EAAM,CAAC,CAAC,EAClDpB,EAAawB,EACbF,EAAO,UAAU,EACjBP,EAAG,cAAcI,EAAUnB,CAAU,CACzC,CAGJ,OAASxB,EAAG,CACR,eAAQ,IAAI,wBAAyBA,CAAC,EAC/B,CACX,CACJ,KAAO,CACH,IAAMT,EAAM,IAAI,eAIhB,GAHAA,EAAI,KAAK,MAAOD,EAAK,EAAK,EAC1BC,EAAI,aAAe,cACnBA,EAAI,KAAK,IAAI,EACTA,EAAI,QAAU,IAAK,MAAO,GAC9BiC,EAAajC,EAAI,QACrB,CAKA,QAJI0D,EAAQ,YAAY,SAASzB,CAAU,EACvCL,EAAMK,EAAW,WACjBC,EAAiB,QAAQN,EAAM,CAAC,EAChCO,EAAc,IAAI,WAAWF,CAAU,EAClCG,EAAM,EAAGA,EAAMR,EAAKQ,IACzB,OAAO,OAAOA,EAAMF,EAAiB,CAAC,EAAIC,EAAYC,CAAG,EAE7D,IAAIC,EAAS,IAAI,WAAW,CAAC,EAC7B,OAAAA,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACPS,EAAO,CAAC,EAAIT,EAAM,IAClBA,GAAOS,EAAO,CAAC,EACfT,GAAO,IACP,OAAO,OAAO,IAAIS,EAAQH,CAAc,EACxC,GAAG,UAAU,aAAaV,CAAE,EAAG,IAAI,WAAWS,CAAU,CAAC,EAClDC,CACX,EACA,QAASX,GAAM,CACX,GAAI,CAACA,EACD,UAAG,OAAS,MACL,CAEf,EACA,QAASA,GAAM,CACX,GAAI,CAAC,GAAG,WACJ,WAAI,mDAAmD,EAChD,EAEX,GAAI,CAACA,EACD,UAAG,WAAW,IAAM,MACb,CAEf,CACJ,EACA,MAAM,UAAW,CAEb,YAAYhC,EAAQ,CADpBoE,EAAA,YAAO,cAEH,KAAK,QAAU,gCAAgC,OAAApE,EAAM,KACrD,KAAK,OAASA,CAClB,CACJ,CACA,IAAI,IAAM,CAAC,EACP,yBAA2B,IAAI,IAAI,CAAC,CAAC,EACrC,WAAa,CACb,IAAIqE,EAAKC,EAAS,CACd,IAAIC,EAAM,IAAID,CAAO,EACrB,OAAKC,IACDA,EAAM,IAAID,CAAO,EAAI,IAAI,YAAY,OAAO,CACxC,MAAO,MACP,QAAS,EACb,CAAC,GAEA,yBAAyB,IAAIA,CAAO,IACrCC,EAAI,SAAW,IAEZA,CACX,CACJ,EACI,qBAAuBC,GAAa,CACpC,KAAOA,EAAU,OAAS,GACtBA,EAAU,MAAM,EAAE,MAAM,CAEhC,EACI,YAAc,OAAO,YAAe,IAAc,IAAI,YAAc,OACpE,kBAAoB,CAACC,EAAaC,EAAM,EAAGC,EAAiB,MAAQ,CACpED,KAAS,EAGT,QAFIE,EAASF,EAAMC,EACfE,EAASH,EACND,EAAYI,CAAM,GAAK,EAAEA,GAAUD,IAAS,EAAEC,EACrD,GAAIA,EAASH,EAAM,IAAMD,EAAY,QAAU,YAC3C,OAAO,YAAY,OAAOA,EAAY,SAASC,EAAKG,CAAM,CAAC,EAG/D,QADIC,EAAM,GACHJ,EAAMG,GAAQ,CACjB,IAAIE,EAAKN,EAAYC,GAAK,EAC1B,GAAI,EAAEK,EAAK,KAAM,CACbD,GAAO,OAAO,aAAaC,CAAE,EAC7B,QACJ,CACA,IAAIC,EAAKP,EAAYC,GAAK,EAAI,GAC9B,IAAKK,EAAK,MAAQ,IAAK,CACnBD,GAAO,OAAO,cAAcC,EAAK,KAAO,EAAIC,CAAE,EAC9C,QACJ,CACA,IAAIC,EAAKR,EAAYC,GAAK,EAAI,GAM9B,IALKK,EAAK,MAAQ,IACdA,GAAMA,EAAK,KAAO,GAAKC,GAAM,EAAIC,EAEjCF,GAAMA,EAAK,IAAM,GAAKC,GAAM,GAAKC,GAAM,EAAIR,EAAYC,GAAK,EAAI,GAEhEK,EAAK,MACLD,GAAO,OAAO,aAAaC,CAAE,MAC1B,CACH,IAAIG,EAAKH,EAAK,MACdD,GAAO,OAAO,aAAa,MAAQI,GAAM,GAAI,MAAQA,EAAK,IAAI,CAClE,CACJ,CACA,OAAOJ,CACX,EACI,kBAAoBzE,GAAU,CAC9B,IAAI8E,EAAS,EACTC,EAAM,EAEV,SAASC,GAAQ,CACb,OAAOhF,EAAO8E,GAAQ,CAC1B,CAEA,SAASG,GAAS,CAGd,QAFIlF,EAAM,EACNmF,EAAM,IACA,CACN,IAAIC,EAAOnF,EAAO8E,GAAQ,EAG1B,GAFA/E,IAAQoF,EAAO,KAAOD,EACtBA,GAAO,IACH,EAAEC,EAAO,KAAM,KACvB,CACA,OAAOpF,CACX,CAEA,SAASqF,GAAY,CACjB,IAAIpD,EAAMiD,EAAO,EACjB,OAAAH,GAAU9C,EACH,kBAAkBhC,EAAQ8E,EAAS9C,EAAKA,CAAG,CACtD,CAEA,SAASqD,EAAO/E,EAAWgF,EAAS,CAChC,GAAIhF,EAAW,MAAM,IAAI,MAAMgF,CAAO,CAC1C,CACA,IAAIC,EAAO,WACX,GAAIvF,aAAkB,YAAY,OAAQ,CACtC,IAAIwF,EAAgB,YAAY,OAAO,eAAexF,EAAQuF,CAAI,EAC9DC,EAAc,SAAW,IACzBD,EAAO,SACPC,EAAgB,YAAY,OAAO,eAAexF,EAAQuF,CAAI,GAElEF,EAAOG,EAAc,SAAW,EAAG,qBAAqB,EACxDxF,EAAS,IAAI,WAAWwF,EAAc,CAAC,CAAC,EACxCT,EAAM/E,EAAO,MACjB,KAAO,CACH,IAAIyF,EAAY,IAAI,YAAY,IAAI,WAAWzF,EAAO,SAAS,EAAG,EAAE,CAAC,EAAE,MAAM,EACzE0F,EAAmBD,EAAU,CAAC,GAAK,WACvCJ,EAAO,CAACK,EAAkB,+BAA+B,EACzDL,EAAOrF,EAAO,CAAC,IAAM,EAAG,qCAAqC,EAC7D8E,EAAS,EACT,IAAIa,EAAeV,EAAO,EAC1BF,EAAMD,EAASa,EACfJ,EAAOH,EAAU,CACrB,CACA,IAAIQ,EAAgB,CAChB,cAAe,CAAC,EAChB,WAAY,IAAI,IAChB,YAAa,IAAI,GACrB,EACA,GAAIL,GAAQ,SAAU,CAClBK,EAAc,WAAaX,EAAO,EAClCW,EAAc,YAAcX,EAAO,EACnCW,EAAc,UAAYX,EAAO,EACjCW,EAAc,WAAaX,EAAO,EAElC,QADIY,EAAqBZ,EAAO,EACvBlD,EAAI,EAAGA,EAAI8D,EAAoB,EAAE9D,EAAG,CACzC,IAAI+D,EAAUV,EAAU,EACxBQ,EAAc,cAAc,KAAKE,CAAO,CAC5C,CACJ,KAAO,CACHT,EAAOE,IAAS,UAAU,EAQ1B,QAPIQ,EAAuB,EACvBC,EAAqB,EACrBC,EAA0B,EAC1BC,EAA0B,EAC1BC,EAAkB,IAClBC,EAA2B,EAC3BC,EAA2B,EACxBvB,EAASC,GAAK,CACjB,IAAIuB,EAAiBtB,EAAM,EACvBuB,EAAiBtB,EAAO,EAC5B,GAAIqB,IAAmBP,EACnBH,EAAc,WAAaX,EAAO,EAClCW,EAAc,YAAcX,EAAO,EACnCW,EAAc,UAAYX,EAAO,EACjCW,EAAc,WAAaX,EAAO,UAC3BqB,IAAmBN,EAE1B,QADIH,EAAqBZ,EAAO,EACvBlD,EAAI,EAAGA,EAAI8D,EAAoB,EAAE9D,EACtC+D,EAAUV,EAAU,EACpBQ,EAAc,cAAc,KAAKE,CAAO,UAErCQ,IAAmBL,EAE1B,QADIO,EAAQvB,EAAO,EACZuB,KAAS,CACZ,IAAIC,EAAUrB,EAAU,EACpBsB,EAAQzB,EAAO,EACfyB,EAAQP,GACRP,EAAc,WAAW,IAAIa,CAAO,CAE5C,SACOH,IAAmBJ,EAE1B,QADIM,EAAQvB,EAAO,EACZuB,KAAS,CACZ,IAAIG,EAAUvB,EAAU,EACpBqB,EAAUrB,EAAU,EACpBsB,EAAQzB,EAAO,GACdyB,EAAQN,IAA6BC,GACtCT,EAAc,YAAY,IAAIa,CAAO,CAE7C,MAEA3B,GAAUyB,CAElB,CACJ,CACA,OAAOX,CACX,EAEA,SAAS,SAASgB,EAAKC,EAAO,KAAM,CAEhC,OADIA,EAAK,SAAS,GAAG,IAAGA,EAAO,KACvBA,EAAM,CACV,IAAK,KACD,OAAO,MAAMD,IAAQ,CAAC,EAC1B,IAAK,KACD,OAAO,MAAMA,IAAQ,CAAC,EAC1B,IAAK,MACD,OAAO,OAAOA,IAAQ,IAAM,CAAC,EACjC,IAAK,MACD,OAAO,OAAOA,IAAQ,IAAM,CAAC,EACjC,IAAK,MACD,MAAM,qCAAqC,EAC/C,IAAK,QACD,OAAO,QAAQA,IAAQ,IAAM,CAAC,EAClC,IAAK,SACD,OAAO,QAAQA,IAAQ,IAAM,CAAC,EAClC,IAAK,IACD,OAAO,QAAQA,IAAQ,IAAM,CAAC,EAClC,QACI,MAAM,8BAA8B,OAAAC,EAAM,CAClD,CACJ,CACA,IAAI,OAAS,CAACtB,EAAMuB,EAAQC,IAAS,CACjC,IAAIC,EAAM,CACN,SAAU,IACV,KAAAzB,EACA,QAASwB,EACT,OAAQ,EACZ,EACA,YAAK,iBAAiBxB,CAAI,EAAIyB,EAC1BF,GAAU,OACV,KAAK,mBAAmBA,CAAM,EAAIE,GAE/BA,CACX,EACI,KAAO,CACP,iBAAkB,CAAC,EACnB,mBAAoB,CAAC,EACrB,MAAO,CACH,OAAO,WAAY,EAAG,WAAW,CACrC,CACJ,EACI,aAAe,QACf,YAAc,CAACC,EAAMC,IAAc,KAAK,KAAKD,EAAOC,CAAS,EAAIA,EACjE,UAAYD,GAAQ,CACpB,GAAI,mBACA,OAAO,QAAQA,EAAM,CAAC,EAE1B,IAAIlH,EAAM,aACNgF,EAAMhF,EAAM,YAAYkH,EAAM,EAAE,EACpC,oBAAelC,EACf,IAAI,YAAe,MAAQA,EACpBhF,CACX,EACI,cAAgBkE,GAAW,CAAC,kBAAmB,cAAe,2BAA4B,eAAgB,aAAc,cAAe,qBAAsB,uBAAwB,kBAAmB,oBAAqB,iBAAkB,gBAAiB,gBAAiB,cAAc,EAAE,SAASA,CAAO,GAAKA,EAAQ,WAAW,WAAW,EACpV,cAAgB,CAACkD,EAAGC,IAAW,CAC3BD,EAAI,IACJC,EAAO,KAAKD,CAAC,EAEbC,EAAO,KAAKD,EAAI,IAAM,IAAKA,GAAK,CAAC,CAEzC,EACI,eAAiBE,GAAO,CAaxB,QAZIC,EAAY,CACZ,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,YACH,EAAG,KACP,EACIT,EAAO,CACP,WAAY,CAAC,EACb,QAASQ,EAAI,CAAC,GAAK,IAAM,CAAC,EAAI,CAACC,EAAUD,EAAI,CAAC,CAAC,CAAC,CACpD,EACStF,EAAI,EAAGA,EAAIsF,EAAI,OAAQ,EAAEtF,EAC9B8E,EAAK,WAAW,KAAKS,EAAUD,EAAItF,CAAC,CAAC,CAAC,EAE1C,OAAO8E,CACX,EACI,iBAAmB,CAACQ,EAAKD,IAAW,CACpC,IAAIG,EAASF,EAAI,MAAM,EAAG,CAAC,EACvBG,EAAWH,EAAI,MAAM,CAAC,EACtBI,EAAY,CACZ,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,GACP,EACAL,EAAO,KAAK,EAAE,EACd,cAAcI,EAAS,OAAQJ,CAAM,EACrC,QAASrF,EAAI,EAAGA,EAAIyF,EAAS,OAAQ,EAAEzF,EACnCqF,EAAO,KAAKK,EAAUD,EAASzF,CAAC,CAAC,CAAC,EAElCwF,GAAU,IACVH,EAAO,KAAK,CAAC,EAEbA,EAAO,KAAK,EAAGK,EAAUF,CAAM,CAAC,CAExC,EACI,wBAA0B,CAACG,EAAML,IAAQ,CACzC,GAAI,OAAO,YAAY,UAAY,WAC/B,OAAO,IAAI,YAAY,SAAS,eAAeA,CAAG,EAAGK,CAAI,EAE7D,IAAIC,EAAkB,CAAC,CAAC,EACxB,iBAAiBN,EAAKM,CAAe,EACrC,IAAIC,EAAQ,CAAC,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3C,cAAcD,EAAgB,OAAQC,CAAK,EAC3CA,EAAM,KAAK,GAAGD,CAAe,EAC7BC,EAAM,KAAK,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,CAAC,EAC/D,IAAIpG,EAAS,IAAI,YAAY,OAAO,IAAI,WAAWoG,CAAK,CAAC,EACrDrG,EAAW,IAAI,YAAY,SAASC,EAAQ,CAC5C,EAAG,CACC,EAAGkG,CACP,CACJ,CAAC,EACGG,EAActG,EAAS,QAAQ,EACnC,OAAOsG,CACX,EACI,UAAY,IAAI,YAAY,MAAM,CAClC,QAAS,MACT,QAAS,SACb,CAAC,EACG,kBAAoBC,GAAW,UAAU,IAAIA,CAAO,EACpD,eAAiB,CAAChD,EAAQ0B,IAAU,CACpC,GAAI,oBACA,QAASzE,EAAI+C,EAAQ/C,EAAI+C,EAAS0B,EAAOzE,IAAK,CAC1C,IAAIgG,EAAO,kBAAkBhG,CAAC,EAC1BgG,GACA,oBAAoB,IAAIA,EAAMhG,CAAC,CAEvC,CAER,EACI,oBACA,mBAAqB2F,IAChB,sBACD,oBAAsB,IAAI,QAC1B,eAAe,EAAG,UAAU,MAAM,GAE/B,oBAAoB,IAAIA,CAAI,GAAK,GAExC,iBAAmB,CAAC,EACpB,kBAAoB,IAAM,CAC1B,GAAI,iBAAiB,OACjB,OAAO,iBAAiB,IAAI,EAEhC,GAAI,CACA,UAAU,KAAK,CAAC,CACpB,OAASzH,EAAK,CACV,MAAMA,aAAe,WAGf,qDAFIA,CAGd,CACA,OAAO,UAAU,OAAS,CAC9B,EACI,kBAAoB,CAACoE,EAAKqD,IAAS,UAAU,IAAIrD,EAAKqD,CAAI,EAC1D,YAAc,CAACA,EAAML,IAAQ,CAC7B,IAAInD,EAAM,mBAAmBwD,CAAI,EACjC,GAAIxD,EACA,OAAOA,EAEX,IAAInE,EAAM,kBAAkB,EAC5B,GAAI,CACA,kBAAkBA,EAAK2H,CAAI,CAC/B,OAASzH,EAAK,CACV,GAAI,EAAEA,aAAe,WACjB,MAAMA,EAEV,IAAI+H,EAAU,wBAAwBN,EAAML,CAAG,EAC/C,kBAAkBtH,EAAKiI,CAAO,CAClC,CACA,2BAAoB,IAAIN,EAAM3H,CAAG,EAC1BA,CACX,EACI,UAAY,CAACkI,EAASC,IAAY,CAClC,QAASjE,KAAWgE,EAChB,GAAI,eAAchE,CAAO,EAGzB,KAAIkE,EAAQF,EAAQhE,CAAO,EACvBA,EAAQ,WAAW,OAAO,IAC1BA,EAAUA,EAAQ,MAAM,GAAG,EAAE,CAAC,EAC9BiE,EAAU,IAEd,IAAAjE,KAAA,IAAAA,GAAiB,IAAI,YAAY,OAAO,CACpC,MAAO,MACP,QAAS,EACb,CAAC,IACGiE,GAAW,IAAIjE,CAAO,EAAE,OAAS,KAC7B,OAAOkE,GAAS,WAChB,IAAIlE,CAAO,EAAE,MAAQ,YAAYkE,CAAK,EAC/B,OAAOA,GAAS,SACvB,IAAIlE,CAAO,EAAE,MAAQkE,EAErB,IAAI,8BAA8B,OAAAlE,EAAO,OAAM,cAAOkE,EAAO,GAI7E,EACI,gBAAkB,CAACF,EAASG,EAAYF,IAAY,CACpD,IAAIG,EAAY,CAAC,EACjB,QAASxH,KAAKoH,EAAS,CACnB,IAAIE,EAAQF,EAAQpH,CAAC,EACjB,OAAOsH,GAAS,WAChBA,EAAQA,EAAM,OAEd,OAAOA,GAAS,WAChBA,GAASC,GAEbC,EAAUxH,CAAC,EAAIsH,CACnB,CACA,iBAAUE,EAAWH,CAAO,EACrBG,CACX,EACI,gBAAkBpE,GAAW,CAC7B,IAAIqE,EAAW,YAAYrE,CAAO,EAClC,MAAI,GAACqE,GAAYA,EAAS,KAI9B,EACI,YAAcC,GAAO,yBAAyBA,CAAG,EACjD,aAAe,YACnB,OAAO,aAAkB,aACzB,IAAI,qBAAuBlB,GAAO,CAC9B,IAAImB,EAAW,CAAC,EACZC,EAAU,CAAC,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,CAAC,EAC1CD,EAAS,KAAKC,CAAO,EACrB,IAAIC,EAAa,CAACrB,EAAI,CAAC,EAAE,QAAQ,IAAK,GAAG,EAAG,IAAKA,EAAI,MAAM,CAAC,EAAE,QAAQ,KAAM,IAAI,CAAC,EAAE,KAAK,EAAE,EACtFM,EAAkB,CAAC,CAAC,EACxB,iBAAiBe,EAAYf,CAAe,EAC5C,iBAAiBN,EAAKM,CAAe,EACrC,iBAAiB,KAAMA,CAAe,EACtC,IAAIgB,EAAc,CAAC,CAAC,EACpB,cAAchB,EAAgB,OAAQgB,CAAW,EACjDA,EAAY,KAAK,GAAGhB,CAAe,EACnCa,EAAS,KAAKG,CAAW,EACzB,IAAIC,EAAgB,CAAC,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,CAAC,EACjFJ,EAAS,KAAKI,CAAa,EAC3B,IAAIC,EAAkB,CAAC,EAAG,EAAG,EAAG,CAAC,EACjCL,EAAS,KAAKK,CAAe,EAC7B,IAAIC,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,CAAC,EAC1CN,EAAS,KAAKM,CAAa,EAC3B,IAAIC,EAAe,CAAC,EAChB1B,EAAI,CAAC,IAAM,IACX0B,EAAe,CAAC,EAAG,EAAG,GAAG,EAEzBA,EAAa,KAAK,CAAC,EAGvB,SAASC,EAASC,EAAG,CACjBF,EAAa,KAAK,EAAE,EACpB,cAAcE,EAAGF,CAAY,CACjC,CAEA,QADIE,EAAI,EACClH,EAAI,EAAGA,EAAIsF,EAAI,OAAQtF,IACxBsF,EAAItF,CAAC,GAAK,KACViH,EAASC,EAAI,CAAC,EACdF,EAAa,KAAK,IAAK,GAAI,GAAI,GAAG,EAClCC,EAASC,CAAC,EACVF,EAAa,KAAK,IAAK,GAAG,EAC1BE,GAAK,IAELD,EAASC,CAAC,EACVA,KAGRF,EAAa,KAAK,GAAI,EAAG,GAAI,EAAG,CAAC,EAC7B1B,EAAI,CAAC,IAAM,MACX0B,EAAa,KAAK,EAAE,EACpB,cAAcE,EAAGF,CAAY,EAC7BA,EAAa,KAAK,GAAI,GAAI,IAAK,IAAK,GAAI,CAAC,EACzCC,EAASC,CAAC,EACVF,EAAa,KAAK,GAAG,GAEzBA,EAAa,KAAK,EAAE,EACpB,IAAIG,EAAW,CAAC,CAAC,EACjB,cAAcH,EAAa,OAAQG,CAAQ,EAC3CA,EAAS,KAAK,GAAGH,CAAY,EAC7B,IAAII,EAAc,CAAC,EAAE,EACrB,cAAcD,EAAS,OAAQC,CAAW,EAC1CA,EAAY,KAAK,GAAGD,CAAQ,EAC5BV,EAAS,KAAKW,CAAW,EACzB,IAAIvB,EAAQ,IAAI,WAAW,CAAC,EAAE,OAAO,MAAM,CAAC,EAAGY,CAAQ,CAAC,EACpDhH,EAAS,IAAI,YAAY,OAAOoG,CAAK,EACrCrG,EAAW,IAAI,YAAY,SAASC,EAAQ,CAC5C,EAAG,CACC,EAAG,UACH,EAAG,WACP,CACJ,CAAC,EACGqG,EAActG,EAAS,QAAQ,EACnC,OAAOsG,CACX,EACI,cAAgB,CAACR,EAAKT,EAAKwC,IAAS,CACpC/B,EAAMA,EAAI,QAAQ,KAAM,GAAG,EACrB,WAAaA,KAAO,SACtB,OAAO,WAAaA,CAAG,EAAI,qBAAqBA,CAAG,GAEvD,IAAIvG,EAAI,OAAO,WAAauG,CAAG,EAC/B,OAAOvG,EAAE8F,EAAK,GAAGwC,CAAI,CACzB,EACI,QAAU,CAAC/B,EAAKT,EAAKwC,EAAO,CAAC,IAAM,CACnC,GAAI/B,EAAI,SAAS,GAAG,EAChB,OAAO,cAAcA,EAAKT,EAAKwC,CAAI,EAEvC,IAAIlF,EAAM,kBAAkB0C,CAAG,EAAE,GAAGwC,CAAI,EACxC,OAAO/B,EAAI,CAAC,GAAK,IAAMnD,IAAQ,EAAIA,CACvC,EACI,UAAY,IAAM,8BAA8B,EAChD,aAAeqE,GAAO,2BAA2BA,CAAG,EACpD,qBAAuBlB,GAAO,CAACT,KAAQwC,IAAS,CAChD,IAAIC,EAAK,UAAU,EACnB,GAAI,CACA,OAAO,QAAQhC,EAAKT,EAAKwC,CAAI,CACjC,OAASvI,EAAG,CAER,GADA,aAAawI,CAAE,EACXxI,IAAMA,EAAI,EAAG,MAAMA,EACvB,UAAU,EAAG,CAAC,CAClB,CACJ,EACI,oBAAsB,CAACoD,EAASqF,EAAS,KAAU,CACnD,IAAIC,EACJ,OAAID,GAAU,QAAUrF,KAAW,cAC/BA,EAAU,QAAUA,GAEpB,gBAAgBA,CAAO,EACvBsF,EAAM,YAAYtF,CAAO,EAClBA,EAAQ,WAAW,SAAS,EACnCsF,EAAM,YAAYtF,CAAO,EAAI,qBAAqBA,EAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,EAChEA,EAAQ,WAAW,4BAA4B,IACtDsF,EAAM,YAAYtF,CAAO,EAAI,IAAImF,IAAS,CACtC,IAAIlF,EAAM,kBAAkBkF,CAAI,EAChC,OAAOlF,CACX,GAEG,CACH,IAAAqF,EACA,KAAMtF,CACV,CACJ,EACI,aAAe,CAAC2C,EAAKtC,KACrBsC,KAAS,EACFA,EAAM,kBAAkB,OAAQA,EAAKtC,CAAc,EAAI,IAE9D,sBAAwB,CAAC,OAAQ,MAAO,QAAS,WAAY,SAAW,CACxE,IAAI,SAAW,kBAAkB,MAAM,EACvC,yBAA2B,SAAS,YAEpC,SAAS,YAAa,CAClB,IAAI,UAAY,CAAC,QAAU,CAAC,MAAM,OAAS,IAAM,CAAC,EAClD,GAAI,UAAW,CACX,IAAI,SAAW,KAAK,IAAI,EAAG,SAAS,WAAW,EAC3C,WAAa,SAAS,WAAa,YAAY,UAAU,SAAS,WAAa,QAAQ,EAAG,QAAQ,EAAI,EACtG,UAAY,SAAS,UAAY,UAAU,OAAS,EACpD,SACA,MAAM,OAAS,IAAM,CAAC,EAAI,EAC1B,QAAQ,OAAS,KAAO,IAAM,CAAC,EAAI,WACnC,OAAO,OAAS,KAAO,IAAM,CAAC,EAAI,SAAS,WAC3C,QAAQ,OAAS,KAAO,IAAM,CAAC,EAAI,UACnC,OAAO,OAAS,KAAO,IAAM,CAAC,EAAI,SAAS,UAEnD,MACI,WAAa,QAAQ,OAAS,KAAO,IAAM,CAAC,EAC5C,UAAY,QAAQ,OAAS,KAAO,IAAM,CAAC,EAE/C,IAAI,kBAAoB,UAAY,SAAS,UAAY,UAAU,OAC/D,kBAAoB,GACpB,UAAU,KAAK,iBAAiB,EAEpC,IAAI,cAEJ,SAAS,cAAciF,EAAK,CACxB,IAAIC,EAAW,oBAAoBD,CAAG,EAAE,IACxC,MAAI,CAACC,GAAY,aACbA,EAAW,WAAWD,CAAG,GAExBC,IACDA,EAAW,cAAcD,CAAG,GAEzBC,CACX,CACA,IAAI,aAAe,CACf,IAAIC,EAAMC,EAAM,CAAE,GAAIA,EAAK,WAAW,SAAS,EAAI,OAAO,qBAAqBA,EAAK,UAAU,CAAC,CAAC,EAC5F,OAAQA,EAAM,CACV,IAAK,gBACD,OAAO,WACX,IAAK,cAAe,OAAO,YAAe,IAAK,eAC3C,OAAO,SACf,CACA,GAAIA,KAAQ,aAAe,CAAC,YAAYA,CAAI,EAAE,KAC1C,OAAO,YAAYA,CAAI,EAE3B,GAAI,EAAEA,KAAQD,GAAQ,CAClB,IAAID,EACJC,EAAMC,CAAI,EAAI,IAAIN,KACdI,MAAa,cAAcE,CAAI,GACxBF,EAAS,GAAGJ,CAAI,EAE/B,CACA,OAAOK,EAAMC,CAAI,CACrB,CACJ,EACI,MAAQ,IAAI,MAAM,CAAC,EAAG,YAAY,EAClC,KAAO,CACP,UAAW,IAAI,MAAM,CAAC,EAAG,UAAU,EACnC,WAAY,IAAI,MAAM,CAAC,EAAG,UAAU,EACpC,IAAK,MACL,uBAAwB,KAC5B,EAEA,SAAS,kBAAkB,OAAQ,SAAU,CACzC,eAAe,UAAW,SAAS,SAAS,EAC5C,cAAgB,gBAAgB,SAAS,QAAS,UAAU,EACvD,MAAM,gBACP,uBAAuB,EAG3B,SAAS,SAAS,KAAM,KAAM,CAG1B,QAFI,KAAO,CAAC,EACR,MAAQ,EACL,MAAQ,IACP,KAAK,QAAQ,IAAM,KAAK,GAAK,GADlB,QAEX,KAAK,KAAK,IAAM,KAAK,EAK7B,KAAO,KAAK,KAAK,GAAG,EACpB,IAAI,KAAO,IAAI,YAAI,WAAU,YAAI,OACjC,WAAW,KAAK,EAAI,KAAK,IAAI,CACjC,CACA,GAAI,mBAAoB,cAGpB,QAFI,MAAQ,cAAc,eACtB,KAAO,cAAc,cAClB,MAAQ,MAAM,CACjB,IAAI,SAAW,aAAa,KAAK,EACjC,SAAS,MAAO,QAAQ,EACxB,MAAQ,OAAO,QAAQ,EAAG,KAAK,EAAI,CACvC,CAGJ,SAAS,QAAQ,KAAM,KAAM,KAAM,CAC/B,IAAI,OAAS,CAAC,EAEd,GADA,KAAO,KAAK,MAAM,EAAG,EAAE,EACnB,MAAQ,OAAQ,CAChB,KAAO,KAAK,MAAM,GAAG,EACrB,QAAS,KAAK,KAAM,CAChB,IAAI,MAAQ,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,EACnC,OAAO,KAAK,MAAM,QAAQ,IAAK,EAAE,CAAC,CACtC,CACJ,CACA,IAAI,KAAO,IAAI,cAAM,SAAQ,YAAI,KACjC,cAAc,IAAI,EAAI,KAAK,IAAI,CACnC,CACA,QAAS,QAAQ,cACb,GAAI,KAAK,WAAW,WAAW,EAAG,CAC9B,IAAI,MAAQ,cAAc,IAAI,EAC1B,SAAW,aAAa,KAAK,EAC7B,MAAQ,SAAS,MAAM,MAAM,EACjC,QAAQ,KAAK,QAAQ,YAAa,EAAE,EAAG,MAAM,CAAC,EAAG,MAAM,CAAC,CAAC,EACzD,OAAO,cAAc,IAAI,CAC7B,CAEJ,IAAI,YAAc,cAAc,yBAC5B,cACI,mBACA,YAAY,EAEZ,gBAAgB,KAAK,WAAW,GAGxC,IAAI,KAAO,cAAc,kBACzB,OAAI,OACI,mBACA,KAAK,EAEL,WAAW,KAAK,IAAI,GAGrB,aACX,CACA,GAAI,MAAM,UAAW,CACjB,GAAI,kBAAkB,YAAY,OAAQ,CACtC,IAAI,SAAW,IAAI,YAAY,SAAS,OAAQ,IAAI,EACpD,OAAO,QAAQ,QAAQ,kBAAkB,OAAQ,QAAQ,CAAC,CAC9D,CACA,OAAO,YAAY,YAAY,OAAQ,IAAI,EAAE,KAAKtI,GAAU,kBAAkBA,EAAO,OAAQA,EAAO,QAAQ,CAAC,CACjH,CACA,IAAI,OAAS,kBAAkB,YAAY,OAAS,OAAS,IAAI,YAAY,OAAO,MAAM,EACtF,SAAW,IAAI,YAAY,SAAS,OAAQ,IAAI,EACpD,OAAO,kBAAkB,OAAQ,QAAQ,CAC7C,CACA,OAAI,MAAM,UACC,SAAS,cAAc,OAAO,CAACuI,EAAOC,IAAcD,EAAM,KAAK,IAAM,mBAAmBC,EAAW,MAAO,UAAU,CAAC,EAAG,QAAQ,QAAQ,CAAC,EAAE,KAAK,UAAU,GAErK,SAAS,cAAc,QAAQC,GAAU,mBAAmBA,EAAQ,MAAO,UAAU,CAAC,EAC/E,WAAW,EACtB,EACI,gBAAkB,CAAC5B,EAAS6B,IAAY,CACxC,uBAAuB7B,CAAO,EAC9B,OAAS,CAACsB,EAAKQ,CAAG,IAAK,OAAO,QAAQ9B,CAAO,GACvBb,GAAU,CACnB,gBAAgBA,CAAM,IACvB,YAAYA,CAAM,EAAI2C,EAE9B,GACUR,CAAG,CAErB,EACI,UAAY,CAACpJ,EAAK6J,EAAQC,EAASC,IAAa,CAChD,IAAIC,EAAOD,EAAiD,GAAf,MAAM,OAAA/J,GACnD,UAAUA,CAAG,EAAE,KAAKiK,GAAe,CAC/BJ,EAAO,IAAI,WAAWI,CAAW,CAAC,EAC9BD,GAAK,oBAAoBA,CAAG,CACpC,EAAGlK,GAAO,CACN,GAAIgK,EACAA,EAAQ,MAER,MAAM,sBAAsB,OAAA9J,EAAG,YAEvC,CAAC,EACGgK,GAAK,iBAAiBA,CAAG,CACjC,EACI,eAAiB,OAAO,gBAAqB,CAAC,EAC9C,mBAAqB,IAAM,CAC3B,IAAIE,EAAa,CACb,gBAAiB,QAAQ,QAAQ,EACjC,UAAW9E,GAAQ,CAAC,OAAO,gBAAqBA,EAAK,SAAS,KAAK,EACnE,OAAQ,CAAC+E,EAAW/E,EAAMyE,EAAQC,IAAY,CAC1CI,EAAW,gBAAqBA,EAAW,gBAAmB,KAAK,IAAM,sBAAsBC,EAAW,CACtG,UAAW,GACX,SAAU,EACd,EAAG/E,EAAM,CAAC,CAAC,CAAC,EAAE,KAAK0C,GAAW,CAC1B,cAAc1C,CAAI,EAAI0C,EACtB+B,EAAOM,CAAS,CACpB,EAAGlI,GAAS,CACR,IAAI,+BAA+B,OAAAmD,EAAI,MAAK,OAAAnD,EAAO,EACnD6H,EAAQ,CACZ,CAAC,CACL,CACJ,EACA,eAAe,KAAKI,CAAU,CAClC,EACI,cAAgB,CAAC,EACjB,uBAAyBpC,GAAW,CACpC,OAAS,CAACsB,EAAKQ,CAAG,IAAK,OAAO,QAAQ9B,CAAO,EACrCsB,EAAI,WAAW,UAAU,GAAK,CAAC,OAAO,eAAeA,CAAG,IACxD,OAAOA,CAAG,EAAIQ,EAG1B,EAEA,SAAS,mBAAmBD,EAASpD,EAAQ,CACzC,OAAQ,GACR,SAAU,EACd,EAAG6D,EAAYzD,EAAQ,CACnB,IAAIE,EAAM,KAAK,iBAAiB8C,CAAO,EACvC,GAAI9C,EACA,OAAKN,EAAM,OAKCM,EAAI,SACZA,EAAI,OAAS,GACb,gBAAgBA,EAAI,QAAS8C,CAAO,IANhCS,GACA,OAAO,OAAOA,EAAYvD,EAAI,OAAO,EAEzC,uBAAuBA,EAAI,OAAO,GAKlCN,EAAM,UAAYM,EAAI,WAAa,MACnCA,EAAI,SAAW,KAEnBA,EAAI,WACAF,IACA,KAAK,mBAAmBA,CAAM,EAAIE,GAE/BN,EAAM,UAAY,QAAQ,QAAQ,EAAI,EAAI,GAErDM,EAAM,OAAO8C,EAAShD,EAAQ,SAAS,EACvCE,EAAI,SAAWN,EAAM,SAAW,IAAW,EAC3CM,EAAI,OAASN,EAAM,OAEnB,SAAS8D,GAAc,CACnB,GAAI1D,EAAQ,CACR,IAAI5G,EAAO,QAAQ4G,EAAS,KAAO,IAAM,CAAC,EACtC2D,EAAW,QAAQ3D,EAAS,KAAO,IAAM,CAAC,EAC9C,GAAI5G,GAAQuK,EAAU,CAClB,IAAIC,EAAU,MAAM,MAAMxK,EAAMA,EAAOuK,CAAQ,EAC/C,OAAO/D,EAAM,UAAY,QAAQ,QAAQgE,CAAO,EAAIA,CACxD,CACJ,CACA,IAAIC,EAAU,WAAWb,CAAO,EAChC,GAAIpD,EAAM,UACN,OAAO,IAAI,QAAQ,CAACjH,EAASC,IAAW,UAAUiL,EAASlL,EAASC,CAAM,CAAC,EAE/E,GAAI,CAAC,WACD,MAAM,IAAI,MAAM,GAAG,OAAAiL,EAAO,+EAA8E,EAE5G,OAAO,WAAWA,CAAO,CAC7B,CAEA,SAASC,GAAa,CAClB,IAAIC,EAAY,cAAcf,CAAO,EACrC,OAAIe,EACOnE,EAAM,UAAY,QAAQ,QAAQmE,CAAS,EAAIA,EAEtDnE,EAAM,UACC8D,EAAY,EAAE,KAAKE,GAAW,sBAAsBA,EAAShE,EAAOoD,EAASS,EAAYzD,CAAM,CAAC,EAEpG,sBAAsB0D,EAAY,EAAG9D,EAAOoD,EAASS,EAAYzD,CAAM,CAClF,CAEA,SAASgE,EAAa7C,EAAS,CACvBjB,EAAI,OACJ,gBAAgBiB,EAAS6B,CAAO,EACzBS,IACP,OAAO,OAAOA,EAAYtC,CAAO,EACjC,uBAAuBA,CAAO,GAElCjB,EAAI,QAAUiB,CAClB,CACA,OAAIvB,EAAM,UACCkE,EAAW,EAAE,KAAK3C,IACrB6C,EAAa7C,CAAO,EACb,GACV,GAEL6C,EAAaF,EAAW,CAAC,EAClB,GACX,CACA,IAAI,uBAAyB,IAAM,CAC/B,OAAS,CAAC3G,EAAS8G,CAAK,IAAK,OAAO,QAAQ,GAAG,EAC3C,GAAIA,EAAM,OAAS,EAAG,CAClB,IAAI5C,EAAQ,oBAAoBlE,EAAS,EAAI,EAAE,IAC/C,GAAI,CAACkE,GAAS,CAAC4C,EAAM,SACjB,SAEJ,GAAI,OAAO5C,GAAS,WAChB4C,EAAM,MAAQ,YAAY5C,EAAOA,EAAM,GAAG,UACnC,OAAOA,GAAS,SACvB4C,EAAM,MAAQ5C,MAEd,OAAM,IAAI,MAAM,wBAAwB,OAAAlE,EAAO,OAAM,cAAOkE,EAAO,CAE3E,CAER,EACI,WAAa,IAAM,CACnB,GAAI,CAAC,iBAAiB,OAAQ,CAC1B,uBAAuB,EACvB,MACJ,CACA,iBAAiB,YAAY,EAC7B,iBAAiB,OAAO,CAACwB,EAAOqB,IAAQrB,EAAM,KAAK,IAAM,mBAAmBqB,EAAK,CAC7E,UAAW,GACX,OAAQ,GACR,SAAU,GACV,eAAgB,EACpB,CAAC,CAAC,EAAG,QAAQ,QAAQ,CAAC,EAAE,KAAK,IAAM,CAC/B,uBAAuB,EACvB,oBAAoB,YAAY,CACpC,CAAC,CACL,EACI,cAAgB,OAAO,eAAoB,GAE/C,SAAS,SAASpE,EAAKuB,EAAOtB,EAAO,KAAM,CAEvC,OADIA,EAAK,SAAS,GAAG,IAAGA,EAAO,KACvBA,EAAM,CACV,IAAK,KACD,MAAMD,IAAQ,CAAC,EAAIuB,EACnB,MACJ,IAAK,KACD,MAAMvB,IAAQ,CAAC,EAAIuB,EACnB,MACJ,IAAK,MACD,OAAOvB,IAAQ,IAAM,CAAC,EAAIuB,EAC1B,MACJ,IAAK,MACD,OAAOvB,IAAQ,IAAM,CAAC,EAAIuB,EAC1B,MACJ,IAAK,MACD,MAAM,qCAAqC,EAC/C,IAAK,QACD,QAAQvB,IAAQ,IAAM,CAAC,EAAIuB,EAC3B,MACJ,IAAK,SACD,QAAQvB,IAAQ,IAAM,CAAC,EAAIuB,EAC3B,MACJ,IAAK,IACD,QAAQvB,IAAQ,IAAM,CAAC,EAAIuB,EAC3B,MACJ,QACI,MAAM,8BAA8B,OAAAtB,EAAM,CAClD,CACJ,CACA,IAAI,2BAA6B,CAACoE,EAAIC,IAAOA,EAAK,UAAY,EAAI,QAAU,CAAC,CAACD,GAAMA,IAAO,GAAKC,EAAK,WAAa,IAElH,SAAS,eAAe5K,EAAWR,EAAUqL,EAAMzD,EAAM,CACrDpH,KAAe,EACfR,KAAc,EACd4H,KAAU,EACV,MAAM,qBAAqB,oBAAapH,CAAS,EAAC,UAAW,CAACR,EAAW,aAAaA,CAAQ,EAAI,mBAAoBqL,EAAMzD,EAAO,aAAaA,CAAI,EAAI,kBAAkB,CAAC,CAC/K,CACA,eAAe,IAAM,QAErB,SAAS,mBAAmB0D,EAAI/D,EAAK,CACjC,OAAA+D,KAAQ,EACD,kBAAkBA,CAAE,EAAE/D,CAAG,CACpC,CACA,mBAAmB,IAAM,MACzB,IAAI,gBAAkB,CAAC,EACnB,uBAAyB,EAE7B,SAAS,mBAAmBT,EAAK,CAC7BA,KAAS,EACT,IAAIvF,EAAO,IAAI,cAAcuF,CAAG,EAChC,OAAKvF,EAAK,WAAW,IACjBA,EAAK,WAAW,EAAI,EACpB,0BAEJA,EAAK,aAAa,EAAK,EACvB,gBAAgB,KAAKA,CAAI,EACzB,oCAAoCuF,CAAG,EAChC,yBAAyBA,CAAG,CACvC,CACA,mBAAmB,IAAM,KAEzB,SAAS,kCAAmC,CACxC,GAAI,CAAC,gBAAgB,OACjB,MAAO,GAEX,IAAIvF,EAAO,gBAAgB,gBAAgB,OAAS,CAAC,EACrD,2CAAoCA,EAAK,MAAM,EACxCA,EAAK,MAChB,CACA,iCAAiC,IAAM,IACvC,IAAI,cAAgB,EAChB,iBAAmB,IAAM,CACzB,UAAU,EAAG,CAAC,EACd,IAAIA,EAAO,gBAAgB,IAAI,EAC/B,oCAAoCA,EAAK,MAAM,EAC/C,cAAgB,CACpB,EACA,iBAAiB,IAAM,IACvB,MAAM,aAAc,CAChB,YAAYgK,EAAQ,CAChB,KAAK,OAASA,EACd,KAAK,IAAMA,EAAS,EACxB,CACA,SAASxE,EAAM,CACX,QAAQ,KAAK,IAAM,IAAM,IAAM,CAAC,EAAIA,CACxC,CACA,UAAW,CACP,OAAO,QAAQ,KAAK,IAAM,IAAM,IAAM,CAAC,CAC3C,CACA,eAAeyE,EAAY,CACvB,QAAQ,KAAK,IAAM,IAAM,IAAM,CAAC,EAAIA,CACxC,CACA,gBAAiB,CACb,OAAO,QAAQ,KAAK,IAAM,IAAM,IAAM,CAAC,CAC3C,CACA,WAAWC,EAAQ,CACfA,EAASA,EAAS,EAAI,EACtB,MAAM,KAAK,IAAM,KAAO,CAAC,EAAIA,CACjC,CACA,YAAa,CACT,OAAO,MAAM,KAAK,IAAM,KAAO,CAAC,GAAK,CACzC,CACA,aAAaC,EAAU,CACnBA,EAAWA,EAAW,EAAI,EAC1B,MAAM,KAAK,IAAM,KAAO,CAAC,EAAIA,CACjC,CACA,cAAe,CACX,OAAO,MAAM,KAAK,IAAM,KAAO,CAAC,GAAK,CACzC,CACA,KAAK3E,EAAMyE,EAAY,CACnB,KAAK,iBAAiB,CAAC,EACvB,KAAK,SAASzE,CAAI,EAClB,KAAK,eAAeyE,CAAU,CAClC,CACA,iBAAiBG,EAAa,CAC1B,QAAQ,KAAK,IAAM,KAAO,IAAM,CAAC,EAAIA,CACzC,CACA,kBAAmB,CACf,OAAO,QAAQ,KAAK,IAAM,KAAO,IAAM,CAAC,CAC5C,CACJ,CAEA,SAAS,mBAAmB7E,EAAK,CAC7B,MAAAA,KAAS,EACJ,gBACD,cAAgBA,GAEd,aACV,CACA,mBAAmB,IAAM,KACzB,IAAI,kBAAoBwC,GAAQ,CAC5B,IAAIsC,EAAS,cACb,GAAI,CAACA,EACD,mBAAY,CAAC,EACN,EAEX,IAAIrK,EAAO,IAAI,cAAcqK,CAAM,EACnCrK,EAAK,iBAAiBqK,CAAM,EAC5B,IAAIC,EAAatK,EAAK,SAAS,EAC/B,GAAI,CAACsK,EACD,mBAAY,CAAC,EACND,EAEX,QAASE,KAAcxC,EAAM,CACzB,GAAIwC,IAAe,GAAKA,IAAeD,EACnC,MAEJ,IAAIE,EAAoBxK,EAAK,IAAM,GACnC,GAAI,iBAAiBuK,EAAYD,EAAYE,CAAiB,EAC1D,mBAAYD,CAAU,EACfF,CAEf,CACA,mBAAYC,CAAU,EACfD,CACX,EAEA,SAAS,8BAA+B,CACpC,OAAO,kBAAkB,CAAC,CAAC,CAC/B,CACA,6BAA6B,IAAM,IAEnC,SAAS,6BAA6BI,EAAM,CACxC,OAAAA,KAAU,EACH,kBAAkB,CAACA,CAAI,CAAC,CACnC,CACA,6BAA6B,IAAM,KAEnC,SAAS,6BAA6BA,EAAMC,EAAM,CAC9C,OAAAD,KAAU,EACVC,KAAU,EACH,kBAAkB,CAACD,EAAMC,CAAI,CAAC,CACzC,CACA,6BAA6B,IAAM,MAEnC,SAAS,6BAA6BD,EAAMC,EAAMC,EAAM,CACpD,OAAAF,KAAU,EACVC,KAAU,EACVC,KAAU,EACH,kBAAkB,CAACF,EAAMC,EAAMC,CAAI,CAAC,CAC/C,CACA,6BAA6B,IAAM,OACnC,IAAI,eAAiB,IAAM,CACvB,IAAI3K,EAAO,gBAAgB,IAAI,EAC1BA,GACD,MAAM,uBAAuB,EAEjC,IAAIuF,EAAMvF,EAAK,OACf,MAAKA,EAAK,aAAa,IACnB,gBAAgB,KAAKA,CAAI,EACzBA,EAAK,aAAa,EAAI,EACtBA,EAAK,WAAW,EAAK,EACrB,0BAEJ,cAAgBuF,EACV,aACV,EACA,eAAe,IAAM,IAErB,SAAS,iCAAiCA,EAAK,CAE3C,GADAA,KAAS,EACL,EAACA,EACL,KAAIvF,EAAO,IAAI,cAAcuF,CAAG,EAChC,gBAAgB,KAAKvF,CAAI,EACzBA,EAAK,aAAa,EAAI,EACtB,eAAe,EACnB,CACA,iCAAiC,IAAM,KAEvC,SAAS,aAAauF,EAAKC,EAAMyE,EAAY,CACzC1E,KAAS,EACTC,KAAU,EACVyE,KAAgB,EAChB,IAAIjK,EAAO,IAAI,cAAcuF,CAAG,EAChC,MAAAvF,EAAK,KAAKwF,EAAMyE,CAAU,EAC1B,cAAgB1E,EAChB,yBACM,aACV,CACA,aAAa,IAAM,OACnB,IAAI,2BAA6B,IAAM,uBACvC,2BAA2B,IAAM,IACjC,IAAI,eAAiB,IAAI,YAAY,OAAO,CACxC,MAAO,MACP,QAAS,EACb,EAAG,IAAI,EACH,cAAgB,QAChB,aAAe,QACf,iBAAmB,IAAI,YAAY,OAAO,CAC1C,MAAO,MACP,QAAS,EACb,EAAG,OAAO,EACN,KAAO,CACP,MAAO/G,GAAQA,EAAK,OAAO,CAAC,IAAM,IAClC,UAAWC,GAAY,CACnB,IAAImM,EAAc,gEAClB,OAAOA,EAAY,KAAKnM,CAAQ,EAAE,MAAM,CAAC,CAC7C,EACA,eAAgB,CAACoM,EAAOC,IAAmB,CAEvC,QADIC,EAAK,EACArK,EAAImK,EAAM,OAAS,EAAGnK,GAAK,EAAGA,IAAK,CACxC,IAAIsK,EAAOH,EAAMnK,CAAC,EACdsK,IAAS,IACTH,EAAM,OAAOnK,EAAG,CAAC,EACVsK,IAAS,MAChBH,EAAM,OAAOnK,EAAG,CAAC,EACjBqK,KACOA,IACPF,EAAM,OAAOnK,EAAG,CAAC,EACjBqK,IAER,CACA,GAAID,EACA,KAAOC,EAAIA,IACPF,EAAM,QAAQ,IAAI,EAG1B,OAAOA,CACX,EACA,UAAWrM,GAAQ,CACf,IAAIyM,EAAa,KAAK,MAAMzM,CAAI,EAC5B0M,EAAgB1M,EAAK,OAAO,EAAE,IAAM,IACxC,OAAAA,EAAO,KAAK,eAAeA,EAAK,MAAM,GAAG,EAAE,OAAO2M,GAAK,CAAC,CAACA,CAAC,EAAG,CAACF,CAAU,EAAE,KAAK,GAAG,EAC9E,CAACzM,GAAQ,CAACyM,IACVzM,EAAO,KAEPA,GAAQ0M,IACR1M,GAAQ,MAEJyM,EAAa,IAAM,IAAMzM,CACrC,EACA,QAASA,GAAQ,CACb,IAAIuB,EAAS,KAAK,UAAUvB,CAAI,EAC5B4M,EAAOrL,EAAO,CAAC,EACfsL,EAAMtL,EAAO,CAAC,EAClB,MAAI,CAACqL,GAAQ,CAACC,EACH,KAEPA,IACAA,EAAMA,EAAI,OAAO,EAAGA,EAAI,OAAS,CAAC,GAE/BD,EAAOC,EAClB,EACA,SAAU7M,GAAQ,CACd,GAAIA,IAAS,IAAK,MAAO,IACzBA,EAAO,KAAK,UAAUA,CAAI,EAC1BA,EAAOA,EAAK,QAAQ,MAAO,EAAE,EAC7B,IAAI8M,EAAY9M,EAAK,YAAY,GAAG,EACpC,OAAI8M,IAAc,GAAW9M,EACtBA,EAAK,OAAO8M,EAAY,CAAC,CACpC,EACA,KAAM,IAAIC,IAAU,KAAK,UAAUA,EAAM,KAAK,GAAG,CAAC,EAClD,MAAO,CAACtJ,EAAG,IAAM,KAAK,UAAUA,EAAI,IAAM,CAAC,CAC/C,EACI,eAAiB,IAAM,CACvB,GAAI,OAAO,QAAU,UAAY,OAAO,OAAO,iBAAsB,WACjE,OAAOuJ,GAAQ,OAAO,gBAAgBA,CAAI,EACvC,GAAI,oBACP,GAAI,CACA,IAAIC,EAAgB,EAAQ,QAAQ,EAChCC,EAAiBD,EAAc,eACnC,GAAIC,EACA,OAAOF,GAAQC,EAAc,eAAkBD,CAAI,EAEvD,IAAIG,EAAcF,EAAc,YAChC,OAAOD,IAASA,EAAK,IAAIG,EAAYH,EAAK,UAAU,CAAC,EAAGA,EAC5D,OAAShM,EAAG,CAAC,CAEjB,MAAM,kBAAkB,CAC5B,EACI,WAAagM,IAAS,WAAa,eAAe,GAAGA,CAAI,EACzD,QAAU,CACV,QAAS,IAAIzD,IAAS,CAGlB,QAFI6D,EAAe,GACfC,EAAmB,GACdnL,EAAIqH,EAAK,OAAS,EAAGrH,GAAK,IAAM,CAACmL,EAAkBnL,IAAK,CAC7D,IAAIlC,EAAOkC,GAAK,EAAIqH,EAAKrH,CAAC,EAAI,GAAG,IAAI,EACrC,GAAI,OAAOlC,GAAQ,SACf,MAAM,IAAI,UAAU,2CAA2C,EAC5D,GAAI,CAACA,EACR,MAAO,GAEXoN,EAAepN,EAAO,IAAMoN,EAC5BC,EAAmB,KAAK,MAAMrN,CAAI,CACtC,CACA,OAAAoN,EAAe,KAAK,eAAeA,EAAa,MAAM,GAAG,EAAE,OAAOT,GAAK,CAAC,CAACA,CAAC,EAAG,CAACU,CAAgB,EAAE,KAAK,GAAG,GAChGA,EAAmB,IAAM,IAAMD,GAAgB,GAC3D,EACA,SAAU,CAACE,EAAMC,IAAO,CACpBD,EAAO,QAAQ,QAAQA,CAAI,EAAE,OAAO,CAAC,EACrCC,EAAK,QAAQ,QAAQA,CAAE,EAAE,OAAO,CAAC,EAEjC,SAASC,EAAKC,EAAK,CAEf,QADIC,EAAQ,EACLA,EAAQD,EAAI,QACXA,EAAIC,CAAK,IAAM,GADIA,IACvB,CAGJ,QADIxI,EAAMuI,EAAI,OAAS,EAChBvI,GAAO,GACNuI,EAAIvI,CAAG,IAAM,GADJA,IACb,CAEJ,OAAIwI,EAAQxI,EAAY,CAAC,EAClBuI,EAAI,MAAMC,EAAOxI,EAAMwI,EAAQ,CAAC,CAC3C,CAKA,QAJIC,EAAYH,EAAKF,EAAK,MAAM,GAAG,CAAC,EAChCM,EAAUJ,EAAKD,EAAG,MAAM,GAAG,CAAC,EAC5BM,EAAS,KAAK,IAAIF,EAAU,OAAQC,EAAQ,MAAM,EAClDE,EAAkBD,EACb3L,EAAI,EAAGA,EAAI2L,EAAQ3L,IACxB,GAAIyL,EAAUzL,CAAC,IAAM0L,EAAQ1L,CAAC,EAAG,CAC7B4L,EAAkB5L,EAClB,KACJ,CAGJ,QADI6L,EAAc,CAAC,EACV7L,EAAI4L,EAAiB5L,EAAIyL,EAAU,OAAQzL,IAChD6L,EAAY,KAAK,IAAI,EAEzB,OAAAA,EAAcA,EAAY,OAAOH,EAAQ,MAAME,CAAe,CAAC,EACxDC,EAAY,KAAK,GAAG,CAC/B,CACJ,EACI,wBAA0B,CAAC,EAC3B,gBAAkBnJ,GAAO,CAEzB,QADIzC,EAAM,EACDD,EAAI,EAAGA,EAAI0C,EAAI,OAAQ,EAAE1C,EAAG,CACjC,IAAI8L,EAAIpJ,EAAI,WAAW1C,CAAC,EACpB8L,GAAK,IACL7L,IACO6L,GAAK,KACZ7L,GAAO,EACA6L,GAAK,OAASA,GAAK,OAC1B7L,GAAO,EACP,EAAED,GAEFC,GAAO,CAEf,CACA,OAAOA,CACX,EACA,OAAO,gBAAqB,gBAC5B,IAAI,kBAAoB,CAACyC,EAAKqJ,EAAMC,EAAQC,IAAoB,CAE5D,GADAD,KAAY,EACR,EAAEC,EAAkB,GAAI,MAAO,GAGnC,QAFIC,EAAWF,EACXxJ,EAASwJ,EAASC,EAAkB,EAC/BjM,EAAI,EAAGA,EAAI0C,EAAI,OAAQ,EAAE1C,EAAG,CACjC,IAAImM,EAAIzJ,EAAI,WAAW1C,CAAC,EACxB,GAAImM,GAAK,OAASA,GAAK,MAAO,CAC1B,IAAIvJ,EAAKF,EAAI,WAAW,EAAE1C,CAAC,EAC3BmM,EAAI,QAAUA,EAAI,OAAS,IAAMvJ,EAAK,IAC1C,CACA,GAAIuJ,GAAK,IAAK,CACV,GAAIH,GAAUxJ,EAAQ,MACtBuJ,EAAKC,MAAa,CAAC,EAAIG,CAC3B,SAAWA,GAAK,KAAM,CAClB,GAAIH,EAAS,GAAKxJ,EAAQ,MAC1BuJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,EAClCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,EAAI,EACrC,SAAWA,GAAK,MAAO,CACnB,GAAIH,EAAS,GAAKxJ,EAAQ,MAC1BuJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,GAClCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,EAAI,GACtCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,EAAI,EACrC,KAAO,CACH,GAAIH,EAAS,GAAKxJ,EAAQ,MAC1BuJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,GAClCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,GAAK,GACvCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,GAAK,EAAI,GACtCJ,EAAKC,MAAa,CAAC,EAAI,IAAMG,EAAI,EACrC,CACJ,CACA,OAAAJ,EAAKC,IAAW,CAAC,EAAI,EACdA,EAASE,CACpB,EAEA,SAAS,mBAAmBE,EAASC,EAAaV,EAAQ,CACtD,IAAI1L,EAAM0L,EAAS,EAAIA,EAAS,gBAAgBS,CAAO,EAAI,EACvDE,EAAU,IAAI,MAAMrM,CAAG,EACvBsM,EAAkB,kBAAkBH,EAASE,EAAS,EAAGA,EAAQ,MAAM,EAC3E,OAAID,IAAaC,EAAQ,OAASC,GAC3BD,CACX,CACA,IAAI,iBAAmB,IAAM,CACzB,GAAI,CAAC,wBAAwB,OAAQ,CACjC,IAAIjN,EAAS,KACb,GAAI,oBAAqB,CACrB,IAAImN,EAAU,IACVC,EAAM,OAAO,MAAMD,CAAO,EAC1BE,EAAY,EACZC,EAAK,QAAQ,MAAM,GACvB,GAAI,CACAD,EAAY,GAAG,SAASC,EAAIF,EAAK,EAAGD,CAAO,CAC/C,OAAS1N,EAAG,CACR,GAAIA,EAAE,SAAS,EAAE,SAAS,KAAK,EAAG4N,EAAY,MACzC,OAAM5N,CACf,CACI4N,EAAY,IACZrN,EAASoN,EAAI,MAAM,EAAGC,CAAS,EAAE,SAAS,OAAO,EAEzD,MAAW,OAAO,OAAU,KAAe,OAAO,OAAO,QAAU,aAC/DrN,EAAS,OAAO,OAAO,SAAS,EAC5BA,IAAW,OACXA,GAAU,OAGlB,GAAI,CAACA,EACD,OAAO,KAEX,wBAA0B,mBAAmBA,EAAQ,EAAI,CAC7D,CACA,OAAO,wBAAwB,MAAM,CACzC,EACI,IAAM,CACN,KAAM,CAAC,EACP,MAAO,CAAC,EACR,UAAW,CAAC,EACZ,SAASuN,EAAKC,EAAK,CACf,IAAI,KAAKD,CAAG,EAAI,CACZ,MAAO,CAAC,EACR,OAAQ,CAAC,EACT,IAAAC,CACJ,EACA,GAAG,eAAeD,EAAK,IAAI,UAAU,CACzC,EACA,WAAY,CACR,KAAKE,EAAQ,CACT,IAAIC,EAAM,IAAI,KAAKD,EAAO,KAAK,IAAI,EACnC,GAAI,CAACC,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BD,EAAO,IAAMC,EACbD,EAAO,SAAW,EACtB,EACA,MAAMA,EAAQ,CACVA,EAAO,IAAI,IAAI,MAAMA,EAAO,GAAG,CACnC,EACA,MAAMA,EAAQ,CACVA,EAAO,IAAI,IAAI,MAAMA,EAAO,GAAG,CACnC,EACA,KAAKA,EAAQE,EAAQjK,EAAQ4I,EAAQsB,EAAK,CACtC,GAAI,CAACH,EAAO,KAAO,CAACA,EAAO,IAAI,IAAI,SAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,EAG9B,QADIJ,EAAY,EACP1M,EAAI,EAAGA,EAAI2L,EAAQ3L,IAAK,CAC7B,IAAIX,EACJ,GAAI,CACAA,EAASyN,EAAO,IAAI,IAAI,SAASA,EAAO,GAAG,CAC/C,OAAShO,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CACA,GAAIO,IAAW,QAAaqN,IAAc,EACtC,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAIrN,GAAW,KAA8B,MAC7CqN,IACAM,EAAOjK,EAAS/C,CAAC,EAAIX,CACzB,CACA,OAAIqN,IACAI,EAAO,KAAK,UAAY,KAAK,IAAI,GAE9BJ,CACX,EACA,MAAMI,EAAQE,EAAQjK,EAAQ4I,EAAQsB,EAAK,CACvC,GAAI,CAACH,EAAO,KAAO,CAACA,EAAO,IAAI,IAAI,SAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CACA,QAAS9M,EAAI,EAAGA,EAAI2L,EAAQ3L,IACxB8M,EAAO,IAAI,IAAI,SAASA,EAAO,IAAKE,EAAOjK,EAAS/C,CAAC,CAAC,CAE9D,OAASlB,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CACA,OAAI6M,IACAmB,EAAO,KAAK,UAAY,KAAK,IAAI,GAE9B9M,CACX,CACJ,EACA,gBAAiB,CACb,SAAS+M,EAAK,CACV,OAAO,iBAAiB,CAC5B,EACA,SAASA,EAAKvG,EAAK,CACXA,IAAQ,MAAQA,IAAQ,IACxB,IAAI,kBAAkBuG,EAAI,MAAM,CAAC,EACjCA,EAAI,OAAS,CAAC,GAEVvG,GAAO,GAAGuG,EAAI,OAAO,KAAKvG,CAAG,CAEzC,EACA,MAAMuG,EAAK,CACHA,EAAI,QAAUA,EAAI,OAAO,OAAS,IAClC,IAAI,kBAAkBA,EAAI,MAAM,CAAC,EACjCA,EAAI,OAAS,CAAC,EAEtB,EACA,aAAaA,EAAK,CACd,MAAO,CACH,QAAS,MACT,QAAS,EACT,QAAS,IACT,QAAS,MACT,KAAM,CAAC,EAAG,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CACpH,CACJ,EACA,aAAaA,EAAKG,EAAkB/O,EAAM,CACtC,MAAO,EACX,EACA,iBAAiB4O,EAAK,CAClB,MAAO,CAAC,GAAI,EAAE,CAClB,CACJ,EACA,iBAAkB,CACd,SAASA,EAAKvG,EAAK,CACXA,IAAQ,MAAQA,IAAQ,IACxB,IAAI,kBAAkBuG,EAAI,MAAM,CAAC,EACjCA,EAAI,OAAS,CAAC,GAEVvG,GAAO,GAAGuG,EAAI,OAAO,KAAKvG,CAAG,CAEzC,EACA,MAAMuG,EAAK,CACHA,EAAI,QAAUA,EAAI,OAAO,OAAS,IAClC,IAAI,kBAAkBA,EAAI,MAAM,CAAC,EACjCA,EAAI,OAAS,CAAC,EAEtB,CACJ,CACJ,EACI,WAAa,CAACI,EAASjI,IAAS,CAChC,OAAO,KAAK,EAAGiI,EAASA,EAAUjI,CAAI,CAC1C,EACI,UAAYA,GAAQ,CACpBA,EAAO,YAAYA,EAAM,KAAK,EAC9B,IAAIL,EAAM,6BAA6B,MAAOK,CAAI,EAClD,OAAIL,GAAK,WAAWA,EAAKK,CAAI,EACtBL,CACX,EACI,MAAQ,CACR,UAAW,KACX,MAAMuI,EAAO,CACT,OAAO,MAAM,WAAW,KAAM,IAAK,MAAa,CAAC,CACrD,EACA,WAAWC,EAAQ7J,EAAM8J,EAAMV,EAAK,CAChC,GAAI,GAAG,SAASU,CAAI,GAAK,GAAG,OAAOA,CAAI,EACnC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,MAAM,YAAN,MAAM,UAAc,CAChB,IAAK,CACD,KAAM,CACF,QAAS,MAAM,SAAS,QACxB,QAAS,MAAM,SAAS,QACxB,OAAQ,MAAM,SAAS,OACvB,MAAO,MAAM,SAAS,MACtB,OAAQ,MAAM,SAAS,OACvB,OAAQ,MAAM,SAAS,OACvB,MAAO,MAAM,SAAS,MACtB,QAAS,MAAM,SAAS,QACxB,QAAS,MAAM,SAAS,OAC5B,EACA,OAAQ,CACJ,OAAQ,MAAM,WAAW,MAC7B,CACJ,EACA,KAAM,CACF,KAAM,CACF,QAAS,MAAM,SAAS,QACxB,QAAS,MAAM,SAAS,OAC5B,EACA,OAAQ,CACJ,OAAQ,MAAM,WAAW,OACzB,KAAM,MAAM,WAAW,KACvB,MAAO,MAAM,WAAW,MACxB,SAAU,MAAM,WAAW,SAC3B,KAAM,MAAM,WAAW,KACvB,MAAO,MAAM,WAAW,KAC5B,CACJ,EACA,KAAM,CACF,KAAM,CACF,QAAS,MAAM,SAAS,QACxB,QAAS,MAAM,SAAS,QACxB,SAAU,MAAM,SAAS,QAC7B,EACA,OAAQ,CAAC,CACb,EACA,OAAQ,CACJ,KAAM,CACF,QAAS,MAAM,SAAS,QACxB,QAAS,MAAM,SAAS,OAC5B,EACA,OAAQ,GAAG,iBACf,CACJ,GACA,IAAIC,EAAO,GAAG,WAAWF,EAAQ7J,EAAM8J,EAAMV,CAAG,EAChD,OAAI,GAAG,MAAMW,EAAK,IAAI,GAClBA,EAAK,SAAW,MAAM,UAAU,IAAI,KACpCA,EAAK,WAAa,MAAM,UAAU,IAAI,OACtCA,EAAK,SAAW,CAAC,GACV,GAAG,OAAOA,EAAK,IAAI,GAC1BA,EAAK,SAAW,MAAM,UAAU,KAAK,KACrCA,EAAK,WAAa,MAAM,UAAU,KAAK,OACvCA,EAAK,UAAY,EACjBA,EAAK,SAAW,MACT,GAAG,OAAOA,EAAK,IAAI,GAC1BA,EAAK,SAAW,MAAM,UAAU,KAAK,KACrCA,EAAK,WAAa,MAAM,UAAU,KAAK,QAChC,GAAG,SAASA,EAAK,IAAI,IAC5BA,EAAK,SAAW,MAAM,UAAU,OAAO,KACvCA,EAAK,WAAa,MAAM,UAAU,OAAO,QAE7CA,EAAK,UAAY,KAAK,IAAI,EACtBF,IACAA,EAAO,SAAS7J,CAAI,EAAI+J,EACxBF,EAAO,UAAYE,EAAK,WAErBA,CACX,EACA,wBAAwBA,EAAM,CAC1B,OAAKA,EAAK,SACNA,EAAK,SAAS,SAAiBA,EAAK,SAAS,SAAS,EAAGA,EAAK,SAAS,EACpE,IAAI,WAAWA,EAAK,QAAQ,EAFR,IAAI,WAAW,CAAC,CAG/C,EACA,kBAAkBA,EAAMC,EAAa,CACjC,IAAIC,EAAeF,EAAK,SAAWA,EAAK,SAAS,OAAS,EAC1D,GAAI,EAAAE,GAAgBD,GACpB,KAAIE,EAAwB,KAAO,KACnCF,EAAc,KAAK,IAAIA,EAAaC,GAAgBA,EAAeC,EAAwB,EAAI,SAAW,CAAC,EACvGD,GAAgB,IAAGD,EAAc,KAAK,IAAIA,EAAa,GAAG,GAC9D,IAAIG,EAAcJ,EAAK,SACvBA,EAAK,SAAW,IAAI,WAAWC,CAAW,EACtCD,EAAK,UAAY,GAAGA,EAAK,SAAS,IAAII,EAAY,SAAS,EAAGJ,EAAK,SAAS,EAAG,CAAC,EACxF,EACA,kBAAkBA,EAAMK,EAAS,CAC7B,GAAIL,EAAK,WAAaK,EACtB,GAAIA,GAAW,EACXL,EAAK,SAAW,KAChBA,EAAK,UAAY,MACd,CACH,IAAII,EAAcJ,EAAK,SACvBA,EAAK,SAAW,IAAI,WAAWK,CAAO,EAClCD,GACAJ,EAAK,SAAS,IAAII,EAAY,SAAS,EAAG,KAAK,IAAIC,EAASL,EAAK,SAAS,CAAC,CAAC,EAEhFA,EAAK,UAAYK,CACrB,CACJ,EACA,SAAU,CACN,QAAQL,EAAM,CACV,IAAIM,EAAO,CAAC,EACZ,OAAAA,EAAK,IAAM,GAAG,SAASN,EAAK,IAAI,EAAIA,EAAK,GAAK,EAC9CM,EAAK,IAAMN,EAAK,GAChBM,EAAK,KAAON,EAAK,KACjBM,EAAK,MAAQ,EACbA,EAAK,IAAM,EACXA,EAAK,IAAM,EACXA,EAAK,KAAON,EAAK,KACb,GAAG,MAAMA,EAAK,IAAI,EAClBM,EAAK,KAAO,KACL,GAAG,OAAON,EAAK,IAAI,EAC1BM,EAAK,KAAON,EAAK,UACV,GAAG,OAAOA,EAAK,IAAI,EAC1BM,EAAK,KAAON,EAAK,KAAK,OAEtBM,EAAK,KAAO,EAEhBA,EAAK,MAAQ,IAAI,KAAKN,EAAK,SAAS,EACpCM,EAAK,MAAQ,IAAI,KAAKN,EAAK,SAAS,EACpCM,EAAK,MAAQ,IAAI,KAAKN,EAAK,SAAS,EACpCM,EAAK,QAAU,KACfA,EAAK,OAAS,KAAK,KAAKA,EAAK,KAAOA,EAAK,OAAO,EACzCA,CACX,EACA,QAAQN,EAAMM,EAAM,CACZA,EAAK,OAAS,SACdN,EAAK,KAAOM,EAAK,MAEjBA,EAAK,YAAc,SACnBN,EAAK,UAAYM,EAAK,WAEtBA,EAAK,OAAS,QACd,MAAM,kBAAkBN,EAAMM,EAAK,IAAI,CAE/C,EACA,OAAOR,EAAQ7J,EAAM,CACjB,MAAM,GAAG,cAAc,EAAE,CAC7B,EACA,MAAM6J,EAAQ7J,EAAM8J,EAAMV,EAAK,CAC3B,OAAO,MAAM,WAAWS,EAAQ7J,EAAM8J,EAAMV,CAAG,CACnD,EACA,OAAOkB,EAAUC,EAASC,EAAU,CAChC,GAAI,GAAG,MAAMF,EAAS,IAAI,EAAG,CACzB,IAAIG,EACJ,GAAI,CACAA,EAAW,GAAG,WAAWF,EAASC,CAAQ,CAC9C,OAASlP,EAAG,CAAC,CACb,GAAImP,EACA,QAASjO,KAAKiO,EAAS,SACnB,MAAM,IAAI,GAAG,WAAW,EAAE,CAGtC,CACA,OAAOH,EAAS,OAAO,SAASA,EAAS,IAAI,EAC7CA,EAAS,OAAO,UAAY,KAAK,IAAI,EACrCA,EAAS,KAAOE,EAChBD,EAAQ,SAASC,CAAQ,EAAIF,EAC7BC,EAAQ,UAAYD,EAAS,OAAO,SACxC,EACA,OAAOT,EAAQ7J,EAAM,CACjB,OAAO6J,EAAO,SAAS7J,CAAI,EAC3B6J,EAAO,UAAY,KAAK,IAAI,CAChC,EACA,MAAMA,EAAQ7J,EAAM,CAChB,IAAI+J,EAAO,GAAG,WAAWF,EAAQ7J,CAAI,EACrC,QAASxD,KAAKuN,EAAK,SACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOF,EAAO,SAAS7J,CAAI,EAC3B6J,EAAO,UAAY,KAAK,IAAI,CAChC,EACA,QAAQE,EAAM,CACV,IAAIW,EAAU,CAAC,IAAK,IAAI,EACxB,QAASC,KAAO,OAAO,KAAKZ,EAAK,QAAQ,EACrCW,EAAQ,KAAKC,CAAG,EAEpB,OAAOD,CACX,EACA,QAAQb,EAAQe,EAASC,EAAS,CAC9B,IAAId,EAAO,MAAM,WAAWF,EAAQe,EAAS,MAAa,CAAC,EAC3D,OAAAb,EAAK,KAAOc,EACLd,CACX,EACA,SAASA,EAAM,CACX,GAAI,CAAC,GAAG,OAAOA,EAAK,IAAI,EACpB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAK,IAChB,CACJ,EACA,WAAY,CACR,KAAKT,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC3C,IAAIC,EAAWzB,EAAO,KAAK,SAC3B,GAAIwB,GAAYxB,EAAO,KAAK,UAAW,MAAO,GAC9C,IAAI5H,EAAO,KAAK,IAAI4H,EAAO,KAAK,UAAYwB,EAAU3C,CAAM,EAC5D,GAAIzG,EAAO,GAAKqJ,EAAS,SACrBvB,EAAO,IAAIuB,EAAS,SAASD,EAAUA,EAAWpJ,CAAI,EAAGnC,CAAM,MAE/D,SAAS/C,EAAI,EAAGA,EAAIkF,EAAMlF,IAAKgN,EAAOjK,EAAS/C,CAAC,EAAIuO,EAASD,EAAWtO,CAAC,EAE7E,OAAOkF,CACX,EACA,MAAM4H,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAUE,EAAQ,CAIpD,GAHIxB,EAAO,SAAW,MAAM,SACxBwB,EAAS,IAET,CAAC7C,EAAQ,MAAO,GACpB,IAAI4B,EAAOT,EAAO,KAElB,GADAS,EAAK,UAAY,KAAK,IAAI,EACtBP,EAAO,WAAa,CAACO,EAAK,UAAYA,EAAK,SAAS,UAAW,CAC/D,GAAIiB,EACA,OAAAjB,EAAK,SAAWP,EAAO,SAASjK,EAAQA,EAAS4I,CAAM,EACvD4B,EAAK,UAAY5B,EACVA,EACJ,GAAI4B,EAAK,YAAc,GAAKe,IAAa,EAC5C,OAAAf,EAAK,SAAWP,EAAO,MAAMjK,EAAQA,EAAS4I,CAAM,EACpD4B,EAAK,UAAY5B,EACVA,EACJ,GAAI2C,EAAW3C,GAAU4B,EAAK,UACjC,OAAAA,EAAK,SAAS,IAAIP,EAAO,SAASjK,EAAQA,EAAS4I,CAAM,EAAG2C,CAAQ,EAC7D3C,CAEf,CAEA,GADA,MAAM,kBAAkB4B,EAAMe,EAAW3C,CAAM,EAC3C4B,EAAK,SAAS,UAAYP,EAAO,SACjCO,EAAK,SAAS,IAAIP,EAAO,SAASjK,EAAQA,EAAS4I,CAAM,EAAG2C,CAAQ,MAEpE,SAAStO,EAAI,EAAGA,EAAI2L,EAAQ3L,IACxBuN,EAAK,SAASe,EAAWtO,CAAC,EAAIgN,EAAOjK,EAAS/C,CAAC,EAGvD,OAAAuN,EAAK,UAAY,KAAK,IAAIA,EAAK,UAAWe,EAAW3C,CAAM,EACpDA,CACX,EACA,OAAOmB,EAAQ/J,EAAQ0L,EAAQ,CAC3B,IAAIH,EAAWvL,EAQf,GAPI0L,IAAW,EACXH,GAAYxB,EAAO,SACZ2B,IAAW,GACd,GAAG,OAAO3B,EAAO,KAAK,IAAI,IAC1BwB,GAAYxB,EAAO,KAAK,WAG5BwB,EAAW,EACX,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,CACX,EACA,SAASxB,EAAQ/J,EAAQ4I,EAAQ,CAC7B,MAAM,kBAAkBmB,EAAO,KAAM/J,EAAS4I,CAAM,EACpDmB,EAAO,KAAK,UAAY,KAAK,IAAIA,EAAO,KAAK,UAAW/J,EAAS4I,CAAM,CAC3E,EACA,KAAKmB,EAAQnB,EAAQ2C,EAAUI,EAAM/J,EAAO,CACxC,GAAI,CAAC,GAAG,OAAOmI,EAAO,KAAK,IAAI,EAC3B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIjI,EACA8J,EACAJ,EAAWzB,EAAO,KAAK,SAC3B,GAAI,EAAEnI,EAAQ,IAAM4J,GAAYA,EAAS,SAAW,MAAM,OACtDI,EAAY,GACZ9J,EAAM0J,EAAS,eACZ,CAGH,GAFAI,EAAY,GACZ9J,EAAM,UAAU8G,CAAM,EAClB,CAAC9G,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE1B0J,KACID,EAAW,GAAKA,EAAW3C,EAAS4C,EAAS,UACzCA,EAAS,SACTA,EAAWA,EAAS,SAASD,EAAUA,EAAW3C,CAAM,EAExD4C,EAAW,MAAM,UAAU,MAAM,KAAKA,EAAUD,EAAUA,EAAW3C,CAAM,GAGnF,MAAM,IAAI4C,EAAU1J,IAAQ,CAAC,EAErC,CACA,MAAO,CACH,IAAAA,EACA,UAAA8J,CACJ,CACJ,EACA,MAAM7B,EAAQE,EAAQjK,EAAQ4I,EAAQiD,EAAW,CAC7C,aAAM,WAAW,MAAM9B,EAAQE,EAAQ,EAAGrB,EAAQ5I,EAAQ,EAAK,EACxD,CACX,CACJ,CACJ,EACI,kBAAoB,CAACsK,EAAQ7J,EAAMqL,EAAUC,EAASC,EAAUP,IAAW,CAC3E,GAAG,eAAenB,EAAQ7J,EAAMqL,EAAUC,EAASC,EAAUP,CAAM,CACvE,EACI,0BAA4B,CAACjG,EAAWyG,EAAUC,EAAQ/G,IAAY,CAClE,OAAO,QAAW,KAAa,QAAQ,KAAK,EAChD,IAAIgH,EAAU,GACd,sBAAe,QAAQC,GAAU,CACzBD,GACAC,EAAO,UAAaH,CAAQ,IAC5BG,EAAO,OAAU5G,EAAWyG,EAAUC,EAAQ/G,CAAO,EACrDgH,EAAU,GAElB,CAAC,EACMA,CACX,EACI,uBAAyB,CAAC7B,EAAQ7J,EAAMpF,EAAK0Q,EAASC,EAAU9G,EAAQC,EAASkH,EAAgBZ,EAAQa,IAAc,CACvH,IAAIL,EAAWxL,EAAO,QAAQ,QAAQ,KAAK,MAAM6J,EAAQ7J,CAAI,CAAC,EAAI6J,EAC9DjF,EAA6B,MAAM,OAAA4G,GAEvC,SAASM,EAAY/G,EAAW,CAC5B,SAAS0G,EAAO1G,EAAW,CACvB8G,GAAA,MAAAA,IACKD,GACD,kBAAkB/B,EAAQ7J,EAAM+E,EAAWuG,EAASC,EAAUP,CAAM,EAExEvG,GAAA,MAAAA,IACA,oBAAoBG,CAAG,CAC3B,CACI,0BAA0BG,EAAWyG,EAAUC,EAAQ,IAAM,CACzD/G,GAAA,MAAAA,IACA,oBAAoBE,CAAG,CAC3B,CAAC,GAGL6G,EAAO1G,CAAS,CACpB,CACA,iBAAiBH,CAAG,EAChB,OAAOhK,GAAO,SACd,UAAUA,EAAKkR,EAAapH,CAAO,EAEnCoH,EAAYlR,CAAG,CAEvB,EACI,qBAAuBsE,GAAO,CAC9B,IAAI6M,EAAY,CACZ,EAAG,EACH,KAAM,EACN,EAAG,IACH,KAAM,IACN,EAAG,KACH,KAAM,IACV,EACI5K,EAAQ4K,EAAU7M,CAAG,EACzB,GAAI,OAAOiC,EAAS,IAChB,MAAM,IAAI,MAAM,2BAA2B,OAAAjC,EAAK,EAEpD,OAAOiC,CACX,EACI,WAAa,CAACmK,EAASC,IAAa,CACpC,IAAIzB,EAAO,EACX,OAAIwB,IAASxB,GAAQ,KACjByB,IAAUzB,GAAQ,KACfA,CACX,EACI,GAAK,CACL,KAAM,KACN,OAAQ,CAAC,EACT,QAAS,CAAC,EACV,QAAS,CAAC,EACV,UAAW,EACX,UAAW,KACX,YAAa,IACb,YAAa,GACb,kBAAmB,GACnB,WAAY,KAAM,CAEd,YAAYkC,EAAO,CADnBxN,EAAA,YAAO,cAEH,KAAK,MAAQwN,CACjB,CACJ,EACA,cAAe,CAAC,EAChB,YAAa,KACb,eAAgB,EAChB,UAAW,CAAC,EACZ,SAAU,KAAM,CAAN,cACNxN,EAAA,cAAS,CAAC,GACV,IAAI,QAAS,CACT,OAAO,KAAK,IAChB,CACA,IAAI,OAAOwE,EAAK,CACZ,KAAK,KAAOA,CAChB,CACA,IAAI,QAAS,CACT,OAAQ,KAAK,MAAQ,WAAa,CACtC,CACA,IAAI,SAAU,CACV,OAAQ,KAAK,MAAQ,WAAa,CACtC,CACA,IAAI,UAAW,CACX,OAAO,KAAK,MAAQ,IACxB,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,KACvB,CACA,IAAI,MAAMA,EAAK,CACX,KAAK,OAAO,MAAQA,CACxB,CACA,IAAI,UAAW,CACX,OAAO,KAAK,OAAO,QACvB,CACA,IAAI,SAASA,EAAK,CACd,KAAK,OAAO,SAAWA,CAC3B,CACJ,EACA,OAAQ,KAAM,CAMV,YAAY6G,EAAQ7J,EAAM8J,EAAMmC,EAAM,CALtCzN,EAAA,gBAAW,CAAC,GACZA,EAAA,kBAAa,CAAC,GACdA,EAAA,gBAAW,KACXA,EAAA,iBAAY,KACZA,EAAA,eAAU,MAEDqL,IACDA,EAAS,MAEb,KAAK,OAASA,EACd,KAAK,MAAQA,EAAO,MACpB,KAAK,GAAK,GAAG,YACb,KAAK,KAAO7J,EACZ,KAAK,KAAO8J,EACZ,KAAK,KAAOmC,CAChB,CACA,IAAI,MAAO,CACP,OAAQ,KAAK,KAAO,KAAK,YAAc,KAAK,QAChD,CACA,IAAI,KAAKjJ,EAAK,CACVA,EAAM,KAAK,MAAQ,KAAK,SAAW,KAAK,MAAQ,CAAC,KAAK,QAC1D,CACA,IAAI,OAAQ,CACR,OAAQ,KAAK,KAAO,KAAK,aAAe,KAAK,SACjD,CACA,IAAI,MAAMA,EAAK,CACXA,EAAM,KAAK,MAAQ,KAAK,UAAY,KAAK,MAAQ,CAAC,KAAK,SAC3D,CACA,IAAI,UAAW,CACX,OAAO,GAAG,MAAM,KAAK,IAAI,CAC7B,CACA,IAAI,UAAW,CACX,OAAO,GAAG,SAAS,KAAK,IAAI,CAChC,CACJ,EACA,WAAW1I,EAAM4R,EAAO,CAAC,EAAG,CAExB,GADA5R,EAAO,QAAQ,QAAQA,CAAI,EACvB,CAACA,EAAM,MAAO,CACd,KAAM,GACN,KAAM,IACV,EACA,IAAI6R,EAAW,CACX,aAAc,GACd,cAAe,CACnB,EAEA,GADAD,EAAO,OAAO,OAAOC,EAAUD,CAAI,EAC/BA,EAAK,cAAgB,EACrB,MAAM,IAAI,GAAG,WAAW,EAAE,EAK9B,QAHIvF,EAAQrM,EAAK,MAAM,GAAG,EAAE,OAAO2M,GAAK,CAAC,CAACA,CAAC,EACvCmF,EAAU,GAAG,KACbC,EAAe,IACV7P,EAAI,EAAGA,EAAImK,EAAM,OAAQnK,IAAK,CACnC,IAAI8P,EAAS9P,IAAMmK,EAAM,OAAS,EAClC,GAAI2F,GAAUJ,EAAK,OACf,MASJ,GAPAE,EAAU,GAAG,WAAWA,EAASzF,EAAMnK,CAAC,CAAC,EACzC6P,EAAe,KAAK,MAAMA,EAAc1F,EAAMnK,CAAC,CAAC,EAC5C,GAAG,aAAa4P,CAAO,IACnB,CAACE,GAAUA,GAAUJ,EAAK,gBAC1BE,EAAUA,EAAQ,QAAQ,MAG9B,CAACE,GAAUJ,EAAK,OAEhB,QADIjL,EAAQ,EACL,GAAG,OAAOmL,EAAQ,IAAI,GAAG,CAC5B,IAAIG,EAAO,GAAG,SAASF,CAAY,EACnCA,EAAe,QAAQ,QAAQ,KAAK,QAAQA,CAAY,EAAGE,CAAI,EAC/D,IAAIC,EAAS,GAAG,WAAWH,EAAc,CACrC,cAAeH,EAAK,cAAgB,CACxC,CAAC,EAED,GADAE,EAAUI,EAAO,KACbvL,IAAU,GACV,MAAM,IAAI,GAAG,WAAW,EAAE,CAElC,CAER,CACA,MAAO,CACH,KAAMoL,EACN,KAAMD,CACV,CACJ,EACA,QAAQrC,EAAM,CAEV,QADIzP,IACS,CACT,GAAI,GAAG,OAAOyP,CAAI,EAAG,CACjB,IAAIH,EAAQG,EAAK,MAAM,WACvB,OAAKzP,EACEsP,EAAMA,EAAM,OAAS,CAAC,IAAM,IAAM,GAAG,OAAAA,EAAK,KAAI,OAAAtP,GAASsP,EAAQtP,EADpDsP,CAEtB,CACAtP,EAAOA,EAAO,GAAG,OAAAyP,EAAK,KAAI,KAAI,OAAAzP,GAASyP,EAAK,KAC5CA,EAAOA,EAAK,MAChB,CACJ,EACA,SAAS0C,EAAUzM,EAAM,CAErB,QADI0M,EAAO,EACFlQ,EAAI,EAAGA,EAAIwD,EAAK,OAAQxD,IAC7BkQ,GAAQA,GAAQ,GAAKA,EAAO1M,EAAK,WAAWxD,CAAC,EAAI,EAErD,OAAQiQ,EAAWC,IAAS,GAAK,GAAG,UAAU,MAClD,EACA,YAAY3C,EAAM,CACd,IAAI2C,EAAO,GAAG,SAAS3C,EAAK,OAAO,GAAIA,EAAK,IAAI,EAChDA,EAAK,UAAY,GAAG,UAAU2C,CAAI,EAClC,GAAG,UAAUA,CAAI,EAAI3C,CACzB,EACA,eAAeA,EAAM,CACjB,IAAI2C,EAAO,GAAG,SAAS3C,EAAK,OAAO,GAAIA,EAAK,IAAI,EAChD,GAAI,GAAG,UAAU2C,CAAI,IAAM3C,EACvB,GAAG,UAAU2C,CAAI,EAAI3C,EAAK,cAG1B,SADIqC,EAAU,GAAG,UAAUM,CAAI,EACxBN,GAAS,CACZ,GAAIA,EAAQ,YAAcrC,EAAM,CAC5BqC,EAAQ,UAAYrC,EAAK,UACzB,KACJ,CACAqC,EAAUA,EAAQ,SACtB,CAER,EACA,WAAWvC,EAAQ7J,EAAM,CACrB,IAAI2M,EAAU,GAAG,UAAU9C,CAAM,EACjC,GAAI8C,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAGnC,QADID,EAAO,GAAG,SAAS7C,EAAO,GAAI7J,CAAI,EAC7B+J,EAAO,GAAG,UAAU2C,CAAI,EAAG3C,EAAMA,EAAOA,EAAK,UAAW,CAC7D,IAAI6C,EAAW7C,EAAK,KACpB,GAAIA,EAAK,OAAO,KAAOF,EAAO,IAAM+C,IAAa5M,EAC7C,OAAO+J,CAEf,CACA,OAAO,GAAG,OAAOF,EAAQ7J,CAAI,CACjC,EACA,WAAW6J,EAAQ7J,EAAM8J,EAAMmC,EAAM,CACjC,IAAIlC,EAAO,IAAI,GAAG,OAAOF,EAAQ7J,EAAM8J,EAAMmC,CAAI,EACjD,UAAG,YAAYlC,CAAI,EACZA,CACX,EACA,YAAYA,EAAM,CACd,GAAG,eAAeA,CAAI,CAC1B,EACA,OAAOA,EAAM,CACT,OAAOA,IAASA,EAAK,MACzB,EACA,aAAaA,EAAM,CACf,MAAO,CAAC,CAACA,EAAK,OAClB,EACA,OAAOD,EAAM,CACT,OAAQA,EAAO,SAAW,KAC9B,EACA,MAAMA,EAAM,CACR,OAAQA,EAAO,SAAW,KAC9B,EACA,OAAOA,EAAM,CACT,OAAQA,EAAO,SAAW,KAC9B,EACA,SAASA,EAAM,CACX,OAAQA,EAAO,SAAW,IAC9B,EACA,SAASA,EAAM,CACX,OAAQA,EAAO,SAAW,KAC9B,EACA,OAAOA,EAAM,CACT,OAAQA,EAAO,SAAW,IAC9B,EACA,SAASA,EAAM,CACX,OAAQA,EAAO,SAAW,KAC9B,EACA,wBAAwB+C,EAAM,CAC1B,IAAIC,EAAQ,CAAC,IAAK,IAAK,IAAI,EAAED,EAAO,CAAC,EACrC,OAAIA,EAAO,MACPC,GAAS,KAENA,CACX,EACA,gBAAgB/C,EAAM+C,EAAO,CACzB,OAAI,GAAG,kBACI,EAEPA,EAAM,SAAS,GAAG,GAAK,EAAE/C,EAAK,KAAO,MAE9B+C,EAAM,SAAS,GAAG,GAAK,EAAE/C,EAAK,KAAO,MAErC+C,EAAM,SAAS,GAAG,GAAK,EAAE/C,EAAK,KAAO,IAHrC,EAMJ,CACX,EACA,UAAU5C,EAAK,CACX,GAAI,CAAC,GAAG,MAAMA,EAAI,IAAI,EAAG,MAAO,IAChC,IAAIwF,EAAU,GAAG,gBAAgBxF,EAAK,GAAG,EACzC,OAAIwF,IACCxF,EAAI,SAAS,OACX,EAD0B,EAErC,EACA,UAAUA,EAAKnH,EAAM,CACjB,GAAI,CACA,IAAI+J,EAAO,GAAG,WAAW5C,EAAKnH,CAAI,EAClC,MAAO,GACX,OAAS1E,EAAG,CAAC,CACb,OAAO,GAAG,gBAAgB6L,EAAK,IAAI,CACvC,EACA,UAAUA,EAAKnH,EAAM+M,EAAO,CACxB,IAAIhD,EACJ,GAAI,CACAA,EAAO,GAAG,WAAW5C,EAAKnH,CAAI,CAClC,OAAS1E,EAAG,CACR,OAAOA,EAAE,KACb,CACA,IAAIqR,EAAU,GAAG,gBAAgBxF,EAAK,IAAI,EAC1C,GAAIwF,EACA,OAAOA,EAEX,GAAII,EAAO,CACP,GAAI,CAAC,GAAG,MAAMhD,EAAK,IAAI,EACnB,MAAO,IAEX,GAAI,GAAG,OAAOA,CAAI,GAAK,GAAG,QAAQA,CAAI,IAAM,GAAG,IAAI,EAC/C,MAAO,GAEf,SACQ,GAAG,MAAMA,EAAK,IAAI,EAClB,MAAO,IAGf,MAAO,EACX,EACA,QAAQA,EAAM5I,EAAO,CACjB,OAAK4I,EAGD,GAAG,OAAOA,EAAK,IAAI,EACZ,GACA,GAAG,MAAMA,EAAK,IAAI,IACrB,GAAG,wBAAwB5I,CAAK,IAAM,KAAOA,EAAQ,KAC9C,GAGR,GAAG,gBAAgB4I,EAAM,GAAG,wBAAwB5I,CAAK,CAAC,EATtD,EAUf,EACA,aAAc,KACd,QAAS,CACL,QAASgI,EAAK,EAAGA,GAAM,GAAG,aAAcA,IACpC,GAAI,CAAC,GAAG,QAAQA,CAAE,EACd,OAAOA,EAGf,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,EACA,iBAAiBA,EAAI,CACjB,IAAIG,EAAS,GAAG,UAAUH,CAAE,EAC5B,GAAI,CAACG,EACD,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,OAAOA,CACX,EACA,UAAWH,GAAM,GAAG,QAAQA,CAAE,EAC9B,aAAaG,EAAQH,EAAK,GAAI,CAC1B,OAAAG,EAAS,OAAO,OAAO,IAAI,GAAG,SAAUA,CAAM,EAC1CH,GAAM,KACNA,EAAK,GAAG,OAAO,GAEnBG,EAAO,GAAKH,EACZ,GAAG,QAAQA,CAAE,EAAIG,EACVA,CACX,EACA,YAAYH,EAAI,CACZ,GAAG,QAAQA,CAAE,EAAI,IACrB,EACA,UAAU6D,EAAY7D,EAAK,GAAI,CAx0F/C,IAAAlP,EAAAgT,EAy0FoB,IAAI3D,EAAS,GAAG,aAAa0D,EAAY7D,CAAE,EAC3C,OAAA8D,GAAAhT,EAAAqP,EAAO,aAAP,YAAArP,EAAmB,MAAnB,MAAAgT,EAAA,KAAAhT,EAAyBqP,GAClBA,CACX,EACA,kBAAmB,CACf,KAAKA,EAAQ,CA90FjC,IAAArP,EAAAgT,EA+0FwB,IAAIC,EAAS,GAAG,UAAU5D,EAAO,KAAK,IAAI,EAC1CA,EAAO,WAAa4D,EAAO,YAC3BD,GAAAhT,EAAAqP,EAAO,YAAW,OAAlB,MAAA2D,EAAA,KAAAhT,EAAyBqP,EAC7B,EACA,QAAS,CACL,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CACJ,EACA,MAAOF,GAAOA,GAAO,EACrB,MAAOA,GAAOA,EAAM,IACpB,QAAS,CAAC+D,EAAIC,IAAOD,GAAM,EAAIC,EAC/B,eAAehE,EAAKC,EAAK,CACrB,GAAG,QAAQD,CAAG,EAAI,CACd,WAAYC,CAChB,CACJ,EACA,UAAWD,GAAO,GAAG,QAAQA,CAAG,EAChC,UAAUQ,EAAO,CAGb,QAFIyD,EAAS,CAAC,EACVC,EAAQ,CAAC1D,CAAK,EACX0D,EAAM,QAAQ,CACjB,IAAIC,EAAID,EAAM,IAAI,EAClBD,EAAO,KAAKE,CAAC,EACbD,EAAM,KAAK,GAAGC,EAAE,MAAM,CAC1B,CACA,OAAOF,CACX,EACA,OAAOG,EAAUpS,EAAU,CACnB,OAAOoS,GAAY,aACnBpS,EAAWoS,EACXA,EAAW,IAEf,GAAG,iBACC,GAAG,eAAiB,GACpB,IAAI,YAAY,UAAG,eAAc,0EAAyE,EAE9G,IAAIH,EAAS,GAAG,UAAU,GAAG,KAAK,KAAK,EACnCI,EAAY,EAEhB,SAASC,EAAWf,EAAS,CACzB,UAAG,iBACIvR,EAASuR,CAAO,CAC3B,CAEA,SAASgB,EAAKhB,EAAS,CACnB,GAAIA,EACA,OAAKgB,EAAK,QAIV,QAHIA,EAAK,QAAU,GACRD,EAAWf,CAAO,GAI7B,EAAEc,GAAaJ,EAAO,QACtBK,EAAW,IAAI,CAEvB,CACAL,EAAO,QAAQzD,GAAS,CACpB,GAAI,CAACA,EAAM,KAAK,OACZ,OAAO+D,EAAK,IAAI,EAEpB/D,EAAM,KAAK,OAAOA,EAAO4D,EAAUG,CAAI,CAC3C,CAAC,CACL,EACA,MAAMrM,EAAM4K,EAAM0B,EAAY,CAC1B,IAAI1G,EAAO0G,IAAe,IACtBC,EAAS,CAACD,EACV7D,EACJ,GAAI7C,GAAQ,GAAG,KACX,MAAM,IAAI,GAAG,WAAW,EAAE,EACvB,GAAI,CAACA,GAAQ,CAAC2G,EAAQ,CACzB,IAAIrB,EAAS,GAAG,WAAWoB,EAAY,CACnC,aAAc,EAClB,CAAC,EAGD,GAFAA,EAAapB,EAAO,KACpBzC,EAAOyC,EAAO,KACV,GAAG,aAAazC,CAAI,EACpB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAAC,GAAG,MAAMA,EAAK,IAAI,EACnB,MAAM,IAAI,GAAG,WAAW,EAAE,CAElC,CACA,IAAIH,EAAQ,CACR,KAAAtI,EACA,KAAA4K,EACA,WAAA0B,EACA,OAAQ,CAAC,CACb,EACIE,EAAYxM,EAAK,MAAMsI,CAAK,EAChC,OAAAkE,EAAU,MAAQlE,EAClBA,EAAM,KAAOkE,EACT5G,EACA,GAAG,KAAO4G,EACH/D,IACPA,EAAK,QAAUH,EACXG,EAAK,OACLA,EAAK,MAAM,OAAO,KAAKH,CAAK,GAG7BkE,CACX,EACA,QAAQF,EAAY,CAChB,IAAIpB,EAAS,GAAG,WAAWoB,EAAY,CACnC,aAAc,EAClB,CAAC,EACD,GAAI,CAAC,GAAG,aAAapB,EAAO,IAAI,EAC5B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIzC,EAAOyC,EAAO,KACd5C,EAAQG,EAAK,QACbsD,EAAS,GAAG,UAAUzD,CAAK,EAC/B,OAAO,KAAK,GAAG,SAAS,EAAE,QAAQ8C,GAAQ,CAEtC,QADIN,EAAU,GAAG,UAAUM,CAAI,EACxBN,GAAS,CACZ,IAAI2B,EAAO3B,EAAQ,UACfiB,EAAO,SAASjB,EAAQ,KAAK,GAC7B,GAAG,YAAYA,CAAO,EAE1BA,EAAU2B,CACd,CACJ,CAAC,EACDhE,EAAK,QAAU,KACf,IAAIjL,EAAMiL,EAAK,MAAM,OAAO,QAAQH,CAAK,EACzCG,EAAK,MAAM,OAAO,OAAOjL,EAAK,CAAC,CACnC,EACA,OAAO+K,EAAQ7J,EAAM,CACjB,OAAO6J,EAAO,SAAS,OAAOA,EAAQ7J,CAAI,CAC9C,EACA,MAAM1F,EAAMwP,EAAMV,EAAK,CACnB,IAAIoD,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGuP,EAAS2C,EAAO,KAChBxM,EAAO,KAAK,SAAS1F,CAAI,EAC7B,GAAI,CAAC0F,GAAQA,IAAS,KAAOA,IAAS,KAClC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI2M,EAAU,GAAG,UAAU9C,EAAQ7J,CAAI,EACvC,GAAI2M,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAI,CAAC9C,EAAO,SAAS,MACjB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAO,SAAS,MAAMA,EAAQ7J,EAAM8J,EAAMV,CAAG,CACxD,EACA,OAAO9O,EAAMwP,EAAM,CACf,OAAAA,EAAOA,IAAS,OAAYA,EAAO,IACnCA,GAAQ,KACRA,GAAQ,MACD,GAAG,MAAMxP,EAAMwP,EAAM,CAAC,CACjC,EACA,MAAMxP,EAAMwP,EAAM,CACd,OAAAA,EAAOA,IAAS,OAAYA,EAAO,IACnCA,GAAQ,KACRA,GAAQ,MACD,GAAG,MAAMxP,EAAMwP,EAAM,CAAC,CACjC,EACA,UAAUxP,EAAMwP,EAAM,CAGlB,QAFIkE,EAAO1T,EAAK,MAAM,GAAG,EACrB2T,EAAI,GACCzR,EAAI,EAAGA,EAAIwR,EAAK,OAAQ,EAAExR,EAC/B,GAAKwR,EAAKxR,CAAC,EACX,CAAAyR,GAAK,IAAMD,EAAKxR,CAAC,EACjB,GAAI,CACA,GAAG,MAAMyR,EAAGnE,CAAI,CACpB,OAASxO,EAAG,CACR,GAAIA,EAAE,OAAS,GAAI,MAAMA,CAC7B,EAER,EACA,MAAMhB,EAAMwP,EAAMV,EAAK,CACnB,OAAI,OAAOA,EAAO,MACdA,EAAMU,EACNA,EAAO,KAEXA,GAAQ,KACD,GAAG,MAAMxP,EAAMwP,EAAMV,CAAG,CACnC,EACA,QAAQyB,EAASqD,EAAS,CACtB,GAAI,CAAC,QAAQ,QAAQrD,CAAO,EACxB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI2B,EAAS,GAAG,WAAW0B,EAAS,CAChC,OAAQ,EACZ,CAAC,EACGrE,EAAS2C,EAAO,KACpB,GAAI,CAAC3C,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIe,EAAU,KAAK,SAASsD,CAAO,EAC/BvB,EAAU,GAAG,UAAU9C,EAAQe,CAAO,EAC1C,GAAI+B,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAI,CAAC9C,EAAO,SAAS,QACjB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAO,SAAS,QAAQA,EAAQe,EAASC,CAAO,CAC3D,EACA,OAAOsD,EAAUC,EAAU,CACvB,IAAIC,EAAc,KAAK,QAAQF,CAAQ,EACnCG,EAAc,KAAK,QAAQF,CAAQ,EACnCG,EAAW,KAAK,SAASJ,CAAQ,EACjC3D,EAAW,KAAK,SAAS4D,CAAQ,EACjC5B,EAAQgC,EAASjE,EASrB,GARAiC,EAAS,GAAG,WAAW2B,EAAU,CAC7B,OAAQ,EACZ,CAAC,EACDK,EAAUhC,EAAO,KACjBA,EAAS,GAAG,WAAW4B,EAAU,CAC7B,OAAQ,EACZ,CAAC,EACD7D,EAAUiC,EAAO,KACb,CAACgC,GAAW,CAACjE,EAAS,MAAM,IAAI,GAAG,WAAW,EAAE,EACpD,GAAIiE,EAAQ,QAAUjE,EAAQ,MAC1B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAID,EAAW,GAAG,WAAWkE,EAASD,CAAQ,EAC1CE,EAAW,QAAQ,SAASN,EAAUG,CAAW,EACrD,GAAIG,EAAS,OAAO,CAAC,IAAM,IACvB,MAAM,IAAI,GAAG,WAAW,EAAE,EAG9B,GADAA,EAAW,QAAQ,SAASL,EAAUC,CAAW,EAC7CI,EAAS,OAAO,CAAC,IAAM,IACvB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIhE,EACJ,GAAI,CACAA,EAAW,GAAG,WAAWF,EAASC,CAAQ,CAC9C,OAASlP,EAAG,CAAC,CACb,GAAIgP,IAAaG,EAGjB,KAAIsC,EAAQ,GAAG,MAAMzC,EAAS,IAAI,EAC9BqC,EAAU,GAAG,UAAU6B,EAASD,EAAUxB,CAAK,EACnD,GAAIJ,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAGnC,GADAA,EAAUlC,EAAW,GAAG,UAAUF,EAASC,EAAUuC,CAAK,EAAI,GAAG,UAAUxC,EAASC,CAAQ,EACxFmC,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAI,CAAC6B,EAAQ,SAAS,OAClB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,aAAalE,CAAQ,GAAKG,GAAY,GAAG,aAAaA,CAAQ,EACjE,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAIF,IAAYiE,IACZ7B,EAAU,GAAG,gBAAgB6B,EAAS,GAAG,EACrC7B,GACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAGvC,GAAG,eAAerC,CAAQ,EAC1B,GAAI,CACAkE,EAAQ,SAAS,OAAOlE,EAAUC,EAASC,CAAQ,EACnDF,EAAS,OAASC,CACtB,OAASjP,EAAG,CACR,MAAMA,CACV,QAAE,CACE,GAAG,YAAYgP,CAAQ,CAC3B,EACJ,EACA,MAAMhQ,EAAM,CACR,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGuP,EAAS2C,EAAO,KAChBxM,EAAO,KAAK,SAAS1F,CAAI,EACzByP,EAAO,GAAG,WAAWF,EAAQ7J,CAAI,EACjC2M,EAAU,GAAG,UAAU9C,EAAQ7J,EAAM,EAAI,EAC7C,GAAI2M,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAI,CAAC9C,EAAO,SAAS,MACjB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,aAAaE,CAAI,EACpB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BF,EAAO,SAAS,MAAMA,EAAQ7J,CAAI,EAClC,GAAG,YAAY+J,CAAI,CACvB,EACA,QAAQzP,EAAM,CACV,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGyP,EAAOyC,EAAO,KAClB,GAAI,CAACzC,EAAK,SAAS,QACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAK,SAAS,QAAQA,CAAI,CACrC,EACA,OAAOzP,EAAM,CACT,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGuP,EAAS2C,EAAO,KACpB,GAAI,CAAC3C,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI7J,EAAO,KAAK,SAAS1F,CAAI,EACzByP,EAAO,GAAG,WAAWF,EAAQ7J,CAAI,EACjC2M,EAAU,GAAG,UAAU9C,EAAQ7J,EAAM,EAAK,EAC9C,GAAI2M,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAI,CAAC9C,EAAO,SAAS,OACjB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,aAAaE,CAAI,EACpB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BF,EAAO,SAAS,OAAOA,EAAQ7J,CAAI,EACnC,GAAG,YAAY+J,CAAI,CACvB,EACA,SAASzP,EAAM,CACX,IAAIkS,EAAS,GAAG,WAAWlS,CAAI,EAC3BiS,EAAOC,EAAO,KAClB,GAAI,CAACD,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACA,EAAK,SAAS,SACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAO,QAAQ,QAAQ,GAAG,QAAQA,EAAK,MAAM,EAAGA,EAAK,SAAS,SAASA,CAAI,CAAC,CAChF,EACA,KAAKjS,EAAMoU,EAAY,CACnB,IAAIlC,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,CAACoU,CACb,CAAC,EACG3E,EAAOyC,EAAO,KAClB,GAAI,CAACzC,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACA,EAAK,SAAS,QACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAK,SAAS,QAAQA,CAAI,CACrC,EACA,MAAMzP,EAAM,CACR,OAAO,GAAG,KAAKA,EAAM,EAAI,CAC7B,EACA,MAAMA,EAAMwP,EAAM4E,EAAY,CAC1B,IAAI3E,EACJ,GAAI,OAAOzP,GAAQ,SAAU,CACzB,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,CAACoU,CACb,CAAC,EACD3E,EAAOyC,EAAO,IAClB,MACIzC,EAAOzP,EAEX,GAAI,CAACyP,EAAK,SAAS,QACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BA,EAAK,SAAS,QAAQA,EAAM,CACxB,KAAMD,EAAO,KAAOC,EAAK,KAAO,MAChC,UAAW,KAAK,IAAI,CACxB,CAAC,CACL,EACA,OAAOzP,EAAMwP,EAAM,CACf,GAAG,MAAMxP,EAAMwP,EAAM,EAAI,CAC7B,EACA,OAAOX,EAAIW,EAAM,CACb,IAAIR,EAAS,GAAG,iBAAiBH,CAAE,EACnC,GAAG,MAAMG,EAAO,KAAMQ,CAAI,CAC9B,EACA,MAAMxP,EAAMqU,EAAKC,EAAKF,EAAY,CAC9B,IAAI3E,EACJ,GAAI,OAAOzP,GAAQ,SAAU,CACzB,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,CAACoU,CACb,CAAC,EACD3E,EAAOyC,EAAO,IAClB,MACIzC,EAAOzP,EAEX,GAAI,CAACyP,EAAK,SAAS,QACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BA,EAAK,SAAS,QAAQA,EAAM,CACxB,UAAW,KAAK,IAAI,CACxB,CAAC,CACL,EACA,OAAOzP,EAAMqU,EAAKC,EAAK,CACnB,GAAG,MAAMtU,EAAMqU,EAAKC,EAAK,EAAI,CACjC,EACA,OAAOzF,EAAIwF,EAAKC,EAAK,CACjB,IAAItF,EAAS,GAAG,iBAAiBH,CAAE,EACnC,GAAG,MAAMG,EAAO,KAAMqF,EAAKC,CAAG,CAClC,EACA,SAAStU,EAAMmC,EAAK,CAChB,GAAIA,EAAM,EACN,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIsN,EACJ,GAAI,OAAOzP,GAAQ,SAAU,CACzB,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACDyP,EAAOyC,EAAO,IAClB,MACIzC,EAAOzP,EAEX,GAAI,CAACyP,EAAK,SAAS,QACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,MAAMA,EAAK,IAAI,EAClB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAAC,GAAG,OAAOA,EAAK,IAAI,EACpB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI4C,EAAU,GAAG,gBAAgB5C,EAAM,GAAG,EAC1C,GAAI4C,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC5C,EAAK,SAAS,QAAQA,EAAM,CACxB,KAAMtN,EACN,UAAW,KAAK,IAAI,CACxB,CAAC,CACL,EACA,UAAU0M,EAAI1M,EAAK,CACf,IAAI6M,EAAS,GAAG,iBAAiBH,CAAE,EACnC,GAAK,EAAAG,EAAO,MAAQ,SAChB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAG,SAASA,EAAO,KAAM7M,CAAG,CAChC,EACA,MAAMnC,EAAMuU,EAAOC,EAAO,CACtB,IAAItC,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGyP,EAAOyC,EAAO,KAClBzC,EAAK,SAAS,QAAQA,EAAM,CACxB,UAAW,KAAK,IAAI8E,EAAOC,CAAK,CACpC,CAAC,CACL,EACA,KAAKxU,EAAM6G,EAAO2I,EAAM,CACpB,GAAIxP,IAAS,GACT,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B6G,EAAQ,OAAOA,GAAS,SAAW,qBAAqBA,CAAK,EAAIA,EAC7DA,EAAQ,IACR2I,EAAO,OAAOA,EAAQ,IAAc,IAAMA,EAC1CA,EAAOA,EAAO,KAAO,OAErBA,EAAO,EAEX,IAAIC,EACJ,GAAI,OAAOzP,GAAQ,SACfyP,EAAOzP,MACJ,CACHA,EAAO,KAAK,UAAUA,CAAI,EAC1B,GAAI,CACA,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EAAE6G,EAAQ,OACtB,CAAC,EACD4I,EAAOyC,EAAO,IAClB,OAASlR,EAAG,CAAC,CACjB,CACA,IAAIyT,EAAU,GACd,GAAI5N,EAAQ,GACR,GAAI4I,GACA,GAAI5I,EAAQ,IACR,MAAM,IAAI,GAAG,WAAW,EAAE,OAG9B4I,EAAO,GAAG,MAAMzP,EAAMwP,EAAM,CAAC,EAC7BiF,EAAU,GAGlB,GAAI,CAAChF,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAK9B,GAHI,GAAG,SAASA,EAAK,IAAI,IACrB5I,GAAS,MAETA,EAAQ,OAAS,CAAC,GAAG,MAAM4I,EAAK,IAAI,EACpC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACgF,EAAS,CACV,IAAIpC,EAAU,GAAG,QAAQ5C,EAAM5I,CAAK,EACpC,GAAIwL,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,CAEvC,CACIxL,EAAQ,KAAO,CAAC4N,GAChB,GAAG,SAAShF,EAAM,CAAC,EAEvB5I,GAAS,QACT,IAAImI,EAAS,GAAG,aAAa,CACzB,KAAAS,EACA,KAAM,GAAG,QAAQA,CAAI,EACrB,MAAA5I,EACA,SAAU,GACV,SAAU,EACV,WAAY4I,EAAK,WACjB,SAAU,CAAC,EACX,MAAO,EACX,CAAC,EACD,OAAIT,EAAO,WAAW,MAClBA,EAAO,WAAW,KAAKA,CAAM,EAE7B,OAAO,cAAmB,EAAEnI,EAAQ,KAC9B7G,KAAQ,GAAG,YACb,GAAG,UAAUA,CAAI,EAAI,IAGtBgP,CACX,EACA,MAAMA,EAAQ,CACV,GAAI,GAAG,SAASA,CAAM,EAClB,MAAM,IAAI,GAAG,WAAW,CAAC,EAEzBA,EAAO,WAAUA,EAAO,SAAW,MACvC,GAAI,CACIA,EAAO,WAAW,OAClBA,EAAO,WAAW,MAAMA,CAAM,CAEtC,OAAShO,EAAG,CACR,MAAMA,CACV,QAAE,CACE,GAAG,YAAYgO,EAAO,EAAE,CAC5B,CACAA,EAAO,GAAK,IAChB,EACA,SAASA,EAAQ,CACb,OAAOA,EAAO,KAAO,IACzB,EACA,OAAOA,EAAQ/J,EAAQ0L,EAAQ,CAC3B,GAAI,GAAG,SAAS3B,CAAM,EAClB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI,CAACA,EAAO,UAAY,CAACA,EAAO,WAAW,OACvC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI2B,GAAU,GAAKA,GAAU,GAAKA,GAAU,EACxC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAA3B,EAAO,SAAWA,EAAO,WAAW,OAAOA,EAAQ/J,EAAQ0L,CAAM,EACjE3B,EAAO,SAAW,CAAC,EACZA,EAAO,QAClB,EACA,KAAKA,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC3C,GAAI3C,EAAS,GAAK2C,EAAW,EACzB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,SAASxB,CAAM,EAClB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,IAAKA,EAAO,MAAQ,WAAa,EAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI,GAAG,MAAMA,EAAO,KAAK,IAAI,EACzB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACA,EAAO,WAAW,KACnB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI0F,EAAU,OAAOlE,EAAY,IACjC,GAAI,CAACkE,EACDlE,EAAWxB,EAAO,iBACX,CAACA,EAAO,SACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIJ,EAAYI,EAAO,WAAW,KAAKA,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,CAAQ,EAC/E,OAAKkE,IAAS1F,EAAO,UAAYJ,GAC1BA,CACX,EACA,MAAMI,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAUE,EAAQ,CACpD,GAAI7C,EAAS,GAAK2C,EAAW,EACzB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,GAAG,SAASxB,CAAM,EAClB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAK,EAAAA,EAAO,MAAQ,SAChB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI,GAAG,MAAMA,EAAO,KAAK,IAAI,EACzB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACA,EAAO,WAAW,MACnB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE1BA,EAAO,UAAYA,EAAO,MAAQ,MAClC,GAAG,OAAOA,EAAQ,EAAG,CAAC,EAE1B,IAAI0F,EAAU,OAAOlE,EAAY,IACjC,GAAI,CAACkE,EACDlE,EAAWxB,EAAO,iBACX,CAACA,EAAO,SACf,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI2F,EAAe3F,EAAO,WAAW,MAAMA,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAUE,CAAM,EAC3F,OAAKgE,IAAS1F,EAAO,UAAY2F,GAC1BA,CACX,EACA,SAAS3F,EAAQ/J,EAAQ4I,EAAQ,CAC7B,GAAI,GAAG,SAASmB,CAAM,EAClB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI/J,EAAS,GAAK4I,GAAU,EACxB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAK,EAAAmB,EAAO,MAAQ,SAChB,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI,CAAC,GAAG,OAAOA,EAAO,KAAK,IAAI,GAAK,CAAC,GAAG,MAAMA,EAAO,KAAK,IAAI,EAC1D,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACA,EAAO,WAAW,SACnB,MAAM,IAAI,GAAG,WAAW,GAAG,EAE/BA,EAAO,WAAW,SAASA,EAAQ/J,EAAQ4I,CAAM,CACrD,EACA,KAAKmB,EAAQnB,EAAQ2C,EAAUI,EAAM/J,EAAO,CACxC,GAAK+J,EAAO,GAAa,EAAA/J,EAAQ,KAAamI,EAAO,MAAQ,WAAa,EACtE,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,IAAKA,EAAO,MAAQ,WAAa,EAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAI,CAACA,EAAO,WAAW,KACnB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAACnB,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOmB,EAAO,WAAW,KAAKA,EAAQnB,EAAQ2C,EAAUI,EAAM/J,CAAK,CACvE,EACA,MAAMmI,EAAQE,EAAQjK,EAAQ4I,EAAQiD,EAAW,CAC7C,OAAK9B,EAAO,WAAW,MAGhBA,EAAO,WAAW,MAAMA,EAAQE,EAAQjK,EAAQ4I,EAAQiD,CAAS,EAF7D,CAGf,EACA,MAAM9B,EAAQ4F,EAAKC,EAAK,CACpB,GAAI,CAAC7F,EAAO,WAAW,MACnB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOA,EAAO,WAAW,MAAMA,EAAQ4F,EAAKC,CAAG,CACnD,EACA,SAAS7U,EAAM4R,EAAO,CAAC,EAAG,CAGtB,GAFAA,EAAK,MAAQA,EAAK,OAAS,EAC3BA,EAAK,SAAWA,EAAK,UAAY,SAC7BA,EAAK,WAAa,QAAUA,EAAK,WAAa,SAC9C,MAAM,IAAI,MAAM,0BAA0B,OAAAA,EAAK,SAAQ,IAAG,EAE9D,IAAI1R,EACA8O,EAAS,GAAG,KAAKhP,EAAM4R,EAAK,KAAK,EACjCkD,EAAO,GAAG,KAAK9U,CAAI,EACnB6N,EAASiH,EAAK,KACdnG,EAAM,IAAI,WAAWd,CAAM,EAC/B,UAAG,KAAKmB,EAAQL,EAAK,EAAGd,EAAQ,CAAC,EAC7B+D,EAAK,WAAa,OAClB1R,EAAM,kBAAkByO,CAAG,EACpBiD,EAAK,WAAa,WACzB1R,EAAMyO,GAEV,GAAG,MAAMK,CAAM,EACR9O,CACX,EACA,UAAUF,EAAMK,EAAMuR,EAAO,CAAC,EAAG,CAC7BA,EAAK,MAAQA,EAAK,OAAS,IAC3B,IAAI5C,EAAS,GAAG,KAAKhP,EAAM4R,EAAK,MAAOA,EAAK,IAAI,EAChD,GAAI,OAAOvR,GAAQ,SAAU,CACzB,IAAIsO,EAAM,IAAI,WAAW,gBAAgBtO,CAAI,EAAI,CAAC,EAC9C0U,EAAiB,kBAAkB1U,EAAMsO,EAAK,EAAGA,EAAI,MAAM,EAC/D,GAAG,MAAMK,EAAQL,EAAK,EAAGoG,EAAgB,OAAWnD,EAAK,MAAM,CACnE,SAAW,YAAY,OAAOvR,CAAI,EAC9B,GAAG,MAAM2O,EAAQ3O,EAAM,EAAGA,EAAK,WAAY,OAAWuR,EAAK,MAAM,MAEjE,OAAM,IAAI,MAAM,uBAAuB,EAE3C,GAAG,MAAM5C,CAAM,CACnB,EACA,IAAK,IAAM,GAAG,YACd,MAAMhP,EAAM,CACR,IAAIkS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACD,GAAIkS,EAAO,OAAS,KAChB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAI,CAAC,GAAG,MAAMA,EAAO,KAAK,IAAI,EAC1B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIG,EAAU,GAAG,gBAAgBH,EAAO,KAAM,GAAG,EACjD,GAAIG,EACA,MAAM,IAAI,GAAG,WAAWA,CAAO,EAEnC,GAAG,YAAcH,EAAO,IAC5B,EACA,0BAA2B,CACvB,GAAG,MAAM,MAAM,EACf,GAAG,MAAM,OAAO,EAChB,GAAG,MAAM,gBAAgB,CAC7B,EACA,sBAAuB,CACnB,GAAG,MAAM,MAAM,EACf,GAAG,eAAe,GAAG,QAAQ,EAAG,CAAC,EAAG,CAChC,KAAM,IAAM,EACZ,MAAO,CAAClD,EAAQE,EAAQjK,EAAQ4I,EAAQsB,IAAQtB,CACpD,CAAC,EACD,GAAG,MAAM,YAAa,GAAG,QAAQ,EAAG,CAAC,CAAC,EACtC,IAAI,SAAS,GAAG,QAAQ,EAAG,CAAC,EAAG,IAAI,eAAe,EAClD,IAAI,SAAS,GAAG,QAAQ,EAAG,CAAC,EAAG,IAAI,gBAAgB,EACnD,GAAG,MAAM,WAAY,GAAG,QAAQ,EAAG,CAAC,CAAC,EACrC,GAAG,MAAM,YAAa,GAAG,QAAQ,EAAG,CAAC,CAAC,EACtC,IAAImH,EAAe,IAAI,WAAW,IAAI,EAClCC,EAAa,EACbC,EAAa,KACTD,IAAe,IACfA,EAAa,WAAWD,CAAY,EAAE,YAEnCA,EAAa,EAAEC,CAAU,GAEpC,GAAG,aAAa,OAAQ,SAAUC,CAAU,EAC5C,GAAG,aAAa,OAAQ,UAAWA,CAAU,EAC7C,GAAG,MAAM,UAAU,EACnB,GAAG,MAAM,cAAc,CAC3B,EACA,0BAA2B,CACvB,GAAG,MAAM,OAAO,EAChB,IAAIC,EAAY,GAAG,MAAM,YAAY,EACrC,GAAG,MAAM,eAAe,EACxB,GAAG,MAAM,CACL,OAAQ,CACJ,IAAI1F,EAAO,GAAG,WAAW0F,EAAW,KAAM,MAAa,EAAE,EACzD,OAAA1F,EAAK,SAAW,CACZ,OAAOF,EAAQ7J,EAAM,CACjB,IAAImJ,EAAK,CAACnJ,EACNsJ,EAAS,GAAG,iBAAiBH,CAAE,EAC/B3O,EAAM,CACN,OAAQ,KACR,MAAO,CACH,WAAY,MAChB,EACA,SAAU,CACN,SAAU,IAAM8O,EAAO,IAC3B,CACJ,EACA,OAAA9O,EAAI,OAASA,EACNA,CACX,CACJ,EACOuP,CACX,CACJ,EAAG,CAAC,EAAG,eAAe,CAC1B,EACA,sBAAsB2F,EAAOC,EAAQ9S,EAAO,CACpC6S,EACA,GAAG,aAAa,OAAQ,QAASA,CAAK,EAEtC,GAAG,QAAQ,WAAY,YAAY,EAEnCC,EACA,GAAG,aAAa,OAAQ,SAAU,KAAMA,CAAM,EAE9C,GAAG,QAAQ,WAAY,aAAa,EAEpC9S,EACA,GAAG,aAAa,OAAQ,SAAU,KAAMA,CAAK,EAE7C,GAAG,QAAQ,YAAa,aAAa,EAEzC,IAAI+S,EAAQ,GAAG,KAAK,aAAc,CAAC,EAC/BC,EAAS,GAAG,KAAK,cAAe,CAAC,EACjCC,EAAS,GAAG,KAAK,cAAe,CAAC,CACzC,EACA,YAAa,CACT,CAAC,EAAE,EAAE,QAAQC,GAAQ,CACjB,GAAG,cAAcA,CAAI,EAAI,IAAI,GAAG,WAAWA,CAAI,EAC/C,GAAG,cAAcA,CAAI,EAAE,MAAQ,2BACnC,CAAC,EACD,GAAG,UAAY,IAAI,MAAM,IAAI,EAC7B,GAAG,MAAM,MAAO,CAAC,EAAG,GAAG,EACvB,GAAG,yBAAyB,EAC5B,GAAG,qBAAqB,EACxB,GAAG,yBAAyB,EAC5B,GAAG,YAAc,CACb,KACJ,CACJ,EACA,KAAKL,EAAOC,EAAQ9S,EAAO,CACvB,GAAG,YAAc,GACjB6S,GAAA,OAAAA,EAAU,OAAO,OACjBC,GAAA,OAAAA,EAAW,OAAO,QAClB9S,GAAA,OAAAA,EAAU,OAAO,QACjB,GAAG,sBAAsB6S,EAAOC,EAAQ9S,CAAK,CACjD,EACA,MAAO,CACH,GAAG,YAAc,GACjB,QAASL,EAAI,EAAGA,EAAI,GAAG,QAAQ,OAAQA,IAAK,CACxC,IAAI8M,EAAS,GAAG,QAAQ9M,CAAC,EACpB8M,GAGL,GAAG,MAAMA,CAAM,CACnB,CACJ,EACA,WAAWhP,EAAM0V,EAAqB,CAClC,IAAIxV,EAAM,GAAG,YAAYF,EAAM0V,CAAmB,EAClD,OAAKxV,EAAI,OAGFA,EAAI,OAFA,IAGf,EACA,YAAYF,EAAM0V,EAAqB,CACnC,GAAI,CACA,IAAIxD,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,CAAC0V,CACb,CAAC,EACD1V,EAAOkS,EAAO,IAClB,OAASlR,EAAG,CAAC,CACb,IAAId,EAAM,CACN,OAAQ,GACR,OAAQ,GACR,MAAO,EACP,KAAM,KACN,KAAM,KACN,OAAQ,KACR,aAAc,GACd,WAAY,KACZ,aAAc,IAClB,EACA,GAAI,CACA,IAAIgS,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACDE,EAAI,aAAe,GACnBA,EAAI,WAAagS,EAAO,KACxBhS,EAAI,aAAegS,EAAO,KAC1BhS,EAAI,KAAO,KAAK,SAASF,CAAI,EAC7BkS,EAAS,GAAG,WAAWlS,EAAM,CACzB,OAAQ,CAAC0V,CACb,CAAC,EACDxV,EAAI,OAAS,GACbA,EAAI,KAAOgS,EAAO,KAClBhS,EAAI,OAASgS,EAAO,KACpBhS,EAAI,KAAOgS,EAAO,KAAK,KACvBhS,EAAI,OAASgS,EAAO,OAAS,GACjC,OAASlR,EAAG,CACRd,EAAI,MAAQc,EAAE,KAClB,CACA,OAAOd,CACX,EACA,WAAWqP,EAAQvP,EAAMgR,EAASC,EAAU,CACxC1B,EAAS,OAAOA,GAAU,SAAWA,EAAS,GAAG,QAAQA,CAAM,EAE/D,QADIlD,EAAQrM,EAAK,MAAM,GAAG,EAAE,QAAQ,EAC7BqM,EAAM,QAAQ,CACjB,IAAIsJ,EAAOtJ,EAAM,IAAI,EACrB,GAAKsJ,EACL,KAAI7D,EAAU,KAAK,MAAMvC,EAAQoG,CAAI,EACrC,GAAI,CACA,GAAG,MAAM7D,CAAO,CACpB,OAAS9Q,EAAG,CAAC,CACbuO,EAASuC,EACb,CACA,OAAOA,CACX,EACA,WAAWvC,EAAQ7J,EAAMkQ,EAAY5E,EAASC,EAAU,CACpD,IAAIjR,EAAO,KAAK,MAAM,OAAOuP,GAAU,SAAWA,EAAS,GAAG,QAAQA,CAAM,EAAG7J,CAAI,EAC/E8J,EAAO,WAAWwB,EAASC,CAAQ,EACvC,OAAO,GAAG,OAAOjR,EAAMwP,CAAI,CAC/B,EACA,eAAeD,EAAQ7J,EAAMrF,EAAM2Q,EAASC,EAAUP,EAAQ,CAC1D,IAAI1Q,EAAO0F,EACP6J,IACAA,EAAS,OAAOA,GAAU,SAAWA,EAAS,GAAG,QAAQA,CAAM,EAC/DvP,EAAO0F,EAAO,KAAK,MAAM6J,EAAQ7J,CAAI,EAAI6J,GAE7C,IAAIC,EAAO,WAAWwB,EAASC,CAAQ,EACnCxB,EAAO,GAAG,OAAOzP,EAAMwP,CAAI,EAC/B,GAAInP,EAAM,CACN,GAAI,OAAOA,GAAQ,SAAU,CAEzB,QADIoN,EAAM,IAAI,MAAMpN,EAAK,MAAM,EACtB6B,EAAI,EAAGC,EAAM9B,EAAK,OAAQ6B,EAAIC,EAAK,EAAED,EAAGuL,EAAIvL,CAAC,EAAI7B,EAAK,WAAW6B,CAAC,EAC3E7B,EAAOoN,CACX,CACA,GAAG,MAAMgC,EAAMD,EAAO,GAAG,EACzB,IAAIR,EAAS,GAAG,KAAKS,EAAM,GAAG,EAC9B,GAAG,MAAMT,EAAQ3O,EAAM,EAAGA,EAAK,OAAQ,EAAGqQ,CAAM,EAChD,GAAG,MAAM1B,CAAM,EACf,GAAG,MAAMS,EAAMD,CAAI,CACvB,CACJ,EACA,aAAaD,EAAQ7J,EAAM0P,EAAOC,EAAQ,CA3sH1D,IAAA1V,EAAAgT,EA4sHoB,IAAI3S,EAAO,KAAK,MAAM,OAAOuP,GAAU,SAAWA,EAAS,GAAG,QAAQA,CAAM,EAAG7J,CAAI,EAC/E8J,EAAO,WAAW,CAAC,CAAC4F,EAAO,CAAC,CAACC,CAAM,GACvC1C,GAAAhT,EAAA,GAAG,cAAa,QAAhB,OAAAA,EAAgB,MAAU,IAC1B,IAAImP,EAAM,GAAG,QAAQ,GAAG,aAAa,QAAS,CAAC,EAC/C,UAAG,eAAeA,EAAK,CACnB,KAAKE,EAAQ,CACTA,EAAO,SAAW,EACtB,EACA,MAAMA,EAAQ,CAptHtC,IAAArP,GAqtHgCA,EAAA0V,GAAA,YAAAA,EAAQ,SAAR,MAAA1V,EAAgB,QAChB0V,EAAO,EAAE,CAEjB,EACA,KAAKrG,EAAQE,EAAQjK,EAAQ4I,EAAQsB,EAAK,CAEtC,QADIP,EAAY,EACP1M,EAAI,EAAGA,EAAI2L,EAAQ3L,IAAK,CAC7B,IAAIX,EACJ,GAAI,CACAA,EAAS6T,EAAM,CACnB,OAASpU,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CACA,GAAIO,IAAW,QAAaqN,IAAc,EACtC,MAAM,IAAI,GAAG,WAAW,CAAC,EAE7B,GAAIrN,GAAW,KAA8B,MAC7CqN,IACAM,EAAOjK,EAAS/C,CAAC,EAAIX,CACzB,CACA,OAAIqN,IACAI,EAAO,KAAK,UAAY,KAAK,IAAI,GAE9BJ,CACX,EACA,MAAMI,EAAQE,EAAQjK,EAAQ4I,EAAQsB,EAAK,CACvC,QAASjN,EAAI,EAAGA,EAAI2L,EAAQ3L,IACxB,GAAI,CACAmT,EAAOnG,EAAOjK,EAAS/C,CAAC,CAAC,CAC7B,OAASlB,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CAEJ,OAAI6M,IACAmB,EAAO,KAAK,UAAY,KAAK,IAAI,GAE9B9M,CACX,CACJ,CAAC,EACM,GAAG,MAAMlC,EAAMwP,EAAMV,CAAG,CACnC,EACA,cAAc3K,EAAK,CACf,GAAIA,EAAI,UAAYA,EAAI,UAAYA,EAAI,MAAQA,EAAI,SAAU,MAAO,GACrE,GAAI,OAAO,eAAkB,IACzB,MAAM,IAAI,MAAM,kMAAkM,EAElN,GAAI,CACAA,EAAI,SAAW,WAAWA,EAAI,GAAG,EACjCA,EAAI,UAAYA,EAAI,SAAS,MACjC,OAASnD,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CAER,EACA,eAAeuO,EAAQ7J,EAAMpF,EAAK0Q,EAASC,EAAU,CACjD,MAAM4E,CAAe,CAArB,cACI3R,EAAA,mBAAc,IACdA,EAAA,cAAS,CAAC,GACV,IAAIM,EAAK,CACL,GAAI,EAAAA,EAAM,KAAK,OAAS,GAAKA,EAAM,GAGnC,KAAIsR,EAActR,EAAM,KAAK,UACzBuR,EAAWvR,EAAM,KAAK,UAAY,EACtC,OAAO,KAAK,OAAOuR,CAAQ,EAAED,CAAW,EAC5C,CACA,cAAcE,EAAQ,CAClB,KAAK,OAASA,CAClB,CACA,aAAc,CACV,IAAIzV,EAAM,IAAI,eAGd,GAFAA,EAAI,KAAK,OAAQD,EAAK,EAAK,EAC3BC,EAAI,KAAK,IAAI,EACT,EAAEA,EAAI,QAAU,KAAOA,EAAI,OAAS,KAAOA,EAAI,SAAW,KAAM,MAAM,IAAI,MAAM,iBAAmBD,EAAM,aAAeC,EAAI,MAAM,EACtI,IAAI0V,EAAa,OAAO1V,EAAI,kBAAkB,gBAAgB,CAAC,EAC3D2V,EACAC,GAAkBD,EAAS3V,EAAI,kBAAkB,eAAe,IAAM2V,IAAW,QACjFE,GAAYF,EAAS3V,EAAI,kBAAkB,kBAAkB,IAAM2V,IAAW,OAC9EG,EAAY,KAAO,KAClBF,IAAgBE,EAAYJ,GACjC,IAAIK,EAAQ,CAAChJ,EAAMC,IAAO,CACtB,GAAID,EAAOC,EAAI,MAAM,IAAI,MAAM,kBAAoBD,EAAO,KAAOC,EAAK,0BAA0B,EAChG,GAAIA,EAAK0I,EAAa,EAAG,MAAM,IAAI,MAAM,QAAUA,EAAa,qCAAqC,EACrG,IAAI1V,EAAM,IAAI,eAQd,GAPAA,EAAI,KAAK,MAAOD,EAAK,EAAK,EACtB2V,IAAeI,GAAW9V,EAAI,iBAAiB,QAAS,SAAW+M,EAAO,IAAMC,CAAE,EACtFhN,EAAI,aAAe,cACfA,EAAI,kBACJA,EAAI,iBAAiB,oCAAoC,EAE7DA,EAAI,KAAK,IAAI,EACT,EAAEA,EAAI,QAAU,KAAOA,EAAI,OAAS,KAAOA,EAAI,SAAW,KAAM,MAAM,IAAI,MAAM,iBAAmBD,EAAM,aAAeC,EAAI,MAAM,EACtI,OAAIA,EAAI,WAAa,OACV,IAAI,WAAWA,EAAI,UAAY,CAAC,CAAC,EAErC,mBAAmBA,EAAI,cAAgB,GAAI,EAAI,CAC1D,EACIgW,EAAY,KAChBA,EAAU,cAAcR,GAAY,CAChC,IAAIrI,EAAQqI,EAAWM,EACnBnR,GAAO6Q,EAAW,GAAKM,EAAY,EAKvC,GAJAnR,EAAM,KAAK,IAAIA,EAAK+Q,EAAa,CAAC,EAC9B,OAAOM,EAAU,OAAOR,CAAQ,EAAK,MACrCQ,EAAU,OAAOR,CAAQ,EAAIO,EAAM5I,EAAOxI,CAAG,GAE7C,OAAOqR,EAAU,OAAOR,CAAQ,EAAK,IAAa,MAAM,IAAI,MAAM,eAAe,EACrF,OAAOQ,EAAU,OAAOR,CAAQ,CACpC,CAAC,GACGK,GAAY,CAACH,KACbI,EAAYJ,EAAa,EACzBA,EAAa,KAAK,OAAO,CAAC,EAAE,OAC5BI,EAAYJ,EACZ,IAAI,6EAA6E,GAErF,KAAK,QAAUA,EACf,KAAK,WAAaI,EAClB,KAAK,YAAc,EACvB,CACA,IAAI,QAAS,CACT,OAAK,KAAK,aACN,KAAK,YAAY,EAEd,KAAK,OAChB,CACA,IAAI,WAAY,CACZ,OAAK,KAAK,aACN,KAAK,YAAY,EAEd,KAAK,UAChB,CACJ,CACA,GAAI,OAAO,eAAkB,IAAa,CACtC,GAAI,CAAC,sBAAuB,KAAM,sHAClC,IAAIE,EAAY,IAAIV,EAChBD,EAAa,CACb,SAAU,GACV,SAAUW,CACd,CACJ,KACI,KAAIX,EAAa,CACb,SAAU,GACV,IAAAtV,CACJ,EAEJ,IAAImP,EAAO,GAAG,WAAWF,EAAQ7J,EAAMkQ,EAAY5E,EAASC,CAAQ,EAChE2E,EAAW,SACXnG,EAAK,SAAWmG,EAAW,SACpBA,EAAW,MAClBnG,EAAK,SAAW,KAChBA,EAAK,IAAMmG,EAAW,KAE1B,OAAO,iBAAiBnG,EAAM,CAC1B,UAAW,CACP,IAAK,UAAW,CACZ,OAAO,KAAK,SAAS,MACzB,CACJ,CACJ,CAAC,EACD,IAAI+G,EAAa,CAAC,EACdC,EAAO,OAAO,KAAKhH,EAAK,UAAU,EACtCgH,EAAK,QAAQpG,GAAO,CAChB,IAAIqG,EAAKjH,EAAK,WAAWY,CAAG,EAC5BmG,EAAWnG,CAAG,EAAI,IAAI9G,KAClB,GAAG,cAAckG,CAAI,EACdiH,EAAG,GAAGnN,CAAI,EAEzB,CAAC,EAED,SAASoN,EAAY3H,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC3D,IAAIC,EAAWzB,EAAO,KAAK,SAC3B,GAAIwB,GAAYC,EAAS,OAAQ,MAAO,GACxC,IAAIrJ,EAAO,KAAK,IAAIqJ,EAAS,OAASD,EAAU3C,CAAM,EACtD,GAAI4C,EAAS,MACT,QAASvO,EAAI,EAAGA,EAAIkF,EAAMlF,IACtBgN,EAAOjK,EAAS/C,CAAC,EAAIuO,EAASD,EAAWtO,CAAC,MAG9C,SAASA,EAAI,EAAGA,EAAIkF,EAAMlF,IACtBgN,EAAOjK,EAAS/C,CAAC,EAAIuO,EAAS,IAAID,EAAWtO,CAAC,EAGtD,OAAOkF,CACX,CACA,OAAAoP,EAAW,KAAO,CAACxH,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,KAC/C,GAAG,cAAcf,CAAI,EACdkH,EAAY3H,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,CAAQ,GAE/DgG,EAAW,KAAO,CAACxH,EAAQnB,EAAQ2C,EAAUI,EAAM/J,IAAU,CACzD,GAAG,cAAc4I,CAAI,EACrB,IAAI1I,EAAM,UAAU8G,CAAM,EAC1B,GAAI,CAAC9G,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAA4P,EAAY3H,EAAQ,MAAOjI,EAAK8G,EAAQ2C,CAAQ,EACzC,CACH,IAAAzJ,EACA,UAAW,EACf,CACJ,EACA0I,EAAK,WAAa+G,EACX/G,CACX,CACJ,EACI,SAAW,CACX,iBAAkB,EAClB,YAAYmH,EAAO5W,EAAM6W,EAAY,CACjC,GAAI,KAAK,MAAM7W,CAAI,EACf,OAAOA,EAEX,IAAI6M,EACJ,GAAI+J,IAAU,KACV/J,EAAM,GAAG,IAAI,MACV,CACH,IAAIiK,EAAY,SAAS,gBAAgBF,CAAK,EAC9C/J,EAAMiK,EAAU,IACpB,CACA,GAAI9W,EAAK,QAAU,EAAG,CAClB,GAAI,CAAC6W,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,OAAOhK,CACX,CACA,OAAO,KAAK,MAAMA,EAAK7M,CAAI,CAC/B,EACA,OAAO6H,EAAM7H,EAAM2O,EAAK,CACpB,IAAImG,EAAOjN,EAAK7H,CAAI,EACpB,OAAO2O,IAAQ,IAAM,CAAC,EAAImG,EAAK,IAC/B,OAAOnG,EAAM,IAAM,IAAM,CAAC,EAAImG,EAAK,KACnC,QAAQnG,EAAM,IAAM,IAAM,CAAC,EAAImG,EAAK,MACpC,OAAOnG,EAAM,KAAO,IAAM,CAAC,EAAImG,EAAK,IACpC,OAAOnG,EAAM,KAAO,IAAM,CAAC,EAAImG,EAAK,IACpC,OAAOnG,EAAM,KAAO,IAAM,CAAC,EAAImG,EAAK,KACpC,QAAU,CAACA,EAAK,OAAS,GAAI,WAAaA,EAAK,KAAM,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAOnG,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAChT,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,KAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAImG,EAAK,OACpC,IAAIP,EAAQO,EAAK,MAAM,QAAQ,EAC3BN,EAAQM,EAAK,MAAM,QAAQ,EAC3BiC,EAAQjC,EAAK,MAAM,QAAQ,EAC/B,eAAU,CAAC,KAAK,MAAMP,EAAQ,GAAG,IAAM,GAAI,WAAa,KAAK,MAAMA,EAAQ,GAAG,EAAG,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAO5F,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAC5U,QAAQA,EAAM,KAAO,IAAM,CAAC,EAAI4F,EAAQ,IAAM,IAAM,IACpD,QAAU,CAAC,KAAK,MAAMC,EAAQ,GAAG,IAAM,GAAI,WAAa,KAAK,MAAMA,EAAQ,GAAG,EAAG,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAO7F,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAC5U,QAAQA,EAAM,KAAO,IAAM,CAAC,EAAI6F,EAAQ,IAAM,IAAM,IACpD,QAAU,CAAC,KAAK,MAAMuC,EAAQ,GAAG,IAAM,GAAI,WAAa,KAAK,MAAMA,EAAQ,GAAG,EAAG,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAOpI,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAC5U,QAAQA,EAAM,KAAO,IAAM,CAAC,EAAIoI,EAAQ,IAAM,IAAM,IACpD,QAAU,CAACjC,EAAK,MAAQ,GAAI,WAAaA,EAAK,IAAK,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAOnG,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EACvS,CACX,EACA,QAAQqI,EAAMhI,EAAQ7M,EAAK0E,EAAO5B,EAAQ,CACtC,GAAI,CAAC,GAAG,OAAO+J,EAAO,KAAK,IAAI,EAC3B,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAInI,EAAQ,EACR,MAAO,GAEX,IAAIqI,EAAS,OAAO,MAAM8H,EAAMA,EAAO7U,CAAG,EAC1C,GAAG,MAAM6M,EAAQE,EAAQjK,EAAQ9C,EAAK0E,CAAK,CAC/C,EACA,gBAAgBgI,EAAI,CAChB,IAAIG,EAAS,GAAG,iBAAiBH,CAAE,EACnC,OAAOG,CACX,EACA,QAAS,OACT,OAAOjI,EAAK,CACR,IAAI7G,EAAM,aAAa6G,CAAG,EAC1B,OAAO7G,CACX,CACJ,EACI,sBAAwB,SAAS+W,EAAMC,EAASC,EAAUC,EAAWC,EAAS,CAC9EH,KAAa,EACbC,KAAc,EACdC,KAAe,EACfC,KAAa,EACb,GAAI,CAiBA,QAhBIC,EAAQ,EACRC,EAAaL,EAAU,OAAOA,IAAY,IAAM,CAAC,EAAI,EACrDM,EAAcN,EAAU,OAAOA,EAAU,IAAM,IAAM,CAAC,EAAI,EAC1DO,EAAcN,EAAW,OAAOA,IAAa,IAAM,CAAC,EAAI,EACxDO,EAAeP,EAAW,OAAOA,EAAW,IAAM,IAAM,CAAC,EAAI,EAC7DQ,EAAeP,EAAY,OAAOA,IAAc,IAAM,CAAC,EAAI,EAC3DQ,EAAgBR,EAAY,OAAOA,EAAY,IAAM,IAAM,CAAC,EAAI,EAChES,EAAa,EACbC,EAAc,EACdC,EAAc,EACdC,EAAe,EACfC,EAAe,EACfC,EAAgB,EAChBC,GAAUjB,EAAU,OAAOA,IAAY,IAAM,CAAC,EAAI,IAAMC,EAAW,OAAOA,IAAa,IAAM,CAAC,EAAI,IAAMC,EAAY,OAAOA,IAAc,IAAM,CAAC,EAAI,GACpJgB,GAAWlB,EAAU,OAAOA,EAAU,IAAM,IAAM,CAAC,EAAI,IAAMC,EAAW,OAAOA,EAAW,IAAM,IAAM,CAAC,EAAI,IAAMC,EAAY,OAAOA,EAAY,IAAM,IAAM,CAAC,EAAI,GACjKpE,EAAQ,CAACnE,EAAIwJ,EAAKC,EAAM5P,IAAQmG,EAAK,GAAKwJ,EAAM3P,EAAM4P,EAAO5P,EACxDmG,EAAK,EAAGA,EAAKoI,EAAMpI,IAAM,CAC9B,IAAI0J,EAAO,GAAK1J,EAAK,GACrB,GAAKmE,EAAMnE,EAAIsJ,EAAQC,EAASG,CAAI,EAGpC,KAAIvJ,EAAS,SAAS,gBAAgBH,CAAE,EACpChI,EAAQ,SAAS,iBACrB,GAAImI,EAAO,WAAW,KAAM,CACxB,IAAIwJ,EAAkB,GACtB,GAAInB,EAAS,CACT,IAAIoB,EAASvB,EAAU,OAAOG,IAAY,IAAM,CAAC,EAAI,EACjDqB,EAAUxB,EAAU,OAAOG,EAAU,IAAM,IAAM,CAAC,EAAI,EAC1DmB,GAAmBC,EAASC,EAAU,KAAO,GACjD,CACA7R,EAAQmI,EAAO,WAAW,KAAKA,EAAQwJ,CAAe,CAC1D,CACI3R,EAAQ,GAAKmM,EAAMnE,EAAI0I,EAAYC,EAAae,CAAI,IACpD1J,EAAK,GAAKgJ,EAAaA,EAAaU,EAAOT,EAAcA,EAAcS,EACvEjB,KAEAzQ,EAAQ,GAAKmM,EAAMnE,EAAI4I,EAAaC,EAAca,CAAI,IACtD1J,EAAK,GAAKkJ,EAAcA,EAAcQ,EAAOP,EAAeA,EAAeO,EAC3EjB,KAEAzQ,EAAQ,GAAKmM,EAAMnE,EAAI8I,EAAcC,EAAeW,CAAI,IACxD1J,EAAK,GAAKoJ,EAAeA,EAAeM,EAAOL,EAAgBA,EAAgBK,EAC/EjB,KAER,CACA,OAAIJ,IACA,OAAOA,IAAY,IAAM,CAAC,EAAIW,EAC9B,OAAOX,EAAU,IAAM,IAAM,CAAC,EAAIY,GAElCX,IACA,OAAOA,IAAa,IAAM,CAAC,EAAIY,EAC/B,OAAOZ,EAAW,IAAM,IAAM,CAAC,EAAIa,GAEnCZ,IACA,OAAOA,IAAc,IAAM,CAAC,EAAIa,EAChC,OAAOb,EAAY,IAAM,IAAM,CAAC,EAAIc,GAEjCZ,CACX,OAAStW,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,EACA,sBAAsB,IAAM,SAC5B,IAAI,OAAS,CACT,cAAe,CAAC,EAChB,UAAW,CAAC,EACZ,GAAG2X,EAAO7X,EAAU,CAChB,OAAO,UAAU6X,CAAK,EAAI7X,CAC9B,EACA,KAAK6X,EAAOC,EAAO,CA5iInC,IAAAjZ,EAAAgT,GA6iIoBA,GAAAhT,EAAA,OAAO,WAAUgZ,KAAjB,MAAAhG,EAAA,KAAAhT,EAA0BiZ,EAC9B,EACA,MAAMtJ,EAAO,CA/iI7B,IAAA3P,EAgjIoB,cAAO,cAAgB,OAAO,WAAgB,CAAC,IAC9CA,EAAA,OAAO,YAAP,KAAAA,EAAA,OAAO,UAAiB,CAAC,GAAG,GAAQ,OAAO,GACrC,GAAG,WAAW,KAAM,IAAK,MAAa,CAAC,CAClD,EACA,aAAakZ,EAAQ7R,EAAM8R,EAAU,CACjC9R,GAAQ,QACR,IAAI+R,EAAY/R,GAAQ,EACxB,GAAI+R,GAAaD,GAAYA,GAAY,EACrC,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIE,EAAO,CACP,OAAAH,EACA,KAAA7R,EACA,SAAA8R,EACA,OAAQ,KACR,MAAO,KACP,MAAO,CAAC,EACR,QAAS,CAAC,EACV,WAAY,CAAC,EACb,SAAU,OAAO,kBACrB,EACIpT,EAAO,OAAO,SAAS,EACvB+J,EAAO,GAAG,WAAW,OAAO,KAAM/J,EAAM,MAAO,CAAC,EACpD+J,EAAK,KAAOuJ,EACZ,IAAIhK,EAAS,GAAG,aAAa,CACzB,KAAMtJ,EACN,KAAA+J,EACA,MAAO,EACP,SAAU,GACV,WAAY,OAAO,UACvB,CAAC,EACD,OAAAuJ,EAAK,OAAShK,EACPgK,CACX,EACA,UAAUnK,EAAI,CACV,IAAIG,EAAS,GAAG,UAAUH,CAAE,EAC5B,MAAI,CAACG,GAAU,CAAC,GAAG,SAASA,EAAO,KAAK,IAAI,EACjC,KAEJA,EAAO,KAAK,IACvB,EACA,WAAY,CACR,KAAKA,EAAQ,CACT,IAAIgK,EAAOhK,EAAO,KAAK,KACvB,OAAOgK,EAAK,SAAS,KAAKA,CAAI,CAClC,EACA,MAAMhK,EAAQiK,EAASC,EAAS,CAC5B,IAAIF,EAAOhK,EAAO,KAAK,KACvB,OAAOgK,EAAK,SAAS,MAAMA,EAAMC,EAASC,CAAO,CACrD,EACA,KAAKlK,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC3C,IAAIwI,EAAOhK,EAAO,KAAK,KACnBmK,EAAMH,EAAK,SAAS,QAAQA,EAAMnL,CAAM,EAC5C,OAAKsL,GAGLjK,EAAO,IAAIiK,EAAI,OAAQlU,CAAM,EACtBkU,EAAI,OAAO,QAHP,CAIf,EACA,MAAMnK,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC5C,IAAIwI,EAAOhK,EAAO,KAAK,KACvB,OAAOgK,EAAK,SAAS,QAAQA,EAAM9J,EAAQjK,EAAQ4I,CAAM,CAC7D,EACA,MAAMmB,EAAQ,CACV,IAAIgK,EAAOhK,EAAO,KAAK,KACvBgK,EAAK,SAAS,MAAMA,CAAI,CAC5B,CACJ,EACA,UAAW,CACP,OAAK,OAAO,SAAS,UACjB,OAAO,SAAS,QAAU,GAEvB,UAAY,OAAO,SAAS,UAAY,GACnD,EACA,mBAAoB,CAChB,WAAWA,EAAMhC,EAAMoC,EAAM,CACzB,IAAIC,EAMJ,GALI,OAAOrC,GAAQ,WACfqC,EAAKrC,EACLA,EAAO,KACPoC,EAAO,MAEPC,EACA,GAAIA,EAAG,QACHrC,EAAOqC,EAAG,QAAQ,cAClBD,EAAOC,EAAG,QAAQ,eACf,CACH,IAAI9X,EAAS,2BAA2B,KAAK8X,EAAG,GAAG,EACnD,GAAI,CAAC9X,EACD,MAAM,IAAI,MAAM,0DAA0D,EAE9EyV,EAAOzV,EAAO,CAAC,EACf6X,EAAO,SAAS7X,EAAO,CAAC,EAAG,EAAE,CACjC,KAEA,IAAI,CACA,IAAIjB,EAAM,OAAO,QAAQ,IAAK,IAAI,EAC9BgZ,EAAe,SACf1H,EAAO,OASX,GARI,OAAO,cAAc,MACrBtR,EAAM,OAAO,cAAc,KAE3B,OAAO,cAAc,YACrBgZ,EAAe,OAAO,cAAc,YAC7B,OAAO,cAAc,cAAmB,OAC/CA,EAAe,QAEfhZ,IAAQ,SAAWA,IAAQ,SAAU,CACrC,IAAI+L,EAAQ2K,EAAK,MAAM,GAAG,EAC1B1W,EAAMA,EAAM+L,EAAM,CAAC,EAAI,IAAM+M,EAAO,IAAM/M,EAAM,MAAM,CAAC,EAAE,KAAK,GAAG,CACrE,CACIiN,IAAiB,SACjBA,EAAeA,EAAa,QAAQ,WAAY,EAAE,EAAE,MAAM,OAAO,EACjE1H,EAAO0H,GAEX,IAAIC,EACA,oBACAA,EAAuB,KAEvBA,EAAuB,UAE3BF,EAAK,IAAIE,EAAqBjZ,EAAKsR,CAAI,EACvCyH,EAAG,WAAa,aACpB,OAASrY,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CAEJ,IAAIwY,EAAO,CACP,KAAAxC,EACA,KAAAoC,EACA,OAAQC,EACR,eAAgB,CAAC,CACrB,EACA,cAAO,mBAAmB,QAAQL,EAAMQ,CAAI,EAC5C,OAAO,mBAAmB,iBAAiBR,EAAMQ,CAAI,EACjDR,EAAK,OAAS,GAAK,OAAOA,EAAK,MAAS,KACxCQ,EAAK,eAAe,KAAK,IAAI,WAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAmB,IAAmB,IAAmB,KAAoBR,EAAK,MAAQ,QAAU,EAAGA,EAAK,MAAQ,GAAG,CAAC,CAAC,EAEnLQ,CACX,EACA,QAAQR,EAAMhC,EAAMoC,EAAM,CACtB,OAAOJ,EAAK,MAAMhC,EAAO,IAAMoC,CAAI,CACvC,EACA,QAAQJ,EAAMQ,EAAM,CAChBR,EAAK,MAAMQ,EAAK,KAAO,IAAMA,EAAK,IAAI,EAAIA,CAC9C,EACA,WAAWR,EAAMQ,EAAM,CACnB,OAAOR,EAAK,MAAMQ,EAAK,KAAO,IAAMA,EAAK,IAAI,CACjD,EACA,iBAAiBR,EAAMQ,EAAM,CACzB,IAAIC,EAAQ,GACRC,EAAa,UAAW,CACxBV,EAAK,WAAa,GAClB,OAAO,KAAK,OAAQA,EAAK,OAAO,EAAE,EAClC,GAAI,CAEA,QADIW,EAASH,EAAK,eAAe,MAAM,EAChCG,GACHH,EAAK,OAAO,KAAKG,CAAM,EACvBA,EAASH,EAAK,eAAe,MAAM,CAE3C,OAASxY,EAAG,CACRwY,EAAK,OAAO,MAAM,CACtB,CACJ,EAEA,SAASI,EAAcvZ,EAAM,CACzB,GAAI,OAAOA,GAAQ,SAAU,CACzB,IAAIwZ,EAAU,IAAI,YAClBxZ,EAAOwZ,EAAQ,OAAOxZ,CAAI,CAC9B,KAAO,CAEH,GADA,OAAOA,EAAK,aAAe,MAAS,EAChCA,EAAK,YAAc,EACnB,OAEJA,EAAO,IAAI,WAAWA,CAAI,CAC9B,CACA,IAAIyZ,EAAWL,EAEf,GADAA,EAAQ,GACJK,GAAYzZ,EAAK,SAAW,IAAMA,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,KAAOA,EAAK,CAAC,IAAM,KAAqBA,EAAK,CAAC,IAAM,KAAqBA,EAAK,CAAC,IAAM,KAAqBA,EAAK,CAAC,IAAM,IAAmB,CAChP,IAAI0Z,EAAU1Z,EAAK,CAAC,GAAK,EAAIA,EAAK,CAAC,EACnC,OAAO,mBAAmB,WAAW2Y,EAAMQ,CAAI,EAC/CA,EAAK,KAAOO,EACZ,OAAO,mBAAmB,QAAQf,EAAMQ,CAAI,EAC5C,MACJ,CACAR,EAAK,WAAW,KAAK,CACjB,KAAMQ,EAAK,KACX,KAAMA,EAAK,KACX,KAAAnZ,CACJ,CAAC,EACD,OAAO,KAAK,UAAW2Y,EAAK,OAAO,EAAE,CACzC,CACI,qBACAQ,EAAK,OAAO,GAAG,OAAQE,CAAU,EACjCF,EAAK,OAAO,GAAG,UAAW,SAASnZ,EAAM2Z,EAAU,CAC1CA,GAGLJ,EAAc,IAAI,WAAWvZ,CAAI,EAAE,MAAM,CAC7C,CAAC,EACDmZ,EAAK,OAAO,GAAG,QAAS,UAAW,CAC/B,OAAO,KAAK,QAASR,EAAK,OAAO,EAAE,CACvC,CAAC,EACDQ,EAAK,OAAO,GAAG,QAAS,SAASjX,EAAO,CACpCyW,EAAK,MAAQ,GACb,OAAO,KAAK,QAAS,CAACA,EAAK,OAAO,GAAIA,EAAK,MAAO,kCAAkC,CAAC,CACzF,CAAC,IAEDQ,EAAK,OAAO,OAASE,EACrBF,EAAK,OAAO,QAAU,UAAW,CAC7B,OAAO,KAAK,QAASR,EAAK,OAAO,EAAE,CACvC,EACAQ,EAAK,OAAO,UAAY,SAA+Bb,EAAO,CAC1DiB,EAAcjB,EAAM,IAAI,CAC5B,EACAa,EAAK,OAAO,QAAU,SAASjX,EAAO,CAClCyW,EAAK,MAAQ,GACb,OAAO,KAAK,QAAS,CAACA,EAAK,OAAO,GAAIA,EAAK,MAAO,kCAAkC,CAAC,CACzF,EAER,EACA,KAAKA,EAAM,CACP,GAAIA,EAAK,OAAS,GAAKA,EAAK,OACxB,OAAOA,EAAK,QAAQ,OAAS,GAAS,EAE1C,IAAIT,EAAO,EACP0B,EAAOjB,EAAK,OAAS,EAAI,OAAO,mBAAmB,QAAQA,EAAMA,EAAK,MAAOA,EAAK,KAAK,EAAI,KAC/F,OAAIA,EAAK,WAAW,QAAU,CAACiB,GAAQA,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,SAAWA,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,UAC5I1B,GAAQ,KAER,CAAC0B,GAAQA,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,QACxD1B,GAAQ,IAER0B,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,SAAWA,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,UACrGjB,EAAK,WACLT,GAAQ,EAERA,GAAQ,IAGTA,CACX,EACA,MAAMS,EAAMC,EAASpE,EAAK,CACtB,OAAQoE,EAAS,CACb,IAAK,OACD,IAAIlR,EAAQ,EACZ,OAAIiR,EAAK,WAAW,SAChBjR,EAAQiR,EAAK,WAAW,CAAC,EAAE,KAAK,QAEpC,OAAOnE,IAAQ,IAAM,CAAC,EAAI9M,EACnB,EACX,QACI,MAAO,GACf,CACJ,EACA,MAAMiR,EAAM,CACR,GAAIA,EAAK,OAAQ,CACb,GAAI,CACAA,EAAK,OAAO,MAAM,CACtB,OAAShY,EAAG,CAAC,CACbgY,EAAK,OAAS,IAClB,CAEA,QADIkB,EAAQ,OAAO,KAAKlB,EAAK,KAAK,EACzB9W,EAAI,EAAGA,EAAIgY,EAAM,OAAQhY,IAAK,CACnC,IAAIsX,EAAOR,EAAK,MAAMkB,EAAMhY,CAAC,CAAC,EAC9B,GAAI,CACAsX,EAAK,OAAO,MAAM,CACtB,OAASxY,EAAG,CAAC,CACb,OAAO,mBAAmB,WAAWgY,EAAMQ,CAAI,CACnD,CACA,MAAO,EACX,EACA,KAAKR,EAAMhC,EAAMoC,EAAM,CACnB,GAAI,OAAOJ,EAAK,MAAS,KAAe,OAAOA,EAAK,MAAS,IACzD,MAAM,IAAI,GAAG,WAAW,EAAE,EAI9B,GAFAA,EAAK,MAAQhC,EACbgC,EAAK,MAAQI,EACTJ,EAAK,OAAS,EAAG,CACbA,EAAK,SACLA,EAAK,OAAO,MAAM,EAClBA,EAAK,OAAS,MAElB,GAAI,CACAA,EAAK,SAAS,OAAOA,EAAM,CAAC,CAChC,OAAShY,EAAG,CAER,GADMA,EAAE,OAAS,cACbA,EAAE,QAAU,IAAK,MAAMA,CAC/B,CACJ,CACJ,EACA,QAAQgY,EAAMhC,EAAMoC,EAAM,CACtB,GAAIJ,EAAK,OACL,MAAM,IAAI,GAAG,WAAW,GAAG,EAE/B,GAAI,OAAOA,EAAK,MAAS,KAAe,OAAOA,EAAK,MAAS,IAAa,CACtE,IAAIiB,EAAO,OAAO,mBAAmB,QAAQjB,EAAMA,EAAK,MAAOA,EAAK,KAAK,EACzE,GAAIiB,EACA,MAAIA,EAAK,OAAO,aAAeA,EAAK,OAAO,WACjC,IAAI,GAAG,WAAW,CAAC,EAEnB,IAAI,GAAG,WAAW,EAAE,CAGtC,CACA,IAAIT,EAAO,OAAO,mBAAmB,WAAWR,EAAMhC,EAAMoC,CAAI,EAChEJ,EAAK,MAAQQ,EAAK,KAClBR,EAAK,MAAQQ,EAAK,KAClBR,EAAK,WAAa,EACtB,EACA,OAAOA,EAAMmB,EAAS,CAClB,GAAI,CAAC,oBACD,MAAM,IAAI,GAAG,WAAW,GAAG,EAE/B,GAAInB,EAAK,OACL,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIoB,EAAkB,KAAc,OAChCC,EAAOrB,EAAK,MAChBA,EAAK,OAAS,IAAIoB,EAAgB,CAC9B,KAAAC,EACA,KAAMrB,EAAK,KACf,CAAC,EACD,OAAO,KAAK,SAAUA,EAAK,OAAO,EAAE,EACpCA,EAAK,OAAO,GAAG,aAAc,SAASK,EAAI,CACtC,GAAIL,EAAK,OAAS,EAAG,CACjB,IAAIsB,EAAU,OAAO,aAAatB,EAAK,OAAQA,EAAK,KAAMA,EAAK,QAAQ,EACnEQ,EAAO,OAAO,mBAAmB,WAAWc,EAASjB,CAAE,EAC3DiB,EAAQ,MAAQd,EAAK,KACrBc,EAAQ,MAAQd,EAAK,KACrBR,EAAK,QAAQ,KAAKsB,CAAO,EACzB,OAAO,KAAK,aAAcA,EAAQ,OAAO,EAAE,CAC/C,MACI,OAAO,mBAAmB,WAAWtB,EAAMK,CAAE,EAC7C,OAAO,KAAK,aAAcL,EAAK,OAAO,EAAE,CAEhD,CAAC,EACDA,EAAK,OAAO,GAAG,QAAS,UAAW,CAC/B,OAAO,KAAK,QAASA,EAAK,OAAO,EAAE,EACnCA,EAAK,OAAS,IAClB,CAAC,EACDA,EAAK,OAAO,GAAG,QAAS,SAASzW,EAAO,CACpCyW,EAAK,MAAQ,GACb,OAAO,KAAK,QAAS,CAACA,EAAK,OAAO,GAAIA,EAAK,MAAO,mCAAmC,CAAC,CAC1F,CAAC,CACL,EACA,OAAOuB,EAAY,CACf,GAAI,CAACA,EAAW,QAAU,CAACA,EAAW,QAAQ,OAC1C,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAID,EAAUC,EAAW,QAAQ,MAAM,EACvC,OAAAD,EAAQ,OAAO,MAAQC,EAAW,OAAO,MAClCD,CACX,EACA,QAAQtB,EAAMQ,EAAM,CAChB,IAAIxC,EAAMoC,EACV,GAAII,EAAM,CACN,GAAIR,EAAK,QAAU,QAAaA,EAAK,QAAU,OAC3C,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9BhC,EAAOgC,EAAK,MACZI,EAAOJ,EAAK,KAChB,MACIhC,EAAOgC,EAAK,OAAS,EACrBI,EAAOJ,EAAK,OAAS,EAEzB,MAAO,CACH,KAAAhC,EACA,KAAAoC,CACJ,CACJ,EACA,QAAQJ,EAAM9J,EAAQjK,EAAQ4I,EAAQmJ,EAAMoC,EAAM,CAC9C,GAAIJ,EAAK,OAAS,GAKd,IAJIhC,IAAS,QAAaoC,IAAS,UAC/BpC,EAAOgC,EAAK,MACZI,EAAOJ,EAAK,OAEZhC,IAAS,QAAaoC,IAAS,OAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,OAG9BpC,EAAOgC,EAAK,MACZI,EAAOJ,EAAK,MAEhB,IAAIiB,EAAO,OAAO,mBAAmB,QAAQjB,EAAMhC,EAAMoC,CAAI,EAC7D,GAAIJ,EAAK,OAAS,IACV,CAACiB,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,SAAWA,EAAK,OAAO,aAAeA,EAAK,OAAO,QAClG,MAAM,IAAI,GAAG,WAAW,EAAE,EAG9B,YAAY,OAAO/K,CAAM,IACzBjK,GAAUiK,EAAO,WACjBA,EAASA,EAAO,QAEpB,IAAI7O,EAEJ,GADAA,EAAO6O,EAAO,MAAMjK,EAAQA,EAAS4I,CAAM,EACvC,CAACoM,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,KAChD,OAAIjB,EAAK,OAAS,IACV,CAACiB,GAAQA,EAAK,OAAO,aAAeA,EAAK,OAAO,SAAWA,EAAK,OAAO,aAAeA,EAAK,OAAO,UAClGA,EAAO,OAAO,mBAAmB,WAAWjB,EAAMhC,EAAMoC,CAAI,GAGpEa,EAAK,eAAe,KAAK5Z,CAAI,EACtBwN,EAEX,GAAI,CACA,OAAAoM,EAAK,OAAO,KAAK5Z,CAAI,EACdwN,CACX,OAAS7M,EAAG,CACR,MAAM,IAAI,GAAG,WAAW,EAAE,CAC9B,CACJ,EACA,QAAQgY,EAAMnL,EAAQ,CAClB,GAAImL,EAAK,OAAS,GAAKA,EAAK,OACxB,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAIW,EAASX,EAAK,WAAW,MAAM,EACnC,GAAI,CAACW,EAAQ,CACT,GAAIX,EAAK,OAAS,EAAG,CACjB,IAAIiB,EAAO,OAAO,mBAAmB,QAAQjB,EAAMA,EAAK,MAAOA,EAAK,KAAK,EACzE,GAAI,CAACiB,EACD,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,GAAIA,EAAK,OAAO,aAAeA,EAAK,OAAO,SAAWA,EAAK,OAAO,aAAeA,EAAK,OAAO,OACzF,OAAO,KAEX,MAAM,IAAI,GAAG,WAAW,CAAC,CAC7B,CACA,MAAM,IAAI,GAAG,WAAW,CAAC,CAC7B,CACA,IAAIO,EAAeb,EAAO,KAAK,YAAcA,EAAO,KAAK,OACrDc,EAAed,EAAO,KAAK,YAAc,EACzCe,EAAef,EAAO,KAAK,QAAUA,EAAO,KAC5C/K,EAAY,KAAK,IAAIf,EAAQ2M,CAAY,EACzCG,EAAM,CACN,OAAQ,IAAI,WAAWD,EAAcD,EAAc7L,CAAS,EAC5D,KAAM+K,EAAO,KACb,KAAMA,EAAO,IACjB,EACA,GAAIX,EAAK,OAAS,GAAKpK,EAAY4L,EAAc,CAC7C,IAAII,EAAiBJ,EAAe5L,EACpC+K,EAAO,KAAO,IAAI,WAAWe,EAAcD,EAAe7L,EAAWgM,CAAc,EACnF5B,EAAK,WAAW,QAAQW,CAAM,CAClC,CACA,OAAOgB,CACX,CACJ,CACJ,EACI,gBAAkB9L,GAAM,CACxB,IAAIgM,EAAS,OAAO,UAAUhM,CAAE,EAChC,GAAI,CAACgM,EAAQ,MAAM,IAAI,GAAG,WAAW,CAAC,EACtC,OAAOA,CACX,EACI,QAAU,CACV,YAAa,MACb,gBAAiB,SACjB,OAAQ,EACR,IAAK,CAAC,EACN,SAAU,EACV,QAAS,MACT,KAAM,KACN,YAAa,CAAC,EACd,QAAS,CAAC,EACV,UAAW,WACX,SAAU,CAAC,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,SAAS,CACxJ,EACI,UAAYjW,GAAO,CAEnB,QADIjE,EAAIiE,EAAI,MAAM,GAAG,EACZ1C,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI4Y,EAAM,OAAOna,EAAEuB,CAAC,CAAC,EACrB,GAAI,MAAM4Y,CAAG,EAAG,OAAO,KACvBna,EAAEuB,CAAC,EAAI4Y,CACX,CACA,OAAQna,EAAE,CAAC,EAAIA,EAAE,CAAC,GAAK,EAAIA,EAAE,CAAC,GAAK,GAAKA,EAAE,CAAC,GAAK,MAAQ,CAC5D,EACI,QAAUiE,GAAO,SAASA,CAAG,EAC7B,UAAYA,GAAO,CACnB,IAAImW,EACAC,EAAG/V,EAAQ3C,EAAGJ,EACd+Y,EAAa,qKACb5O,EAAQ,CAAC,EACb,GAAI,CAAC4O,EAAW,KAAKrW,CAAG,EACpB,OAAO,KAEX,GAAIA,IAAQ,KACR,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAkBlC,IAhBIA,EAAI,WAAW,IAAI,EACnBA,EAAMA,EAAI,QAAQ,KAAM,IAAI,EAE5BA,EAAMA,EAAI,QAAQ,KAAM,KAAK,EAE7BA,EAAI,QAAQ,GAAG,EAAI,GACnBA,EAAMA,EAAI,QAAQ,IAAI,OAAO,MAAO,GAAG,EAAG,GAAG,EAC7CmW,EAAQnW,EAAI,MAAM,GAAG,EACrBmW,EAAMA,EAAM,OAAS,CAAC,EAAI,QAAQA,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAI,QAAQA,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAI,IAChGA,EAAMA,EAAM,OAAS,CAAC,EAAI,QAAQA,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAI,QAAQA,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAI,IAChGA,EAAQA,EAAM,MAAM,EAAGA,EAAM,OAAS,CAAC,GAEvCA,EAAQnW,EAAI,MAAM,GAAG,EAEzBK,EAAS,EACT3C,EAAI,EACC0Y,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC1B,GAAI,OAAOD,EAAMC,CAAC,GAAK,SACnB,GAAID,EAAMC,CAAC,IAAM,IAAK,CAClB,IAAK1Y,EAAI,EAAGA,EAAI,EAAIyY,EAAM,OAAS,EAAGzY,IAClC+J,EAAM2O,EAAI1Y,CAAC,EAAI,EAEnB2C,EAAS3C,EAAI,CACjB,MACI+J,EAAM2O,EAAI/V,CAAM,EAAI,OAAO,SAAS8V,EAAMC,CAAC,EAAG,EAAE,CAAC,OAGrD3O,EAAM2O,EAAI/V,CAAM,EAAI8V,EAAMC,CAAC,EAGnC,MAAO,CAAC3O,EAAM,CAAC,GAAK,GAAKA,EAAM,CAAC,EAAGA,EAAM,CAAC,GAAK,GAAKA,EAAM,CAAC,EAAGA,EAAM,CAAC,GAAK,GAAKA,EAAM,CAAC,EAAGA,EAAM,CAAC,GAAK,GAAKA,EAAM,CAAC,CAAC,CACtH,EACI,cAAgB,CAAC6O,EAAIrC,EAAQ7B,EAAMoC,EAAM+B,IAAY,CACrD,OAAQtC,EAAQ,CACZ,IAAK,GACD7B,EAAO,UAAUA,CAAI,EACrB,WAAWkE,EAAI,EAAE,EACbC,IACA,OAAOA,IAAY,IAAM,CAAC,EAAI,IAElC,OAAOD,IAAO,IAAM,CAAC,EAAIrC,EACzB,OAAOqC,EAAK,IAAM,IAAM,CAAC,EAAIlE,EAC7B,OAAOkE,EAAK,IAAM,IAAM,CAAC,EAAI,OAAO9B,CAAI,EACxC,MACJ,IAAK,IACDpC,EAAO,UAAUA,CAAI,EACrB,WAAWkE,EAAI,EAAE,EACbC,IACA,OAAOA,IAAY,IAAM,CAAC,EAAI,IAElC,OAAOD,IAAO,IAAM,CAAC,EAAIrC,EACzB,OAAOqC,EAAK,IAAM,IAAM,CAAC,EAAIlE,EAAK,CAAC,EACnC,OAAOkE,EAAK,KAAO,IAAM,CAAC,EAAIlE,EAAK,CAAC,EACpC,OAAOkE,EAAK,KAAO,IAAM,CAAC,EAAIlE,EAAK,CAAC,EACpC,OAAOkE,EAAK,KAAO,IAAM,CAAC,EAAIlE,EAAK,CAAC,EACpC,OAAOkE,EAAK,IAAM,IAAM,CAAC,EAAI,OAAO9B,CAAI,EACxC,MACJ,QACI,MAAO,EACf,CACA,MAAO,EACX,EACI,IAAM,CACN,YAAa,CACT,GAAI,EACJ,MAAO,CAAC,EACR,MAAO,CAAC,CACZ,EACA,YAAY1T,EAAM,CACd,IAAIiV,EAAM,UAAUjV,CAAI,EAKxB,GAJIiV,IAAQ,OAGZA,EAAM,UAAUjV,CAAI,EAChBiV,IAAQ,MACR,OAAOjV,EAEX,IAAIsR,EACJ,GAAI,IAAI,YAAY,MAAMtR,CAAI,EAC1BsR,EAAO,IAAI,YAAY,MAAMtR,CAAI,MAC9B,CACH,IAAI7E,EAAK,IAAI,YAAY,KACzB,OAAOA,EAAK,MAAO,wCAAwC,EAC3DmW,EAAO,WAAanW,EAAK,KAAO,KAAOA,EAAK,OAC5C,IAAI,YAAY,MAAMmW,CAAI,EAAItR,EAC9B,IAAI,YAAY,MAAMA,CAAI,EAAIsR,CAClC,CACA,OAAOA,CACX,EACA,YAAYA,EAAM,CACd,OAAI,IAAI,YAAY,MAAMA,CAAI,EACnB,IAAI,YAAY,MAAMA,CAAI,EAE9B,IACX,CACJ,EAEA,SAAS,mBAAmBnI,EAAImI,EAAMmE,EAAStU,EAAOuU,EAAIC,EAAI,CAC1DrE,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EACzByL,EAAUtB,EAAK,SAAS,OAAOA,CAAI,EACvC,GAAIhC,EACA,IAAItF,EAAQ,cAAcsF,EAAMsD,EAAQ,OAAQ,IAAI,YAAYA,EAAQ,KAAK,EAAGA,EAAQ,MAAOa,CAAO,EAE1G,OAAOb,EAAQ,OAAO,EAC1B,OAAStZ,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,UACzB,IAAI,UAAYgW,IAASA,EAAO,KAAO,KAAOA,GAAQ,EAAI,KAAO,KAAOA,GAAQ,GAAK,KAAO,KAAOA,GAAQ,GAAK,KAC5G,UAAYsE,GAAQ,CACpB,IAAI1W,EAAM,GACN2W,EAAO,EACPC,EAAU,EACVC,EAAW,EACXC,EAAS,EACTvZ,EAAM,EACND,EAAI,EACJmK,EAAQ,CAACiP,EAAK,CAAC,EAAI,MAAOA,EAAK,CAAC,GAAK,GAAIA,EAAK,CAAC,EAAI,MAAOA,EAAK,CAAC,GAAK,GAAIA,EAAK,CAAC,EAAI,MAAOA,EAAK,CAAC,GAAK,GAAIA,EAAK,CAAC,EAAI,MAAOA,EAAK,CAAC,GAAK,EAAE,EACvIK,EAAU,GACVC,EAAS,GACb,IAAK1Z,EAAI,EAAGA,EAAI,EAAGA,IACf,GAAImK,EAAMnK,CAAC,IAAM,EAAG,CAChByZ,EAAU,GACV,KACJ,CAEJ,GAAIA,EAAS,CAET,GADAC,EAAS,UAAUvP,EAAM,CAAC,EAAIA,EAAM,CAAC,GAAK,EAAE,EACxCA,EAAM,CAAC,IAAM,GACb,OAAAzH,EAAM,UACNA,GAAOgX,EACAhX,EAEX,GAAIyH,EAAM,CAAC,IAAM,EACb,OAAAzH,EAAM,KACFgX,IAAW,YAAWA,EAAS,IAC/BA,IAAW,YAAWA,EAAS,KACnChX,GAAOgX,EACAhX,CAEf,CACA,IAAK2W,EAAO,EAAGA,EAAO,EAAGA,IACjBlP,EAAMkP,CAAI,IAAM,IACZA,EAAOE,EAAW,IAClBtZ,EAAM,GAEVsZ,EAAWF,EACXpZ,KAEAA,EAAMqZ,IACNA,EAAUrZ,EACVuZ,EAASH,EAAOC,EAAU,GAGlC,IAAKD,EAAO,EAAGA,EAAO,EAAGA,IAAQ,CAC7B,GAAIC,EAAU,GACNnP,EAAMkP,CAAI,IAAM,GAAKA,GAAQG,GAAUH,EAAOG,EAASF,EAAS,CAC5DD,IAASG,IACT9W,GAAO,IACH8W,IAAW,IAAG9W,GAAO,MAE7B,QACJ,CAEJA,GAAO,OAAO,OAAOyH,EAAMkP,CAAI,EAAI,KAAK,CAAC,EAAE,SAAS,EAAE,EACtD3W,GAAO2W,EAAO,EAAI,IAAM,EAC5B,CACA,OAAO3W,CACX,EACI,aAAe,CAACsW,EAAIW,IAAU,CAC9B,IAAIhD,EAAS,OAAOqC,IAAO,IAAM,CAAC,EAC9B9B,EAAO,OAAO,QAAQ8B,EAAK,IAAM,IAAM,CAAC,CAAC,EACzClE,EACJ,OAAQ6B,EAAQ,CACZ,IAAK,GACD,GAAIgD,IAAU,GACV,MAAO,CACH,MAAO,EACX,EAEJ7E,EAAO,OAAOkE,EAAK,IAAM,IAAM,CAAC,EAChClE,EAAO,UAAUA,CAAI,EACrB,MACJ,IAAK,IACD,GAAI6E,IAAU,GACV,MAAO,CACH,MAAO,EACX,EAEJ7E,EAAO,CAAC,OAAOkE,EAAK,IAAM,IAAM,CAAC,EAAG,OAAOA,EAAK,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAK,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAK,KAAO,IAAM,CAAC,CAAC,EACzHlE,EAAO,UAAUA,CAAI,EACrB,MACJ,QACI,MAAO,CACH,MAAO,CACX,CACR,CACA,MAAO,CACH,OAAA6B,EACA,KAAA7B,EACA,KAAAoC,CACJ,CACJ,EACI,iBAAmB,CAAC0C,EAAOX,IAAY,CACvC,IAAI3Z,EAAO,aAAasa,EAAOX,CAAO,EACtC,GAAI3Z,EAAK,MAAO,MAAM,IAAI,GAAG,WAAWA,EAAK,KAAK,EAClD,OAAAA,EAAK,KAAO,IAAI,YAAYA,EAAK,IAAI,GAAKA,EAAK,KACxCA,CACX,EAEA,SAAS,gBAAgBqN,EAAImI,EAAMmE,EAASC,EAAIC,EAAIU,EAAI,CACpD/E,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EACzBrN,EAAO,iBAAiBwV,EAAMmE,CAAO,EACzC,OAAAnC,EAAK,SAAS,KAAKA,EAAMxX,EAAK,KAAMA,EAAK,IAAI,EACtC,CACX,OAASR,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,gBAAgB,IAAM,UAEtB,SAAS,iBAAiBhB,EAAM,CAC5BA,KAAU,EACV,GAAI,CACA,OAAAA,EAAO,SAAS,OAAOA,CAAI,EAC3B,GAAG,MAAMA,CAAI,EACN,CACX,OAASgB,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,iBAAiB,IAAM,KAEvB,SAAS,iBAAiBhB,EAAMwP,EAAM,CAClCxP,KAAU,EACV,GAAI,CACA,OAAAA,EAAO,SAAS,OAAOA,CAAI,EAC3B,GAAG,MAAMA,EAAMwP,CAAI,EACZ,CACX,OAASxO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,iBAAiB,IAAM,MAEvB,SAAS,mBAAmB6N,EAAImI,EAAMmE,EAASC,EAAIC,EAAIU,EAAI,CACvD/E,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EACzBrN,EAAO,iBAAiBwV,EAAMmE,CAAO,EACzC,OAAAnC,EAAK,SAAS,QAAQA,EAAMxX,EAAK,KAAMA,EAAK,IAAI,EACzC,CACX,OAASR,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,UAEzB,SAAS,eAAe6N,EAAI,CACxB,GAAI,CACA,IAAImN,EAAM,SAAS,gBAAgBnN,CAAE,EACrC,OAAO,GAAG,UAAUmN,CAAG,EAAE,EAC7B,OAAShb,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,eAAe,IAAM,KAErB,SAAS,gBAAgB6N,EAAIoN,EAAOpV,EAAO,CACvC,GAAI,CACA,IAAImV,EAAM,SAAS,gBAAgBnN,CAAE,EACrC,GAAImN,EAAI,KAAOC,EAAO,MAAO,IAC7B,GAAIA,EAAQ,GAAKA,GAAS,GAAG,aAAc,MAAO,GAClD,IAAIxT,EAAW,GAAG,UAAUwT,CAAK,EACjC,OAAIxT,GAAU,GAAG,MAAMA,CAAQ,EACxB,GAAG,UAAUuT,EAAKC,CAAK,EAAE,EACpC,OAASjb,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,gBAAgB,IAAM,OAEtB,SAAS,qBAAqB4V,EAAO5W,EAAMkc,EAAOrV,EAAO,CACrD7G,KAAU,EACV,GAAI,CAGA,GAFAA,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACnCkc,EAAQ,GACR,MAAO,IAEX,IAAIhK,EAAS,GAAG,WAAWlS,EAAM,CAC7B,OAAQ,EACZ,CAAC,EACGyP,EAAOyC,EAAO,KAClB,GAAI,CAACzC,EACD,MAAO,IAEX,IAAI+C,EAAQ,GAIZ,OAHI0J,EAAQ,IAAG1J,GAAS,KACpB0J,EAAQ,IAAG1J,GAAS,KACpB0J,EAAQ,IAAG1J,GAAS,KACpBA,GAAS,GAAG,gBAAgB/C,EAAM+C,CAAK,EAChC,GAEJ,CACX,OAASxR,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,QAC3B,IAAI,qBAAuB,CAAC6N,EAAI5J,EAAQ9C,EAAKga,IAAW,EACxD,qBAAqB,IAAM,UAE3B,SAAS,qBAAqBtN,EAAIW,EAAM4M,EAAYC,EAAaC,EAASC,EAAU,CAChF,IAAItX,EAAS,2BAA2BmX,EAAYC,CAAW,EAC3Dla,EAAM,2BAA2Bma,EAASC,CAAQ,EACtD,GAAI,CACA,GAAI,MAAMtX,CAAM,EAAG,MAAO,IAC1B,IAAI+J,EAAS,SAAS,gBAAgBH,CAAE,EACxC,UAAG,SAASG,EAAQ/J,EAAQ9C,CAAG,EACxB,CACX,OAASnB,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,UAE3B,SAAS,kBAAkB6N,EAAI,CAC3B,GAAI,CACA,IAAIG,EAAS,SAAS,gBAAgBH,CAAE,EACxC,UAAG,MAAMG,EAAO,IAAI,EACb,CACX,OAAShO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,KAExB,SAAS,kBAAkB6N,EAAIW,EAAM,CACjC,GAAI,CACA,UAAG,OAAOX,EAAIW,CAAI,EACX,CACX,OAASxO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,MAExB,SAAS,qBAAqB4V,EAAO5W,EAAMwP,EAAM3I,EAAO,CACpD7G,KAAU,EACV,GAAI,CACA,IAAIwc,EAAW3V,EAAQ,IACvB,OAAA7G,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACvC,GAAG,MAAMA,EAAMwP,EAAMgN,CAAQ,EACtB,CACX,OAASxb,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,QAE3B,SAAS,oBAAoB6N,EAAI4N,EAAOC,EAAO,CAC3C,GAAI,CACA,UAAG,OAAO7N,EAAI4N,EAAOC,CAAK,EACnB,CACX,OAAS1b,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,OAE1B,SAAS,oBAAoB4V,EAAO5W,EAAMyc,EAAOC,EAAO7V,EAAO,CAC3D7G,KAAU,EACV,GAAI,CACAA,EAAO,SAAS,OAAOA,CAAI,EAC3B,IAAIwc,EAAW3V,EAAQ,IACvB,OAAAA,EAAQA,EAAQ,KAChB7G,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,GACtCwc,EAAW,GAAG,OAAS,GAAG,OAAOxc,EAAMyc,EAAOC,CAAK,EAC7C,CACX,OAAS1b,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,SAC1B,IAAI,kBAAoB,IAAM,CAC1B,IAAId,EAAM,OAAO,CAAC,SAAS,UAAY,IAAM,CAAC,EAC9C,gBAAS,SAAW,EACbA,CACX,EACI,kBAAoB,kBAExB,SAAS,mBAAmB2O,EAAI+F,EAAKsE,EAAS,CAC1CA,KAAa,EACb,SAAS,QAAUA,EACnB,GAAI,CACA,IAAIlK,EAAS,SAAS,gBAAgBH,CAAE,EACxC,OAAQ+F,EAAK,CACT,IAAK,GAAG,CACJ,IAAIC,EAAM,kBAAkB,EAC5B,GAAIA,EAAM,EACN,MAAO,IAEX,KAAO,GAAG,QAAQA,CAAG,GACjBA,IAEJ,IAAI8H,EACJ,OAAAA,EAAY,GAAG,UAAU3N,EAAQ6F,CAAG,EAC7B8H,EAAU,EACrB,CACA,IAAK,GACL,IAAK,GACD,MAAO,GACX,IAAK,GACD,OAAO3N,EAAO,MAClB,IAAK,GAAG,CACJ,IAAI6F,EAAM,kBAAkB,EAC5B,OAAA7F,EAAO,OAAS6F,EACT,CACX,CACA,IAAK,IAAI,CACL,IAAIA,EAAM,kBAAkB,EACxB5P,EAAS,EACb,cAAO4P,EAAM5P,IAAW,IAAM,CAAC,EAAI,EAC5B,CACX,CACA,IAAK,IACL,IAAK,IACD,MAAO,EACf,CACA,MAAO,GACX,OAASjE,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,OAEzB,SAAS,qBAAqB6N,EAAI,CAC9B,GAAI,CACA,IAAIG,EAAS,SAAS,gBAAgBH,CAAE,EACxC,MAAO,EACX,OAAS7N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,KAE3B,SAAS,mBAAmB6N,EAAIF,EAAK,CACjCA,KAAS,EACT,GAAI,CACA,IAAIK,EAAS,SAAS,gBAAgBH,CAAE,EACxC,OAAO,SAAS,OAAO,GAAG,KAAMG,EAAO,KAAML,CAAG,CACpD,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,MAEzB,SAAS,oBAAoBhB,EAAMoH,EAAMuH,EAAK,CAC1C3O,KAAU,EACVoH,KAAU,EACVuH,KAAS,EACT,GAAI,CACA,OAAA3O,EAAO,SAAS,OAAOA,CAAI,EAC3B,OAAO2O,EAAM,IAAM,IAAM,CAAC,EAAI,KAC9B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,KAC/B,OAAOA,EAAM,IAAM,IAAM,CAAC,EAAI,IAC9B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,IAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,IAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,GAAG,UAClC,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,IAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,GAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,EAC/B,OAAOA,EAAM,KAAO,IAAM,CAAC,EAAI,IACxB,CACX,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,OAE1B,SAAS,qBAAqB6N,EAAIzH,EAAMuH,EAAK,CACzCvH,KAAU,EACVuH,KAAS,EACT,GAAI,CACA,IAAIK,EAAS,SAAS,gBAAgBH,CAAE,EACxC,OAAO,oBAAoB,EAAGzH,EAAMuH,CAAG,CAC3C,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,OAE3B,SAAS,uBAAuB6N,EAAI+N,EAAYC,EAAa,CACzD,IAAIhP,EAAS,2BAA2B+O,EAAYC,CAAW,EAC/D,GAAI,CACA,OAAI,MAAMhP,CAAM,EAAU,IAC1B,GAAG,UAAUgB,EAAIhB,CAAM,EAChB,EACX,OAAS7M,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,uBAAuB,IAAM,OAC7B,IAAI,aAAe,CAAC4D,EAAKkY,EAAQ3O,IAAoB,kBAAkBvJ,EAAK,OAAQkY,EAAQ3O,CAAe,EAC3G,OAAO,aAAkB,aAEzB,SAAS,kBAAkBQ,EAAKvH,EAAM,CAClCuH,KAAS,EACTvH,KAAU,EACV,GAAI,CACA,GAAIA,IAAS,EAAG,MAAO,IACvB,IAAI2V,EAAM,GAAG,IAAI,EACbC,EAAmB,gBAAgBD,CAAG,EAAI,EAC9C,OAAI3V,EAAO4V,EAAyB,KACpC,aAAaD,EAAKpO,EAAKvH,CAAI,EACpB4V,EACX,OAAShc,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,MAExB,SAAS,sBAAsB6N,EAAIoO,EAAMtW,EAAO,CAC5CsW,KAAU,EACVtW,KAAW,EACX,GAAI,CACA,IAAIqI,EAAS,SAAS,gBAAgBH,CAAE,EACxCG,EAAO,WAAPA,EAAO,SAAa,GAAG,QAAQA,EAAO,IAAI,GAK1C,QAJIkO,EAAc,IACd/N,EAAM,EACNgO,EAAM,GAAG,OAAOnO,EAAQ,EAAG,CAAC,EAC5BxK,EAAM,KAAK,MAAM2Y,EAAMD,CAAW,EAC/B1Y,EAAMwK,EAAO,SAAS,QAAUG,EAAM+N,GAAevW,GAAO,CAC/D,IAAI9F,EACAmG,EACAtB,EAAOsJ,EAAO,SAASxK,CAAG,EAC9B,GAAIkB,IAAS,IACT7E,EAAKmO,EAAO,KAAK,GACjBhI,EAAO,UACAtB,IAAS,KAAM,CACtB,IAAIwM,EAAS,GAAG,WAAWlD,EAAO,KAAM,CACpC,OAAQ,EACZ,CAAC,EACDnO,EAAKqR,EAAO,KAAK,GACjBlL,EAAO,CACX,KAAO,CACH,IAAIoW,EAAQ,GAAG,WAAWpO,EAAO,KAAMtJ,CAAI,EAC3C7E,EAAKuc,EAAM,GACXpW,EAAO,GAAG,SAASoW,EAAM,IAAI,EAAI,EAAI,GAAG,MAAMA,EAAM,IAAI,EAAI,EAAI,GAAG,OAAOA,EAAM,IAAI,EAAI,GAAK,CACjG,CACA,QAAU,CAACvc,IAAO,GAAI,WAAaA,EAAI,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAOoc,EAAO9N,IAAQ,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAO8N,EAAO9N,EAAM,IAAM,IAAM,CAAC,EAAI,QAAQ,CAAC,EAC1S,QAAU,EAAE3K,EAAM,GAAK0Y,IAAgB,GAAI,YAAc1Y,EAAM,GAAK0Y,EAAa,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAG,OAAOD,EAAO9N,EAAM,IAAM,IAAM,CAAC,EAAI,QAAQ,CAAC,EAAG,OAAO8N,EAAO9N,EAAM,KAAO,IAAM,CAAC,EAAI,QAAQ,CAAC,EACzV,OAAO8N,EAAO9N,EAAM,KAAO,IAAM,CAAC,EAAI,IACtC,MAAM8N,EAAO9N,EAAM,KAAO,CAAC,EAAInI,EAC/B,aAAatB,EAAMuX,EAAO9N,EAAM,GAAI,GAAG,EACvCA,GAAO+N,EACP1Y,GAAO,CACX,CACA,UAAG,OAAOwK,EAAQxK,EAAM0Y,EAAa,CAAC,EAC/B/N,CACX,OAASnO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,sBAAsB,IAAM,OAE5B,SAAS,uBAAuB6N,EAAImI,EAAMmE,EAASC,EAAIC,EAAIU,EAAI,CAC3D/E,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EAC7B,GAAI,CAACmK,EAAK,MACN,MAAO,IAEX,IAAItH,EAAQ,cAAcsF,EAAMgC,EAAK,OAAQ,IAAI,YAAYA,EAAK,KAAK,EAAGA,EAAK,MAAOmC,CAAO,EAC7F,MAAO,EACX,OAASna,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,uBAAuB,IAAM,UAE7B,SAAS,uBAAuB6N,EAAImI,EAAMmE,EAASC,EAAIC,EAAIU,EAAI,CAC3D/E,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EACzB6C,EAAQ,cAAcsF,EAAMgC,EAAK,OAAQ,IAAI,YAAYA,EAAK,OAAS,SAAS,EAAGA,EAAK,MAAOmC,CAAO,EAC1G,MAAO,EACX,OAASna,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,uBAAuB,IAAM,UAE7B,SAAS,sBAAsB6N,EAAIwO,EAAOC,EAASC,EAAQC,EAAQpC,EAAI,CACnEmC,KAAY,EACZC,KAAY,EACZ,GAAI,CACA,IAAIxE,EAAO,gBAAgBnK,CAAE,EAC7B,OAAIwO,IAAU,GACNC,IAAY,GACZ,OAAOC,IAAW,IAAM,CAAC,EAAIvE,EAAK,MAClC,OAAOwE,IAAW,IAAM,CAAC,EAAI,EAC7BxE,EAAK,MAAQ,KACN,GAGR,GACX,OAAShY,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,sBAAsB,IAAM,UAE5B,SAAS,iBAAiB6N,EAAI4O,EAAIvE,EAAS,CACvCA,KAAa,EACb,SAAS,QAAUA,EACnB,GAAI,CACA,IAAIlK,EAAS,SAAS,gBAAgBH,CAAE,EACxC,OAAQ4O,EAAI,CACR,IAAK,OACD,OAAKzO,EAAO,IACL,EADiB,IAG5B,IAAK,OAAO,CACR,GAAI,CAACA,EAAO,IAAK,MAAO,IACxB,GAAIA,EAAO,IAAI,IAAI,aAAc,CAC7B,IAAI0O,EAAU1O,EAAO,IAAI,IAAI,aAAaA,CAAM,EAC5C2O,EAAO,kBAAkB,EAC7B,OAAOA,IAAS,IAAM,CAAC,EAAID,EAAQ,SAAW,EAC9C,OAAOC,EAAO,IAAM,IAAM,CAAC,EAAID,EAAQ,SAAW,EAClD,OAAOC,EAAO,IAAM,IAAM,CAAC,EAAID,EAAQ,SAAW,EAClD,OAAOC,EAAO,KAAO,IAAM,CAAC,EAAID,EAAQ,SAAW,EACnD,QAASxb,EAAI,EAAGA,EAAI,GAAIA,IACpB,MAAMyb,EAAOzb,EAAI,KAAO,CAAC,EAAIwb,EAAQ,KAAKxb,CAAC,GAAK,EAEpD,MAAO,EACX,CACA,MAAO,EACX,CACA,IAAK,OACL,IAAK,OACL,IAAK,OACD,OAAK8M,EAAO,IACL,EADiB,IAG5B,IAAK,OACL,IAAK,OACL,IAAK,OAAO,CACR,GAAI,CAACA,EAAO,IAAK,MAAO,IACxB,GAAIA,EAAO,IAAI,IAAI,aAAc,CAO7B,QANI2O,EAAO,kBAAkB,EACzBC,EAAU,OAAOD,IAAS,IAAM,CAAC,EACjCE,EAAU,OAAOF,EAAO,IAAM,IAAM,CAAC,EACrCG,EAAU,OAAOH,EAAO,IAAM,IAAM,CAAC,EACrCI,EAAU,OAAOJ,EAAO,KAAO,IAAM,CAAC,EACtCK,EAAO,CAAC,EACH9b,EAAI,EAAGA,EAAI,GAAIA,IACpB8b,EAAK,KAAK,MAAML,EAAOzb,EAAI,KAAO,CAAC,CAAC,EAExC,OAAO8M,EAAO,IAAI,IAAI,aAAaA,EAAO,IAAKyO,EAAI,CAC/C,QAAAG,EACA,QAAAC,EACA,QAAAC,EACA,QAAAC,EACA,KAAAC,CACJ,CAAC,CACL,CACA,MAAO,EACX,CACA,IAAK,OAAO,CACR,GAAI,CAAChP,EAAO,IAAK,MAAO,IACxB,IAAI2O,EAAO,kBAAkB,EAC7B,cAAOA,IAAS,IAAM,CAAC,EAAI,EACpB,CACX,CACA,IAAK,OACD,OAAK3O,EAAO,IACL,IADiB,IAG5B,IAAK,OAAO,CACR,IAAI2O,EAAO,kBAAkB,EAC7B,OAAO,GAAG,MAAM3O,EAAQyO,EAAIE,CAAI,CACpC,CACA,IAAK,OAAO,CACR,GAAI,CAAC3O,EAAO,IAAK,MAAO,IACxB,GAAIA,EAAO,IAAI,IAAI,iBAAkB,CACjC,IAAIiP,EAAUjP,EAAO,IAAI,IAAI,iBAAiBA,EAAO,GAAG,EACpD2O,EAAO,kBAAkB,EAC7B,OAAOA,IAAS,IAAM,CAAC,EAAIM,EAAQ,CAAC,EACpC,OAAON,EAAO,IAAM,IAAM,CAAC,EAAIM,EAAQ,CAAC,CAC5C,CACA,MAAO,EACX,CACA,IAAK,OACD,OAAKjP,EAAO,IACL,EADiB,IAG5B,IAAK,OACD,OAAKA,EAAO,IACL,EADiB,IAG5B,QACI,MAAO,GACf,CACJ,OAAShO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,iBAAiB,IAAM,OAEvB,SAAS,kBAAkB6N,EAAIsL,EAAS,CACpC,GAAI,CACA,IAAInB,EAAO,gBAAgBnK,CAAE,EAC7B,OAAAmK,EAAK,SAAS,OAAOA,EAAMmB,CAAO,EAC3B,CACX,OAASnZ,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,UAExB,SAAS,mBAAmBhB,EAAM2O,EAAK,CACnC3O,KAAU,EACV2O,KAAS,EACT,GAAI,CACA,OAAA3O,EAAO,SAAS,OAAOA,CAAI,EACpB,SAAS,OAAO,GAAG,MAAOA,EAAM2O,CAAG,CAC9C,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,MAEzB,SAAS,mBAAmB4V,EAAO5W,EAAMwP,EAAM,CAC3CxP,KAAU,EACV,GAAI,CACA,OAAAA,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACvCA,EAAO,KAAK,UAAUA,CAAI,EACtBA,EAAKA,EAAK,OAAS,CAAC,IAAM,MAAKA,EAAOA,EAAK,OAAO,EAAGA,EAAK,OAAS,CAAC,GACxE,GAAG,MAAMA,EAAMwP,EAAM,CAAC,EACf,CACX,OAASxO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,OAEzB,SAAS,mBAAmB4V,EAAO5W,EAAMwP,EAAMV,EAAK,CAChD9O,KAAU,EACV,GAAI,CAGA,OAFAA,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EAC/BwP,EAAO,MAAO,CAClB,IAAK,OACL,IAAK,MACL,IAAK,OACL,IAAK,MACL,IAAK,OACD,MACJ,QACI,MAAO,GACf,CACA,UAAG,MAAMxP,EAAMwP,EAAMV,CAAG,EACjB,CACX,OAAS9N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,QAEzB,SAAS,sBAAsB4V,EAAO5W,EAAM2O,EAAK9H,EAAO,CACpD7G,KAAU,EACV2O,KAAS,EACT,GAAI,CACA3O,EAAO,SAAS,OAAOA,CAAI,EAC3B,IAAIwc,EAAW3V,EAAQ,IACnBgQ,EAAahQ,EAAQ,KACzB,OAAAA,EAAQA,EAAQ,MAChB7G,EAAO,SAAS,YAAY4W,EAAO5W,EAAM6W,CAAU,EAC5C,SAAS,OAAO2F,EAAW,GAAG,MAAQ,GAAG,KAAMxc,EAAM2O,CAAG,CACnE,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,sBAAsB,IAAM,QAE5B,SAAS,kBAAkB4V,EAAO5W,EAAM6G,EAAOqS,EAAS,CACpDlZ,KAAU,EACVkZ,KAAa,EACb,SAAS,QAAUA,EACnB,GAAI,CACAlZ,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACvC,IAAIwP,EAAO0J,EAAU,kBAAkB,EAAI,EAC3C,OAAO,GAAG,KAAKlZ,EAAM6G,EAAO2I,CAAI,EAAE,EACtC,OAASxO,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,QACxB,IAAI,OAAS,CACT,mBAAoB,KACpB,MAAMsO,EAAO,CACT,OAAO,GAAG,WAAW,KAAM,IAAK,MAAa,CAAC,CAClD,EACA,YAAa,CACT,IAAI4O,EAAO,CACP,QAAS,CAAC,EACV,OAAQ,CACZ,EACAA,EAAK,QAAQ,KAAK,CACd,OAAQ,IAAI,WAAW,OAAO,kBAAkB,EAChD,OAAQ,EACR,QAAS,CACb,CAAC,EACD,IAAIC,EAAQ,OAAO,SAAS,EACxBC,EAAQ,OAAO,SAAS,EACxBC,EAAQ,GAAG,WAAW,OAAO,KAAMF,EAAO,KAAM,CAAC,EACjDG,EAAQ,GAAG,WAAW,OAAO,KAAMF,EAAO,KAAM,CAAC,EACrDC,EAAM,KAAOH,EACbI,EAAM,KAAOJ,EACb,IAAIK,EAAiB,GAAG,aAAa,CACjC,KAAMJ,EACN,KAAME,EACN,MAAO,EACP,SAAU,GACV,WAAY,OAAO,UACvB,CAAC,EACDA,EAAM,OAASE,EACf,IAAIC,EAAiB,GAAG,aAAa,CACjC,KAAMJ,EACN,KAAME,EACN,MAAO,EACP,SAAU,GACV,WAAY,OAAO,UACvB,CAAC,EACD,OAAAA,EAAM,OAASE,EACR,CACH,YAAaD,EAAe,GAC5B,YAAaC,EAAe,EAChC,CACJ,EACA,WAAY,CACR,KAAKxP,EAAQ,CACT,IAAIkP,EAAOlP,EAAO,KAAK,KACvB,IAAKA,EAAO,MAAQ,WAAa,EAC7B,MAAO,KAEX,GAAIkP,EAAK,QAAQ,OAAS,EACtB,QAAShc,EAAI,EAAGA,EAAIgc,EAAK,QAAQ,OAAQhc,IAAK,CAC1C,IAAIuc,EAASP,EAAK,QAAQhc,CAAC,EAC3B,GAAIuc,EAAO,OAASA,EAAO,QAAU,EACjC,MAAO,GAEf,CAEJ,MAAO,EACX,EACA,MAAMzP,EAAQiK,EAASC,EAAS,CAC5B,MAAO,GACX,EACA,MAAMlK,EAAQ,CACV,MAAO,GACX,EACA,KAAKA,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAG3C,QAFI0N,EAAOlP,EAAO,KAAK,KACnB0P,EAAgB,EACXxc,EAAI,EAAGA,EAAIgc,EAAK,QAAQ,OAAQhc,IAAK,CAC1C,IAAIuc,EAASP,EAAK,QAAQhc,CAAC,EAC3Bwc,GAAiBD,EAAO,OAASA,EAAO,OAC5C,CACA,IAAIpe,EAAO6O,EAAO,SAASjK,EAAQA,EAAS4I,CAAM,EAClD,GAAIA,GAAU,EACV,MAAO,GAEX,GAAI6Q,GAAiB,EACjB,MAAM,IAAI,GAAG,WAAW,CAAC,EAK7B,QAHIC,EAAS,KAAK,IAAID,EAAe7Q,CAAM,EACvC+Q,EAAYD,EACZE,EAAW,EACN3c,EAAI,EAAGA,EAAIgc,EAAK,QAAQ,OAAQhc,IAAK,CAC1C,IAAI4c,EAAaZ,EAAK,QAAQhc,CAAC,EAC3B6c,EAAaD,EAAW,OAASA,EAAW,QAChD,GAAIH,GAAUI,EAAY,CACtB,IAAIC,EAAWF,EAAW,OAAO,SAASA,EAAW,QAASA,EAAW,MAAM,EAC3EH,EAASI,GACTC,EAAWA,EAAS,SAAS,EAAGL,CAAM,EACtCG,EAAW,SAAWH,GAEtBE,IAEJxe,EAAK,IAAI2e,CAAQ,EACjB,KACJ,KAAO,CACH,IAAIA,EAAWF,EAAW,OAAO,SAASA,EAAW,QAASA,EAAW,MAAM,EAC/Eze,EAAK,IAAI2e,CAAQ,EACjB3e,EAAOA,EAAK,SAAS2e,EAAS,UAAU,EACxCL,GAAUK,EAAS,WACnBH,GACJ,CACJ,CACA,OAAIA,GAAYA,GAAYX,EAAK,QAAQ,SACrCW,IACAX,EAAK,QAAQW,CAAQ,EAAE,OAAS,EAChCX,EAAK,QAAQW,CAAQ,EAAE,QAAU,GAErCX,EAAK,QAAQ,OAAO,EAAGW,CAAQ,EACxBD,CACX,EACA,MAAM5P,EAAQE,EAAQjK,EAAQ4I,EAAQ2C,EAAU,CAC5C,IAAI0N,EAAOlP,EAAO,KAAK,KACnB3O,EAAO6O,EAAO,SAASjK,EAAQA,EAAS4I,CAAM,EAC9CoR,EAAU5e,EAAK,WACnB,GAAI4e,GAAW,EACX,MAAO,GAEX,IAAIH,EAAa,KACbZ,EAAK,QAAQ,QAAU,GACvBY,EAAa,CACT,OAAQ,IAAI,WAAW,OAAO,kBAAkB,EAChD,OAAQ,EACR,QAAS,CACb,EACAZ,EAAK,QAAQ,KAAKY,CAAU,GAE5BA,EAAaZ,EAAK,QAAQA,EAAK,QAAQ,OAAS,CAAC,EAErD,OAAOY,EAAW,QAAU,OAAO,kBAAkB,EACrD,IAAII,EAAwB,OAAO,mBAAqBJ,EAAW,OACnE,GAAII,GAAyBD,EACzB,OAAAH,EAAW,OAAO,IAAIze,EAAMye,EAAW,MAAM,EAC7CA,EAAW,QAAUG,EACdA,EACAC,EAAwB,IAC/BJ,EAAW,OAAO,IAAIze,EAAK,SAAS,EAAG6e,CAAqB,EAAGJ,EAAW,MAAM,EAChFA,EAAW,QAAUI,EACrB7e,EAAOA,EAAK,SAAS6e,EAAuB7e,EAAK,UAAU,GAI/D,QAFI8e,EAAa9e,EAAK,WAAa,OAAO,mBAAqB,EAC3D+e,EAAc/e,EAAK,WAAa,OAAO,mBAClC6B,EAAI,EAAGA,EAAIid,EAAYjd,IAAK,CACjC,IAAImd,EAAY,CACZ,OAAQ,IAAI,WAAW,OAAO,kBAAkB,EAChD,OAAQ,OAAO,mBACf,QAAS,CACb,EACAnB,EAAK,QAAQ,KAAKmB,CAAS,EAC3BA,EAAU,OAAO,IAAIhf,EAAK,SAAS,EAAG,OAAO,kBAAkB,CAAC,EAChEA,EAAOA,EAAK,SAAS,OAAO,mBAAoBA,EAAK,UAAU,CACnE,CACA,GAAI+e,EAAc,EAAG,CACjB,IAAIC,EAAY,CACZ,OAAQ,IAAI,WAAW,OAAO,kBAAkB,EAChD,OAAQhf,EAAK,WACb,QAAS,CACb,EACA6d,EAAK,QAAQ,KAAKmB,CAAS,EAC3BA,EAAU,OAAO,IAAIhf,CAAI,CAC7B,CACA,OAAO4e,CACX,EACA,MAAMjQ,EAAQ,CACV,IAAIkP,EAAOlP,EAAO,KAAK,KACvBkP,EAAK,SACDA,EAAK,SAAW,IAChBA,EAAK,QAAU,KAEvB,CACJ,EACA,UAAW,CACP,OAAK,OAAO,SAAS,UACjB,OAAO,SAAS,QAAU,GAEvB,QAAU,OAAO,SAAS,UAAY,GACjD,CACJ,EAEA,SAAS,gBAAgBoB,EAAO,CAC5BA,KAAW,EACX,GAAI,CACA,GAAIA,GAAS,EACT,MAAM,IAAI,GAAG,WAAW,EAAE,EAE9B,IAAI3E,EAAM,OAAO,WAAW,EAC5B,cAAO2E,IAAU,IAAM,CAAC,EAAI3E,EAAI,YAChC,OAAO2E,EAAQ,IAAM,IAAM,CAAC,EAAI3E,EAAI,YAC7B,CACX,OAAS3Z,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,gBAAgB,IAAM,KAEtB,SAAS,gBAAgBue,EAAKtI,EAAMI,EAAS,CACzCkI,KAAS,EACT,GAAI,CAEA,QADIC,EAAU,EACLtd,EAAI,EAAGA,EAAI+U,EAAM/U,IAAK,CAC3B,IAAIud,EAASF,EAAM,EAAIrd,EACnB2M,EAAK,OAAO4Q,IAAW,IAAM,CAAC,EAC9BC,EAAS,OAAOD,EAAS,IAAM,IAAM,CAAC,EACtClH,EAAO,GACPvJ,EAAS,GAAG,UAAUH,CAAE,EACxBG,IACAuJ,EAAO,SAAS,iBACZvJ,EAAO,WAAW,OAClBuJ,EAAOvJ,EAAO,WAAW,KAAKA,EAAQ,EAAE,IAGhDuJ,GAAQmH,EAAS,EAAI,GACjBnH,GAAMiH,IACV,OAAOC,EAAS,IAAM,IAAM,CAAC,EAAIlH,CACrC,CACA,OAAOiH,CACX,OAASxe,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,gBAAgB,IAAM,OAEtB,SAAS,sBAAsB4V,EAAO5W,EAAM2O,EAAKgR,EAAS,CACtD3f,KAAU,EACV2O,KAAS,EACTgR,KAAa,EACb,GAAI,CAGA,GAFA3f,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACnC2f,GAAW,EAAG,MAAO,IACzB,IAAIzf,EAAM,GAAG,SAASF,CAAI,EACtBmC,EAAM,KAAK,IAAIwd,EAAS,gBAAgBzf,CAAG,CAAC,EAC5C0f,EAAU,MAAMjR,EAAMxM,IAAQ,CAAC,EACnC,oBAAajC,EAAKyO,EAAKgR,EAAU,CAAC,EAClC,MAAMhR,EAAMxM,IAAQ,CAAC,EAAIyd,EAClBzd,CACX,OAASnB,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,sBAAsB,IAAM,QAE5B,SAAS,oBAAoB6N,EAAIF,EAAKxM,EAAK0E,EAAOmQ,EAAMmE,EAAS,CAC7DxM,KAAS,EACTxM,KAAS,EACT6U,KAAU,EACVmE,KAAa,EACb,GAAI,CACA,IAAInC,EAAO,gBAAgBnK,CAAE,EACzBsK,EAAMH,EAAK,SAAS,QAAQA,EAAM7W,CAAG,EACzC,GAAI,CAACgX,EAAK,MAAO,GACjB,GAAInC,EACA,IAAItF,EAAQ,cAAcsF,EAAMgC,EAAK,OAAQ,IAAI,YAAYG,EAAI,IAAI,EAAGA,EAAI,KAAMgC,CAAO,EAE7F,cAAO,IAAIhC,EAAI,OAAQxK,IAAQ,CAAC,EACzBwK,EAAI,OAAO,UACtB,OAASnY,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,UAE1B,SAAS,mBAAmB6N,EAAIpJ,EAASoB,EAAOuU,EAAIC,EAAIU,EAAI,CACxDtW,KAAa,EACb,GAAI,CAKA,QAJIuT,EAAO,gBAAgBnK,CAAE,EACzBgR,EAAM,QAAQpa,EAAU,IAAM,IAAM,CAAC,EACrCqa,EAAM,OAAOra,EAAU,KAAO,IAAM,CAAC,EACrC6R,EAAQ,EACHpV,EAAI,EAAGA,EAAI4d,EAAK5d,IACrBoV,GAAS,OAAOuI,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EAEjD,IAAIiX,EAAMH,EAAK,SAAS,QAAQA,EAAM1B,CAAK,EAC3C,GAAI,CAAC6B,EAAK,MAAO,GACjB,IAAIzT,EAAO,QAAQD,IAAY,IAAM,CAAC,EACtC,GAAIC,EACA,IAAIgM,EAAQ,cAAchM,EAAMsT,EAAK,OAAQ,IAAI,YAAYG,EAAI,IAAI,EAAGA,EAAI,IAAI,EAIpF,QAFIvK,EAAY,EACZgM,EAAiBzB,EAAI,OAAO,WACvBjX,EAAI,EAAG0Y,EAAiB,GAAK1Y,EAAI4d,EAAK5d,IAAK,CAChD,IAAI6d,EAAU,QAAQF,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EAC/C8d,EAAS,OAAOH,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EACjD,GAAK8d,EAGL,KAAInS,EAAS,KAAK,IAAImS,EAAQpF,CAAc,EACxCjM,EAAMwK,EAAI,OAAO,SAASvK,EAAWA,EAAYf,CAAM,EAC3D,OAAO,IAAIc,EAAKoR,EAAUnR,IAAc,CAAC,EACzCA,GAAaf,EACb+M,GAAkB/M,EACtB,CACA,OAAOe,CACX,OAAS5N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,UAEzB,SAAS,oBAAoBif,EAAU1P,EAAS2P,EAAUtM,EAAS,CAC/DrD,KAAa,EACbqD,KAAa,EACb,GAAI,CACA,OAAArD,EAAU,SAAS,OAAOA,CAAO,EACjCqD,EAAU,SAAS,OAAOA,CAAO,EACjCrD,EAAU,SAAS,YAAY0P,EAAU1P,CAAO,EAChDqD,EAAU,SAAS,YAAYsM,EAAUtM,CAAO,EAChD,GAAG,OAAOrD,EAASqD,CAAO,EACnB,CACX,OAAS5S,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,QAE1B,SAAS,iBAAiBhB,EAAM,CAC5BA,KAAU,EACV,GAAI,CACA,OAAAA,EAAO,SAAS,OAAOA,CAAI,EAC3B,GAAG,MAAMA,CAAI,EACN,CACX,OAASgB,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,iBAAiB,IAAM,KAEvB,SAAS,mBAAmB6N,EAAIpJ,EAASoB,EAAOuU,EAAIC,EAAIU,EAAI,CACxDtW,KAAa,EACb2V,KAAQ,EACRC,KAAQ,EACR,GAAI,CACA,IAAIrC,EAAO,gBAAgBnK,CAAE,EACzBgR,EAAM,QAAQpa,EAAU,IAAM,IAAM,CAAC,EACrCqa,EAAM,OAAOra,EAAU,KAAO,IAAM,CAAC,EACrCuR,EAAMoC,EACN1T,EAAO,QAAQD,IAAY,IAAM,CAAC,EAClC0a,EAAU,OAAO1a,EAAU,IAAM,IAAM,CAAC,EAC5C,GAAIC,EAAM,CACN,IAAIlE,EAAO,iBAAiBkE,EAAMya,CAAO,EACzC/G,EAAO5X,EAAK,KACZwV,EAAOxV,EAAK,IAChB,CAEA,QADI8V,EAAQ,EACHpV,EAAI,EAAGA,EAAI4d,EAAK5d,IACrBoV,GAAS,OAAOuI,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EAIjD,QAFI8K,EAAO,IAAI,WAAWsK,CAAK,EAC3BrS,EAAS,EACJ/C,EAAI,EAAGA,EAAI4d,EAAK5d,IAGrB,QAFI6d,EAAU,QAAQF,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EAC/C8d,EAAS,OAAOH,GAAO,EAAI3d,EAAI,KAAO,IAAM,CAAC,EACxCkH,EAAI,EAAGA,EAAI4W,EAAQ5W,IACxB4D,EAAK/H,GAAQ,EAAI,MAAM8a,EAAU3W,IAAM,CAAC,EAGhD,OAAO4P,EAAK,SAAS,QAAQA,EAAMhM,EAAM,EAAGsK,EAAON,EAAMoC,CAAI,CACjE,OAASpY,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,UAEzB,SAAS,kBAAkB6N,EAAIpJ,EAASoI,EAAQhH,EAAOmQ,EAAMoJ,EAAU,CACnE3a,KAAa,EACboI,KAAY,EACZmJ,KAAU,EACVoJ,KAAc,EACd,GAAI,CACA,IAAIpH,EAAO,gBAAgBnK,CAAE,EAC7B,GAAI,CAACmI,EACD,OAAO,GAAG,MAAMgC,EAAK,OAAQ,MAAOvT,EAASoI,CAAM,EAEvD,IAAIoM,EAAO,iBAAiBjD,EAAMoJ,CAAQ,EAC1C,OAAOpH,EAAK,SAAS,QAAQA,EAAM,MAAOvT,EAASoI,EAAQoM,EAAK,KAAMA,EAAK,IAAI,CACnF,OAASjZ,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,UAExB,SAAS,kBAAkBqf,EAAQrZ,EAAM8R,EAAU,CAC/C,GAAI,CACA,IAAIE,EAAO,OAAO,aAAaqH,EAAQrZ,EAAM8R,CAAQ,EACrD,OAAOE,EAAK,OAAO,EACvB,OAAShY,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,UAExB,SAAS,kBAAkBhB,EAAM2O,EAAK,CAClC3O,KAAU,EACV2O,KAAS,EACT,GAAI,CACA,OAAA3O,EAAO,SAAS,OAAOA,CAAI,EACpB,SAAS,OAAO,GAAG,KAAMA,EAAM2O,CAAG,CAC7C,OAAS3N,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,kBAAkB,IAAM,MAExB,SAAS,mBAAmBuG,EAAQ+Y,EAAU,CAC1C/Y,KAAY,EACZ+Y,KAAc,EACd,GAAI,CACA,OAAA/Y,EAAS,SAAS,OAAOA,CAAM,EAC/B+Y,EAAW,SAAS,OAAOA,CAAQ,EACnC,GAAG,QAAQ/Y,EAAQ+Y,CAAQ,EACpB,CACX,OAAStf,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,mBAAmB,IAAM,MAEzB,SAAS,qBAAqBuG,EAAQ2Y,EAAUI,EAAU,CACtD/Y,KAAY,EACZ+Y,KAAc,EACd,GAAI,CACA,OAAAA,EAAW,SAAS,YAAYJ,EAAUI,CAAQ,EAClD,GAAG,QAAQ/Y,EAAQ+Y,CAAQ,EACpB,CACX,OAAStf,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,OAE3B,SAAS,sBAAsBhB,EAAM4c,EAAYC,EAAa,CAC1D7c,KAAU,EACV,IAAI6N,EAAS,2BAA2B+O,EAAYC,CAAW,EAC/D,GAAI,CACA,OAAI,MAAMhP,CAAM,EAAU,IAC1B7N,EAAO,SAAS,OAAOA,CAAI,EAC3B,GAAG,SAASA,EAAM6N,CAAM,EACjB,EACX,OAAS7M,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,sBAAsB,IAAM,OAE5B,SAAS,oBAAoB4V,EAAO5W,EAAM6G,EAAO,CAC7C7G,KAAU,EACV,GAAI,CACA,OAAAA,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,CAAI,EACnC6G,IAAU,EACV,GAAG,OAAO7G,CAAI,EACP6G,IAAU,IACjB,GAAG,MAAM7G,CAAI,EAEb,MAAM,kCAAkC,EAErC,CACX,OAASgB,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,oBAAoB,IAAM,OAC1B,IAAI,eAAiB+F,GAAO,QAAQA,IAAQ,IAAM,CAAC,EAAI,OAAOA,EAAM,IAAM,IAAM,CAAC,EAAI,WAErF,SAAS,qBAAqB6P,EAAO5W,EAAMugB,EAAO1Z,EAAO,CACrD7G,KAAU,EACVugB,KAAW,EACX,GAAI,CACAvgB,EAAO,SAAS,OAAOA,CAAI,EAC3BA,EAAO,SAAS,YAAY4W,EAAO5W,EAAM,EAAI,EAC7C,IAAIwgB,EAAM,KAAK,IAAI,EACfjM,EAAOC,EACX,GAAI,CAAC+L,EACDhM,EAAQiM,EACRhM,EAAQgM,MACL,CACH,IAAIC,EAAU,eAAeF,CAAK,EAC9BG,EAAc,OAAOH,EAAQ,IAAM,IAAM,CAAC,EAC1CG,GAAe,WACfnM,EAAQiM,EACDE,GAAe,WACtBnM,EAAQ,GAERA,EAAQkM,EAAU,IAAMC,EAAe,IAE3CH,GAAS,GACTE,EAAU,eAAeF,CAAK,EAC9BG,EAAc,OAAOH,EAAQ,IAAM,IAAM,CAAC,EACtCG,GAAe,WACflM,EAAQgM,EACDE,GAAe,WACtBlM,EAAQ,GAERA,EAAQiM,EAAU,IAAMC,EAAe,GAE/C,CACA,OAAIlM,GAAS,IAAMD,GAAS,KACxB,GAAG,MAAMvU,EAAMuU,EAAOC,CAAK,EAExB,CACX,OAASxT,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,qBAAqB,IAAM,QAC3B,IAAI,cAAgB,IAAI,YAAY,OAAO,CACvC,MAAO,MACP,QAAS,EACb,EAAG,CAAC,EACA,WAAa,IAAM,CACnB,MAAM,EAAE,CACZ,EACA,WAAW,IAAM,IACjB,IAAI,IAAM,CAAC,EACP,WAAa2f,GAAM,yBAAyBA,CAAE,EAClD,OAAO,WAAgB,WACvB,IAAI,oBAAsB/b,GAAO,CAC7B,IAAIwC,EAAO,gBAAgBxC,CAAG,EAAI,EAC9B1E,EAAM,WAAWkH,CAAI,EACzB,oBAAaxC,EAAK1E,EAAKkH,CAAI,EACpBlH,CACX,EACI,WAAaiZ,GAAO,CACpB,IAAI3P,EAAK,UAAU,EACfoX,EAAO,oBAAoBzH,CAAG,EAClC,aAAayH,EAAM,CAAC,EACpB,aAAapX,CAAE,CACnB,EACI,eAAiB,CAACvC,EAAQ4Z,IAAY,CACtC,IAAI5gB,EAAW,aAAagH,EAAS,EAAE,EACnCJ,EAAQ,OAAOI,EAAS,IAAM,IAAM,CAAC,EACzChH,EAAW,KAAK,UAAUA,CAAQ,EAClC,IAAI6gB,EAAc,CAAC,EACfC,EAAS,GAAQla,EAAQ,KACzB6D,EAAaqW,EAAS,KAAO,CAAC,EAC9BC,EAAgB,CAChB,OAAAD,EACA,SAAU,GAAQla,EAAQ,MAC1B,UAAWga,EAAQ,SACvB,EACA,GAAIA,EAAQ,UACR,OAAO,mBAAmB5gB,EAAU+gB,EAAetW,EAAYzD,CAAM,EAEzE,GAAI,CACA,OAAO,mBAAmBhH,EAAU+gB,EAAetW,EAAYzD,CAAM,CACzE,OAASjG,EAAG,CACR,kBAAW,+BAA+B,OAAAf,EAAQ,MAAK,OAAAe,EAAG,EACnD,CACX,CACJ,EAEA,SAAS,YAAYiG,EAAQ,CACzB,OAAAA,KAAY,EACL,eAAeA,EAAQ,CAC1B,UAAW,EACf,CAAC,CACL,CACA,YAAY,IAAM,KAElB,SAAS,WAAWA,EAAQga,EAAQC,EAAa,CAC7Cja,KAAY,EACZga,KAAY,EACZC,KAAiB,EACjBD,EAAS,aAAaA,CAAM,EAC5B,IAAI1f,EACA4f,EACAhW,EAAM,KAAK,mBAAmBlE,CAAM,EACxC,GAAI,CAACkE,EAAI,QAAQ,eAAe8V,CAAM,GAAK9V,EAAI,QAAQ8V,CAAM,EAAE,KAC3D,kBAAW,mCAAmC,OAAAA,EAAM,sBAAqB,OAAA9V,EAAI,KAAM,EAC5E,EAEXgW,EAAc,OAAO,KAAKhW,EAAI,OAAO,EAAE,QAAQ8V,CAAM,EACrD,IAAIG,EAAU,QAAUH,EAKxB,GAJA1f,EAAS4J,EAAI,QAAQiW,CAAO,EACxB7f,EACA4f,EAAc,OAAO,KAAKhW,EAAI,OAAO,EAAE,QAAQiW,CAAO,EACnD7f,EAAS4J,EAAI,QAAQ8V,CAAM,EAC9B,OAAO1f,GAAU,WAAY,CAC7B,IAAIyV,EAAO,mBAAmBzV,CAAM,EAChCyV,EACAzV,EAASyV,GAETzV,EAAS,YAAYA,EAAQA,EAAO,GAAG,EACvC,QAAQ2f,IAAgB,IAAM,CAAC,EAAIC,EAE3C,CACA,OAAO5f,CACX,CACA,WAAW,IAAM,OAEjB,SAAS,yBAAyB8f,EAAe3b,EAAM0B,EAAMka,EAAUC,EAAU,CAC7EF,KAAmB,EACnB3b,KAAU,EACV0B,KAAU,CACd,CACA,yBAAyB,IAAM,WAC/B,IAAI,sBAAwB,IAAM,CAE9B,QADIoa,EAAQ,IAAI,MAAM,GAAG,EAChBtf,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACvBsf,EAAMtf,CAAC,EAAI,OAAO,aAAaA,CAAC,EAEpC,iBAAmBsf,CACvB,EACI,iBACA,iBAAmBza,GAAO,CAG1B,QAFI7G,EAAM,GACN8N,EAAIjH,EACD,OAAOiH,IAAM,CAAC,GACjB9N,GAAO,iBAAiB,OAAO8N,MAAQ,CAAC,CAAC,EAE7C,OAAO9N,CACX,EACI,qBAAuB,CAAC,EACxB,gBAAkB,CAAC,EACnB,iBAAmB,CAAC,EACpB,aACA,kBAAoBuF,GAAW,CAC/B,MAAM,IAAI,aAAaA,CAAO,CAClC,EACI,cACA,mBAAqBA,GAAW,CAChC,MAAM,IAAI,cAAcA,CAAO,CACnC,EACI,8BAAgC,CAACgc,EAASC,EAAgBC,IAAsB,CAChFF,EAAQ,QAAQza,GAAQ,iBAAiBA,CAAI,EAAI0a,CAAc,EAE/D,SAASE,EAAWC,EAAgB,CAChC,IAAIC,EAAmBH,EAAkBE,CAAc,EACnDC,EAAiB,SAAWL,EAAQ,QACpC,mBAAmB,iCAAiC,EAExD,QAASvf,EAAI,EAAGA,EAAIuf,EAAQ,OAAQ,EAAEvf,EAClC,aAAauf,EAAQvf,CAAC,EAAG4f,EAAiB5f,CAAC,CAAC,CAEpD,CACA,IAAI2f,EAAiB,IAAI,MAAMH,EAAe,MAAM,EAChDK,EAAoB,CAAC,EACrBC,EAAa,EACjBN,EAAe,QAAQ,CAACO,EAAI/f,IAAM,CAC1B,gBAAgB,eAAe+f,CAAE,EACjCJ,EAAe3f,CAAC,EAAI,gBAAgB+f,CAAE,GAEtCF,EAAkB,KAAKE,CAAE,EACpB,qBAAqB,eAAeA,CAAE,IACvC,qBAAqBA,CAAE,EAAI,CAAC,GAEhC,qBAAqBA,CAAE,EAAE,KAAK,IAAM,CAChCJ,EAAe3f,CAAC,EAAI,gBAAgB+f,CAAE,EACtC,EAAED,EACEA,IAAeD,EAAkB,QACjCH,EAAWC,CAAc,CAEjC,CAAC,EAET,CAAC,EACSE,EAAkB,SAAxB,GACAH,EAAWC,CAAc,CAEjC,EAEA,SAAS,mBAAmBK,EAASC,EAAoBC,EAAU,CAAC,EAAG,CACnE,IAAI1c,EAAOyc,EAAmB,KAI9B,GAHKD,GACD,kBAAkB,SAAS,OAAAxc,EAAI,gDAA+C,EAE9E,gBAAgB,eAAewc,CAAO,EAAG,CACzC,GAAIE,EAAQ,6BACR,OAEA,kBAAkB,yBAAyB,OAAA1c,EAAI,UAAS,CAEhE,CAGA,GAFA,gBAAgBwc,CAAO,EAAIC,EAC3B,OAAO,iBAAiBD,CAAO,EAC3B,qBAAqB,eAAeA,CAAO,EAAG,CAC9C,IAAI5d,EAAY,qBAAqB4d,CAAO,EAC5C,OAAO,qBAAqBA,CAAO,EACnC5d,EAAU,QAAQ1D,GAAMA,EAAG,CAAC,CAChC,CACJ,CAEA,SAAS,aAAashB,EAASC,EAAoBC,EAAU,CAAC,EAAG,CAC7D,OAAO,mBAAmBF,EAASC,EAAoBC,CAAO,CAClE,CACA,IAAI,oBAAsB,EAE1B,SAAS,uBAAuBF,EAASxc,EAAM2c,EAAWC,EAAY,CAClEJ,KAAa,EACbxc,KAAU,EACVA,EAAO,iBAAiBA,CAAI,EAC5B,aAAawc,EAAS,CAClB,KAAAxc,EACA,aAAc,SAAS6c,EAAI,CACvB,MAAO,CAAC,CAACA,CACb,EACA,WAAY,SAASC,EAAa,EAAG,CACjC,OAAO,EAAIH,EAAYC,CAC3B,EACA,eAAgB,oBAChB,qBAAsB,SAASG,EAAS,CACpC,OAAO,KAAK,aAAgB,OAAOA,IAAY,CAAC,CAAC,CACrD,EACA,mBAAoB,IACxB,CAAC,CACL,CACA,uBAAuB,IAAM,QAC7B,IAAI,eAAiB,CAAC,EAClB,cAAgB,CAAC,EAErB,SAAS,eAAexb,EAAQ,CAC5BA,KAAY,EACRA,EAAS,GAAW,EAAE,cAAcA,EAAS,CAAC,IAAhC,IACd,cAAcA,CAAM,EAAI,OACxB,eAAe,KAAKA,CAAM,EAElC,CACA,eAAe,IAAM,KACrB,IAAI,oBAAsB,IAAM,cAAc,OAAS,EAAI,EAAI,eAAe,OAC1E,WAAa,IAAM,CACnB,cAAc,KAAK,EAAG,EAAG,OAAW,EAAG,KAAM,EAAG,GAAM,EAAG,GAAO,CAAC,EACjE,OAAO,oBAAyB,mBACpC,EACI,MAAQ,CACR,QAASA,IACAA,GACD,kBAAkB,oCAAsCA,CAAM,EAE3D,cAAcA,CAAM,GAE/B,SAAUqB,GAAS,CACf,OAAQA,EAAO,CACX,KAAK,OACD,MAAO,GACX,KAAK,KACD,MAAO,GACX,IAAK,GACD,MAAO,GACX,IAAK,GACD,MAAO,GACX,QAAS,CACL,IAAMrB,EAAS,eAAe,IAAI,GAAK,cAAc,OACrD,qBAAcA,CAAM,EAAIqB,EACxB,cAAcrB,EAAS,CAAC,EAAI,EACrBA,CACX,CACJ,CACJ,CACJ,EAEA,SAAS,YAAYwb,EAAS,CAC1B,OAAO,KAAK,aAAgB,QAAQA,IAAY,IAAM,CAAC,CAAC,CAC5D,CACA,IAAI,UAAY,CACZ,KAAM,kBACN,aAAcxb,GAAU,CACpB,IAAIyb,EAAK,MAAM,QAAQzb,CAAM,EAC7B,sBAAeA,CAAM,EACdyb,CACX,EACA,WAAY,CAACF,EAAala,IAAU,MAAM,SAASA,CAAK,EACxD,eAAgB,oBAChB,qBAAsB,YACtB,mBAAoB,IACxB,EAEA,SAAS,wBAAwB4Z,EAAS,CACtC,OAAAA,KAAa,EACN,aAAaA,EAAS,SAAS,CAC1C,CACA,wBAAwB,IAAM,KAC9B,IAAI,WAAaS,GAAK,CAClB,GAAIA,IAAM,KACN,MAAO,OAEX,IAAIC,EAAI,OAAOD,EACf,OAAIC,IAAM,UAAYA,IAAM,SAAWA,IAAM,WAClCD,EAAE,SAAS,EAEX,GAAKA,CAEpB,EACI,0BAA4B,CAACjd,EAAMmd,IAAU,CAC7C,OAAQA,EAAO,CACX,IAAK,GACD,OAAO,SAASJ,EAAS,CACrB,OAAO,KAAK,aAAgB,QAAQA,IAAY,IAAM,CAAC,CAAC,CAC5D,EACJ,IAAK,GACD,OAAO,SAASA,EAAS,CACrB,OAAO,KAAK,aAAgB,QAAQA,IAAY,IAAM,CAAC,CAAC,CAC5D,EACJ,QACI,MAAM,IAAI,UAAU,wBAAwB,OAAAI,EAAK,OAAM,OAAAnd,EAAM,CACrE,CACJ,EACI,wBAA0B,SAASwc,EAASxc,EAAM0B,EAAM,CACxD8a,KAAa,EACbxc,KAAU,EACV0B,KAAU,EACV1B,EAAO,iBAAiBA,CAAI,EAC5B,aAAawc,EAAS,CAClB,KAAAxc,EACA,aAAc4C,GAASA,EACvB,WAAY,CAACka,EAAala,IAAUA,EACpC,eAAgB,oBAChB,qBAAsB,0BAA0B5C,EAAM0B,CAAI,EAC1D,mBAAoB,IACxB,CAAC,CACL,EACA,wBAAwB,IAAM,OAC9B,IAAI,4BAA8B,CAAC1B,EAAMmd,EAAOC,IAAW,CACvD,OAAQD,EAAO,CACX,IAAK,GACD,OAAOC,EAASL,GAAW,MAAMA,IAAY,CAAC,EAAIA,GAAW,OAAOA,IAAY,CAAC,EACrF,IAAK,GACD,OAAOK,EAASL,GAAW,OAAOA,IAAY,IAAM,CAAC,EAAIA,GAAW,QAAQA,IAAY,IAAM,CAAC,EACnG,IAAK,GACD,OAAOK,EAASL,GAAW,OAAOA,IAAY,IAAM,CAAC,EAAIA,GAAW,QAAQA,IAAY,IAAM,CAAC,EACnG,QACI,MAAM,IAAI,UAAU,0BAA0B,OAAAI,EAAK,OAAM,OAAAnd,EAAM,CACvE,CACJ,EAEA,SAAS,0BAA0B2b,EAAe3b,EAAM0B,EAAMka,EAAUC,EAAU,CAC9EF,KAAmB,EACnB3b,KAAU,EACV0B,KAAU,EACV1B,EAAO,iBAAiBA,CAAI,EACxB6b,IAAa,KACbA,EAAW,YAEf,IAAIwB,EAAeza,GAASA,EAC5B,GAAIgZ,IAAa,EAAG,CAChB,IAAI0B,EAAW,GAAK,EAAI5b,EACxB2b,EAAeza,GAASA,GAAS0a,IAAaA,CAClD,CACA,IAAIC,EAAiBvd,EAAK,SAAS,UAAU,EACzCwd,EAAkB,CAAC5a,EAAO6a,IAAe,CAAC,EAC1CC,EACAH,EACAG,EAAa,SAASZ,EAAala,EAAO,CACtC,OAAA4a,EAAgB5a,EAAO,KAAK,IAAI,EACzBA,IAAU,CACrB,EAEA8a,EAAa,SAASZ,EAAala,EAAO,CACtC,OAAA4a,EAAgB5a,EAAO,KAAK,IAAI,EACzBA,CACX,EAEJ,aAAa+Y,EAAe,CACxB,KAAA3b,EACA,aAAAqd,EACA,WAAAK,EACA,eAAgB,oBAChB,qBAAsB,4BAA4B1d,EAAM0B,EAAMka,IAAa,CAAC,EAC5E,mBAAoB,IACxB,CAAC,CACL,CACA,0BAA0B,IAAM,SAEhC,SAAS,8BAA8BY,EAASmB,EAAe3d,EAAM,CACjEwc,KAAa,EACbxc,KAAU,EACV,IAAI4d,EAAc,CAAC,UAAW,WAAY,WAAY,YAAa,WAAY,YAAa,aAAc,YAAY,EAClHC,EAAKD,EAAYD,CAAa,EAElC,SAASG,EAAiBvc,EAAQ,CAC9B,IAAIG,EAAO,QAAQH,IAAW,IAAM,CAAC,EACjC5G,EAAO,QAAQ4G,EAAS,IAAM,IAAM,CAAC,EACzC,OAAO,IAAIsc,EAAG,MAAM,OAAQljB,EAAM+G,CAAI,CAC1C,CACA1B,EAAO,iBAAiBA,CAAI,EAC5B,aAAawc,EAAS,CAClB,KAAAxc,EACA,aAAc8d,EACd,eAAgB,oBAChB,qBAAsBA,CAC1B,EAAG,CACC,6BAA8B,EAClC,CAAC,CACL,CACA,8BAA8B,IAAM,OAEpC,SAAS,6BAA6BtB,EAASxc,EAAM,CACjDwc,KAAa,EACbxc,KAAU,EACVA,EAAO,iBAAiBA,CAAI,EAC5B,IAAI+d,EAAkB/d,IAAS,cAC/B,aAAawc,EAAS,CAClB,KAAAxc,EACA,aAAa4C,EAAO,CAChB,IAAIuF,EAAS,QAAQvF,IAAU,IAAM,CAAC,EAClCob,EAAUpb,EAAQ,EAClB1D,EACJ,GAAI6e,EAEA,QADIE,EAAiBD,EACZxhB,EAAI,EAAGA,GAAK2L,EAAQ,EAAE3L,EAAG,CAC9B,IAAI0hB,EAAiBF,EAAUxhB,EAC/B,GAAIA,GAAK2L,GAAU,OAAO+V,IAAmB,CAAC,GAAK,EAAG,CAClD,IAAIC,EAAUD,EAAiBD,EAC3BG,EAAgB,aAAaH,EAAgBE,CAAO,EACpDjf,IAAQ,OACRA,EAAMkf,GAENlf,GAAO,KACPA,GAAOkf,GAEXH,EAAiBC,EAAiB,CACtC,CACJ,KACG,CAEH,QADIG,EAAI,IAAI,MAAMlW,CAAM,EACf3L,EAAI,EAAGA,EAAI2L,EAAQ,EAAE3L,EAC1B6hB,EAAE7hB,CAAC,EAAI,OAAO,aAAa,OAAOwhB,EAAUxhB,IAAM,CAAC,CAAC,EAExD0C,EAAMmf,EAAE,KAAK,EAAE,CACnB,CACA,aAAMzb,CAAK,EACJ1D,CACX,EACA,WAAW4d,EAAala,EAAO,CACvBA,aAAiB,cACjBA,EAAQ,IAAI,WAAWA,CAAK,GAEhC,IAAIuF,EACAmW,EAAsB,OAAO1b,GAAS,SACpC0b,GAAuB1b,aAAiB,YAAcA,aAAiB,mBAAqBA,aAAiB,WAC/G,kBAAkB,uCAAuC,EAEzDmb,GAAmBO,EACnBnW,EAAS,gBAAgBvF,CAAK,EAE9BuF,EAASvF,EAAM,OAEnB,IAAI2b,EAAO,QAAQ,EAAIpW,EAAS,CAAC,EAC7B9G,EAAMkd,EAAO,EAEjB,GADA,QAAQA,IAAS,IAAM,CAAC,EAAIpW,EACxB4V,GAAmBO,EACnB,aAAa1b,EAAOvB,EAAK8G,EAAS,CAAC,UAE/BmW,EACA,QAAS9hB,EAAI,EAAGA,EAAI2L,EAAQ,EAAE3L,EAAG,CAC7B,IAAIgiB,EAAW5b,EAAM,WAAWpG,CAAC,EAC7BgiB,EAAW,MACX,MAAMnd,CAAG,EACT,kBAAkB,wDAAwD,GAE9E,OAAOA,EAAM7E,IAAM,CAAC,EAAIgiB,CAC5B,KAEA,SAAShiB,EAAI,EAAGA,EAAI2L,EAAQ,EAAE3L,EAC1B,OAAO6E,EAAM7E,IAAM,CAAC,EAAIoG,EAAMpG,CAAC,EAI3C,OAAIsgB,IAAgB,MAChBA,EAAY,KAAK,MAAOyB,CAAI,EAEzBA,CACX,EACA,eAAgB,oBAChB,qBAAsB,YACtB,mBAAmBld,EAAK,CACpB,MAAMA,CAAG,CACb,CACJ,CAAC,CACL,CACA,6BAA6B,IAAM,MACnC,IAAI,aAAe,OAAO,YAAe,IAAc,IAAI,YAAY,UAAU,EAAI,OACjF,cAAgB,CAACA,EAAKtC,IAAmB,CAIzC,QAHIE,EAASoC,EACTvC,EAAMG,GAAU,EAChBwf,EAAS3f,EAAMC,EAAiB,EAC7B,EAAED,GAAO2f,IAAW,QAAQ3f,IAAQ,CAAC,GAAG,EAAEA,EAEjD,GADAG,EAASH,GAAO,EACZG,EAASoC,EAAM,IAAM,aAAc,OAAO,aAAa,OAAO,OAAO,SAASA,IAAQ,EAAGpC,IAAW,CAAC,CAAC,EAE1G,QADIC,EAAM,GACD1C,EAAI,EAAG,EAAEA,GAAKuC,EAAiB,GAAI,EAAEvC,EAAG,CAC7C,IAAIkiB,EAAW,OAAOrd,EAAM7E,EAAI,IAAM,IAAM,CAAC,EAC7C,GAAIkiB,GAAY,EAAG,MACnBxf,GAAO,OAAO,aAAawf,CAAQ,CACvC,CACA,OAAOxf,CACX,EACI,cAAgB,CAACA,EAAKkY,EAAQ3O,IAAoB,CAElD,GADAA,GAAA,OAAAA,EAAoB,YAChBA,EAAkB,EAAG,MAAO,GAChCA,GAAmB,EAGnB,QAFIkW,EAAWvH,EACXwH,EAAkBnW,EAAkBvJ,EAAI,OAAS,EAAIuJ,EAAkB,EAAIvJ,EAAI,OAC1E1C,EAAI,EAAGA,EAAIoiB,EAAiB,EAAEpiB,EAAG,CACtC,IAAIkiB,EAAWxf,EAAI,WAAW1C,CAAC,EAC/B,OAAO4a,IAAW,IAAM,CAAC,EAAIsH,EAC7BtH,GAAU,CACd,CACA,cAAOA,IAAW,IAAM,CAAC,EAAI,EACtBA,EAASuH,CACpB,EACI,iBAAmBzf,GAAOA,EAAI,OAAS,EACvC,cAAgB,CAACmC,EAAKtC,IAAmB,CAGzC,QAFIvC,EAAI,EACJ0C,EAAM,GACH,EAAE1C,GAAKuC,EAAiB,IAAI,CAC/B,IAAI8f,EAAQ,OAAOxd,EAAM7E,EAAI,IAAM,IAAM,CAAC,EAC1C,GAAIqiB,GAAS,EAAG,MAEhB,GADA,EAAEriB,EACEqiB,GAAS,MAAO,CAChB,IAAIvf,EAAKuf,EAAQ,MACjB3f,GAAO,OAAO,aAAa,MAAQI,GAAM,GAAI,MAAQA,EAAK,IAAI,CAClE,MACIJ,GAAO,OAAO,aAAa2f,CAAK,CAExC,CACA,OAAO3f,CACX,EACI,cAAgB,CAACA,EAAKkY,EAAQ3O,IAAoB,CAGlD,GAFA2O,KAAY,EACZ3O,GAAA,OAAAA,EAAoB,YAChBA,EAAkB,EAAG,MAAO,GAGhC,QAFIkW,EAAWvH,EACXnY,EAAS0f,EAAWlW,EAAkB,EACjCjM,EAAI,EAAGA,EAAI0C,EAAI,OAAQ,EAAE1C,EAAG,CACjC,IAAIkiB,EAAWxf,EAAI,WAAW1C,CAAC,EAC/B,GAAIkiB,GAAY,OAASA,GAAY,MAAO,CACxC,IAAII,EAAiB5f,EAAI,WAAW,EAAE1C,CAAC,EACvCkiB,EAAW,QAAUA,EAAW,OAAS,IAAMI,EAAiB,IACpE,CAGA,GAFA,OAAO1H,IAAW,IAAM,CAAC,EAAIsH,EAC7BtH,GAAU,EACNA,EAAS,EAAInY,EAAQ,KAC7B,CACA,cAAOmY,IAAW,IAAM,CAAC,EAAI,EACtBA,EAASuH,CACpB,EACI,iBAAmBzf,GAAO,CAE1B,QADIzC,EAAM,EACDD,EAAI,EAAGA,EAAI0C,EAAI,OAAQ,EAAE1C,EAAG,CACjC,IAAIkiB,EAAWxf,EAAI,WAAW1C,CAAC,EAC3BkiB,GAAY,OAASA,GAAY,OAAO,EAAEliB,EAC9CC,GAAO,CACX,CACA,OAAOA,CACX,EACI,8BAAgC,SAAS+f,EAASuC,EAAU/e,EAAM,CAClEwc,KAAa,EACbuC,KAAc,EACd/e,KAAU,EACVA,EAAO,iBAAiBA,CAAI,EAC5B,IAAIgf,EAAcC,EAAcC,EAAYC,EACxCJ,IAAa,GACbC,EAAe,cACfC,EAAe,cACfE,EAAiB,iBACjBD,EAAanC,GAAW,QAAQA,IAAY,IAAM,CAAC,GAC5CgC,IAAa,IACpBC,EAAe,cACfC,EAAe,cACfE,EAAiB,iBACjBD,EAAanC,GAAW,QAAQA,IAAY,IAAM,CAAC,GAEvD,aAAaP,EAAS,CAClB,KAAAxc,EACA,aAAc4C,GAAS,CAInB,QAHIuF,EAAS,QAAQvF,IAAU,IAAM,CAAC,EAClC1D,EACA+e,EAAiBrb,EAAQ,EACpBpG,EAAI,EAAGA,GAAK2L,EAAQ,EAAE3L,EAAG,CAC9B,IAAI0hB,EAAiBtb,EAAQ,EAAIpG,EAAIuiB,EACrC,GAAIviB,GAAK2L,GAAU+W,EAAWhB,CAAc,GAAK,EAAG,CAChD,IAAIkB,EAAelB,EAAiBD,EAChCG,EAAgBY,EAAaf,EAAgBmB,CAAY,EACzDlgB,IAAQ,OACRA,EAAMkf,GAENlf,GAAO,KACPA,GAAOkf,GAEXH,EAAiBC,EAAiBa,CACtC,CACJ,CACA,aAAMnc,CAAK,EACJ1D,CACX,EACA,WAAY,CAAC4d,EAAala,IAAU,CAC1B,OAAOA,GAAS,UAClB,kBAAkB,6CAA6C,OAAA5C,EAAM,EAEzE,IAAImI,EAASgX,EAAevc,CAAK,EAC7BvB,EAAM,QAAQ,EAAI8G,EAAS4W,CAAQ,EACvC,eAAQ1d,IAAQ,IAAM,CAAC,EAAI8G,EAAS4W,EACpCE,EAAarc,EAAOvB,EAAM,EAAG8G,EAAS4W,CAAQ,EAC1CjC,IAAgB,MAChBA,EAAY,KAAK,MAAOzb,CAAG,EAExBA,CACX,EACA,eAAgB,oBAChB,qBAAsB,YACtB,mBAAmBA,EAAK,CACpB,MAAMA,CAAG,CACb,CACJ,CAAC,CACL,EACA,8BAA8B,IAAM,OACpC,IAAI,uBAAyB,SAASmb,EAASxc,EAAM,CACjDwc,KAAa,EACbxc,KAAU,EACVA,EAAO,iBAAiBA,CAAI,EAC5B,aAAawc,EAAS,CAClB,OAAQ,GACR,KAAAxc,EACA,eAAgB,EAChB,aAAc,IAAG,GACjB,WAAY,CAAC8c,EAAauC,IAAG,EACjC,CAAC,CACL,EACA,uBAAuB,IAAM,MAC7B,IAAI,gBAAkB,GAAK,CACvB,GAAI,aAAa,YAAc,GAAK,SAChC,OAAO,WAEX,MAAM,EAAG,CAAC,CACd,EACI,wBAA0B,EAC1B,iBAAmB,IAAM,eAAiB,wBAA0B,EACpE,WAAatP,GAAQ,CAz9MrC,IAAA9V,EA09MgB,WAAa8V,EACR,iBAAiB,KAClB9V,EAAA,OAAO,SAAP,MAAAA,EAAA,YAAmB8V,GACnB,MAAQ,IAEZ,MAAMA,EAAM,IAAI,WAAWA,CAAI,CAAC,CACpC,EACA,WAAW,IAAM,KACjB,IAAI,OAAS,CAAC3V,EAAQklB,IAAa,CAC/B,WAAallB,EACb,WAAWA,CAAM,CACrB,EACI,MAAQ,OACZ,MAAM,IAAM,KACZ,IAAI,UAAY,IAAM,CAClB,GAAI,CAAC,iBAAiB,EAClB,GAAI,CACA,MAAM,UAAU,CACpB,OAAS,EAAG,CACR,gBAAgB,CAAC,CACrB,CAER,EACI,iBAAmB+H,GAAQ,CAC3B,GAAI,OAGJ,GAAI,CACAA,EAAK,EACL,UAAU,CACd,OAAS7G,EAAG,CACR,gBAAgBA,CAAC,CACrB,CACJ,EAEA,SAAS,uBAAuBiG,EAAQge,EAAW7a,EAAS8a,EAAW,CACnEje,KAAY,EACZge,KAAe,EACf7a,KAAa,EACb8a,KAAe,EAEf,SAASC,EAAcnkB,EAAG,CACtB,IAAIf,EAAW,aAAagH,EAAS,EAAE,EACvC,WAAW,gCAAgC,OAAAhH,EAAQ,MAAK,OAAAe,EAAG,EAC3D,iBAAiB,IAAM,kBAAkBoJ,CAAO,EAAEnD,EAAQie,CAAS,CAAC,CACxE,CAEA,SAASE,GAAkB,CACvB,iBAAiB,IAAM,kBAAkBH,CAAS,EAAEhe,EAAQie,CAAS,CAAC,CAC1E,CACA,IAAIG,EAAU,eAAepe,EAAQ,CACjC,UAAW,EACf,CAAC,EACGoe,EACAA,EAAQ,KAAKD,EAAiBD,CAAa,EAE3CA,EAAc,CAEtB,CACA,uBAAuB,IAAM,QAC7B,IAAI,eAAiB,EACjB,kCAAoC,IAAM,eAC9C,kCAAkC,IAAM,IACxC,IAAI,kBAAoB,IAAM,aAAe,iBAE7C,SAAS,0BAA0BvgB,EAAKzC,EAAK,CACzCyC,KAAS,EACT,aAAa,kBAAkB,EAAGA,EAAKzC,CAAG,CAC9C,CACA,0BAA0B,IAAM,MAEhC,SAAS,yBAAyBuD,EAAM,CACpCA,KAAU,EACV,IAAI4f,EAAa,aAAa5f,CAAI,EAClC,OAAO,UAAU,IAAI,YAAY4f,CAAU,CAAC,CAChD,CACA,yBAAyB,IAAM,KAE/B,SAAS,uBAAuBrL,EAAMsL,EAAKzF,EAAK,CAC5C,OAAA7F,KAAU,EACVsL,KAAS,EACTzF,KAAS,EACF,OAAO,WAAW7F,IAAS,EAAGsL,IAAQ,EAAGA,EAAMzF,IAAQ,CAAC,CACnE,CACA,uBAAuB,IAAM,OAC7B,IAAI,qCAAuC,IAAM,CAC7C,cAAgB,GAChB,wBAA0B,CAC9B,EACA,qCAAqC,IAAM,IAE3C,SAAS,sCAAsCvY,EAAQsb,EAAO2C,EAAQ,CAClE,OAAAje,KAAY,EACL,EACX,CACA,sCAAsC,IAAM,OAE5C,SAAS,oBAAoBke,EAAS,CAElC,GADAA,KAAa,EACT,oBAAqB,CACrB,GAAI,CAACA,EAAS,MAAO,GACrB,IAAIC,EAAS,aAAaD,CAAO,EACjC,GAAI,CAACC,EAAO,OAAQ,MAAO,GAC3B,IAAIC,EAAK,CAAC,eAAe,EAAE,IAAIC,CAAO,EAClC1lB,EAAMylB,EAAG,UAAUD,EAAQ,CAAC,EAAG,CAC/B,MAAO,GACP,MAAO,SACX,CAAC,EACGG,EAAc,CAAC3lB,EAAKsH,IAAQtH,GAAO,EAAIsH,EAC3C,GAAItH,EAAI,SAAW,KAAM,CACrB,IAAI4lB,EAAiBte,GAAO,CACxB,OAAQA,EAAK,CACT,IAAK,SACD,MAAO,GACX,IAAK,UACD,MAAO,GACX,IAAK,SACD,MAAO,GACX,IAAK,UACD,MAAO,GACX,IAAK,UACD,MAAO,IACX,IAAK,UACD,MAAO,IACX,QACI,MAAO,EACf,CACJ,EACA,OAAOqe,EAAY,EAAGC,EAAe5lB,EAAI,MAAM,CAAC,CACpD,CACA,OAAO2lB,EAAY3lB,EAAI,OAAQ,CAAC,CACpC,CACA,OAAKulB,EACE,IADc,CAEzB,CACA,oBAAoB,IAAM,KAC1B,IAAI,2BAA6B,IAAM,CACnC,KAAM,IACV,EACA,2BAA2B,IAAM,IACjC,IAAI,cAAgB,CAAC,EACjB,kBAAoBpW,GAAW,CAC/B,IAAI4R,EAAS,cAAc5R,CAAO,EAClC,OAAI4R,IAAW,OACJ,iBAAiB5R,CAAO,EAE5B4R,CACX,EACI,oBAAsB,CAAC,EAE3B,SAAS,oBAAoB8E,EAAQC,EAAWC,EAAYC,EAAgB3c,EAAM,CAC9E,OAAAwc,KAAY,EACZC,KAAe,EACfC,KAAgB,EAChBC,KAAoB,EACpB3c,KAAU,EACVwc,EAAS,oBAAoBA,CAAM,EACnCC,EAAY,MAAM,QAAQA,CAAS,EACnCC,EAAa,kBAAkBA,CAAU,EAClCF,EAAOC,EAAWA,EAAUC,CAAU,EAAGC,EAAgB3c,CAAI,CACxE,CACA,oBAAoB,IAAM,SAC1B,IAAI,iBAAmB,IACf,OAAO,YAAc,SACd,WAEJ,UAAW,CACd,OAAO,QACX,EAAE,EAAE,aAAa,EAAE,EAGvB,SAAS,mBAAmB7D,EAAM,CAE9B,OADAA,KAAU,EACNA,IAAS,EACF,MAAM,SAAS,iBAAiB,CAAC,GAExCA,EAAO,kBAAkBA,CAAI,EACtB,MAAM,SAAS,iBAAiB,EAAEA,CAAI,CAAC,EAEtD,CACA,mBAAmB,IAAM,KACzB,IAAI,sBAAwBqgB,GAAU,CAClC,IAAIllB,EAAK,oBAAoB,OAC7B,2BAAoB,KAAKklB,CAAM,EACxBllB,CACX,EACI,YAAcmG,GAAQ,CACtB,IAAID,EAAM,eAAeC,CAAI,EACzB0b,EAAK,iBAAiB3b,CAAG,EAC7B,aAAMA,CAAG,EACF2b,CACX,EACI,sBAAwB,CAACR,EAASiE,IAAc,CAChD,IAAIC,EAAO,gBAAgBlE,CAAO,EAClC,OAAkBkE,IAAd,QACA,kBAAkB,GAAG,OAAAD,EAAS,sBAAqB,mBAAYjE,CAAO,EAAG,EAEtEkE,CACX,EACI,kBAAoB,CAACC,EAAUC,IAAa,CAE5C,QADIvC,EAAI,IAAI,MAAMsC,CAAQ,EACjBnkB,EAAI,EAAGA,EAAImkB,EAAU,EAAEnkB,EAC5B6hB,EAAE7hB,CAAC,EAAI,sBAAsB,QAAQokB,EAAWpkB,EAAI,IAAM,IAAM,CAAC,EAAG,aAAeA,CAAC,EAExF,OAAO6hB,CACX,EACI,oBAAsB,CAACre,EAAM6gB,IAAS,OAAO,eAAeA,EAAM,OAAQ,CAC1E,MAAO7gB,CACX,CAAC,EACG,iBAAmB,QAAQ,UAC3B,kBAAoB,CAAC8gB,EAAYN,EAAgBjf,IAAW,CAC5D,IAAIub,EAAc,CAAC,EACfjhB,EAASilB,EAAW,WAAchE,EAAavb,CAAM,EACzD,OAAIub,EAAY,SACZ,QAAQ0D,IAAmB,IAAM,CAAC,EAAI,MAAM,SAAS1D,CAAW,GAE7DjhB,CACX,EAEA,SAAS,QAAQklB,EAAaC,EAAc,CACxC,GAAI,EAAED,aAAuB,UACzB,MAAM,IAAI,UAAU,qCAAqC,cAAOA,EAAW,2BAA0B,EAEzG,IAAIE,EAAQ,oBAAoBF,EAAY,MAAQ,sBAAuB,UAAW,CAAC,CAAC,EACxFE,EAAM,UAAYF,EAAY,UAC9B,IAAItiB,EAAM,IAAIwiB,EACVC,EAAIH,EAAY,MAAMtiB,EAAKuiB,CAAY,EAC3C,OAAOE,aAAa,OAASA,EAAIziB,CACrC,CAEA,SAAS,0BAA0BkiB,EAAUC,EAAUO,EAAM,CACzDP,KAAc,EACd,IAAIQ,EAAQ,kBAAkBT,EAAUC,CAAQ,EAC5CS,EAAUD,EAAM,MAAM,EAC1BT,IACA,IAAIW,EAAe,wDACf/hB,EAAS,EACTgiB,EAAW,CAAC,EACZJ,IAAS,GACTI,EAAS,KAAK,KAAK,EAIvB,QAFIC,EAAS,CAAC,SAAS,EACnB3d,EAAO,CAACwd,CAAO,EACV7kB,EAAI,EAAGA,EAAImkB,EAAU,EAAEnkB,EAC5B+kB,EAAS,KAAK,MAAQ/kB,CAAC,EACvBglB,EAAO,KAAK,UAAYhlB,CAAC,EACzBqH,EAAK,KAAKud,EAAM5kB,CAAC,CAAC,EAClB8kB,GAAgB,YAAY,OAAA9kB,EAAC,cAAa,OAAAA,EAAC,8BAA6B,OAAA+C,EAAO,IAAIA,EAAO,GAAE,QAC5FA,GAAU6hB,EAAM5kB,CAAC,EAAE,eAEvB,IAAIilB,EAAUN,IAAS,EAAI,WAAa,YACxCG,GAAgB,cAAc,OAAAG,EAAO,KAAI,OAAAF,EAAS,KAAK,IAAI,EAAC,QACvDF,EAAQ,SACTG,EAAO,KAAK,mBAAmB,EAC/B3d,EAAK,KAAK,iBAAiB,EAC3Byd,GAAgB,8DAEpBA,GAAgB,OAChBE,EAAO,KAAKF,CAAY,EACxB,IAAII,EAAkB,QAAQ,SAAUF,CAAM,EAAE,GAAG3d,CAAI,EACnD8d,EAAe,iBAAiB,OAAAP,EAAM,IAAIlE,GAAGA,EAAE,IAAI,EAAE,KAAK,IAAI,EAAC,SAAQ,OAAAmE,EAAQ,KAAI,KACvF,OAAO,sBAAsB,oBAAoBM,EAAcD,CAAe,CAAC,CACnF,CACA,0BAA0B,IAAM,OAChC,IAAI,eAAiB5E,GAAe,CAChC,KAAOA,EAAY,QAAQ,CACvB,IAAIzb,EAAMyb,EAAY,IAAI,EACtB8E,EAAM9E,EAAY,IAAI,EAC1B8E,EAAIvgB,CAAG,CACX,CACJ,EAEA,SAAS,wBAAwBE,EAAQ,CACrCA,KAAY,EACZ,IAAIub,EAAc,MAAM,QAAQvb,CAAM,EACtC,eAAeub,CAAW,EAC1B,eAAevb,CAAM,CACzB,CACA,wBAAwB,IAAM,KAE9B,SAAS,YAAYsgB,EAAUC,EAAWC,EAAO,CAC7C,IAAIC,EAAO,2BAA2BH,EAAUC,CAAS,EACzDC,KAAW,EACX,IAAIE,EAAO,IAAI,KAAKD,EAAO,GAAG,EAC9B,OAAOD,IAAU,IAAM,CAAC,EAAIE,EAAK,cAAc,EAC/C,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,cAAc,EACnD,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,YAAY,EACjD,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,WAAW,EACjD,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,YAAY,EAClD,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,eAAe,EAAI,KACzD,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,UAAU,EAChD,IAAIja,EAAQ,KAAK,IAAIia,EAAK,eAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACxDC,GAAQD,EAAK,QAAQ,EAAIja,IAAU,IAAM,GAAK,GAAK,IAAM,EAC7D,OAAO+Z,EAAQ,KAAO,IAAM,CAAC,EAAIG,CACrC,CACA,YAAY,IAAM,OAClB,IAAI,WAAaC,GAAQA,EAAO,IAAM,IAAMA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,GAC3E,2BAA6B,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACnF,8BAAgC,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACtF,aAAeF,GAAQ,CACvB,IAAIG,EAAO,WAAWH,EAAK,YAAY,CAAC,EACpCI,EAAsBD,EAAO,2BAA6B,8BAC1DF,EAAOG,EAAoBJ,EAAK,SAAS,CAAC,EAAIA,EAAK,QAAQ,EAAI,EACnE,OAAOC,CACX,EAEA,SAAS,eAAeL,EAAUC,EAAWC,EAAO,CAChD,IAAIC,EAAO,2BAA2BH,EAAUC,CAAS,EACzDC,KAAW,EACX,IAAIE,EAAO,IAAI,KAAKD,EAAO,GAAG,EAC9B,OAAOD,IAAU,IAAM,CAAC,EAAIE,EAAK,WAAW,EAC5C,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,WAAW,EAChD,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,SAAS,EAC9C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,QAAQ,EAC9C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,SAAS,EAC/C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,YAAY,EAAI,KACtD,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,OAAO,EAC7C,IAAIC,EAAO,aAAaD,CAAI,EAAI,EAChC,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIG,EACjC,OAAOH,EAAQ,KAAO,IAAM,CAAC,EAAI,EAAEE,EAAK,kBAAkB,EAAI,IAC9D,IAAIja,EAAQ,IAAI,KAAKia,EAAK,YAAY,EAAG,EAAG,CAAC,EACzCK,EAAe,IAAI,KAAKL,EAAK,YAAY,EAAG,EAAG,CAAC,EAAE,kBAAkB,EACpEM,EAAeva,EAAM,kBAAkB,EACvCwa,GAAOF,GAAgBC,GAAgBN,EAAK,kBAAkB,GAAK,KAAK,IAAIM,EAAcD,CAAY,GAAK,EAC/G,OAAOP,EAAQ,KAAO,IAAM,CAAC,EAAIS,CACrC,CACA,eAAe,IAAM,OACrB,IAAI,YAAc,SAAST,EAAO,CAC9BA,KAAW,EACX,IAAIvnB,GAAO,IAAM,CACb,IAAIynB,EAAO,IAAI,KAAK,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAI,KAAM,OAAOA,EAAQ,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAQ,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAQ,IAAM,IAAM,CAAC,EAAG,OAAOA,EAAQ,IAAM,IAAM,CAAC,EAAG,OAAOA,IAAU,IAAM,CAAC,EAAG,CAAC,EACjNS,EAAM,OAAOT,EAAQ,KAAO,IAAM,CAAC,EACnCU,EAAgBR,EAAK,kBAAkB,EACvCja,EAAQ,IAAI,KAAKia,EAAK,YAAY,EAAG,EAAG,CAAC,EACzCK,EAAe,IAAI,KAAKL,EAAK,YAAY,EAAG,EAAG,CAAC,EAAE,kBAAkB,EACpEM,EAAeva,EAAM,kBAAkB,EACvC0a,EAAY,KAAK,IAAIH,EAAcD,CAAY,EACnD,GAAIE,EAAM,EACN,OAAOT,EAAQ,KAAO,IAAM,CAAC,EAAI,EAAOO,GAAgBC,GAAgBG,GAAaD,WAC9ED,EAAM,IAAME,GAAaD,GAAgB,CAChD,IAAIE,EAAe,KAAK,IAAIJ,EAAcD,CAAY,EAClDM,EAAaJ,EAAM,EAAIE,EAAYC,EACvCV,EAAK,QAAQA,EAAK,QAAQ,GAAKW,EAAaH,GAAiB,GAAG,CACpE,CACA,OAAOV,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,OAAO,EAC7C,IAAIC,EAAO,aAAaD,CAAI,EAAI,EAChC,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIG,EACjC,OAAOH,IAAU,IAAM,CAAC,EAAIE,EAAK,WAAW,EAC5C,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,WAAW,EAChD,OAAOF,EAAQ,IAAM,IAAM,CAAC,EAAIE,EAAK,SAAS,EAC9C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,QAAQ,EAC9C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,SAAS,EAC/C,OAAOF,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,QAAQ,EAC9C,IAAIY,EAASZ,EAAK,QAAQ,EAC1B,OAAI,MAAMY,CAAM,EACL,GAEJA,EAAS,GACpB,GAAG,EACH,OAAO,aAAa,WAAaroB,EAAK,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAGA,IAAQ,CAC1N,EACA,YAAY,IAAM,KAElB,SAAS,UAAUiC,EAAKyO,EAAM/J,EAAOgI,EAAIuN,EAAYC,EAAaxL,EAAWmG,EAAM,CAC/E7U,KAAS,EACT,IAAI8C,EAAS,2BAA2BmX,EAAYC,CAAW,EAC/DxL,KAAe,EACfmG,KAAU,EACV,GAAI,CACA,GAAI,MAAM/R,CAAM,EAAG,MAAO,IAC1B,IAAI+J,EAAS,SAAS,gBAAgBH,CAAE,EACpC8L,EAAM,GAAG,KAAK3L,EAAQ7M,EAAK8C,EAAQ2L,EAAM/J,CAAK,EAC9CE,EAAM4T,EAAI,IACd,cAAO9J,IAAc,IAAM,CAAC,EAAI8J,EAAI,UACpC,QAAQ3D,IAAS,IAAM,CAAC,EAAIjQ,EACrB,CACX,OAAS/F,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,UAAU,IAAM,YAEhB,SAAS,WAAWgW,EAAM7U,EAAKyO,EAAM/J,EAAOgI,EAAIuN,EAAYC,EAAa,CACrErF,KAAU,EACV7U,KAAS,EACT,IAAI8C,EAAS,2BAA2BmX,EAAYC,CAAW,EAC/D,GAAI,CACA,OAAI,MAAMpX,CAAM,EAAU,IAC1B,SAAS,QAAQ+R,EAAM,SAAS,gBAAgBnI,CAAE,EAAG1M,EAAK0E,EAAO5B,CAAM,EAChE,EACX,OAASjE,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,WAAW,IAAM,WAEjB,SAAS,YAAYgW,EAAM7U,EAAKyO,EAAM/J,EAAOgI,EAAIuN,EAAYC,EAAa,CACtErF,KAAU,EACV7U,KAAS,EACT,IAAI8C,EAAS,2BAA2BmX,EAAYC,CAAW,EAC/D,GAAI,CACA,IAAIrN,EAAS,SAAS,gBAAgBH,CAAE,EACpC+B,EAAO,GACP,SAAS,QAAQoG,EAAMhI,EAAQ7M,EAAK0E,EAAO5B,CAAM,CAEzD,OAASjE,EAAG,CACR,GAAI,OAAO,GAAM,KAAiBA,EAAE,OAAS,aAAe,MAAMA,EAClE,MAAO,CAACA,EAAE,KACd,CACJ,CACA,YAAY,IAAM,WAClB,IAAI,OAAS,CAAC,EACV,oBAAsB,IAAM,YAAY,IAAI,EAChD,oBAAoB,IAAM,IAC1B,IAAI,eAAiB,CAACwnB,EAAOC,IAAe,CAKxC,GAJI,OAAOD,CAAK,IACZ,aAAa,OAAOA,CAAK,EAAE,EAAE,EAC7B,OAAO,OAAOA,CAAK,GAEnB,CAACC,EAAY,MAAO,GACxB,IAAI5nB,EAAK,WAAW,IAAM,CACtB,OAAO,OAAO2nB,CAAK,EACnB,iBAAiB,IAAM,qBAAqBA,EAAO,oBAAoB,CAAC,CAAC,CAC7E,EAAGC,CAAU,EACb,cAAOD,CAAK,EAAI,CACZ,GAAA3nB,EACA,WAAA4nB,CACJ,EACO,CACX,EACA,eAAe,IAAM,MACrB,IAAI,YAAc,SAAShB,EAAO,CAC9BA,KAAW,EACX,IAAIvnB,GAAO,IAAM,CACb,IAAIwnB,EAAO,KAAK,IAAI,OAAOD,EAAQ,KAAO,IAAM,CAAC,EAAI,KAAM,OAAOA,EAAQ,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAQ,KAAO,IAAM,CAAC,EAAG,OAAOA,EAAQ,IAAM,IAAM,CAAC,EAAG,OAAOA,EAAQ,IAAM,IAAM,CAAC,EAAG,OAAOA,IAAU,IAAM,CAAC,EAAG,CAAC,EACjNE,EAAO,IAAI,KAAKD,CAAI,EACxB,OAAOD,EAAQ,KAAO,IAAM,CAAC,EAAIE,EAAK,UAAU,EAChD,IAAIja,EAAQ,KAAK,IAAIia,EAAK,eAAe,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EACxDC,GAAQD,EAAK,QAAQ,EAAIja,IAAU,IAAM,GAAK,GAAK,IAAM,EAC7D,cAAO+Z,EAAQ,KAAO,IAAM,CAAC,EAAIG,EAC1BD,EAAK,QAAQ,EAAI,GAC5B,GAAG,EACH,OAAO,aAAa,WAAaznB,EAAK,CAAC,KAAK,IAAI,UAAU,GAAK,EAAI,WAAa,EAAI,CAAC,KAAK,MAAM,WAAa,UAAU,IAAM,EAAI,CAAC,CAAC,CAAC,KAAK,MAAM,WAAa,EAAE,CAAC,CAAC,aAAe,IAAM,UAAU,IAAM,EAAI,EAAE,EAAGA,IAAQ,CAC1N,EACA,YAAY,IAAM,KAClB,IAAI,WAAa,SAASwoB,EAAUC,EAAUC,EAAUC,EAAU,CAC9DH,KAAc,EACdC,KAAc,EACdC,KAAc,EACdC,KAAc,EACd,IAAIC,EAAe,IAAI,OAAM,YAAY,EACrCC,EAAS,IAAI,KAAKD,EAAa,EAAG,CAAC,EACnCE,EAAS,IAAI,KAAKF,EAAa,EAAG,CAAC,EACnCb,EAAec,EAAO,kBAAkB,EACxCf,EAAegB,EAAO,kBAAkB,EACxCC,EAAoB,KAAK,IAAIhB,EAAcD,CAAY,EAC3D,QAAQU,IAAa,IAAM,CAAC,EAAIO,EAAoB,GACpD,OAAON,IAAa,IAAM,CAAC,EAAI,EAAOV,GAAgBD,GACtD,IAAIkB,EAAcC,GAAkB,CAChC,IAAIC,EAAOD,GAAkB,EAAI,IAAM,IACnCE,EAAY,KAAK,IAAIF,CAAc,EACnCG,EAAQ,OAAO,KAAK,MAAMD,EAAY,EAAE,CAAC,EAAE,SAAS,EAAG,GAAG,EAC1DE,EAAU,OAAOF,EAAY,EAAE,EAAE,SAAS,EAAG,GAAG,EACpD,MAAO,MAAM,OAAAD,GAAO,OAAAE,GAAQ,OAAAC,EAChC,EACIC,EAAaN,EAAYjB,CAAY,EACrCwB,EAAaP,EAAYlB,CAAY,EACrCA,EAAeC,GACf,aAAauB,EAAYZ,EAAU,EAAE,EACrC,aAAaa,EAAYZ,EAAU,EAAE,IAErC,aAAaW,EAAYX,EAAU,EAAE,EACrC,aAAaY,EAAYb,EAAU,EAAE,EAE7C,EACA,WAAW,IAAM,QACjB,IAAI,iCAAmC,CAACpZ,EAAMlH,IAAU,CAGpD,GAFA,SAAS,WAAakH,EACtB,SAAS,YAAclH,EACnB,CAAC,SAAS,KACV,MAAO,GAKX,GAHK,SAAS,UACV,SAAS,QAAU,IAEnBkH,GAAQ,EACR,SAAS,UAAY,UAAyC,CAC1D,IAAIka,EAAoB,KAAK,IAAI,EAAG,SAAS,cAAgBphB,EAAQ,oBAAoB,CAAC,EAAI,EAC9F,WAAW,SAAS,OAAQohB,CAAiB,CACjD,EACA,SAAS,OAAS,kBACXla,GAAQ,EACf,SAAS,UAAY,UAAkC,CACnD,SAAS,sBAAsB,SAAS,MAAM,CAClD,EACA,SAAS,OAAS,cACXA,GAAQ,EAAG,CAClB,GAAI,OAAO,SAAS,aAAgB,IAChC,GAAI,OAAO,aAAgB,IAAa,CACpC,IAAIma,EAAgB,CAAC,EACjBC,EAA8B,eAC9BC,EAAuClR,GAAS,EAC5CA,EAAM,OAASiR,GAA+BjR,EAAM,KAAK,SAAWiR,KACpEjR,EAAM,gBAAgB,EACtBgR,EAAc,MAAM,EAAE,EAE9B,EACA,iBAAiB,UAAWE,EAAsC,EAAI,EACtE,SAAS,aAAehiB,GAAQ,CAx9N5D,IAAAlI,EAy9NgCgqB,EAAc,KAAK9hB,CAAI,EACnB,wBACAlI,EAAA,OAAO,gBAAP,cAAO,cAAqB,CAAC,GAC7B,OAAO,cAAiB,KAAKkI,CAAI,EACjC,YAAY,CACR,OAAQ+hB,CACZ,CAAC,GACE,YAAYA,EAA6B,GAAG,CACvD,CACJ,MACI,SAAS,aAAe,aAGhC,SAAS,UAAY,UAA2C,CAC5D,SAAS,aAAa,SAAS,MAAM,CACzC,EACA,SAAS,OAAS,WACtB,CACA,MAAO,EACX,EACA,iCAAiC,IAAM,MACvC,IAAI,YAAc,CAACE,EAAUC,EAAKC,EAAsBnV,EAAKoV,IAAgB,CACzE,SAAS,KAAOH,EAChB,SAAS,IAAMjV,EACf,IAAIqV,EAAiB,SAAS,yBAE9B,SAASC,GAAiB,CACtB,OAAID,EAAiB,SAAS,0BAC1B,UAAU,EACH,IAEJ,EACX,CA2CA,GA1CA,SAAS,QAAU,GACnB,SAAS,OAAS,UAA2B,CACzC,GAAI,OACJ,IAAI,SAAS,MAAM,OAAS,EAAG,CAC3B,IAAIxc,EAAQ,KAAK,IAAI,EACjB0c,EAAU,SAAS,MAAM,MAAM,EAEnC,GADAA,EAAQ,KAAKA,EAAQ,GAAG,EACpB,SAAS,kBAAmB,CAC5B,IAAIC,EAAY,SAAS,kBACrB5W,EAAO4W,EAAY,GAAK,EAAIA,EAAY,EAAI,KAAK,MAAMA,CAAS,EAChED,EAAQ,QACR,SAAS,kBAAoB3W,GAE7BA,EAAOA,EAAO,GACd,SAAS,mBAAqB,EAAI4W,EAAY5W,GAAQ,EAE9D,CAEA,GADA,SAAS,aAAa,EAClB,CAAC0W,EAAe,EAAG,OACvB,WAAW,SAAS,OAAQ,CAAC,EAC7B,MACJ,CACA,GAAKA,EAAe,EAEpB,IADA,SAAS,mBAAqB,SAAS,mBAAqB,EAAI,EAC5D,SAAS,YAAc,GAAK,SAAS,YAAc,GAAK,SAAS,mBAAqB,SAAS,aAAe,EAAG,CACjH,SAAS,UAAU,EACnB,MACJ,MAAW,SAAS,YAAc,IAC9B,SAAS,cAAgB,oBAAoB,GAEjD,SAAS,QAAQL,CAAQ,EACpBK,EAAe,GACpB,SAAS,UAAU,GACvB,EACKF,IACGF,GAAOA,EAAM,EACb,iCAAiC,EAAG,IAAMA,CAAG,EAE7C,iCAAiC,EAAG,CAAC,EAEzC,SAAS,UAAU,GAEnBC,EACA,KAAM,QAEd,EACI,SAAW,CACX,QAAS,GACT,UAAW,KACX,OAAQ,GACR,yBAA0B,EAC1B,KAAM,KACN,IAAK,EACL,WAAY,EACZ,YAAa,EACb,mBAAoB,EACpB,MAAO,CAAC,EACR,YAAa,CAAC,EACd,aAAc,CAAC,EACf,OAAQ,CACJ,SAAS,UAAY,KACrB,SAAS,0BACb,EACA,QAAS,CACL,SAAS,2BACT,IAAIM,EAAa,SAAS,WACtBC,EAAc,SAAS,YACvB1iB,EAAO,SAAS,KACpB,SAAS,KAAO,KAChB,YAAYA,EAAM,EAAG,GAAO,SAAS,IAAK,EAAI,EAC9C,iCAAiCyiB,EAAYC,CAAW,EACxD,SAAS,UAAU,CACvB,EACA,cAAe,CAnkO/B,IAAA5qB,EAAAgT,EAokOoB,GAAI,OAAO,UAAc,CACrB,IAAIlN,EAAU,OAAO,eAAoB,iBACrC4kB,GAAY1qB,EAAA,SAAS,oBAAT,KAAAA,EAA8B,EAC1C6qB,GAAW7X,EAAA,SAAS,mBAAT,KAAAA,EAA6B,EACxC0X,EACIA,EAAYG,EACZ,OAAO,UAAa,+CAA+C,EAEnE,OAAO,UAAa/kB,CAAO,EAG/B,OAAO,UAAa,EAAE,CAE9B,CACJ,EACA,MAAO,CACH,OAAO,aAAkB,SAAS,YAAY,KAAK,OAAO,WAAc,EACxE,OAAO,cAAmB,SAAS,aAAa,KAAK,OAAO,YAAe,CAC/E,EACA,QAAQoC,EAAM,CACV,GAAI,OACJ,SAAS4iB,KAAO,SAAS,YACrB,GAAIA,EAAI,IAAM,GACV,OAGR,iBAAiB5iB,CAAI,EACrB,QAAS6iB,KAAQ,SAAS,aACtBA,EAAK,EAEb,EACA,QAAS,EACT,0BAA0B7iB,EAAM,CAC5B,IAAI2Y,EAAM,KAAK,IAAI,EACnB,GAAI,SAAS,UAAY,EACrB,SAAS,QAAUA,EAAM,IAAM,OAE/B,MAAOA,EAAM,GAAK,SAAS,SACvB,SAAS,SAAW,IAAM,GAGlC,IAAImK,EAAQ,KAAK,IAAI,SAAS,QAAUnK,EAAK,CAAC,EAC9C,WAAW3Y,EAAM8iB,CAAK,CAC1B,EACA,sBAAsB9iB,EAAM,CACxB,GAAI,OAAO,uBAAyB,WAAY,CAC5C,sBAAsBA,CAAI,EAC1B,MACJ,CACA,IAAI+iB,EAAM,SAAS,0BACnBA,EAAI/iB,CAAI,CACZ,CACJ,EACI,GAAK,CACL,eAAgB,GAChB,gBAAiB,GACjB,YAAa,oBACb,oBAAqB,4BACrB,eAAgB,CACZ,sBAAuB,GACvB,cAAe,EACnB,EACA,cAAe,CACX,eAAgB,GAChB,oBAAqB,GACrB,sBAAuB,GACvB,6BAA8B,GAC9B,0BAA2B,EAC/B,EACA,QAAS,EACT,OAAQ,EACR,gBAAiB,CAAC,EAClB,eAAgB,CAAC,EACjB,OAAQ,GACR,YAAa,CAAC,EACd,SAAU,CAAC,EACX,WAAY,KACZ,QAAS,CACL,EAAG,CACC,GAAI,EACJ,SAAU,EACV,SAAU,KACV,UAAW,EACX,eAAgB,EAChB,SAAU,EACV,OAAQ,CACZ,CACJ,EACA,WAAY,CAAC,EACb,QAAS,EACT,MAAO,IAAM,GAAG,QAAQ,OAAS,EAAI,GAAG,QAAQ,IAAI,EAAI,GAAG,UAC3D,QAAS,CAAC,EACV,qBAAsBgjB,GAAO,CACzB,GAAI,WAAS,aAAe,GAAK,SAAS,iBAAsB,WAGhE,QAAS3oB,KAAK2oB,EAAI,QACd,GAAG,oBAAoBA,EAAI,QAAQ3oB,CAAC,CAAC,CAE7C,EACA,oBAAqB,CAACqjB,EAAKuF,IAAc,CACrC,GAAI,WAAS,aAAe,GAAK,SAAS,iBAAsB,YAG5DvF,EAAI,QAAU,KAOlB,SAJIwF,EAAc,GAAG,iBAAiBxF,CAAG,EACrCyF,EAAYzF,EAAI,aAChB0F,EAAc1F,EAAI,UAClB2F,EAAY3F,EAAI,cACXrjB,EAAI,EAAGA,EAAIqjB,EAAI,WAAW,OAAQrjB,IAAK,CAC5C,IAAIipB,EAAW5F,EAAI,WAAWrjB,CAAC,EAC/B8oB,EAAYG,EAAS,WAAaA,EAAS,UAC3CF,EAAc,EACdC,GAAaC,EAAS,WAAa,CACvC,CACKL,IACDA,EAAY,GAAG,iBAInB,QAFIM,EAAgBL,EAAcD,EAC9BO,EAAY,EACTL,EAAYI,GAAe,CAC9B,GAAIF,GAAa3F,EAAI,SAAS,OAC1B,GAAIA,EAAI,QACJ2F,GAAa3F,EAAI,SAAS,WAE1B,OAGR,IAAI5W,EAAM4W,EAAI,SAAS2F,EAAY3F,EAAI,SAAS,MAAM,EACtD,GAAI5W,EAAI,SAAW,GAEf,GADA0c,IACIA,IAAc9F,EAAI,SAAS,OAC3B,UAED,CACH,IAAI4F,EAAW5F,EAAI,QAAQ,SAAS,mBAAmB,EACvD4F,EAAS,OAASxc,EAAI,SACtBwc,EAAS,aAAa,MAAQ5F,EAAI,cAC9B5W,EAAI,SAAS,YAAcA,EAAI,SAAS,YACxCwc,EAAS,UAAYxc,EAAI,SAAS,WAClCwc,EAAS,QAAUxc,EAAI,SAAS,UAEpC,IAAI2c,EAAW,EACX/F,EAAI,OAAS,MAAQA,EAAI,SACzB+F,EAAW,OAAO,kBAClBH,EAAS,KAAO,GACZxc,EAAI,SAAS,aACbwc,EAAS,UAAYxc,EAAI,SAAS,YAElCA,EAAI,SAAS,WACbwc,EAAS,QAAUxc,EAAI,SAAS,WAGpC2c,GAAY3c,EAAI,SAAS,SAAWsc,GAAe1F,EAAI,aAE3D4F,EAAS,aAAeF,EACxBE,EAAS,UAAYG,EACrBH,EAAS,WAAaE,EACtBA,EAAY,EACZF,EAAS,QAAQ5F,EAAI,IAAI,EACrB,OAAO4F,EAAS,MAAS,KACzBH,EAAY,KAAK,IAAIA,EAAWzF,EAAI,QAAQ,SAAS,WAAW,EAChE4F,EAAS,MAAMH,EAAWC,CAAW,GAC9B,OAAOE,EAAS,OAAU,MACjCH,EAAY,KAAK,IAAIA,EAAWzF,EAAI,QAAQ,SAAS,WAAW,EAChE4F,EAAS,OAAOH,CAAS,GAE7BG,EAAS,WAAaH,EACtBzF,EAAI,WAAW,KAAK4F,CAAQ,EAC5BH,GAAaM,CACjB,CACAL,EAAc,EACdC,GACJ,EACJ,EACA,iBAAkB3F,GAAO,CACrB,IAAIwF,EAAcxF,EAAI,QAAQ,SAAS,YACvC,GAAIA,EAAI,QAAU,KACd,OAAOwF,EAEN,SAASxF,EAAI,YAAY,IAC1BA,EAAI,aAAewF,EAAcxF,EAAI,UAAYA,EAAI,aACrDA,EAAI,UAAY,GAGpB,QADIgG,EAAgB,EACbhG,EAAI,WAAW,QAAQ,CAC1B,IAAI4F,EAAW5F,EAAI,WAAW,CAAC,EAG/B,GAFAA,EAAI,eAAiB4F,EAAS,WAC9BI,EAAgBJ,EAAS,WAAaA,EAAS,UAC3CJ,EAAcQ,EACd,MAEJhG,EAAI,WAAW,MAAM,EACrBA,EAAI,aAAegG,EACnBhG,EAAI,UAAY,EAChBA,EAAI,eACR,CACA,GAAIA,EAAI,eAAiBA,EAAI,SAAS,QAAU,CAACA,EAAI,QACjD,GAAG,eAAeA,EAAK,IAAI,UACpBA,EAAI,OAAS,MAAQA,EAAI,QAAS,CACzC,IAAI5W,EAAM4W,EAAI,SAAS,CAAC,EACxB,GAAI5W,EAAI,SAAW,EACf4W,EAAI,UAAY,MACb,CACH,IAAIiG,GAAST,EAAcxF,EAAI,cAAgBA,EAAI,aAC/CkG,EAAY9c,EAAI,SAAS,YAAc,EACvC+c,EAAU/c,EAAI,SAAS,UAAYA,EAAI,SAAS,SAChD+c,GAAWD,IACXC,EAAU/c,EAAI,SAAS,UAEvB6c,EAAQE,EACRnG,EAAI,UAAYiG,EAEhBjG,EAAI,UAAYkG,GAAaD,EAAQC,IAAcC,EAAUD,EAErE,CACJ,SAAWlG,EAAI,WAAW,CAAC,EACvBA,EAAI,WAAawF,EAAcxF,EAAI,WAAW,CAAC,EAAE,YAAcA,EAAI,iBAChE,CACH,GAAIA,EAAI,OAAS,MAAQA,EAAI,QAAS,CAClC,IAAIoG,EAAc,GAAG,eAAepG,CAAG,EAAIA,EAAI,aAC3CoG,EAAc,IACdpG,EAAI,cAAgB,KAAK,OAAOwF,EAAcxF,EAAI,cAAgBoG,CAAW,EAAIA,EAEzF,CACA,QAASzpB,EAAI,EAAGA,EAAIqjB,EAAI,SAAS,OAAQrjB,IAAK,CAC1C,GAAIqjB,EAAI,eAAiBA,EAAI,SAAS,OAClC,GAAIA,EAAI,QACJA,EAAI,eAAiBA,EAAI,SAAS,WAC/B,CACH,GAAG,eAAeA,EAAK,IAAI,EAC3B,KACJ,CAEJ,IAAI5W,EAAM4W,EAAI,SAASA,EAAI,aAAa,EACxC,GAAI5W,EAAI,OAAS,EAAG,CAEhB,GADA4c,EAAgBhG,EAAI,aAAe5W,EAAI,SAAS,SAAW4W,EAAI,aAC3DwF,EAAcQ,EAAe,CAC7BhG,EAAI,WAAawF,EAAcxF,EAAI,cAAgBA,EAAI,aACvD,KACJ,CACAA,EAAI,aAAegG,CACvB,CACAhG,EAAI,UAAY,EAChBA,EAAI,eACR,CACJ,CACA,OAAOwF,CACX,EACA,yBAA0BxF,GAAO,CAC7B,GAAG,iBAAiBA,CAAG,EACvB,QAASrjB,EAAI,EAAGA,EAAIqjB,EAAI,WAAW,OAAQrjB,IAAK,CAC5C,IAAIipB,EAAW5F,EAAI,WAAWrjB,CAAC,EAC/BipB,EAAS,KAAK,CAClB,CACI5F,EAAI,WAAW,OAAS,IACxBA,EAAI,WAAW,OAAS,EAEhC,EACA,gBAAiBA,GAAO,CACpB,QAASrjB,EAAI,EAAGA,EAAIqjB,EAAI,WAAW,OAAQrjB,IACvCqjB,EAAI,WAAWrjB,CAAC,EAAE,KAAK,EAE3BqjB,EAAI,WAAW,OAAS,CAC5B,EACA,eAAgB,CAACA,EAAKqG,IAAU,CACxBA,IAAU,OACNrG,EAAI,QAAU,MAAQA,EAAI,OAAS,QACnCA,EAAI,cAAgB,EACpBA,EAAI,UAAY,GAEpB,GAAG,gBAAgBA,CAAG,EACtBA,EAAI,MAAQ,KACZA,EAAI,aAAe,OAAO,kBAC1B,GAAG,oBAAoBA,CAAG,GACnBqG,IAAU,KACbrG,EAAI,QAAU,OACd,GAAG,iBAAiBA,CAAG,EACvB,GAAG,gBAAgBA,CAAG,EACtBA,EAAI,MAAQ,MAETqG,IAAU,KACbrG,EAAI,QAAU,OACdA,EAAI,MAAQ,KACZA,EAAI,cAAgBA,EAAI,SAAS,OACjCA,EAAI,aAAe,OAAO,kBAC1BA,EAAI,UAAY,EAChB,GAAG,gBAAgBA,CAAG,GAEnBqG,IAAU,MACbrG,EAAI,QAAU,OACdA,EAAI,MAAQ,KACZA,EAAI,cAAgB,EACpBA,EAAI,aAAe,OAAO,kBAC1BA,EAAI,UAAY,EAChB,GAAG,gBAAgBA,CAAG,EAGlC,EACA,iBAAkBA,GAAO,CACrB,GAAIA,EAAI,OAAS,KAIjB,SADIsG,EAAc,GAAG,QAAQ,CAAC,EACrB3pB,EAAI,EAAGA,EAAIqjB,EAAI,SAAS,OAAQrjB,IACrC,GAAIqjB,EAAI,SAASrjB,CAAC,EAAE,KAAO,EAAG,CAC1B2pB,EAActG,EAAI,SAASrjB,CAAC,EAC5B,KACJ,CAEJ,GAAIqjB,EAAI,aAAe,GAAKA,EAAI,aAAe,GAAKsG,EAAY,WAAa,EAAG,CAC5E,GAAItG,EAAI,OACJ,OAEJA,EAAI,OAASA,EAAI,QAAQ,SAAS,aAAa,EAC/C,GAAG,mBAAmBA,CAAG,EACzB,GAAG,kBAAkBA,CAAG,EACxBA,EAAI,OAAO,QAAQA,EAAI,QAAQ,IAAI,EACnCA,EAAI,KAAK,WAAW,EACpBA,EAAI,KAAK,QAAQA,EAAI,MAAM,CAC/B,KAAO,CACH,GAAI,CAACA,EAAI,OACL,OAEJA,EAAI,OAAO,WAAW,EACtBA,EAAI,KAAK,WAAW,EACpBA,EAAI,KAAK,QAAQA,EAAI,QAAQ,IAAI,EACjCA,EAAI,OAAS,IACjB,EACJ,EACA,oBAAqBsF,GAAO,CACxB,QAAS3oB,KAAK2oB,EAAI,QACd,GAAG,mBAAmBA,EAAI,QAAQ3oB,CAAC,CAAC,CAE5C,EACA,mBAAoBqjB,GAAO,CACvB,IAAIuG,EAASvG,EAAI,OACjB,GAAKuG,EAGL,CAAAA,EAAO,YAAcvG,EAAI,YACzBuG,EAAO,YAAcvG,EAAI,YACzBuG,EAAO,cAAgBvG,EAAI,cAC3BuG,EAAO,aAAevG,EAAI,QAAQ,KAAO,OAAS,aAClD,IAAIwG,EAAgBxG,EAAI,QAAQ,oBAAsBA,EAAI,cAAgBA,EAAI,QAAQ,cACtF,OAAQwG,EAAe,CACnB,IAAK,GACDD,EAAO,cAAgB,UACvBA,EAAO,YAAc,UACrB,MACJ,IAAK,OACL,IAAK,OACDA,EAAO,cAAgB,UACvB,MACJ,IAAK,OACL,IAAK,OACDA,EAAO,cAAgB,SACvB,MACJ,IAAK,OACL,IAAK,OACDA,EAAO,cAAgB,cACvB,KACR,EACJ,EACA,oBAAqBjB,GAAO,CACxB,IAAImB,EAAWnB,EAAI,SAAS,SACxBmB,EAAS,WACTA,EAAS,UAAU,MAAQnB,EAAI,SAAS,SAAS,CAAC,EAClDmB,EAAS,UAAU,MAAQnB,EAAI,SAAS,SAAS,CAAC,EAClDmB,EAAS,UAAU,MAAQnB,EAAI,SAAS,SAAS,CAAC,GAElDmB,EAAS,YAAYnB,EAAI,SAAS,SAAS,CAAC,EAAGA,EAAI,SAAS,SAAS,CAAC,EAAGA,EAAI,SAAS,SAAS,CAAC,CAAC,EAEjGmB,EAAS,UACTA,EAAS,SAAS,MAAQnB,EAAI,SAAS,UAAU,CAAC,EAClDmB,EAAS,SAAS,MAAQnB,EAAI,SAAS,UAAU,CAAC,EAClDmB,EAAS,SAAS,MAAQnB,EAAI,SAAS,UAAU,CAAC,EAClDmB,EAAS,IAAI,MAAQnB,EAAI,SAAS,GAAG,CAAC,EACtCmB,EAAS,IAAI,MAAQnB,EAAI,SAAS,GAAG,CAAC,EACtCmB,EAAS,IAAI,MAAQnB,EAAI,SAAS,GAAG,CAAC,GAEtCmB,EAAS,eAAenB,EAAI,SAAS,UAAU,CAAC,EAAGA,EAAI,SAAS,UAAU,CAAC,EAAGA,EAAI,SAAS,UAAU,CAAC,EAAGA,EAAI,SAAS,GAAG,CAAC,EAAGA,EAAI,SAAS,GAAG,CAAC,EAAGA,EAAI,SAAS,GAAG,CAAC,CAAC,EAEvK,QAAS3oB,KAAK2oB,EAAI,QACd,GAAG,kBAAkBA,EAAI,QAAQ3oB,CAAC,CAAC,CAE3C,EACA,kBAAmBqjB,GAAO,CACtB,GAAKA,EAAI,OAGT,KAAIuG,EAASvG,EAAI,OACb0G,EAAO1G,EAAI,SAAS,CAAC,EACrB2G,EAAO3G,EAAI,SAAS,CAAC,EACrB4G,EAAO5G,EAAI,SAAS,CAAC,EACrB6G,EAAO7G,EAAI,UAAU,CAAC,EACtB8G,EAAO9G,EAAI,UAAU,CAAC,EACtB+G,EAAO/G,EAAI,UAAU,CAAC,EACtByG,EAAWzG,EAAI,QAAQ,SACvBgH,EAAQP,EAAS,SAAS,CAAC,EAC3BQ,EAAQR,EAAS,SAAS,CAAC,EAC3BS,EAAQT,EAAS,SAAS,CAAC,EAC/B,GAAIzG,EAAI,SAAU,CACd,IAAImH,EAAS,CAACV,EAAS,UAAU,CAAC,EAC9BW,EAAS,CAACX,EAAS,UAAU,CAAC,EAC9BY,EAAS,CAACZ,EAAS,UAAU,CAAC,EAC9Ba,EAAOb,EAAS,GAAG,CAAC,EACpBc,EAAOd,EAAS,GAAG,CAAC,EACpBe,EAAOf,EAAS,GAAG,CAAC,EACpBgB,EAAmB,CAAChpB,GAAGipB,GAAG3qB,KAAM,CAChC,IAAIuL,GAAS,KAAK,KAAK7J,GAAIA,GAAIipB,GAAIA,GAAI3qB,GAAIA,EAAC,EAC5C,OAAIuL,GAAS,OAAO,QACT,EAEJ,EAAIA,EACf,EACIqf,EAASF,EAAiBN,EAAQC,EAAQC,CAAM,EACpDF,GAAUQ,EACVP,GAAUO,EACVN,GAAUM,EACVA,EAASF,EAAiBH,EAAMC,EAAMC,CAAI,EAC1CF,GAAQK,EACRJ,GAAQI,EACRH,GAAQG,EACR,IAAIC,EAAUL,EAAOF,EAASG,EAAOJ,EACjCS,EAAUL,EAAOL,EAASG,EAAOD,EACjCS,EAAUR,EAAOF,EAASG,EAAOJ,EACrCQ,EAASF,EAAiBG,EAASC,EAASC,CAAO,EACnDF,GAAWD,EACXE,GAAWF,EACXG,GAAWH,EACXL,EAAOF,EAASU,EAAUT,EAASQ,EACnCN,EAAOF,EAASO,EAAUT,EAASW,EACnCN,EAAOL,EAASU,EAAUT,EAASQ,EACnC,IAAIG,EAAOlB,EACPmB,EAAOlB,EACPmB,EAAOlB,EACXF,EAAOkB,EAAOH,EAAUI,EAAOV,EAAOW,EAAOd,EAC7CL,EAAOiB,EAAOF,EAAUG,EAAOT,EAAOU,EAAOb,EAC7CL,EAAOgB,EAAOD,EAAUE,EAAOR,EAAOS,EAAOZ,EAC7CU,EAAOrB,EACPsB,EAAOrB,EACPsB,EAAOrB,EACPF,EAAOqB,EAAOH,EAAUI,EAAOV,EAAOW,EAAOd,EAC7CR,EAAOoB,EAAOF,EAAUG,EAAOT,EAAOU,EAAOb,EAC7CR,EAAOmB,EAAOD,EAAUE,EAAOR,EAAOS,EAAOZ,EAC7CX,GAAQM,EACRL,GAAQM,EACRL,GAAQM,CACZ,CACIX,EAAO,WACHG,GAAQH,EAAO,UAAU,QAAOA,EAAO,UAAU,MAAQG,GACzDC,GAAQJ,EAAO,UAAU,QAAOA,EAAO,UAAU,MAAQI,GACzDC,GAAQL,EAAO,UAAU,QAAOA,EAAO,UAAU,MAAQK,IAE7DL,EAAO,YAAYG,EAAMC,EAAMC,CAAI,EAEnCL,EAAO,cACHM,GAAQN,EAAO,aAAa,QAAOA,EAAO,aAAa,MAAQM,GAC/DC,GAAQP,EAAO,aAAa,QAAOA,EAAO,aAAa,MAAQO,GAC/DC,GAAQR,EAAO,aAAa,QAAOA,EAAO,aAAa,MAAQQ,IAEnER,EAAO,eAAeM,EAAMC,EAAMC,CAAI,EAE1C,IAAImB,EAAWlI,EAAI,aACfmI,EAAOnI,EAAI,SAAS,CAAC,EACrBoI,EAAOpI,EAAI,SAAS,CAAC,EACrBqI,EAAOrI,EAAI,SAAS,CAAC,EACrBsI,EAAQ7B,EAAS,SAAS,CAAC,EAC3B8B,EAAQ9B,EAAS,SAAS,CAAC,EAC3B+B,EAAQ/B,EAAS,SAAS,CAAC,EAC/B,GAAIC,IAASM,GAASL,IAASM,GAASL,IAASM,GAASiB,IAASG,GAASF,IAASG,GAASF,IAASG,EACnGxI,EAAI,aAAe,MAChB,CACH,IAAIyI,EAAezI,EAAI,QAAQ,aAC3B0I,EAAgB1I,EAAI,QAAQ,cAC5B2I,EAAM3B,EAAQN,EACdkC,EAAM3B,EAAQN,EACdkC,EAAM3B,EAAQN,EACdkC,GAAQ,KAAK,KAAKH,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,CAAG,EACnDE,GAAOJ,EAAML,EAAQM,EAAML,EAAQM,EAAML,GAASM,GAClDE,GAAOL,EAAMR,EAAOS,EAAMR,EAAOS,EAAMR,GAAQS,GACnDC,EAAM,KAAK,IAAIA,EAAKN,EAAeC,CAAa,EAChDM,EAAM,KAAK,IAAIA,EAAKP,EAAeC,CAAa,EAChD1I,EAAI,cAAgByI,EAAeC,EAAgBK,IAAQN,EAAeC,EAAgBM,EAC9F,CACIhJ,EAAI,eAAiBkI,GACrB,GAAG,iBAAiBlI,CAAG,EAE/B,EACA,iBAAkBA,GAAO,CACrB,GAAIA,EAAI,QAAU,KAAM,CACpB,GAAG,yBAAyBA,CAAG,EAC/B,IAAI4F,EAAW5F,EAAI,WAAW,CAAC,EAC/B,GAAI,CAAC4F,EACD,OAEJ,IAAIG,EACA/F,EAAI,OAAS,MAAQA,EAAI,QACzB+F,EAAW,OAAO,kBAElBA,GAAYH,EAAS,OAAO,SAAWA,EAAS,cAAgB5F,EAAI,aAExE4F,EAAS,UAAYG,EACrBH,EAAS,aAAa,MAAQ5F,EAAI,aAClC,GAAG,oBAAoBA,CAAG,CAC9B,CACJ,EACA,eAAgBA,GAAO,CAEnB,QADI1X,EAAS,EACJ3L,EAAI,EAAGA,EAAIqjB,EAAI,SAAS,OAAQrjB,IAAK,CAC1C,IAAIssB,EAAWjJ,EAAI,SAASrjB,CAAC,EAAE,SAC/B2L,GAAU2gB,EAAWA,EAAS,SAAW,CAC7C,CACA,OAAO3gB,CACX,EACA,WAAY0X,GAAO,CACf,GAAG,iBAAiBA,CAAG,EAEvB,QADItgB,EAAS,EACJ/C,EAAI,EAAGA,EAAIqjB,EAAI,cAAerjB,IAC/BqjB,EAAI,SAASrjB,CAAC,EAAE,WAChB+C,GAAUsgB,EAAI,SAASrjB,CAAC,EAAE,SAAS,UAG3C,OAAA+C,GAAUsgB,EAAI,UACPtgB,CACX,EACA,WAAY,CAACsgB,EAAKtgB,IAAW,CACzB,IAAIwpB,EAAUlJ,EAAI,OAAS,KAI3B,GAHIkJ,GACA,GAAG,eAAelJ,EAAK,IAAI,EAE3BA,EAAI,SAASA,EAAI,aAAa,EAAE,WAAa,KAAM,CAEnD,IADAA,EAAI,cAAgB,EACbtgB,EAASsgB,EAAI,SAASA,EAAI,aAAa,EAAE,SAAS,UACrDtgB,GAAUsgB,EAAI,SAASA,EAAI,aAAa,EAAE,SAAS,SACnDA,EAAI,gBAERA,EAAI,UAAYtgB,CACpB,CACIwpB,GACA,GAAG,eAAelJ,EAAK,IAAI,CAEnC,EACA,eAAgB,CAACmJ,EAAU9V,IAAU,CACjC,GAAI,CAAC,GAAG,WACJ,OAAO,KAEX,OAAQA,EAAO,CACX,IAAK,OACD,OAAO,GAAG,WAAW,cACzB,IAAK,OACD,OAAO,GAAG,WAAW,aACzB,IAAK,OACD,OAAO,GAAG,WAAW,cACzB,QACI,UAAG,WAAW,IAAM,MACb,IACf,CACJ,EACA,eAAgB,CAAC8V,EAAU9V,EAAOtQ,IAAU,CACxC,GAAK,GAAG,WAGR,OAAQsQ,EAAO,CACX,IAAK,OACD,GAAI,CAAC,OAAO,SAAStQ,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,cAAgBA,EAC9B,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,IAAK,OACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,GAAS,EAAG,CACvC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,aAAeA,EAC7B,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,IAAK,OACD,OAAQA,EAAO,CACX,IAAK,GACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACD,GAAG,WAAW,cAAgBA,EAC9B,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACA,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACJ,EACA,iBAAkB,CAAComB,EAAU9V,IAAU,CACnC,GAAI,CAAC,GAAG,WACJ,OAAO,KAEX,OAAQA,EAAO,CACX,IAAK,MACD,OAAO,GAAG,WAAW,SAAS,SAClC,IAAK,MACD,OAAO,GAAG,WAAW,SAAS,SAClC,IAAK,MACD,OAAO,GAAG,WAAW,SAAS,UAAU,OAAO,GAAG,WAAW,SAAS,EAAE,EAC5E,IAAK,MACD,OAAO,GAAG,WAAW,KAAK,KAAK,MACnC,QACI,UAAG,WAAW,IAAM,MACb,IACf,CACJ,EACA,iBAAkB,CAAC8V,EAAU9V,EAAOtQ,IAAU,CAC1C,GAAK,GAAG,WAGR,IAAIA,IAAU,KAAM,CAChB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,IAAI0jB,EAAW,GAAG,WAAW,SAC7B,OAAQpT,EAAO,CACX,IAAK,MACD,GAAI,CAAC,OAAO,SAAStQ,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CACxF,GAAG,WAAW,IAAM,MACpB,MACJ,CACA0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CACxF,GAAG,WAAW,IAAM,MACpB,MACJ,CACA0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B0jB,EAAS,SAAS,CAAC,EAAI1jB,EAAM,CAAC,EAC9B,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,KAAK,KAAK,MAAQA,EAChC,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CAClL,GAAG,WAAW,IAAM,MACpB,MACJ,CACA0jB,EAAS,UAAU,CAAC,EAAI1jB,EAAM,CAAC,EAC/B0jB,EAAS,UAAU,CAAC,EAAI1jB,EAAM,CAAC,EAC/B0jB,EAAS,UAAU,CAAC,EAAI1jB,EAAM,CAAC,EAC/B0jB,EAAS,GAAG,CAAC,EAAI1jB,EAAM,CAAC,EACxB0jB,EAAS,GAAG,CAAC,EAAI1jB,EAAM,CAAC,EACxB0jB,EAAS,GAAG,CAAC,EAAI1jB,EAAM,CAAC,EACxB,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,EACJ,EACA,eAAgB,CAAComB,EAAUC,EAAU/V,IAAU,CAC3C,GAAK,GAAG,WAGR,KAAIjK,EAAM,GAAG,QAAQggB,CAAQ,EAC7B,GAAI,CAAChgB,GAAOggB,IAAa,EAAG,CACxB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQ/V,EAAO,CACX,IAAK,MACD,OAAOjK,EAAI,UACf,IAAK,MACD,OAAOA,EAAI,eAAiB,EAChC,IAAK,MACD,OAAOA,EAAI,SACf,IAAK,MACD,OAAOA,EAAI,OAASA,EAAI,eAAiBA,EAAI,SACjD,IAAK,MACD,OAAIA,EAAI,SAAW,EACR,CAAC,EAAG,CAAC,EAET,EAAEA,EAAI,SAAS,YAAc,GAAKA,EAAI,WAAYA,EAAI,SAAS,UAAYA,EAAI,QAAUA,EAAI,SAAS,EACjH,QACI,UAAG,WAAW,IAAM,MACb,IACf,EACJ,EACA,eAAgB,CAAC+f,EAAUC,EAAU/V,EAAOtQ,IAAU,CAClD,GAAK,GAAG,WAGR,KAAIqG,EAAM,GAAG,QAAQggB,CAAQ,EAC7B,GAAI,CAAChgB,GAAOggB,IAAa,EAAG,CACxB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAIrmB,IAAU,KAAM,CAChB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQsQ,EAAO,CACX,IAAK,MACD,GAAItQ,IAAU,EAAG,CACb,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,MACJ,IAAK,MACD,GAAIA,EAAM,CAAC,EAAI,GAAKA,EAAM,CAAC,EAAIqG,EAAI,QAAUrG,EAAM,CAAC,EAAI,GAAKA,EAAM,CAAC,EAAIqG,EAAI,QAAUrG,EAAM,CAAC,GAAKA,EAAM,CAAC,EAAG,CACxG,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAIqG,EAAI,SAAW,EAAG,CAClB,GAAG,WAAW,IAAM,MACpB,MACJ,CACIA,EAAI,WACJA,EAAI,SAAS,WAAarG,EAAM,CAAC,EAAIqG,EAAI,UACzCA,EAAI,SAAS,SAAWrG,EAAM,CAAC,EAAIqG,EAAI,WAE3C,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,EACJ,EACA,eAAgB,CAAC+f,EAAUE,EAAUhW,IAAU,CAC3C,GAAI,CAAC,GAAG,WACJ,OAAO,KAEX,IAAI2M,EAAM,GAAG,WAAW,QAAQqJ,CAAQ,EACxC,GAAI,CAACrJ,EACD,UAAG,WAAW,IAAM,MACb,KAEX,OAAQ3M,EAAO,CACX,IAAK,KACD,OAAO2M,EAAI,SACf,IAAK,MACD,OAAOA,EAAI,eACf,IAAK,MACD,OAAOA,EAAI,eACf,IAAK,MACD,OAAOA,EAAI,MACf,IAAK,MACD,OAAOA,EAAI,SACf,IAAK,MACD,OAAOA,EAAI,UACf,IAAK,MACD,OAAOA,EAAI,SACf,IAAK,MACD,OAAOA,EAAI,QACf,IAAK,MACD,OAAIA,EAAI,OAAS,KACNA,EAAI,SAAS,CAAC,EAAE,GAEpB,EACX,IAAK,MACD,OAAOA,EAAI,KAAK,KAAK,MACzB,IAAK,MACD,OAAOA,EAAI,QACf,IAAK,MACD,OAAOA,EAAI,QACf,IAAK,MACD,OAAOA,EAAI,MACf,IAAK,MACD,OAAIA,EAAI,SAAS,SAAW,GAAKA,EAAI,SAAS,CAAC,EAAE,KAAO,EAC7C,EAEJA,EAAI,SAAS,OACxB,IAAK,MACD,OAAIA,EAAI,SAAS,SAAW,GAAKA,EAAI,SAAS,CAAC,EAAE,KAAO,GAAKA,EAAI,QACtD,EAEJA,EAAI,cACf,IAAK,MACD,OAAOA,EAAI,YACf,IAAK,MACD,OAAOA,EAAI,cACf,IAAK,MACD,OAAOA,EAAI,cACf,IAAK,MACD,OAAOA,EAAI,YACf,IAAK,MACD,OAAO,GAAG,WAAWA,CAAG,EAC5B,IAAK,MACD,IAAItgB,EAAS,GAAG,WAAWsgB,CAAG,EAC9B,OAAItgB,EAAS,IACTA,GAAUsgB,EAAI,SAAS,CAAC,EAAE,WAEvBtgB,EACX,IAAK,MACD,IAAIA,EAAS,GAAG,WAAWsgB,CAAG,EAC9B,OAAItgB,EAAS,IACTA,GAAUsgB,EAAI,SAAS,CAAC,EAAE,UAAYA,EAAI,SAAS,CAAC,EAAE,gBAEnDtgB,EACX,IAAK,MACD,OAAOsgB,EAAI,KACf,IAAK,MACD,OAAOA,EAAI,WACf,IAAK,MAGD,QAFI1X,EAAS,EACTghB,EAAgB,EACX3sB,EAAI,EAAGA,EAAIqjB,EAAI,SAAS,OAAQrjB,IACrC2L,GAAU0X,EAAI,SAASrjB,CAAC,EAAE,OACtBqjB,EAAI,SAASrjB,CAAC,EAAE,KAAO,IACvB2sB,EAAgBtJ,EAAI,SAASrjB,CAAC,EAAE,eAAiBqjB,EAAI,SAASrjB,CAAC,EAAE,UAGzE,OAAO2L,EAASghB,EACpB,IAAK,MAED,QADIhhB,EAAS,EACJ3L,EAAI,EAAGA,EAAIqjB,EAAI,SAAS,OAAQrjB,IACrC2L,GAAU0X,EAAI,SAASrjB,CAAC,EAAE,OAE9B,OAAO2L,EACX,IAAK,MACD,OAAO,GAAG,eAAe0X,CAAG,EAChC,IAAK,OACD,OAAOA,EAAI,cACf,QACI,UAAG,WAAW,IAAM,MACb,IACf,CACJ,EACA,eAAgB,CAACmJ,EAAUE,EAAUhW,EAAOtQ,IAAU,CAClD,GAAK,GAAG,WAGR,KAAIid,EAAM,GAAG,WAAW,QAAQqJ,CAAQ,EACxC,GAAI,CAACrJ,EAAK,CACN,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAIjd,IAAU,KAAM,CAChB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQsQ,EAAO,CACX,IAAK,KACD,GAAItQ,IAAU,EACVid,EAAI,SAAW,GACf,GAAG,kBAAkBA,CAAG,UACjBjd,IAAU,EACjBid,EAAI,SAAW,GACf,GAAG,kBAAkBA,CAAG,MACrB,CACH,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASjd,CAAK,EAAG,CACzB,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,eAAiBjd,EACjBid,EAAI,SACJA,EAAI,OAAO,eAAiBjd,EAAQ,KAExC,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,EAAG,CACzB,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,eAAiBjd,EACjBid,EAAI,SACJA,EAAI,OAAO,eAAiBjd,EAAQ,KAExC,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,GAAS,EAAG,CACvC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAIid,EAAI,QAAUjd,EACd,MAEJid,EAAI,MAAQjd,EACZ,GAAG,iBAAiBid,CAAG,EACvB,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASjd,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CACxF,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzBid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzBid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzB,GAAG,kBAAkBid,CAAG,EACxB,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASjd,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CACxF,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,UAAU,CAAC,EAAIjd,EAAM,CAAC,EAC1Bid,EAAI,UAAU,CAAC,EAAIjd,EAAM,CAAC,EAC1Bid,EAAI,UAAU,CAAC,EAAIjd,EAAM,CAAC,EAC1B,GAAG,kBAAkBid,CAAG,EACxB,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASjd,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,GAAK,CAAC,OAAO,SAASA,EAAM,CAAC,CAAC,EAAG,CACxF,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzBid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzBid,EAAI,SAAS,CAAC,EAAIjd,EAAM,CAAC,EACzB,GAAG,kBAAkBid,CAAG,EACxB,MACJ,IAAK,MACD,GAAIjd,IAAU,GAGV,GAFAid,EAAI,QAAU,GACd,GAAG,iBAAiBA,CAAG,EACnBA,EAAI,OAAS,MAAQA,EAAI,WAAW,OAAS,EAAG,CAChD,IAAI4F,EAAW5F,EAAI,WAAW,CAAC,EAC/B4F,EAAS,KAAO,GAChBA,EAAS,UAAY,OAAO,iBAChC,UACO7iB,IAAU,EAAG,CACpBid,EAAI,QAAU,GACd,IAAIwF,EAAc,GAAG,iBAAiBxF,CAAG,EACzC,GAAIA,EAAI,OAAS,MAAQA,EAAI,WAAW,OAAS,EAAG,CAChD,IAAI4F,EAAW5F,EAAI,WAAW,CAAC,EAC/B4F,EAAS,KAAO,GAChBA,EAAS,UAAY5F,EAAI,SAAS,CAAC,EAAE,SAAS,SAAWA,EAAI,aAC7D4F,EAAS,WAAaJ,EAAcxF,EAAI,UAAYA,EAAI,YAC5D,CACJ,KAAO,CACH,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,MACJ,IAAK,MACD,GAAIA,EAAI,QAAU,MAAQA,EAAI,QAAU,KAAM,CAC1C,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAIjd,IAAU,EAAG,CACb,QAASpG,KAAKqjB,EAAI,SACdA,EAAI,SAASrjB,CAAC,EAAE,WAEpBqjB,EAAI,SAAS,OAAS,EACtBA,EAAI,SAAS,CAAC,EAAI,GAAG,QAAQ,CAAC,EAC9BA,EAAI,cAAgB,EACpBA,EAAI,KAAO,IACf,KAAO,CACH,IAAI5W,EAAM,GAAG,QAAQrG,CAAK,EAC1B,GAAI,CAACqG,EAAK,CACN,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,QAASzM,KAAKqjB,EAAI,SACdA,EAAI,SAASrjB,CAAC,EAAE,WAEpBqjB,EAAI,SAAS,OAAS,EACtB5W,EAAI,WACJ4W,EAAI,SAAW,CAAC5W,CAAG,EACnB4W,EAAI,cAAgB,EACpBA,EAAI,KAAO,IACf,CACA,GAAG,iBAAiBA,CAAG,EACvB,GAAG,oBAAoBA,CAAG,EAC1B,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASjd,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,KAAK,KAAK,MAAQjd,EACtB,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,GAAKA,EAAQ,KAAK,IAAIid,EAAI,QAAS,CAAC,EAAG,CAC1E,GAAG,WAAW,IAAM,MACpB,MACJ,CACAA,EAAI,QAAUjd,EACd,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,KAAK,IAAI,EAAGid,EAAI,OAAO,GAAKjd,EAAQ,EAAG,CAC1E,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,QAAUjd,EACd,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,YAAcjd,EACdid,EAAI,SACJA,EAAI,OAAO,YAAcjd,GAE7B,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,cAAgBjd,EAChBid,EAAI,SACJA,EAAI,OAAO,cAAgBjd,GAE/B,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,GAAKA,EAAQ,EAAG,CACnD,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,cAAgBjd,EAChBid,EAAI,SACJA,EAAI,OAAO,cAAgBjd,GAE/B,MACJ,IAAK,MACD,GAAI,CAAC,OAAO,SAASA,CAAK,GAAKA,EAAQ,EAAG,CACtC,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,YAAcjd,EACdid,EAAI,SACJA,EAAI,OAAO,YAAcjd,GAE7B,MACJ,IAAK,MACD,GAAIA,EAAQ,GAAKA,EAAQ,GAAG,eAAeid,CAAG,EAAG,CAC7C,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAWA,EAAKjd,CAAK,EACxB,MACJ,IAAK,MACD,IAAIwmB,EAAS,GAAG,eAAevJ,CAAG,EAClC,GAAIuJ,EAAS,EAAG,CACZ,IAAIC,EACJ,QAASC,KAASzJ,EAAI,SAClB,GAAIyJ,EAAO,CACPD,EAAYxJ,EAAI,SAASyJ,CAAK,EAAE,UAChC,KACJ,CAEJ1mB,GAASymB,CACb,CACA,GAAIzmB,EAAQ,GAAKA,EAAQwmB,EAAQ,CAC7B,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAWvJ,EAAKjd,CAAK,EACxB,MACJ,IAAK,MACD,IAAIwmB,EAAS,GAAG,eAAevJ,CAAG,EAClC,GAAIuJ,EAAS,EAAG,CACZ,IAAIG,EACJ,QAASD,KAASzJ,EAAI,SAClB,GAAIyJ,EAAO,CACP,IAAIrgB,EAAM4W,EAAI,SAASyJ,CAAK,EAC5BC,EAActgB,EAAI,UAAYA,EAAI,eAAiBA,EAAI,SACvD,KACJ,CAEJrG,GAAS2mB,CACb,CACA,GAAI3mB,EAAQ,GAAKA,EAAQwmB,EAAQ,CAC7B,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAWvJ,EAAKjd,CAAK,EACxB,MACJ,IAAK,MACD,GAAIA,IAAU,GAAKA,IAAU,GAAKA,IAAU,EAAG,CAC3C,GAAG,WAAW,IAAM,MACpB,MACJ,CACAid,EAAI,WAAajd,EACjB,GAAG,iBAAiBid,CAAG,EACvB,MACJ,IAAK,MACL,IAAK,MACL,IAAK,MACD,GAAG,WAAW,IAAM,MACpB,MACJ,IAAK,OACD,OAAQjd,EAAO,CACX,IAAK,GACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACDid,EAAI,cAAgBjd,EAChB,GAAG,WAAW,qBACd,GAAG,oBAAoB,GAAG,UAAU,EAExC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACA,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,EACJ,EACA,SAAU,CAAC,EACX,sBAAuB,KACvB,0BAA2B,CAAC4mB,EAAUR,IAAa,CAC/C,GAAIQ,IAAa,EACb,UAAG,OAAS,MACL,KAEX,IAAIlhB,EAAI,GAAG,SAASkhB,CAAQ,EAC5B,GAAI,CAAClhB,EACD,UAAG,OAAS,MACL,KAEX,IAAI5N,EAAM4N,EAAE,iBACZ,OAAI5N,GACA,GAAG,OAAS,MACL,MAEJ4N,CACX,CACJ,EACI,YAAc,CAAC2gB,EAAU/V,EAAOuW,EAAQC,EAAQC,IAAW,CAC3D,GAAG,eAAe,aAAcV,EAAU/V,EAAO,IAAI,CACzD,EACA,YAAY,IAAM,SAClB,IAAI,YAAc,CAAC+V,EAAU/V,EAAOuW,EAAQC,EAAQC,IAAW,CAC3D,GAAG,eAAe,aAAcV,EAAU/V,EAAO,IAAI,CACzD,EACA,YAAY,IAAM,SAElB,SAAS,cAAc+V,EAAUW,EAAQC,EAAOnoB,EAAMooB,EAAM,CAExD,GADAD,KAAW,EACP,EAAC,GAAG,WAGR,KAAI5gB,EAAM,GAAG,QAAQggB,CAAQ,EAC7B,GAAI,CAAChgB,EAAK,CACN,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAI6gB,GAAQ,EAAG,CACX,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,IAAIhB,EAAW,KACf,GAAI,CACA,OAAQc,EAAQ,CACZ,IAAK,MACD,GAAIloB,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,EAAMooB,CAAI,EAE5D,QADIC,EAAWjB,EAAS,eAAe,CAAC,EAC/BtsB,EAAI,EAAGA,EAAIkF,EAAM,EAAElF,EACxButB,EAASvtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,SAAW,CAEzD,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,EACb,MACJ,IAAK,MACD,GAAIA,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,GAAQ,EAAGooB,CAAI,EACjE,IAAIC,EAAWjB,EAAS,eAAe,CAAC,EACxCe,IAAU,EACV,QAASrtB,EAAI,EAAGA,EAAIkF,GAAQ,EAAG,EAAElF,EAC7ButB,EAASvtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,eAE9C,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,GAAQ,EACrB,MACJ,IAAK,MACD,GAAIA,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,GAAQ,EAAGooB,CAAI,EAGjE,QAFIC,EAAWjB,EAAS,eAAe,CAAC,EACpCkB,EAAWlB,EAAS,eAAe,CAAC,EAC/BtsB,EAAI,EAAGA,EAAIkF,GAAQ,EAAG,EAAElF,EAC7ButB,EAASvtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,SAAW,EACjDG,EAASxtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,SAAW,CAEzD,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,GAAQ,EACrB,MACJ,IAAK,MACD,GAAIA,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,GAAQ,EAAGooB,CAAI,EACjE,IAAIC,EAAWjB,EAAS,eAAe,CAAC,EACpCkB,EAAWlB,EAAS,eAAe,CAAC,EACxCe,IAAU,EACV,QAASrtB,EAAI,EAAGA,EAAIkF,GAAQ,EAAG,EAAElF,EAC7ButB,EAASvtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,gBACtCG,EAASxtB,CAAC,EAAI,OAAOqtB,MAAY,CAAC,EAAI,eAE9C,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,GAAQ,EACrB,MACJ,IAAK,OACD,GAAIA,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,GAAQ,EAAGooB,CAAI,EACjE,IAAIC,EAAWjB,EAAS,eAAe,CAAC,EACxCe,IAAU,EACV,QAASrtB,EAAI,EAAGA,EAAIkF,GAAQ,EAAG,EAAElF,EAC7ButB,EAASvtB,CAAC,EAAI,QAAQqtB,MAAY,CAAC,CAE3C,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,GAAQ,EACrB,MACJ,IAAK,OACD,GAAIA,EAAO,EAAG,CACVonB,EAAW,GAAG,WAAW,SAAS,aAAa,EAAGpnB,GAAQ,EAAGooB,CAAI,EACjE,IAAIC,EAAWjB,EAAS,eAAe,CAAC,EACpCkB,EAAWlB,EAAS,eAAe,CAAC,EACxCe,IAAU,EACV,QAASrtB,EAAI,EAAGA,EAAIkF,GAAQ,EAAG,EAAElF,EAC7ButB,EAASvtB,CAAC,EAAI,QAAQqtB,MAAY,CAAC,EACnCG,EAASxtB,CAAC,EAAI,QAAQqtB,MAAY,CAAC,CAE3C,CACA5gB,EAAI,eAAiB,EACrBA,EAAI,SAAW,EACfA,EAAI,OAASvH,GAAQ,EACrB,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACAuH,EAAI,UAAY6gB,EAChB7gB,EAAI,SAAW6f,CACnB,OAASxtB,EAAG,CACR,GAAG,WAAW,IAAM,MACpB,MACJ,EACJ,CACA,cAAc,IAAM,SACpB,IAAI,WAAa,CAAC2tB,EAAU/V,EAAOtQ,IAAU,CACzC,GAAG,eAAe,YAAaqmB,EAAU/V,EAAO,IAAI,CACxD,EACA,WAAW,IAAM,OAEjB,SAAS,YAAY+V,EAAU/V,EAAO+W,EAAS,CAE3C,GADAA,KAAa,EACT,EAAC,GAAG,WAGR,IAAI,CAACA,EAAS,CACV,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,eAAe,aAAchB,EAAU/V,EAAO,IAAI,EACzD,CACA,YAAY,IAAM,OAClB,IAAI,WAAa,CAAC+V,EAAU/V,EAAOtQ,IAAU,CACzC,GAAG,eAAe,YAAaqmB,EAAU/V,EAAO,IAAI,CACxD,EACA,WAAW,IAAM,OAEjB,SAAS,YAAY+V,EAAU/V,EAAO+W,EAAS,CAE3C,GADAA,KAAa,EACT,EAAC,GAAG,WAGR,IAAI,CAACA,EAAS,CACV,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQ/W,EAAO,CACX,IAAK,MACD,GAAG,WAAW,CAAC,EAAI,OAAO+W,IAAY,IAAM,CAAC,EAC7C,GAAG,WAAW,CAAC,EAAI,OAAOA,EAAU,IAAM,IAAM,CAAC,EACjD,GAAG,eAAe,aAAchB,EAAU/V,EAAO,GAAG,UAAU,EAC9D,MACJ,QACI,GAAG,eAAe,aAAc+V,EAAU/V,EAAO,IAAI,EACrD,KACR,EACJ,CACA,YAAY,IAAM,OAElB,SAAS,iBAAiBjS,EAAOipB,EAAY,CAEzC,GADAA,KAAgB,EACZ,EAAC,GAAG,WAGR,SAAS1tB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAI8sB,EAAQ,OAAOY,EAAa1tB,EAAI,IAAM,IAAM,CAAC,EACjD,GAAI8sB,IAAU,EAGd,IAAI,CAAC,GAAG,QAAQA,CAAK,EAAG,CACpB,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAI,GAAG,QAAQA,CAAK,EAAE,SAAU,CAC5B,GAAG,WAAW,IAAM,MACpB,MACJ,EACJ,CACA,QAAS9sB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAI8sB,EAAQ,OAAOY,EAAa1tB,EAAI,IAAM,IAAM,CAAC,EAC7C8sB,IAAU,IAGd,GAAG,gBAAgB,GAAG,QAAQA,CAAK,EAAE,QAAQ,IAC7C,OAAO,GAAG,QAAQA,CAAK,EACvB,GAAG,QAAQ,KAAKA,CAAK,EACzB,EACJ,CACA,iBAAiB,IAAM,MACvB,IAAI,WAAa,CAACJ,EAAUhW,EAAOtQ,IAAU,CACzC,OAAQsQ,EAAO,CACX,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,OACD,GAAG,eAAe,YAAagW,EAAUhW,EAAOtQ,CAAK,EACrD,MACJ,QACI,GAAG,eAAe,YAAasmB,EAAUhW,EAAO,IAAI,EACpD,KACR,CACJ,EACA,WAAW,IAAM,OAEjB,SAAS,iBAAiBjS,EAAOkpB,EAAY,CAEzC,GADAA,KAAgB,EACZ,EAAC,GAAG,WAGR,SAAS3tB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAI4tB,EAAQ,OAAOD,EAAa3tB,EAAI,IAAM,IAAM,CAAC,EACjD,GAAI,CAAC,GAAG,WAAW,QAAQ4tB,CAAK,EAAG,CAC/B,GAAG,WAAW,IAAM,MACpB,MACJ,CACJ,CACA,QAAS5tB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAI4tB,EAAQ,OAAOD,EAAa3tB,EAAI,IAAM,IAAM,CAAC,EACjD,GAAG,eAAe,GAAG,WAAW,QAAQ4tB,CAAK,EAAG,IAAI,EACpD,WAAWA,EAAO,KAAM,CAAC,EACzB,OAAO,GAAG,WAAW,QAAQA,CAAK,EAClC,GAAG,QAAQ,KAAKA,CAAK,CACzB,EACJ,CACA,iBAAiB,IAAM,MACvB,IAAI,WAAalX,GAAS,CACtB,GAAK,GAAG,WAGR,OAAQA,EAAO,CACX,IAAK,KACD,GAAG,WAAW,oBAAsB,GACpC,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACJ,EACA,WAAW,IAAM,KACjB,IAAI,iBAAmBmX,GAAS,CAC5B,GAAG,eAAe,kBAAmB,MAAOA,CAAK,CACrD,EACA,iBAAiB,IAAM,KACvB,IAAI,iBAAmBznB,GAAS,CAC5B,GAAG,eAAe,kBAAmB,MAAOA,CAAK,CACrD,EACA,iBAAiB,IAAM,KACvB,IAAI,mBAAqBA,GAAS,CAE9B,GADA,SAAS,mHAAmH,EACxH,EAAC,GAAG,YAGJA,GAAS,EAAG,CACZ,GAAG,WAAW,IAAM,MACpB,MACJ,CACJ,EACA,mBAAmB,IAAM,KACzB,IAAI,UAAYsQ,GAAS,CACrB,GAAK,GAAG,WAGR,OAAQA,EAAO,CACX,IAAK,KACD,GAAG,WAAW,oBAAsB,GACpC,GAAG,oBAAoB,GAAG,UAAU,EACpC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACJ,EACA,UAAU,IAAM,KAEhB,SAAS,cAAcjS,EAAOipB,EAAY,CAEtC,GADAA,KAAgB,EACZ,EAAC,GAAG,WAGR,QAAS1tB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAIyM,EAAM,CACN,SAAU,GAAG,WAAW,SACxB,GAAI,GAAG,MAAM,EACb,SAAU,EACV,SAAU,KACV,UAAW,EACX,eAAgB,EAChB,SAAU,EACV,OAAQ,CACZ,EACA,GAAG,gBAAgBA,EAAI,QAAQ,IAC/B,GAAG,QAAQA,EAAI,EAAE,EAAIA,EACrB,OAAOihB,EAAa1tB,EAAI,IAAM,IAAM,CAAC,EAAIyM,EAAI,EACjD,CACJ,CACA,cAAc,IAAM,MAEpB,SAAS,cAAchI,EAAOkpB,EAAY,CAEtC,GADAA,KAAgB,EACZ,EAAC,GAAG,WAGR,QAAS3tB,EAAI,EAAGA,EAAIyE,EAAO,EAAEzE,EAAG,CAC5B,IAAI8tB,EAAO,GAAG,WAAW,SAAS,WAAW,EAC7CA,EAAK,QAAQ,GAAG,WAAW,IAAI,EAC/B,IAAIzK,EAAM,CACN,QAAS,GAAG,WACZ,GAAI,GAAG,MAAM,EACb,KAAM,KACN,MAAO,KACP,SAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,EACxB,WAAY,CAAC,EACb,QAAS,GACT,MAAO,EACP,aAAc,EACd,KAAAyK,EACA,QAAS,EACT,QAAS,EACT,OAAQ,KACR,cAAe,EACf,aAAc,OAAO,kBACrB,UAAW,EACX,SAAU,GACV,YAAa,EACb,YAAa,UACb,cAAe,EACf,SAAU,CAAC,EAAG,EAAG,CAAC,EAClB,SAAU,CAAC,EAAG,EAAG,CAAC,EAClB,UAAW,CAAC,EAAG,EAAG,CAAC,EACnB,cAAe,EACf,eAAgB,IAChB,eAAgB,IAChB,cAAe,MACf,WAAY,EACZ,IAAI,cAAe,CACf,OAAO,KAAK,MAAQ,KAAK,YAC7B,CACJ,EACA,GAAG,WAAW,QAAQzK,EAAI,EAAE,EAAIA,EAChC,OAAOsK,EAAa3tB,EAAI,IAAM,IAAM,CAAC,EAAIqjB,EAAI,EACjD,CACJ,CACA,cAAc,IAAM,MACpB,IAAI,cAAgB3M,GAAS,CACzB,IAAIlQ,EAAM,GAAG,eAAe,eAAgBkQ,CAAK,EACjD,GAAIlQ,IAAQ,KACR,MAAO,GAEX,OAAQkQ,EAAO,CACX,IAAK,OACL,IAAK,OACL,IAAK,OACD,OAAOlQ,IAAQ,EAAI,EAAI,EAC3B,QACI,UAAG,WAAW,IAAM,MACb,CACf,CACJ,EACA,cAAc,IAAM,KAEpB,SAAS,eAAekQ,EAAO+W,EAAS,CACpCA,KAAa,EACb,IAAIjnB,EAAM,GAAG,eAAe,gBAAiBkQ,CAAK,EAClD,GAAI,EAAAlQ,IAAQ,MAAQ,CAACinB,GAGrB,OAAQ/W,EAAO,CACX,IAAK,OACL,IAAK,OACL,IAAK,OACD,MAAM+W,IAAY,CAAC,EAAIjnB,EACvB,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACJ,CACA,eAAe,IAAM,MAErB,SAAS,eAAeimB,EAAU/V,EAAOqX,EAASC,EAASC,EAAS,CAChEF,KAAa,EACbC,KAAa,EACbC,KAAa,EACb,IAAIznB,EAAM,GAAG,eAAe,gBAAiBimB,EAAU/V,CAAK,EAC5D,GAAIlQ,IAAQ,KAGZ,IAAI,CAACunB,GAAW,CAACC,GAAW,CAACC,EAAS,CAClC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,IAAM,MACxB,CACA,eAAe,IAAM,SAErB,SAAS,eAAexB,EAAU/V,EAAOqX,EAASC,EAASC,EAAS,CAChEF,KAAa,EACbC,KAAa,EACbC,KAAa,EACb,IAAIznB,EAAM,GAAG,eAAe,gBAAiBimB,EAAU/V,CAAK,EAC5D,GAAIlQ,IAAQ,KAGZ,IAAI,CAACunB,GAAW,CAACC,GAAW,CAACC,EAAS,CAClC,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,IAAM,MACxB,CACA,eAAe,IAAM,SAErB,SAAS,cAAcxB,EAAU/V,EAAOwX,EAAQ,CAC5CA,KAAY,EACZ,IAAI1nB,EAAM,GAAG,eAAe,eAAgBimB,EAAU/V,CAAK,EAC3D,GAAIlQ,IAAQ,KAGZ,IAAI,CAAC0nB,EAAQ,CACT,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,IAAM,MACxB,CACA,cAAc,IAAM,OAEpB,SAAS,eAAezB,EAAU/V,EAAO+W,EAAS,CAC9CA,KAAa,EACb,IAAIjnB,EAAM,GAAG,eAAe,gBAAiBimB,EAAU/V,CAAK,EAC5D,GAAIlQ,IAAQ,KAGZ,IAAI,CAACinB,EAAS,CACV,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,GAAG,WAAW,IAAM,MACxB,CACA,eAAe,IAAM,OAErB,SAAS,cAAchB,EAAU/V,EAAOwX,EAAQ,CAC5CA,KAAY,EACZ,IAAI1nB,EAAM,GAAG,eAAe,eAAgBimB,EAAU/V,CAAK,EAC3D,GAAIlQ,IAAQ,KAGZ,IAAI,CAAC0nB,EAAQ,CACT,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQxX,EAAO,CACX,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACD,OAAOwX,IAAW,IAAM,CAAC,EAAI1nB,EAC7B,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,EACJ,CACA,cAAc,IAAM,OAEpB,SAAS,eAAeimB,EAAU/V,EAAO+W,EAAS,CAC9CA,KAAa,EACb,IAAIjnB,EAAM,GAAG,eAAe,gBAAiBimB,EAAU/V,CAAK,EAC5D,GAAIlQ,IAAQ,KAGZ,IAAI,CAACinB,EAAS,CACV,GAAG,WAAW,IAAM,MACpB,MACJ,CACA,OAAQ/W,EAAO,CACX,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACD,OAAO+W,IAAY,IAAM,CAAC,EAAIjnB,EAC9B,MACJ,IAAK,MACD,OAAOinB,IAAY,IAAM,CAAC,EAAIjnB,EAAI,CAAC,EACnC,OAAOinB,EAAU,IAAM,IAAM,CAAC,EAAIjnB,EAAI,CAAC,EACvC,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,EACJ,CACA,eAAe,IAAM,OACrB,IAAI,aAAekQ,GAAS,CACxB,IAAIlQ,EAAM,GAAG,eAAe,cAAekQ,CAAK,EAChD,GAAIlQ,IAAQ,KACR,MAAO,GAEX,OAAQkQ,EAAO,CACX,IAAK,OACL,IAAK,OACL,IAAK,OACD,OAAOlQ,EACX,QACI,UAAG,WAAW,IAAM,MACb,CACf,CACJ,EACA,aAAa,IAAM,KAEnB,SAAS,cAAckQ,EAAO+W,EAAS,CACnCA,KAAa,EACb,IAAIjnB,EAAM,GAAG,eAAe,eAAgBkQ,CAAK,EACjD,GAAI,EAAAlQ,IAAQ,MAAQ,CAACinB,GAGrB,OAAQ/W,EAAO,CACX,IAAK,OACL,IAAK,OACL,IAAK,OACD,QAAQ+W,IAAY,IAAM,CAAC,EAAIjnB,EAC/B,MACJ,QACI,GAAG,WAAW,IAAM,MACpB,MACR,CACJ,CACA,cAAc,IAAM,MAEpB,SAAS,gBAAgB2nB,EAAW,CAEhC,GADAA,KAAe,EACX,CAAC,GAAG,WACJ,MAAO,GAEX,GAAI,CAACA,EACD,UAAG,WAAW,IAAM,MACb,EAEX,IAAI3qB,EAAO,aAAa2qB,CAAS,EACjC,OAAQ3qB,EAAM,CACV,IAAK,UACD,MAAO,MACX,IAAK,YACD,MAAO,MACX,IAAK,uBACD,MAAO,MACX,IAAK,oBACD,MAAO,MACX,IAAK,iBACD,MAAO,MACX,IAAK,cACD,MAAO,MACX,IAAK,sBACD,MAAO,MACX,IAAK,sBACD,MAAO,MACX,IAAK,qBACD,MAAO,MACX,IAAK,eACD,MAAO,MACX,IAAK,oBACD,MAAO,OACX,IAAK,oBACD,MAAO,OACX,IAAK,sBACD,MAAO,OACX,IAAK,uBACD,MAAO,OACX,IAAK,+BACD,MAAO,OACX,IAAK,gBACD,MAAO,OACX,IAAK,mBACD,MAAO,MACX,IAAK,kBACD,MAAO,MACX,IAAK,qBACD,MAAO,MACX,IAAK,oBACD,MAAO,MACX,IAAK,eACD,MAAO,MACX,IAAK,UACD,MAAO,MACX,IAAK,aACD,MAAO,MACX,IAAK,aACD,MAAO,GACX,IAAK,kBACL,IAAK,kBACD,MAAO,OACX,IAAK,kBACD,MAAO,OACX,IAAK,qBACL,IAAK,uBACD,MAAO,OACX,IAAK,mBACD,MAAO,OACX,IAAK,sBACD,MAAO,OACX,IAAK,8BACD,MAAO,OACX,IAAK,qBACD,MAAO,OACX,IAAK,6BACD,MAAO,OACX,IAAK,aACD,MAAO,MACX,IAAK,kBACD,MAAO,MACX,IAAK,cACD,MAAO,MACX,IAAK,cACD,MAAO,MACX,IAAK,UACD,MAAO,GACX,IAAK,cACD,MAAO,GACX,IAAK,iBACD,MAAO,MACX,IAAK,mBACD,MAAO,OACX,IAAK,YACD,MAAO,MACX,IAAK,aACD,MAAO,MACX,IAAK,WACD,MAAO,MACX,IAAK,aACD,MAAO,MACX,IAAK,cACD,MAAO,MACX,IAAK,eACD,MAAO,MACX,IAAK,wBACD,MAAO,MACX,IAAK,cACD,MAAO,OACX,IAAK,oBACD,MAAO,MACX,IAAK,mBACD,MAAO,MACX,IAAK,gBACD,MAAO,MACX,IAAK,UACD,MAAO,MACX,IAAK,qBACD,MAAO,KACX,IAAK,kBACD,MAAO,MACX,IAAK,iBACD,MAAO,MACX,IAAK,oBACD,MAAO,OACX,IAAK,YACD,MAAO,MACX,IAAK,aACD,MAAO,MACX,IAAK,eACD,MAAO,MACX,IAAK,kBACD,MAAO,MACX,IAAK,YACD,MAAO,MACX,IAAK,cACD,MAAO,MACX,IAAK,YACD,MAAO,OACX,IAAK,aACD,MAAO,OACX,IAAK,eACD,MAAO,GACX,IAAK,2BACD,MAAO,KACX,IAAK,4BACD,MAAO,MACX,IAAK,sBACD,MAAO,MACX,IAAK,sBACD,MAAO,MACX,IAAK,wBACD,MAAO,MACX,IAAK,qBACD,MAAO,MACX,IAAK,yBACD,MAAO,OACX,IAAK,2BACD,MAAO,OACX,QACI,UAAG,WAAW,IAAM,MACb,CACf,CACJ,CACA,gBAAgB,IAAM,KACtB,IAAI,YAAc,IAAM,CACpB,GAAI,CAAC,GAAG,WACJ,MAAO,OAEX,IAAItF,EAAM,GAAG,WAAW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B,iBACjB,iBAAkB,kBAClB,gBAAiB,iBACjB,iBAAkB,kBAClB,gBAAiB,iBACjB,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,YAAa,aACb,aAAc,cACd,mBAAoB,oBACpB,mBAAoB,oBACpB,mBAAoB,oBACpB,aAAc,cACd,kBAAmB,mBACnB,iBAAkB,kBAClB,kBAAmB,mBACnB,iBAAkB,kBAClB,kBAAmB,mBACnB,iBAAkB,kBAClB,kBAAmB,mBACnB,iBAAkB,kBAClB,kBAAmB,mBACnB,sBAAuB,uBACvB,2BAA4B,4BAC5B,yBAA0B,0BAC1B,yBAA0B,0BAC1B,wBAAyB,yBACzB,sBAAuB,uBACvB,gBAAiB,iBACjB,WAAY,YACZ,mBAAoB,oBACpB,iBAAkB,kBAClB,cAAe,eACf,SAAU,UACV,gBAAiB,iBACjB,iBAAkB,kBAClB,kBAAmB,mBACnB,gBAAiB,iBACjB,eAAgB,gBAChB,QAAS,SACT,iBAAkB,kBAClB,aAAc,cACd,SAAU,UACV,oBAAqB,qBACrB,uBAAwB,wBACxB,mBAAoB,oBACpB,iBAAkB,kBAClB,mBAAoB,oBACpB,aAAc,cACd,eAAgB,gBAChB,cAAe,eACf,sBAAuB,uBACvB,mBAAoB,oBACpB,kBAAmB,mBACnB,gBAAiB,iBACjB,kBAAmB,mBACnB,cAAe,eACf,gBAAiB,iBACjB,kBAAmB,mBACnB,gBAAiB,iBACjB,cAAe,eACf,UACA,WACA,UACA,YACA,WACA,YACA,aACA,cACA,eACA,cACA,YACA,aACA,WACA,aACA,UACA,YACA,UACA,YACA,aACA,cACA,aACA,SACA,UACA,WACA,WACA,YACA,aACA,cACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,aACA,cACA,eACA,YACA,WACA,aACA,WACA,aACA,aACA,YACA,aACA,aACA,cACA,cACA,eACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,yBACA,0BACA,qBACA,uBACA,mBACA,oBACA,kBACA,mBACA,oBACA,0BACA,iBACA,kBACA,oBACA,kBACA,wBACA,gBACA,iBACA,kBACA,eACA,gBACA,iBACA,qBACA,iBACA,yBACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,eACA,iBACA,iBACA,gBACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,iBACA,oBACA,eACA,cACA,eACA,iBACA,eACA,gBACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,gBACA,iBACA,iBACA,eACA,gBACA,cACA,aACA,cACA,gBACA,kBACA,cACA,eACA,WACA,YACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,gBACA,eACA,aACA,cACA,YACA,aACA,cACA,eACA,gBACA,iBACA,cACA,eACA,cACA,UACA,WACA,YACA,YACA,YACA,cACA,YACA,SACA,UACA,UACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,gBACA,mBACA,iBACA,cACA,eACA,gBACA,iBACA,gBACA,aACA,cACA,eACA,gBACA,mBACA,eACA,cACA,YACA,aACA,cACA,eACA,gBACA,iBACA,eACA,aACA,gBACA,WACA,YACA,aACA,YACA,aACA,cACA,UACA,WACA,YACA,WACA,aACA,aACA,aACA,eACA,SACA,UACA,WACA,eACA,YACA,aACA,WACA,YACA,aACA,WACA,YACA,mBACA,cACA,YACA,cACA,YACA,cACA,cACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,wBACA,iBACA,mBACA,gBACA,iBACA,kBACA,kBACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,iBACA,gBACA,kBACA,kBACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,sBACA,oBACA,gBACA,eACA,gBACA,iBACA,iBACA,kBACA,aACA,cACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,kBACA,iBACA,eACA,gBACA,gBACA,iBA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",
  "names": ["require_sha256", "__commonJSMin", "exports", "module", "ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "EXTRA", "SHIFT", "K", "OUTPUT_TYPES", "blocks", "obj", "createOutputMethod", "outputType", "is224", "message", "Sha256", "createMethod", "method", "nodeWrap", "i", "type", "crypto", "Buffer", "algorithm", "bufferFrom", "nodeMethod", "createHmacOutputMethod", "key", "HmacSha256", "createHmacMethod", "sharedMemory", "notString", "code", "index", "length", "a", "b", "c", "d", "e", "f", "g", "h", "j", "s0", "s1", "maj", "t1", "t2", "ch", "ab", "da", "cd", "bc", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "hex", "arr", "buffer", "dataView", "bytes", "oKeyPad", "iKeyPad", "innerHash", "require_browser", "__commonJSMin", "exports", "module", "require_duckdb_mvp", "__commonJSMin", "_a", "resolve", "reject", "status", "toThrow", "path", "filename", "ret", "binary", "err", "data", "url", "xhr", "response", "condition", "text", "b", "cb", "id", "callback", "what", "e", "f", "file", "binaryFile", "imports", "receiver", "reason", "result", "info", "receiveInstance", "instance", "module", "metadata", "receiveInstantiationResult", "$0", "$1", "$2", "$3", "i", "len", "ptr1", "ptr2", "z", "error", "uInt8Array", "fileOnWasmHeap", "properArray", "iii", "LEN123", "$4", "$5", "post_payload", "letter", "headers", "headersOnWasmHeap", "jsString", "lengthBytes", "stringOnWasmHeap", "os", "fs", "array", "l", "folder", "filePath", "int32", "Worker", "worker", "int32_2", "x", "valid", "__publicField", "obj", "symName", "rtn", "callbacks", "heapOrArray", "idx", "maxBytesToRead", "endIdx", "endPtr", "str", "u0", "u1", "u2", "ch", "offset", "end", "getU8", "getLEB", "mul", "byte", "getString", "failIf", "message", "name", "dylinkSection", "int32View", "magicNumberFound", "section_size", "customSection", "neededDynlibsCount", "libname", "WASM_DYLINK_MEM_INFO", "WASM_DYLINK_NEEDED", "WASM_DYLINK_EXPORT_INFO", "WASM_DYLINK_IMPORT_INFO", "WASM_SYMBOL_TLS", "WASM_SYMBOL_BINDING_MASK", "WASM_SYMBOL_BINDING_WEAK", "subsectionType", "subsectionSize", "count", "symname", "flags", "modname", "ptr", "type", "handle", "syms", "dso", "size", "alignment", "n", "target", "sig", "typeNames", "sigRet", "sigParam", "typeCodes", "func", "typeSectionBody", "bytes", "wrappedFunc", "funcPtr", "item", "wrapped", "exports", "replace", "value", "memoryBase", "relocated", "existing", "val", "sections", "prelude", "wrappersig", "typeSection", "importSection", "functionSection", "exportSection", "convert_code", "localGet", "j", "codeBody", "codeSection", "args", "sp", "direct", "sym", "resolved", "stubs", "prop", "chain", "dynNeeded", "needed", "libName", "exp", "onload", "onerror", "noRunDep", "dep", "arrayBuffer", "wasmPlugin", "byteArray", "localScope", "loadLibData", "dataSize", "libData", "libFile", "getExports", "preloaded", "moduleLoaded", "entry", "lib", "lo", "hi", "line", "fp", "excPtr", "destructor", "caught", "rethrown", "adjustedPtr", "thrown", "thrownType", "caughtType", "adjusted_ptr_addr", "arg0", "arg1", "arg2", "splitPathRe", "parts", "allowAboveRoot", "up", "last", "isAbsolute", "trailingSlash", "p", "root", "dir", "lastSlash", "paths", "view", "crypto_module", "randomFillSync", "randomBytes", "resolvedPath", "resolvedAbsolute", "from", "to", "trim", "arr", "start", "fromParts", "toParts", "length", "samePartsLength", "outputParts", "c", "heap", "outIdx", "maxBytesToWrite", "startIdx", "u", "stringy", "dontAddNull", "u8array", "numBytesWritten", "BUFSIZE", "buf", "bytesRead", "fd", "dev", "ops", "stream", "tty", "buffer", "pos", "optional_actions", "address", "mount", "parent", "mode", "node", "newCapacity", "prevCapacity", "CAPACITY_DOUBLING_MAX", "oldContents", "newSize", "attr", "old_node", "new_dir", "new_name", "new_node", "entries", "key", "newname", "oldpath", "position", "contents", "canOwn", "whence", "prot", "allocated", "mmapFlags", "fileData", "canRead", "canWrite", "fullname", "finish", "handled", "plugin", "dontCreateFile", "preFinish", "processData", "flagModes", "errno", "rdev", "opts", "defaults", "current", "current_path", "islast", "link", "lookup", "parentid", "hash", "errCode", "nodeName", "flag", "perms", "isdir", "origStream", "_b", "device", "ma", "mi", "mounts", "check", "m", "populate", "completed", "doCallback", "done", "mountpoint", "pseudo", "mountRoot", "next", "dirs", "d", "newpath", "old_path", "new_path", "old_dirname", "new_dirname", "old_name", "old_dir", "relative", "dontFollow", "uid", "gid", "atime", "mtime", "created", "seeking", "bytesWritten", "cmd", "arg", "stat", "actualNumBytes", "randomBuffer", "randomLeft", "randomByte", "proc_self", "input", "output", "stdin", "stdout", "stderr", "code", "dontResolveLastLink", "part", "properties", "LazyUint8Array", "chunkOffset", "chunkNum", "getter", "datalength", "header", "hasByteServing", "usesGzip", "chunkSize", "doXHR", "lazyArray", "stream_ops", "keys", "fn", "writeChunks", "dirfd", "allowEmpty", "dirstream", "ctime", "addr", "nfds", "readfds", "writefds", "exceptfds", "timeout", "total", "srcReadLow", "srcReadHigh", "srcWriteLow", "srcWriteHigh", "srcExceptLow", "srcExceptHigh", "dstReadLow", "dstReadHigh", "dstWriteLow", "dstWriteHigh", "dstExceptLow", "dstExceptHigh", "allLow", "allHigh", "low", "high", "mask", "timeoutInMillis", "tv_sec", "tv_usec", "event", "param", "family", "protocol", "streaming", "sock", "request", "varargs", "msg", "port", "ws", "subProtocols", "WebSocketConstructor", "peer", "first", "handleOpen", "queued", "handleMessage", "encoder", "wasfirst", "newport", "isBinary", "dest", "peers", "backlog", "WebSocketServer", "host", "newsock", "listensock", "queuedLength", "queuedOffset", "queuedBuffer", "res", "bytesRemaining", "socket", "tmp", "words", "w", "valid6regx", "sa", "addrlen", "d1", "d2", "ints", "word", "longest", "lastzero", "zstart", "hasipv4", "v4part", "salen", "addrp", "d3", "old", "newfd", "amode", "advice", "offset_low", "offset_high", "len_low", "len_high", "nofollow", "owner", "group", "newStream", "length_low", "length_high", "outPtr", "cwd", "cwdLengthInBytes", "dirp", "struct_size", "off", "child", "level", "optname", "optval", "optlen", "op", "termios", "argp", "c_iflag", "c_oflag", "c_cflag", "c_lflag", "c_cc", "winsize", "pipe", "rName", "wName", "rNode", "wNode", "readableStream", "writableStream", "bucket", "currentLength", "toRead", "totalRead", "toRemove", "currBucket", "bucketSize", "tmpSlice", "dataLen", "freeBytesInCurrBuffer", "numBuckets", "remElements", "newBucket", "fdPtr", "fds", "nonzero", "pollfd", "events", "bufsize", "endChar", "iov", "num", "iovbase", "iovlen", "olddirfd", "newdirfd", "namelen", "addr_len", "domain", "linkpath", "times", "now", "seconds", "nanoseconds", "sz", "cmsg", "jsflags", "searchpaths", "global", "combinedFlags", "symbol", "symbolIndex", "newSymIndex", "origSym", "primitiveType", "minRange", "maxRange", "codes", "myTypes", "dependentTypes", "getTypeConverters", "onComplete", "typeConverters", "myTypeConverters", "unregisteredTypes", "registered", "dt", "rawType", "registeredInstance", "options", "trueValue", "falseValue", "wt", "destructors", "pointer", "rv", "v", "t", "width", "signed", "fromWireType", "bitshift", "isUnsignedType", "checkAssertions", "toTypeName", "toWireType", "dataTypeIndex", "typeMapping", "TA", "decodeMemoryView", "stdStringIsUTF8", "payload", "decodeStartPtr", "currentBytePtr", "maxRead", "stringSegment", "a", "valueIsOfTypeString", "base", "charCode", "maxIdx", "codeUnit", "startPtr", "numCharsToWrite", "utf32", "trailSurrogate", "charSize", "decodeString", "encodeString", "readCharAt", "lengthBytesUTF", "maxReadBytes", "o", "implicit", "onsuccess", "user_data", "errorCallback", "successCallback", "promise", "nameString", "src", "height", "command", "cmdstr", "cp", "__require", "_W_EXITCODE", "signalToNumber", "caller", "objHandle", "methodName", "destructorsRef", "humanName", "impl", "argCount", "argTypes", "body", "returnType", "constructor", "argumentList", "dummy", "r", "kind", "types", "retType", "functionBody", "argsList", "params", "invoker", "invokerFunction", "functionName", "del", "time_low", "time_high", "tmPtr", "time", "date", "yday", "year", "leap", "monthDaysCumulative", "summerOffset", "winterOffset", "dst", "guessedOffset", "dstOffset", "nonDstOffset", "trueOffset", "timeMs", "which", "timeout_ms", "timezone", "daylight", "std_name", "dst_name", "currentYear", "winter", "summer", "stdTimezoneOffset", "extractZone", "timezoneOffset", "sign", "absOffset", "hours", "minutes", "winterName", "summerName", "timeUntilNextTick", "setImmediates", "emscriptenMainLoopMessageId", "MainLoop_setImmediate_messageHandler", "iterFunc", "fps", "simulateInfiniteLoop", "noSetTiming", "thisMainLoopId", "checkIsRunning", "blocker", "remaining", "timingMode", "timingValue", "expected", "pre", "post", "delay", "RAF", "ctx", "lookahead", "currentTime", "startTime", "startOffset", "bufCursor", "audioSrc", "lookaheadTime", "skipCount", "duration", "nextStartTime", "delta", "loopStart", "loopEnd", "srcDuration", "state", "templateBuf", "panner", "distanceModel", "listener", "posX", "posY", "posZ", "dirX", "dirY", "dirZ", "lPosX", "lPosY", "lPosZ", "lBackX", "lBackY", "lBackZ", "lUpX", "lUpY", "lUpZ", "inverseMagnitude", "y", "invMag", "lRightX", "lRightY", "lRightZ", "oldX", "oldY", "oldZ", "oldShift", "velX", "velY", "velZ", "lVelX", "lVelY", "lVelZ", "speedOfSound", "dopplerFactor", "slX", "slY", "slZ", "magSl", "vls", "vss", "audioBuf", "playing", "funcname", "bufferId", "sourceId", "bytesPerFrame", "srcLen", "frequency", "bufId", "bytesPerSec", "deviceId", "value0", "value1", "value2", "format", "pData", "freq", "channel0", "channel1", "pValues", "pBufferIds", "pSourceIds", "srcId", "model", "gain", "pValue0", "pValue1", "pValue2", "pValue", "pEnumName", "pExtName", "_c", "_d", "track", "object", "elements", "element", "pDeviceName", "requestedSampleRate", "bufferFrameCapacity", "resolvedDeviceName", "has_getUserMedia", "AudioContext", "outputChannelCount", "newF32Array", "cap", "newI16Array", "newU8Array", "requestedSampleType", "newSampleArray", "buffers", "chan", "newCapture", "onError", "mediaStreamError", "onSuccess", "mediaStream", "inputChannelCount", "processorFrameCount", "audioProcessingEvent", "srcBuf", "wi", "pFrames", "requestedFrameCount", "dstfreq", "srcfreq", "fratio", "setF32Sample", "sample", "setI16Sample", "setU8Sample", "setSample", "frame_i", "lefti", "righti", "lefts", "rights", "pAttrList", "attrs", "hrtf", "ac", "ctxId", "contextId", "hrtfStatus", "nsamples", "pathLen", "fileId", "fileName", "fileNameLen", "fromLen", "toLen", "location", "Module", "feature", "funcId", "descPtr", "descSize", "ptrsPtr", "ptrsSize", "index", "sigPtr", "wide", "argbuf", "ext", "divisor", "primcount", "indices", "vao", "bufs", "supportedExtensions", "errorCode", "table", "createFunction", "objectTable", "shader", "string", "source", "canvas", "webGLContextAttributes", "fixedGetContext", "ver", "gl", "context", "contextHandle", "GLctx", "x0", "program", "framebuffer", "renderbuffer", "texture", "x1", "x2", "x3", "usage", "origin", "depth", "red", "green", "blue", "alpha", "internalFormat", "border", "imageSize", "xoffset", "yoffset", "x4", "x5", "x6", "x7", "shaderType", "framebuffers", "ids", "query", "renderbuffers", "textures", "vaos", "bufArray", "attachment", "renderbuffertarget", "textarget", "arrays", "funcName", "bufSize", "numBytesWrittenExclNull", "maxCount", "shaders", "lower", "name_", "formats", "pname", "maxLength", "infoLog", "log", "numActiveUniforms", "numActiveAttributes", "numActiveUniformBlocks", "precisionType", "range", "precision", "logLength", "sourceLength", "$webglGetExtensions", "exts", "s", "webGLVersion", "glVersion", "glslVersion", "ver_re", "ver_num", "uniformLocsById", "uniformSizeAndIdsByName", "nm", "lb", "arrayName", "arrayIndex", "uniformBaseName", "leftBrace", "sizeAndId", "webglLoc", "fb", "rb", "face", "factor", "units", "clamp", "sizePerPixel", "roundedToNextMultipleOf", "plainRowSize", "alignedRowSize", "colorChannels", "pixels", "pixelData", "invert", "binaryformat", "v0", "v1", "v2", "v3", "transpose", "normalized", "stride", "promiseInfo", "pages", "requestedSize", "oldSize", "maxHeapSize", "cutDown", "overGrownHeapSize", "replacement", "pbuffer", "pnum", "perror", "lang", "env", "strings", "__environ", "environ_buf", "penviron_count", "penviron_buf_size", "pbuf", "rightsBase", "rightsInheriting", "iovcnt", "curr", "newOffset", "service", "hint", "out", "addrs", "canon", "proto", "ai", "allocaddrinfo", "nodelen", "serv", "servlen", "overflowed", "sum", "days", "newDate", "currentMonth", "daysInCurrentMonth", "tm", "pattern", "SPECIAL_CHARS", "ii", "EQUIVALENT_MATCHERS", "DATE_PATTERNS", "MONTH_NUMBERS", "DAY_NUMBERS_SUN_FIRST", "DAY_NUMBERS_MON_FIRST", "capture", "pattern_out", "_", "pat", "matches", "initDate", "fixup", "min", "max", "getMatch", "hour", "day", "leapYear", "month", "daysUntilMonth", "weekDay", "weekDayNumber", "weekNumber", "janFirst", "endDate", "match", "fullDate", "ident", "toC", "convertReturnValue", "cArgs", "stack", "converter", "onDone", "memoryIndex", "stayopen", "allocprotoent", "aliases", "nameBuf", "aliasListBuf", "alias", "aliasBuf", "pe", "list", "map", "number", "callstack", "iThisFunc", "iThisFunc2", "iNextLine", "lines", "newFirefoxRe", "firefoxRe", "chromeRe", "symbolName", "lineno", "column", "haveSourceMap", "orig", "bits", "half", "textIndex", "argIndex", "prepVararg", "getNextArg", "currArg", "startTextIndex", "flagAlwaysSigned", "flagLeftAlign", "flagAlternative", "flagZeroPad", "flagPadSign", "flagsLoop", "precisionSet", "precisionChr", "argSize", "nextNext", "argText", "limit", "currAbsArg", "prefix", "chr", "isGeneral", "effectivePrecision", "exponent", "argLength", "emAsmAddr", "sync", "trace", "ipBefore", "ip", "ex", "name_addr", "content", "numericArgs", "numericRet", "targetFunction", "precedence", "arraysHaveEqualContent", "arrA", "arrB", "call", "deferredCalls", "eventTypeString", "h", "eventHandler", "cString", "domElement", "userData", "useCapture", "callbackfunc", "eventTypeId", "targetThread", "keyEventHandlerFunc", "keyEventData", "eventStruct", "rect", "mouseEventHandlerFunc", "mouseState", "wheelHandlerFunc", "wheelEvent", "uiEventHandlerFunc", "uiEvent", "focusEventHandlerFunc", "focusEvent", "deviceOrientationEventHandlerFunc", "orientationState", "supportedFields", "ag", "rr", "deviceMotionEventHandlerFunc", "motionState", "orientationsType1", "orientationsType2", "orientationIndex", "orientationAngle", "screenOrientObj", "orientationChangeEventHandlerFunc", "orientationChangeEvent", "allowedOrientations", "orientations", "succeeded", "fullscreenElement", "isFullscreen", "reportedElement", "fullscreenChangeEventhandlerFunc", "fullscreenChangeEvent", "fullscreenStatus", "targetInt", "canvasSize", "oldWidth", "oldHeight", "oldCssWidth", "oldCssHeight", "oldBackgroundColor", "oldDocumentBackgroundColor", "oldPaddingLeft", "oldPaddingRight", "oldPaddingTop", "oldPaddingBottom", "oldMarginLeft", "oldMarginRight", "oldMarginTop", "oldMarginBottom", "oldDocumentBodyMargin", "oldDocumentOverflow", "oldDocumentScroll", "oldImageRendering", "restoreOldStyle", "topBottom", "leftRight", "strategy", "cssWidth", "cssHeight", "windowedCssWidth", "windowedCssHeight", "windowedRttWidth", "windowedRttHeight", "desiredCssHeight", "desiredCssWidth", "dpiScale", "newWidth", "newHeight", "onlyVisibleElement", "hiddenElements", "children", "elem", "dpr", "inHiDPIFullscreenMode", "inAspectRatioFixedFullscreenMode", "inPixelPerfectFullscreenMode", "inCenteredWithoutScalingFullscreenMode", "screenWidth", "screenHeight", "topMargin", "deferUntilInEventHandler", "fullscreenStrategy", "restoreWindowedState", "pointerLockElement", "isPointerlocked", "pointerlockChangeEventHandlerFunc", "pointerlockChangeEvent", "pointerlockErrorEventHandlerFunc", "pointerlockStatus", "msecs", "msecsArray", "numEntries", "vibrateList", "visibilityStates", "visibilityState", "visibilityChangeEventHandlerFunc", "visibilityChangeEvent", "visibilityStatus", "touchEventHandlerFunc", "touches", "et", "touchEvent", "targetRect", "numTouches", "idx32", "gamepadEventHandlerFunc", "gamepadEvent", "gamepadState", "beforeUnloadEventHandlerFunc", "confirmationMessage", "batteryEventHandlerFunc", "batteryEvent", "batteryState", "timeStamp", "tick", "maxbytes", "bytesWrittenExcludingNull", "frame", "pc", "clock_id", "clk_id", "ignored_precision_low", "ignored_precision_high", "ptime", "ignored_precision", "nsec", "pres", "oflags", "musl_oflags", "idBuf", "promises", "resultPtr", "resultVal", "onFulfilled", "onRejected", "newId", "resultBuf", "results", "fulfill", "errorBuf", "returnValuePtr", "exception", "type_addr_addr", "message_addr_addr", "type_addr", "message_addr", "imagePlugin", "img", "audioPlugin", "audio", "fail", "encode64", "BASE", "PAD", "leftchar", "leftbits", "pointerLockChange", "ev", "useWebGL", "setInModule", "contextAttributes", "attribute", "lockPointer", "resizeCanvas", "fullscreenChange", "canvasContainer", "CFS", "pageX", "pageY", "cw", "scrollX", "scrollY", "adjustedX", "adjustedY", "touch", "coords", "noUpdates", "wNative", "hNative", "_file", "suffix", "_suffix", "cname", "script", "millis", "onloadCallback", "wrapper", "buflen", "title", "styleSheet", "rules", "callbackId", "callbackInfo", "transferObject", "image", "_url", "destinationDirectory", "userdata", "onprogress", "_request", "_param", "http", "percentComplete", "free", "onerrorjs", "statusText", "months", "locale", "how", "symDict", "_callback", "firsts", "counts", "drawcount", "instanceCounts", "offsets", "dstLength", "heapType", "writeLength", "attributes", "attr32", "powerPreference", "success", "GLContext", "power", "extension", "extString", "webGlEventHandlerFunc", "dstType", "lastX", "lastY", "newX", "newY", "keycode", "main", "simulatedEvent", "button", "argcp", "argv", "isTouchDevice", "msec", "cursor", "cursorStyle", "display", "border_width", "class_", "visual", "valuemask", "window", "win", "hints", "hmm", "propagate", "event_mask", "even_send", "attribList", "config", "config_size", "numConfigs", "alphaSize", "depthSize", "stencilSize", "samples", "requestedPriority", "nativeDisplayType", "majorVersion", "minorVersion", "configs", "attrib_list", "surface", "contextAttribs", "glesContextVersion", "api", "nativeEngineId", "interval", "draw", "read", "readdraw", "dpy", "uu", "uu1", "uu2", "uuid", "inp", "upper", "db", "req", "transaction", "fileStore", "dbName", "store", "onstore", "ondelete", "oncheck", "exists", "onclear", "pexists", "oldFiber", "newFiber", "surf", "surfData", "second", "leftX", "leftY", "rightX", "rightY", "fmt", "color", "rgba", "g", "usePageCanvas", "rmask", "gmask", "bmask", "amask", "is_SDL_HWSURFACE", "is_SDL_HWPALETTE", "is_SDL_OPENGL", "pixelFormat", "bpp", "rX", "rY", "rW", "rH", "fullWidth", "fullHeight", "startX", "startY", "endX", "endY", "data32", "colors32", "refcountPointer", "refcount", "srcrect", "dstrect", "scale", "srcData", "dstData", "sr", "dr", "widthScale", "heightScale", "blitw", "blith", "oldAlpha", "unpressAllPressedKeys", "firstTouch", "mouseEventType", "mouseEvent", "down", "scan", "cStr", "lx", "ly", "dx", "dy", "SDL_WINDOWEVENT_FOCUS_GAINED", "SDL_WINDOWEVENT_FOCUS_LOST", "SDL_WINDOWEVENT_SHOWN", "SDL_WINDOWEVENT_HIDDEN", "visibilityEventID", "fontName", "fontData", "fontString", "tempCtx", "volume", "webAudio", "heapPtr", "sizeSamplesPerChannel", "dstAudioBuffer", "numChannels", "channelData", "joystick", "buttons", "prevState", "buttonState", "fcn", "deviceIndex", "gamepads", "initFlags", "keyboardListeningElement", "max_size", "driverName", "colors", "isScreen", "data8", "numrects", "rects", "icon", "numKeys", "toggle", "pitch", "pitchOfDst", "row", "baseOfSrc", "baseOfDst", "col", "oldData", "newData", "smooth", "angle", "zoom", "diagonal", "copy", "requestedEventCount", "action", "retrievedEventCount", "handler", "firstColor", "nColors", "pixel", "rwopsID", "freeSrc", "cleanup", "rwops", "addCleanup", "callStbImage", "comp", "raw", "imageData", "sourcePtr", "destPtr", "gray", "_name", "desired", "obtained", "totalSamples", "secsUntilNextPlayStart", "preemptBufferFeedSecs", "sizeBytes", "sizeSamples", "soundBuffer", "curtime", "playtime", "pauseOn", "mutex", "cond", "channels", "chunksize", "channel", "left", "right", "freesrc", "canPlayWithWebAudio", "onDecodeComplete", "blob", "mem", "numSamples", "halt", "loops", "ticks", "channelInfo", "pausedCount", "offscreenCanvas", "font", "minx", "maxx", "miny", "maxy", "advance", "y1", "y2", "cssColor", "rx", "ry", "renderer", "fullscreen", "redTable", "greenTable", "blueTable", "gamepad", "axis", "hat", "ball", "dxptr", "dyptr", "on", "pfnBeginThread", "pfnEndThread", "thread", "ms", "chunk", "distance", "loop", "freedst", "slab", "allocator", "lastChar", "js", "signature", "argsIndex", "firstElement", "isClassMethodFunc", "returns", "isAsync", "destructorSig", "numArgs", "minArgs", "maxArgs", "throwBindingError", "argCountMessage", "requiredArgCount", "needsDestructorStack", "argsListWired", "invokerFnBody", "dtorStack", "args1", "returnVal", "paramName", "baseErrorType", "errorName", "errorClass", "unboundTypes", "seen", "visit", "prevFunc", "numArguments", "k", "rawOptionalType", "classType", "cppInvokerFunc", "cppTargetFunc", "expectedArgCount", "closureArgs", "invokerFn", "rawFunction", "makeDynCaller", "rawArgTypesAddr", "rawInvoker", "isNonnullReturn", "invokerArgsArray", "constructorSignature", "rawConstructor", "destructorSignature", "rawDestructor", "rawTupleType", "getterReturnType", "getterSignature", "getterContext", "setterArgumentType", "setterSignature", "setter", "setterContext", "reg", "elementsLength", "elementTypes", "elt", "structType", "fieldName", "fieldRecords", "fieldTypes", "field", "fields", "ptrClass", "desiredClass", "handleClass", "clonedHandle", "registeredClass", "isReference", "isConst", "isSmartPointer", "pointeeType", "sharingPolicy", "rawGetPointee", "rawShare", "$$", "toDelete", "hasSmartPtr", "prototype", "record", "hasSmartPtrType", "rawPointer", "makeDefaultHandle", "actualType", "registeredPointerRecord", "toType", "dp", "getInstanceTypeName", "other", "leftClass", "rightClass", "clone", "instancePrototype", "baseClass", "getActualType", "upcast", "downcast", "rawPointerType", "rawConstPointerType", "baseClassRawType", "getActualTypeSignature", "upcastSignature", "downcastSignature", "legalFunctionName", "basePrototype", "referenceConverter", "pointerConverter", "constPointerConverter", "rawClassType", "invokerSignature", "rawArgTypes", "this_", "isPureVirtual", "unboundTypesHandler", "method", "memberFunction", "desc", "derivedClass", "rawFieldType", "rawFieldPtr", "fieldType", "constructorName", "wrapperType", "wrapperPrototype", "baseClassPrototype", "baseConstructor", "ctor", "inner", "rawPointeeType", "getPointeeSignature", "shareSignature", "registeredPointer", "isSigned", "rawEnumType", "enumValue", "enumType", "Enum", "Value", "property", "iterable", "iterator", "promiseHandle", "awaiterPtr", "resolveHandlePtr", "rejectHandlePtr", "rejectWithCurrentException", "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13", "a14", "a15", "a16", "a17", "a18", "a19", "a20", "a21", "wasmExports", "makeWrapper_pp", "makeWrapper_p", "makeWrapper_pppp", "makeWrapper_ppp", "makeWrapper_p_", "makeWrapper_pP", "runCaller", "entryFunction", "argc", "argv_ptr", "doRun", "require_duckdb_eh", "__commonJSMin", "_a", "resolve", "reject", "status", "toThrow", "path", "filename", "ret", "binary", "err", "data", "url", "xhr", "response", "condition", "text", "b", "cb", "id", "callback", "what", "e", "f", "file", "binaryFile", "imports", "receiver", "reason", "result", "info", "receiveInstance", "instance", "module", "metadata", "receiveInstantiationResult", "$0", "$1", "$2", "$3", "i", "len", "ptr1", "ptr2", "z", "error", "uInt8Array", "fileOnWasmHeap", "properArray", "iii", "LEN123", "$4", "$5", "post_payload", "letter", "headers", "headersOnWasmHeap", "jsString", "lengthBytes", "stringOnWasmHeap", "os", "fs", "array", "l", "folder", "filePath", "int32", "Worker", "worker", "int32_2", "x", "valid", "__publicField", "obj", "symName", "rtn", "callbacks", "heapOrArray", "idx", "maxBytesToRead", "endIdx", "endPtr", "str", "u0", "u1", "u2", "ch", "offset", "end", "getU8", "getLEB", "mul", "byte", "getString", "failIf", "message", "name", "dylinkSection", "int32View", "magicNumberFound", "section_size", "customSection", "neededDynlibsCount", "libname", "WASM_DYLINK_MEM_INFO", "WASM_DYLINK_NEEDED", "WASM_DYLINK_EXPORT_INFO", "WASM_DYLINK_IMPORT_INFO", "WASM_SYMBOL_TLS", "WASM_SYMBOL_BINDING_MASK", "WASM_SYMBOL_BINDING_WEAK", "subsectionType", "subsectionSize", "count", "symname", "flags", "modname", "ptr", "type", "handle", "syms", "dso", "size", "alignment", "n", "target", "sig", "typeNames", "sigRet", "sigParam", "typeCodes", "func", "typeSectionBody", "bytes", "wrappedFunc", "funcPtr", "item", "wrapped", "exports", "replace", "value", "memoryBase", "relocated", "existing", "direct", "sym", "resolved", "stubs", "prop", "args", "chain", "dynNeeded", "needed", "libName", "exp", "onload", "onerror", "noRunDep", "dep", "arrayBuffer", "wasmPlugin", "byteArray", "localScope", "loadLibData", "dataSize", "libData", "libFile", "getExports", "preloaded", "moduleLoaded", "entry", "lib", "lo", "hi", "line", "fp", "splitPathRe", "parts", "allowAboveRoot", "up", "last", "isAbsolute", "trailingSlash", "p", "root", "dir", "lastSlash", "paths", "view", "crypto_module", "randomFillSync", "randomBytes", "resolvedPath", "resolvedAbsolute", "from", "to", "trim", "arr", "start", "fromParts", "toParts", "length", "samePartsLength", "outputParts", "c", "heap", "outIdx", "maxBytesToWrite", "startIdx", "u", "stringy", "dontAddNull", "u8array", "numBytesWritten", "BUFSIZE", "buf", "bytesRead", "fd", "dev", "ops", "stream", "tty", "buffer", "pos", "val", "optional_actions", "address", "mount", "parent", "mode", "node", "newCapacity", "prevCapacity", "CAPACITY_DOUBLING_MAX", "oldContents", "newSize", "attr", "old_node", "new_dir", "new_name", "new_node", "entries", "key", "newname", "oldpath", "position", "contents", "canOwn", "whence", "prot", "allocated", "mmapFlags", "fileData", "canRead", "canWrite", "fullname", "finish", "handled", "plugin", "dontCreateFile", "preFinish", "processData", "flagModes", "errno", "rdev", "opts", "defaults", "current", "current_path", "islast", "link", "lookup", "parentid", "hash", "errCode", "nodeName", "flag", "perms", "isdir", "origStream", "_b", "device", "ma", "mi", "mounts", "check", "m", "populate", "completed", "doCallback", "done", "mountpoint", "pseudo", "mountRoot", "next", "dirs", "d", "newpath", "old_path", "new_path", "old_dirname", "new_dirname", "old_name", "old_dir", "relative", "dontFollow", "uid", "gid", "atime", "mtime", "created", "seeking", "bytesWritten", "cmd", "arg", "stat", "actualNumBytes", "randomBuffer", "randomLeft", "randomByte", "proc_self", "input", "output", "stdin", "stdout", "stderr", "code", "dontResolveLastLink", "part", "properties", "LazyUint8Array", "chunkOffset", "chunkNum", "getter", "datalength", "header", "hasByteServing", "usesGzip", "chunkSize", "doXHR", "lazyArray", "stream_ops", "keys", "fn", "writeChunks", "dirfd", "allowEmpty", "dirstream", "ctime", "addr", "nfds", "readfds", "writefds", "exceptfds", "timeout", "total", "srcReadLow", "srcReadHigh", "srcWriteLow", "srcWriteHigh", "srcExceptLow", "srcExceptHigh", "dstReadLow", "dstReadHigh", "dstWriteLow", "dstWriteHigh", "dstExceptLow", "dstExceptHigh", "allLow", "allHigh", "low", "high", "mask", "timeoutInMillis", "tv_sec", "tv_usec", "event", "param", "family", "protocol", "streaming", "sock", "request", "varargs", "msg", "port", "ws", "subProtocols", "WebSocketConstructor", "peer", "first", "handleOpen", "queued", "handleMessage", "encoder", "wasfirst", "newport", "isBinary", "dest", "peers", "backlog", "WebSocketServer", "host", "newsock", "listensock", "queuedLength", "queuedOffset", "queuedBuffer", "res", "bytesRemaining", "socket", "tmp", "words", "w", "valid6regx", "sa", "addrlen", "d1", "d2", "ints", "word", "longest", "lastzero", "zstart", "hasipv4", "v4part", "salen", "addrp", "d3", "old", "newfd", "amode", "advice", "offset_low", "offset_high", "len_low", "len_high", "nofollow", "owner", "group", "newStream", "length_low", "length_high", "outPtr", "cwd", "cwdLengthInBytes", "dirp", "struct_size", "off", "child", "level", "optname", "optval", "optlen", "op", "termios", "argp", "c_iflag", "c_oflag", "c_cflag", "c_lflag", "c_cc", "winsize", "pipe", "rName", "wName", "rNode", "wNode", "readableStream", "writableStream", "bucket", "currentLength", "toRead", "totalRead", "toRemove", "currBucket", "bucketSize", "tmpSlice", "dataLen", "freeBytesInCurrBuffer", "numBuckets", "remElements", "newBucket", "fdPtr", "fds", "nonzero", "pollfd", "events", "bufsize", "endChar", "iov", "num", "iovbase", "iovlen", "olddirfd", "newdirfd", "namelen", "j", "addr_len", "domain", "linkpath", "times", "now", "seconds", "nanoseconds", "sz", "sp", "cmsg", "jsflags", "searchpaths", "global", "combinedFlags", "symbol", "symbolIndex", "newSymIndex", "origSym", "primitiveType", "minRange", "maxRange", "codes", "myTypes", "dependentTypes", "getTypeConverters", "onComplete", "typeConverters", "myTypeConverters", "unregisteredTypes", "registered", "dt", "rawType", "registeredInstance", "options", "trueValue", "falseValue", "wt", "destructors", "pointer", "rv", "v", "t", "width", "signed", "fromWireType", "bitshift", "isUnsignedType", "checkAssertions", "toTypeName", "toWireType", "dataTypeIndex", "typeMapping", "TA", "decodeMemoryView", "stdStringIsUTF8", "payload", "decodeStartPtr", "currentBytePtr", "maxRead", "stringSegment", "a", "valueIsOfTypeString", "base", "charCode", "maxIdx", "codeUnit", "startPtr", "numCharsToWrite", "utf32", "trailSurrogate", "charSize", "decodeString", "encodeString", "readCharAt", "lengthBytesUTF", "maxReadBytes", "o", "implicit", "onsuccess", "user_data", "errorCallback", "successCallback", "promise", "nameString", "src", "height", "command", "cmdstr", "cp", "__require", "_W_EXITCODE", "signalToNumber", "caller", "objHandle", "methodName", "destructorsRef", "humanName", "impl", "argCount", "argTypes", "body", "returnType", "constructor", "argumentList", "dummy", "r", "kind", "types", "retType", "functionBody", "argsList", "params", "invoker", "invokerFunction", "functionName", "del", "time_low", "time_high", "tmPtr", "time", "date", "yday", "year", "leap", "monthDaysCumulative", "summerOffset", "winterOffset", "dst", "guessedOffset", "dstOffset", "nonDstOffset", "trueOffset", "timeMs", "which", "timeout_ms", "timezone", "daylight", "std_name", "dst_name", "currentYear", "winter", "summer", "stdTimezoneOffset", "extractZone", "timezoneOffset", "sign", "absOffset", "hours", "minutes", "winterName", "summerName", "timeUntilNextTick", "setImmediates", "emscriptenMainLoopMessageId", "MainLoop_setImmediate_messageHandler", "iterFunc", "fps", "simulateInfiniteLoop", "noSetTiming", "thisMainLoopId", "checkIsRunning", "blocker", "remaining", "timingMode", "timingValue", "expected", "pre", "post", "delay", "RAF", "ctx", "lookahead", "currentTime", "startTime", "startOffset", "bufCursor", "audioSrc", "lookaheadTime", "skipCount", "duration", "nextStartTime", "delta", "loopStart", "loopEnd", "srcDuration", "state", "templateBuf", "panner", "distanceModel", "listener", "posX", "posY", "posZ", "dirX", "dirY", "dirZ", "lPosX", "lPosY", "lPosZ", "lBackX", "lBackY", "lBackZ", "lUpX", "lUpY", "lUpZ", "inverseMagnitude", "y", "invMag", "lRightX", "lRightY", "lRightZ", "oldX", "oldY", "oldZ", "oldShift", "velX", "velY", "velZ", "lVelX", "lVelY", "lVelZ", "speedOfSound", "dopplerFactor", "slX", "slY", "slZ", "magSl", "vls", "vss", "audioBuf", "playing", "funcname", "bufferId", "sourceId", "bytesPerFrame", "srcLen", "frequency", "bufId", "bytesPerSec", "deviceId", "value0", "value1", "value2", "format", "pData", "freq", "channel0", "channel1", "pValues", "pBufferIds", "pSourceIds", "srcId", "model", "gain", "pValue0", "pValue1", "pValue2", "pValue", "pEnumName", "pExtName", "_c", "_d", "track", "object", "elements", "element", "pDeviceName", "requestedSampleRate", "bufferFrameCapacity", "resolvedDeviceName", "has_getUserMedia", "AudioContext", "outputChannelCount", "newF32Array", "cap", "newI16Array", "newU8Array", "requestedSampleType", "newSampleArray", "buffers", "chan", "newCapture", "onError", "mediaStreamError", "onSuccess", "mediaStream", "inputChannelCount", "processorFrameCount", "audioProcessingEvent", "srcBuf", "wi", "pFrames", "requestedFrameCount", "dstfreq", "srcfreq", "fratio", "setF32Sample", "sample", "setI16Sample", "setU8Sample", "setSample", "frame_i", "lefti", "righti", "lefts", "rights", "pAttrList", "attrs", "hrtf", "ac", "ctxId", "contextId", "hrtfStatus", "nsamples", "pathLen", "fileId", "fileName", "fileNameLen", "fromLen", "toLen", "location", "Module", "feature", "funcId", "descPtr", "descSize", "ptrsPtr", "ptrsSize", "index", "sigPtr", "wide", "argbuf", "ext", "divisor", "primcount", "indices", "vao", "bufs", "supportedExtensions", "errorCode", "table", "createFunction", "objectTable", "shader", "string", "source", "canvas", "webGLContextAttributes", "fixedGetContext", "ver", "gl", "context", "contextHandle", "GLctx", "x0", "program", "framebuffer", "renderbuffer", "texture", "x1", "x2", "x3", "usage", "origin", "depth", "red", "green", "blue", "alpha", "internalFormat", "border", "imageSize", "xoffset", "yoffset", "x4", "x5", "x6", "x7", "shaderType", "framebuffers", "ids", "query", "renderbuffers", "textures", "vaos", "bufArray", "attachment", "renderbuffertarget", "textarget", "arrays", "funcName", "bufSize", "numBytesWrittenExclNull", "maxCount", "shaders", "lower", "name_", "formats", "pname", "maxLength", "infoLog", "log", "numActiveUniforms", "numActiveAttributes", "numActiveUniformBlocks", "precisionType", "range", "precision", "logLength", "sourceLength", "$webglGetExtensions", "exts", "s", "webGLVersion", "glVersion", "glslVersion", "ver_re", "ver_num", "uniformLocsById", "uniformSizeAndIdsByName", "nm", "lb", "arrayName", "arrayIndex", "uniformBaseName", "leftBrace", "sizeAndId", "webglLoc", "fb", "rb", "face", "factor", "units", "clamp", "sizePerPixel", "roundedToNextMultipleOf", "plainRowSize", "alignedRowSize", "colorChannels", "pixels", "pixelData", "invert", "binaryformat", "v0", "v1", "v2", "v3", "transpose", "normalized", "stride", "promiseInfo", "pages", "requestedSize", "oldSize", "maxHeapSize", "cutDown", "overGrownHeapSize", "replacement", "pbuffer", "pnum", "perror", "lang", "env", "strings", "__environ", "environ_buf", "penviron_count", "penviron_buf_size", "pbuf", "rightsBase", "rightsInheriting", "iovcnt", "curr", "newOffset", "service", "hint", "out", "addrs", "canon", "proto", "ai", "allocaddrinfo", "nodelen", "serv", "servlen", "overflowed", "sum", "days", "newDate", "currentMonth", "daysInCurrentMonth", "tm", "pattern", "SPECIAL_CHARS", "ii", "EQUIVALENT_MATCHERS", "DATE_PATTERNS", "MONTH_NUMBERS", "DAY_NUMBERS_SUN_FIRST", "DAY_NUMBERS_MON_FIRST", "capture", "pattern_out", "_", "pat", "matches", "initDate", "fixup", "min", "max", "getMatch", "hour", "day", "leapYear", "month", "daysUntilMonth", "weekDay", "weekDayNumber", "weekNumber", "janFirst", "endDate", "match", "fullDate", "ident", "toC", "convertReturnValue", "cArgs", "stack", "converter", "onDone", "sections", "prelude", "wrappersig", "typeSection", "importSection", "functionSection", "exportSection", "convert_code", "localGet", "codeBody", "codeSection", "memoryIndex", "stayopen", "allocprotoent", "aliases", "nameBuf", "aliasListBuf", "alias", "aliasBuf", "pe", "list", "map", "number", "callstack", "iThisFunc", "iThisFunc2", "iNextLine", "lines", "newFirefoxRe", "firefoxRe", "chromeRe", "symbolName", "lineno", "column", "haveSourceMap", "orig", "bits", "half", "textIndex", "argIndex", "prepVararg", "getNextArg", "currArg", "startTextIndex", "flagAlwaysSigned", "flagLeftAlign", "flagAlternative", "flagZeroPad", "flagPadSign", "flagsLoop", "precisionSet", "precisionChr", "argSize", "nextNext", "argText", "limit", "currAbsArg", "prefix", "chr", "isGeneral", "effectivePrecision", "exponent", "argLength", "emAsmAddr", "sync", "trace", "ipBefore", "ip", "ex", "name_addr", "content", "numericArgs", "numericRet", "targetFunction", "precedence", "arraysHaveEqualContent", "arrA", "arrB", "call", "deferredCalls", "eventTypeString", "h", "eventHandler", "cString", "domElement", "userData", "useCapture", "callbackfunc", "eventTypeId", "targetThread", "keyEventHandlerFunc", "keyEventData", "eventStruct", "rect", "mouseEventHandlerFunc", "mouseState", "wheelHandlerFunc", "wheelEvent", "uiEventHandlerFunc", "uiEvent", "focusEventHandlerFunc", "focusEvent", "deviceOrientationEventHandlerFunc", "orientationState", "supportedFields", "ag", "rr", "deviceMotionEventHandlerFunc", "motionState", "orientationsType1", "orientationsType2", "orientationIndex", "orientationAngle", "screenOrientObj", "orientationChangeEventHandlerFunc", "orientationChangeEvent", "allowedOrientations", "orientations", "succeeded", "fullscreenElement", "isFullscreen", "reportedElement", "fullscreenChangeEventhandlerFunc", "fullscreenChangeEvent", "fullscreenStatus", "targetInt", "canvasSize", "oldWidth", "oldHeight", "oldCssWidth", "oldCssHeight", "oldBackgroundColor", "oldDocumentBackgroundColor", "oldPaddingLeft", "oldPaddingRight", "oldPaddingTop", "oldPaddingBottom", "oldMarginLeft", "oldMarginRight", "oldMarginTop", "oldMarginBottom", "oldDocumentBodyMargin", "oldDocumentOverflow", "oldDocumentScroll", "oldImageRendering", "restoreOldStyle", "topBottom", "leftRight", "strategy", "cssWidth", "cssHeight", "windowedCssWidth", "windowedCssHeight", "windowedRttWidth", "windowedRttHeight", "desiredCssHeight", "desiredCssWidth", "dpiScale", "newWidth", "newHeight", "onlyVisibleElement", "hiddenElements", "children", "elem", "dpr", "inHiDPIFullscreenMode", "inAspectRatioFixedFullscreenMode", "inPixelPerfectFullscreenMode", "inCenteredWithoutScalingFullscreenMode", "screenWidth", "screenHeight", "topMargin", "deferUntilInEventHandler", "fullscreenStrategy", "restoreWindowedState", "pointerLockElement", "isPointerlocked", "pointerlockChangeEventHandlerFunc", "pointerlockChangeEvent", "pointerlockErrorEventHandlerFunc", "pointerlockStatus", "msecs", "msecsArray", "numEntries", "vibrateList", "visibilityStates", "visibilityState", "visibilityChangeEventHandlerFunc", "visibilityChangeEvent", "visibilityStatus", "touchEventHandlerFunc", "touches", "et", "touchEvent", "targetRect", "numTouches", "idx32", "gamepadEventHandlerFunc", "gamepadEvent", "gamepadState", "beforeUnloadEventHandlerFunc", "confirmationMessage", "batteryEventHandlerFunc", "batteryEvent", "batteryState", "timeStamp", "tick", "maxbytes", "bytesWrittenExcludingNull", "frame", "pc", "clock_id", "clk_id", "ignored_precision_low", "ignored_precision_high", "ptime", "ignored_precision", "nsec", "pres", "oflags", "musl_oflags", "idBuf", "promises", "resultPtr", "resultVal", "onFulfilled", "onRejected", "newId", "resultBuf", "results", "fulfill", "errorBuf", "returnValuePtr", "type_addr_addr", "message_addr_addr", "type_addr", "message_addr", "unwind_header", "imagePlugin", "img", "audioPlugin", "audio", "fail", "encode64", "BASE", "PAD", "leftchar", "leftbits", "pointerLockChange", "ev", "useWebGL", "setInModule", "contextAttributes", "attribute", "lockPointer", "resizeCanvas", "fullscreenChange", "canvasContainer", "CFS", "pageX", "pageY", "cw", "scrollX", "scrollY", "adjustedX", "adjustedY", "touch", "coords", "noUpdates", "wNative", "hNative", "_file", "suffix", "_suffix", "cname", "script", "millis", "onloadCallback", "wrapper", "buflen", "title", "styleSheet", "rules", "callbackId", "callbackInfo", "transferObject", "image", "_url", "destinationDirectory", "userdata", "onprogress", "_request", "_param", "http", "percentComplete", "free", "onerrorjs", "statusText", "months", "locale", "how", "symDict", "_callback", "firsts", "counts", "drawcount", "instanceCounts", "offsets", "dstLength", "heapType", "writeLength", "attributes", "attr32", "powerPreference", "success", "GLContext", "power", "extension", "extString", "webGlEventHandlerFunc", "dstType", "lastX", "lastY", "newX", "newY", "keycode", "main", "simulatedEvent", "button", "argcp", "argv", "isTouchDevice", "msec", "cursor", "cursorStyle", "display", "border_width", "class_", "visual", "valuemask", "window", "win", "hints", "hmm", "propagate", "event_mask", "even_send", "attribList", "config", "config_size", "numConfigs", "alphaSize", "depthSize", "stencilSize", "samples", "requestedPriority", "nativeDisplayType", "majorVersion", "minorVersion", "configs", "attrib_list", "surface", "contextAttribs", "glesContextVersion", "api", "nativeEngineId", "interval", "draw", "read", "readdraw", "dpy", "uu", "uu1", "uu2", "uuid", "inp", "upper", "db", "req", "transaction", "fileStore", "dbName", "store", "onstore", "ondelete", "oncheck", "exists", "onclear", "pexists", "oldFiber", "newFiber", "surf", "surfData", "second", "leftX", "leftY", "rightX", "rightY", "fmt", "color", "rgba", "g", "usePageCanvas", "rmask", "gmask", "bmask", "amask", "is_SDL_HWSURFACE", "is_SDL_HWPALETTE", "is_SDL_OPENGL", "pixelFormat", "bpp", "rX", "rY", "rW", "rH", "fullWidth", "fullHeight", "startX", "startY", "endX", "endY", "data32", "colors32", "refcountPointer", "refcount", "srcrect", "dstrect", "scale", "srcData", "dstData", "sr", "dr", "widthScale", "heightScale", "blitw", "blith", "oldAlpha", "unpressAllPressedKeys", "firstTouch", "mouseEventType", "mouseEvent", "down", "scan", "cStr", "lx", "ly", "dx", "dy", "SDL_WINDOWEVENT_FOCUS_GAINED", "SDL_WINDOWEVENT_FOCUS_LOST", "SDL_WINDOWEVENT_SHOWN", "SDL_WINDOWEVENT_HIDDEN", "visibilityEventID", "fontName", "fontData", "fontString", "tempCtx", "volume", "webAudio", "heapPtr", "sizeSamplesPerChannel", "dstAudioBuffer", "numChannels", "channelData", "joystick", "buttons", "prevState", "buttonState", "fcn", "deviceIndex", "gamepads", "initFlags", "keyboardListeningElement", "max_size", "driverName", "colors", "isScreen", "data8", "numrects", "rects", "icon", "numKeys", "toggle", "pitch", "pitchOfDst", "row", "baseOfSrc", "baseOfDst", "col", "oldData", "newData", "smooth", "angle", "zoom", "diagonal", "copy", "requestedEventCount", "action", "retrievedEventCount", "handler", "firstColor", "nColors", "pixel", "rwopsID", "freeSrc", "cleanup", "rwops", "addCleanup", "callStbImage", "comp", "raw", "imageData", "sourcePtr", "destPtr", "gray", "_name", "desired", "obtained", "totalSamples", "secsUntilNextPlayStart", "preemptBufferFeedSecs", "sizeBytes", "sizeSamples", "soundBuffer", "curtime", "playtime", "pauseOn", "mutex", "cond", "channels", "chunksize", "channel", "left", "right", "freesrc", "canPlayWithWebAudio", "onDecodeComplete", "blob", "mem", "numSamples", "halt", "loops", "ticks", "channelInfo", "pausedCount", "offscreenCanvas", "font", "minx", "maxx", "miny", "maxy", "advance", "y1", "y2", "cssColor", "rx", "ry", "renderer", "fullscreen", "redTable", "greenTable", "blueTable", "gamepad", "axis", "hat", "ball", "dxptr", "dyptr", "on", "pfnBeginThread", "pfnEndThread", "thread", "ms", "chunk", "distance", "loop", "freedst", "slab", "allocator", "lastChar", "js", "signature", "argsIndex", "firstElement", "isClassMethodFunc", "returns", "isAsync", "destructorSig", "numArgs", "minArgs", "maxArgs", "throwBindingError", "argCountMessage", "requiredArgCount", "needsDestructorStack", "argsListWired", "invokerFnBody", "dtorStack", "args1", "returnVal", "paramName", "baseErrorType", "errorName", "errorClass", "unboundTypes", "seen", "visit", "prevFunc", "numArguments", "k", "rawOptionalType", "classType", "cppInvokerFunc", "cppTargetFunc", "expectedArgCount", "closureArgs", "invokerFn", "rawFunction", "makeDynCaller", "rawArgTypesAddr", "rawInvoker", "isNonnullReturn", "invokerArgsArray", "constructorSignature", "rawConstructor", "destructorSignature", "rawDestructor", "rawTupleType", "getterReturnType", "getterSignature", "getterContext", "setterArgumentType", "setterSignature", "setter", "setterContext", "reg", "elementsLength", "elementTypes", "elt", "structType", "fieldName", "fieldRecords", "fieldTypes", "field", "fields", "ptrClass", "desiredClass", "handleClass", "clonedHandle", "registeredClass", "isReference", "isConst", "isSmartPointer", "pointeeType", "sharingPolicy", "rawGetPointee", "rawShare", "$$", "toDelete", "hasSmartPtr", "prototype", "record", "hasSmartPtrType", "rawPointer", "makeDefaultHandle", "actualType", "registeredPointerRecord", "toType", "dp", "getInstanceTypeName", "other", "leftClass", "rightClass", "clone", "instancePrototype", "baseClass", "getActualType", "upcast", "downcast", "rawPointerType", "rawConstPointerType", "baseClassRawType", "getActualTypeSignature", "upcastSignature", "downcastSignature", "legalFunctionName", "basePrototype", "referenceConverter", "pointerConverter", "constPointerConverter", "rawClassType", "invokerSignature", "rawArgTypes", "this_", "isPureVirtual", "unboundTypesHandler", "method", "memberFunction", "desc", "derivedClass", "rawFieldType", "rawFieldPtr", "fieldType", "constructorName", "wrapperType", "wrapperPrototype", "baseClassPrototype", "baseConstructor", "ctor", "inner", "rawPointeeType", "getPointeeSignature", "shareSignature", "registeredPointer", "isSigned", "rawEnumType", "enumValue", "enumType", "Enum", "Value", "property", "iterable", "iterator", "promiseHandle", "awaiterPtr", "resolveHandlePtr", "rejectHandlePtr", "rejectWithCurrentException", "a0", "a1", "a2", "a3", "a4", "wasmExports", "makeWrapper_pp", "makeWrapper_p", "makeWrapper_pppp", "makeWrapper_ppp", "makeWrapper_p_", "makeWrapper_pP", "runCaller", "entryFunction", "argc", "argv_ptr", "doRun", "arrow", "DuckDBConnection", "bindings", "conn", "callback", "text", "buffer", "reader", "allowStreamResult", "header", "resolve", "reject", "e", "iter", "ResultStreamIterator", "query", "stmt", "PreparedStatement", "name", "returns", "func", "table", "options", "path", "bufferI8", "connectionId", "statementId", "params", "StatusCode", "IsArrowBuffer", "status", "IsDuckDBWasmRetry", "TEXT_ENCODER", "TEXT_DECODER", "storeError", "mod", "response", "message", "msgBuffer", "heapAddr", "heapArray", "getTypeSize", "ptype", "ptrToArray", "ptr", "n", "heap", "ptrToUint8Array", "ptrToFloat64Array", "callScalarUDF", "runtime", "funcId", "descPtr", "descSize", "ptrsPtr", "ptrsSize", "udf", "rawDesc", "desc", "ptrs", "buildResolver", "arg", "_a", "validity", "raw", "strings", "stringLengths", "j", "subarray", "str", "row", "tmp", "children", "attr", "child", "resolver", "data", "argResolvers", "i", "resultDataLen", "resultDataPtr", "resultData", "resultValidityPtr", "resultValidity", "rawResultData", "args", "res", "resultLengthsPtr", "resultDataUTF8", "resultLengths", "totalLength", "utf8", "resultStringPtr", "resultStringBuf", "writerOffset", "resultUTF8", "retLen", "retPtr", "retBuffer", "e", "TextDecoderWrapper", "decoder", "data", "decodeText", "failWith", "mod", "msg", "copyBuffer", "begin", "length", "buffer", "copy", "readString", "DuckDBDataProtocol", "FileFlags", "callSRet", "funcName", "argTypes", "args", "stackPointer", "response", "status", "dataSize", "dropResponseBuffers", "DEFAULT_RUNTIME", "_mod", "_feature", "_fileId", "flags", "_fileNamePtr", "_fileNameLen", "_final", "_percentage", "_iteration", "_newSize", "_buffer", "_bytes", "_location", "_pathPtr", "_pathLen", "_fromPtr", "_fromLen", "_toPtr", "_toLen", "funcId", "descPtr", "descSize", "ptrsPtr", "ptrsSize", "callScalarUDF", "FileStatistics", "u8array", "f64", "blocks", "index", "out", "arrow", "arrowToSQLType", "type", "dec", "c", "arrowToSQLField", "map_", "name", "t", "TEXT_ENCODER", "DuckDBFeature", "DuckDBBindingsBase", "logger", "runtime", "onProgress", "_", "resolve", "x", "config", "s", "d", "callSRet", "readString", "dropResponseBuffers", "n", "version", "text", "BUF", "bufferPtr", "res", "conn", "DuckDBConnection", "worker", "copyBuffer", "allowStreamResult", "IsDuckDBWasmRetry", "IsArrowBuffer", "name", "returns", "func", "decl", "arrowToSQLType", "def", "statement", "params", "buffer", "options", "optJSON", "path", "k", "arrowToSQLField", "opt", "infoStr", "info", "url", "proto", "directIO", "ptr", "fileName", "protocol", "list", "item", "handle", "filePath", "fromCached", "fileHandle", "e", "handle_inner", "_a", "names", "pointers", "pointerOfArray", "str", "size", "ret", "i", "pointer", "copy", "file", "enable", "FileStatistics", "DuckDBAccessMode", "JSONTableShape", "TokenType", "LogLevel", "LogTopic", "LogEvent", "LogOrigin", "VoidLogger", "_entry", "ConsoleLogger", "level", "entry", "getLogLevelLabel", "getLogEventLabel", "event", "getLogTopicLabel", "topic", "getLogOriginLabel", "origin", "bulkMemory", "exceptions", "simd", "threads", "e", "package_default", "PACKAGE_NAME", "package_default", "PACKAGE_VERSION", "VERSION_PARTS", "PACKAGE_VERSION_MAJOR", "PACKAGE_VERSION_MINOR", "PACKAGE_VERSION_PATCH", "isNode", "userAgent", "isFirefox", "isSafari", "getJsDelivrBundles", "jsdelivr_dist_url", "PACKAGE_NAME", "PACKAGE_VERSION", "bigInt64Array", "wasmExceptions", "wasmThreads", "wasmSIMD", "wasmBulkMemory", "getPlatformFeatures", "exceptions", "threads", "simd", "bulkMemory", "selectBundle", "bundles", "platform", "import_js_sha256", "getHTTPHost", "config", "url", "bucket", "_a", "getS3Params", "method", "_b", "_c", "_d", "parsedS3Url", "parseS3Url", "path", "isPathStyleAccess", "endpointPath", "endpointUrl", "uriEncode", "input", "encode_slash", "hexDigit", "result", "i", "ch", "createS3Headers", "params", "payloadParams", "payloadHash", "res", "signedHeaders", "canonicalRequest", "canonicalRequestHashStr", "stringToSign", "signKey", "kDate", "kRegion", "kService", "signingKey", "signature", "createS3HeadersFromS3Config", "contentType", "payload", "addS3Headers", "xhr", "value", "header", "slashPos", "getHTTPUrl", "parsedUrl", "OPFS_PREFIX_LEN", "PATH_SEP_REGEX", "BROWSER_RUNTIME", "mod", "fileId", "cached", "s", "d", "n", "callSRet", "infoStr", "readString", "dropResponseBuffers", "info", "file", "error", "e", "_a", "filePaths", "protocol", "prepare", "path", "dirHandle", "opfsPath", "fileName", "folders", "folder", "fileHandle", "handle", "result", "filePath", "res", "dbPath", "_mod", "feature", "flags", "_b", "_c", "_d", "_e", "_f", "xhr", "getHTTPUrl", "addS3Headers", "data", "src", "contentLength", "modification_time", "actualContentLength", "contentRange", "contentLength2", "presumedLength", "head", "buffer", "fileSize", "failWith", "pathPtr", "pathLen", "globalInfo", "xhr2", "_fileId", "fileNamePtr", "fileNameLen", "newSize", "buf", "bytes", "location", "sliced", "out", "input", "done", "percentage", "repeat", "fromPtr", "fromLen", "toPtr", "toLen", "from", "to", "key", "value", "_pathPtr", "_pathLen", "response", "funcId", "descPtr", "descSize", "ptrsPtr", "ptrsSize", "callScalarUDF", "import_duckdb_mvp", "DuckDBBrowserBindings", "DuckDBBindingsBase", "logger", "runtime", "mainModuleURL", "pthreadWorkerURL", "path", "prefix", "imports", "success", "handlers", "response", "_a", "request", "contentLengthHdr", "contentLength", "start", "progress", "tracker", "chunk", "ctrl", "now", "p", "ts", "output", "xhr", "url", "error", "e", "buffer", "DuckDB", "DuckDBBrowserBindings", "logger", "runtime", "mainModuleURL", "pthreadWorkerURL", "moduleOverrides", "DuckDBWasm", "import_duckdb_eh", "DuckDB", "DuckDBBrowserBindings", "logger", "runtime", "mainModuleURL", "pthreadWorkerURL", "moduleOverrides", "DuckDBWasm", "createDuckDB", "bundles", "logger", "runtime", "getPlatformFeatures", "DuckDB"]
}
