{"version":3,"sources":["jsdelivr-header.js","webpack://rive/webpack/universalModuleDefinition","webpack://rive/npm/webgl_advanced/webgl_advanced.mjs","webpack://rive/src/animation/Animation.ts","webpack://rive/src/utils/registerTouchInteractions.ts","webpack://rive/src/utils/sanitizeUrl.ts","webpack://rive/src/utils/finalizationRegistry.ts","webpack://rive/webpack/bootstrap","/npm/@rive-app/webgl@2.35.0/webpack:/rive/webpack/runtime/define property getters","/npm/@rive-app/webgl@2.35.0/webpack:/rive/webpack/runtime/hasOwnProperty shorthand","/npm/@rive-app/webgl@2.35.0/webpack:/rive/webpack/runtime/make namespace object","webpack://rive/src/rive.ts"],"names":[],"mappings":"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","file":"/npm/@rive-app/webgl@2.35.0/rive.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@rive-app/webgl@2.35.0/rive.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rive\"] = factory();\n\telse\n\t\troot[\"rive\"] = factory();\n})(this, () => {\nreturn ","\nvar Rive = (() => {\n  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n  \n  return (\nfunction(moduleArg = {}) {\n  var moduleRtn;\n\nvar l = moduleArg, aa, ba, ca = new Promise((a, b) => {\n  aa = a;\n  ba = b;\n}), da = \"object\" == typeof window, ea = \"function\" == typeof importScripts;\nfunction fa() {\n  function a(g) {\n    const k = d;\n    c = b = 0;\n    d = new Map();\n    k.forEach(m => {\n      try {\n        m(g);\n      } catch (p) {\n        console.error(p);\n      }\n    });\n    this.jb();\n    e && e.Ib();\n  }\n  let b = 0, c = 0, d = new Map(), e = null, f = null;\n  this.requestAnimationFrame = function(g) {\n    b ||= requestAnimationFrame(a.bind(this));\n    const k = ++c;\n    d.set(k, g);\n    return k;\n  };\n  this.cancelAnimationFrame = function(g) {\n    d.delete(g);\n    b && 0 == d.size && (cancelAnimationFrame(b), b = 0);\n  };\n  this.Gb = function(g) {\n    f && (document.body.remove(f), f = null);\n    g || (f = document.createElement(\"div\"), f.style.backgroundColor = \"black\", f.style.position = \"fixed\", f.style.right = 0, f.style.top = 0, f.style.color = \"white\", f.style.padding = \"4px\", f.innerHTML = \"RIVE FPS\", g = function(k) {\n      f.innerHTML = \"RIVE FPS \" + k.toFixed(1);\n    }, document.body.appendChild(f));\n    e = new function() {\n      let k = 0, m = 0;\n      this.Ib = function() {\n        var p = performance.now();\n        m ? (++k, p -= m, 1000 < p && (g(1000 * k / p), k = m = 0)) : (m = p, k = 0);\n      };\n    }();\n  };\n  this.jb = function() {\n  };\n}\nfunction ia() {\n  console.assert(!0);\n  const a = new Map();\n  let b = -Infinity;\n  this.push = function(c) {\n    c = c + 255 >> 8;\n    a.has(c) && clearTimeout(a.get(c));\n    a.set(c, setTimeout(function() {\n      a.delete(c);\n      0 == a.length ? b = -Infinity : c == b && (b = Math.max(...a.keys()), console.assert(b < c));\n    }, 1000));\n    b = Math.max(c, b);\n    return b << 8;\n  };\n}\nconst ja = l.onRuntimeInitialized;\nl.onRuntimeInitialized = function() {\n  ja && ja();\n  let a = l.decodeAudio;\n  l.decodeAudio = function(e, f) {\n    e = a(e);\n    f(e);\n  };\n  let b = l.decodeFont;\n  l.decodeFont = function(e, f) {\n    e = b(e);\n    f(e);\n  };\n  const c = l.FileAssetLoader;\n  l.ptrToAsset = e => {\n    let f = l.ptrToFileAsset(e);\n    return f.isImage ? l.ptrToImageAsset(e) : f.isFont ? l.ptrToFontAsset(e) : f.isAudio ? l.ptrToAudioAsset(e) : f;\n  };\n  l.CustomFileAssetLoader = c.extend(\"CustomFileAssetLoader\", {__construct:function({loadContents:e}) {\n    this.__parent.__construct.call(this);\n    this.yb = e;\n  }, loadContents:function(e, f) {\n    e = l.ptrToAsset(e);\n    return this.yb(e, f);\n  },});\n  l.CDNFileAssetLoader = c.extend(\"CDNFileAssetLoader\", {__construct:function() {\n    this.__parent.__construct.call(this);\n  }, loadContents:function(e) {\n    let f = l.ptrToAsset(e);\n    e = f.cdnUuid;\n    if (\"\" === e) {\n      return !1;\n    }\n    (function(g, k) {\n      var m = new XMLHttpRequest();\n      m.responseType = \"arraybuffer\";\n      m.onreadystatechange = function() {\n        4 == m.readyState && 200 == m.status && k(m);\n      };\n      m.open(\"GET\", g, !0);\n      m.send(null);\n    })(f.cdnBaseUrl + \"/\" + e, g => {\n      f.decode(new Uint8Array(g.response));\n    });\n    return !0;\n  },});\n  l.FallbackFileAssetLoader = c.extend(\"FallbackFileAssetLoader\", {__construct:function() {\n    this.__parent.__construct.call(this);\n    this.eb = [];\n  }, addLoader:function(e) {\n    this.eb.push(e);\n  }, loadContents:function(e, f) {\n    for (let g of this.eb) {\n      if (g.loadContents(e, f)) {\n        return !0;\n      }\n    }\n    return !1;\n  },});\n  let d = l.computeAlignment;\n  l.computeAlignment = function(e, f, g, k, m = 1.0) {\n    return d.call(this, e, f, g, k, m);\n  };\n};\nconst ka = l.onRuntimeInitialized;\nl.onRuntimeInitialized = function() {\n  function a(t) {\n    this.G = t;\n    this.vb = t.getContext(\"2d\");\n    this.Ab = e;\n    this.R = [];\n    this.ia = 0;\n    this.clear = function() {\n      console.assert(0 == this.ia);\n      this.R = [];\n      f.delete(this);\n    };\n    this.save = function() {\n      ++this.ia;\n      this.R.push(e.save.bind(e));\n    };\n    this.restore = function() {\n      0 < this.ia && (this.R.push(e.restore.bind(e)), --this.ia);\n    };\n    this.transform = function(v) {\n      this.R.push(e.transform.bind(e, v));\n    };\n    this.align = function(v, z, D, F, M = 1.0) {\n      this.R.push(e.align.bind(e, v, z, D, F, M));\n    };\n    this.flush = function() {\n      console.assert(0 == this.ia);\n      f.add(this);\n      d && c();\n    };\n  }\n  function b(t) {\n    var v = {alpha:1, depth:0, stencil:8, antialias:0, premultipliedAlpha:1, preserveDrawingBuffer:0, powerPreference:\"high-performance\", failIfMajorPerformanceCaveat:0, enableExtensionsByDefault:1, explicitSwapControl:0, renderViaOffscreenBackBuffer:0,}, z = t.getContext(\"webgl2\", v);\n    z ||= t.getContext(\"webgl\", v);\n    var D = z, F = la(ma), M = {handle:F, attributes:v, version:v.zc, Sa:D};\n    D.canvas && (D.canvas.ic = M);\n    ma[F] = M;\n    (\"undefined\" == typeof v.Fb || v.Fb) && na(M);\n    oa(F);\n    v = g(t.width, t.height);\n    v.xb = F;\n    v.G = t;\n    v.Ua = t.width;\n    v.Ta = t.height;\n    v.wb = z;\n    return v;\n  }\n  function c() {\n    if (e) {\n      var t = e.zb, v = 0, z = 0, D = 0, F = Array(f.size), M = 0;\n      for (var N of f) {\n        N.ca = Math.min(N.G.width, t), N.ba = Math.min(N.G.height, t), N.Ha = N.ba * N.ca, v = Math.max(v, N.ca), z = Math.max(z, N.ba), D += N.Ha, F[M++] = N;\n      }\n      f.clear();\n      if (!(0 >= D)) {\n        v = 1 << (0 >= v ? 0 : 32 - Math.clz32(v - 1));\n        for (z = 1 << (0 >= z ? 0 : 32 - Math.clz32(z - 1)); z * v < D;) {\n          v <= z ? v *= 2 : z *= 2;\n        }\n        v = Math.min(v, t);\n        v = Math.min(z, t);\n        F.sort((ha, yb) => yb.Ha - ha.Ha);\n        D = new l.DynamicRectanizer(t);\n        for (N = 0; N < F.length;) {\n          D.reset(v, z);\n          for (M = N; M < F.length; ++M) {\n            var O = F[M], L = D.addRect(O.ca, O.ba);\n            if (0 > L) {\n              console.assert(M > N);\n              break;\n            }\n            O.oa = L & 65535;\n            O.pa = L >> 16;\n          }\n          O = m.push(D.drawWidth());\n          L = p.push(D.drawHeight());\n          console.assert(O >= D.drawWidth());\n          console.assert(L >= D.drawHeight());\n          console.assert(O <= t);\n          console.assert(L <= t);\n          e.G.width != O && (e.G.width = O);\n          e.G.height != L && (e.G.height = L);\n          e.clear();\n          for (O = N; O < M; ++O) {\n            L = F[O];\n            e.saveClipRect(L.oa, L.pa, L.oa + L.ca, L.pa + L.ba);\n            let ha = new l.Mat2D();\n            ha.xx = L.ca / L.G.width;\n            ha.yy = L.ba / L.G.height;\n            ha.xy = ha.yx = 0;\n            ha.tx = L.oa;\n            ha.ty = L.pa;\n            e.transform(ha);\n            for (const yb of L.R) {\n              yb();\n            }\n            e.restoreClipRect();\n            L.R = [];\n          }\n          for (e.flush(); N < M; ++N) {\n            O = F[N], L = O.vb, L.globalCompositeOperation = \"copy\", L.drawImage(e.G, O.oa, O.pa, O.ca, O.ba, 0, 0, O.G.width, O.G.height);\n          }\n          N = M;\n        }\n      }\n    }\n  }\n  ka && ka();\n  const d = navigator.userAgent.match(/firefox|fxios/i);\n  let e = null;\n  const f = new Set(), g = l.makeRenderer;\n  l.makeRenderer = function(t, v) {\n    return v ? (e || (e = b(document.createElement(\"canvas\")), v = e.wb, e.zb = Math.min(v.getParameter(v.MAX_RENDERBUFFER_SIZE), v.getParameter(v.MAX_TEXTURE_SIZE))), new a(t)) : b(t);\n  };\n  const k = l.Artboard.prototype.draw;\n  l.Artboard.prototype.draw = function(t) {\n    t.R ? t.R.push(k.bind(this, t.Ab)) : k.call(this, t);\n  };\n  const m = new ia(), p = new ia(), r = new fa();\n  l.requestAnimationFrame = r.requestAnimationFrame.bind(r);\n  l.cancelAnimationFrame = r.cancelAnimationFrame.bind(r);\n  l.enableFPSCounter = r.Gb.bind(r);\n  r.jb = c;\n  l.resolveAnimationFrame = c;\n  let w = l.load;\n  l.load = function(t, v, z = !0) {\n    const D = new l.FallbackFileAssetLoader();\n    void 0 !== v && D.addLoader(v);\n    z && (v = new l.CDNFileAssetLoader(), D.addLoader(v));\n    return Promise.resolve(w(t, D));\n  };\n  const y = l.WebGLRenderer.prototype.clear;\n  l.WebGLRenderer.prototype.clear = function() {\n    oa(this.xb);\n    const t = this.G;\n    if (this.Ua != t.width || this.Ta != t.height) {\n      this.resize(t.width, t.height), this.Ua = t.width, this.Ta = t.height;\n    }\n    y.call(this);\n  };\n  l.decodeImage = function(t, v) {\n    t = l.decodeImageSkia(t);\n    v(t);\n  };\n  let q = l.Renderer.prototype.align;\n  l.Renderer.prototype.align = function(t, v, z, D, F = 1.0) {\n    q.call(this, t, v, z, D, F);\n  };\n};\nvar pa = Object.assign({}, l), qa = \"./this.program\", ra = \"\", sa, ta;\nif (da || ea) {\n  ea ? ra = self.location.href : \"undefined\" != typeof document && document.currentScript && (ra = document.currentScript.src), _scriptName && (ra = _scriptName), ra.startsWith(\"blob:\") ? ra = \"\" : ra = ra.substr(0, ra.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1), ea && (ta = a => {\n    var b = new XMLHttpRequest();\n    b.open(\"GET\", a, !1);\n    b.responseType = \"arraybuffer\";\n    b.send(null);\n    return new Uint8Array(b.response);\n  }), sa = (a, b, c) => {\n    if (ua(a)) {\n      var d = new XMLHttpRequest();\n      d.open(\"GET\", a, !0);\n      d.responseType = \"arraybuffer\";\n      d.onload = () => {\n        200 == d.status || 0 == d.status && d.response ? b(d.response) : c();\n      };\n      d.onerror = c;\n      d.send(null);\n    } else {\n      fetch(a, {credentials:\"same-origin\"}).then(e => e.ok ? e.arrayBuffer() : Promise.reject(Error(e.status + \" : \" + e.url))).then(b, c);\n    }\n  };\n}\nvar va = l.print || console.log.bind(console), wa = l.printErr || console.error.bind(console);\nObject.assign(l, pa);\npa = null;\nl.thisProgram && (qa = l.thisProgram);\nvar xa;\nl.wasmBinary && (xa = l.wasmBinary);\nvar ya, za = !1, n, u, Aa, Ba, x, A, B, Ca;\nfunction Da() {\n  var a = ya.buffer;\n  l.HEAP8 = n = new Int8Array(a);\n  l.HEAP16 = Aa = new Int16Array(a);\n  l.HEAPU8 = u = new Uint8Array(a);\n  l.HEAPU16 = Ba = new Uint16Array(a);\n  l.HEAP32 = x = new Int32Array(a);\n  l.HEAPU32 = A = new Uint32Array(a);\n  l.HEAPF32 = B = new Float32Array(a);\n  l.HEAPF64 = Ca = new Float64Array(a);\n}\nvar Ea = [], Fa = [], Ga = [];\nfunction Ha() {\n  var a = l.preRun.shift();\n  Ea.unshift(a);\n}\nvar Ia = 0, Ja = null, Ka = null;\nfunction La(a) {\n  l.onAbort?.(a);\n  a = \"Aborted(\" + a + \")\";\n  wa(a);\n  za = !0;\n  a = new WebAssembly.RuntimeError(a + \". Build with -sASSERTIONS for more info.\");\n  ba(a);\n  throw a;\n}\nvar Ma = a => a.startsWith(\"data:application/octet-stream;base64,\"), ua = a => a.startsWith(\"file://\"), Na;\nfunction Oa(a) {\n  if (a == Na && xa) {\n    return new Uint8Array(xa);\n  }\n  if (ta) {\n    return ta(a);\n  }\n  throw \"both async and sync fetching of the wasm failed\";\n}\nfunction Pa(a) {\n  return xa ? Promise.resolve().then(() => Oa(a)) : new Promise((b, c) => {\n    sa(a, d => b(new Uint8Array(d)), () => {\n      try {\n        b(Oa(a));\n      } catch (d) {\n        c(d);\n      }\n    });\n  });\n}\nfunction Qa(a, b, c) {\n  return Pa(a).then(d => WebAssembly.instantiate(d, b)).then(c, d => {\n    wa(`failed to asynchronously prepare wasm: ${d}`);\n    La(d);\n  });\n}\nfunction Ra(a, b) {\n  var c = Na;\n  return xa || \"function\" != typeof WebAssembly.instantiateStreaming || Ma(c) || ua(c) || \"function\" != typeof fetch ? Qa(c, a, b) : fetch(c, {credentials:\"same-origin\"}).then(d => WebAssembly.instantiateStreaming(d, a).then(b, function(e) {\n    wa(`wasm streaming compile failed: ${e}`);\n    wa(\"falling back to ArrayBuffer instantiation\");\n    return Qa(c, a, b);\n  }));\n}\nvar Sa, Ta, Xa = {740770:(a, b, c, d, e) => {\n  if (\"undefined\" === typeof window || void 0 === (window.AudioContext || window.webkitAudioContext)) {\n    return 0;\n  }\n  if (\"undefined\" === typeof window.h) {\n    window.h = {Ca:0};\n    window.h.H = {};\n    window.h.H.Aa = a;\n    window.h.H.capture = b;\n    window.h.H.Ja = c;\n    window.h.ga = {};\n    window.h.ga.stopped = d;\n    window.h.ga.qb = e;\n    let f = window.h;\n    f.C = [];\n    f.fc = function(g) {\n      for (var k = 0; k < f.C.length; ++k) {\n        if (null == f.C[k]) {\n          return f.C[k] = g, k;\n        }\n      }\n      f.C.push(g);\n      return f.C.length - 1;\n    };\n    f.ub = function(g) {\n      for (f.C[g] = null; 0 < f.C.length;) {\n        if (null == f.C[f.C.length - 1]) {\n          f.C.pop();\n        } else {\n          break;\n        }\n      }\n    };\n    f.Gc = function(g) {\n      for (var k = 0; k < f.C.length; ++k) {\n        if (f.C[k] == g) {\n          return f.ub(k);\n        }\n      }\n    };\n    f.ra = function(g) {\n      return f.C[g];\n    };\n    f.Ra = [\"touchend\", \"click\"];\n    f.unlock = function() {\n      for (var g = 0; g < f.C.length; ++g) {\n        var k = f.C[g];\n        null != k && null != k.J && k.state === f.ga.qb && k.J.resume().then(() => {\n          Ua(k.kb);\n        }, m => {\n          console.error(\"Failed to resume audiocontext\", m);\n        });\n      }\n      f.Ra.map(function(m) {\n        document.removeEventListener(m, f.unlock, !0);\n      });\n    };\n    f.Ra.map(function(g) {\n      document.addEventListener(g, f.unlock, !0);\n    });\n  }\n  window.h.Ca += 1;\n  return 1;\n}, 742948:() => {\n  \"undefined\" !== typeof window.h && (window.h.Ra.map(function(a) {\n    document.removeEventListener(a, window.h.unlock, !0);\n  }), --window.h.Ca, 0 === window.h.Ca && delete window.h);\n}, 743252:() => void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia, 743356:() => {\n  try {\n    var a = new (window.AudioContext || window.webkitAudioContext)(), b = a.sampleRate;\n    a.close();\n    return b;\n  } catch (c) {\n    return 0;\n  }\n}, 743527:(a, b, c, d, e, f) => {\n  if (\"undefined\" === typeof window.h) {\n    return -1;\n  }\n  var g = {}, k = {};\n  a == window.h.H.Aa && 0 != c && (k.sampleRate = c);\n  g.J = new (window.AudioContext || window.webkitAudioContext)(k);\n  g.J.suspend();\n  g.state = window.h.ga.stopped;\n  c = 0;\n  a != window.h.H.Aa && (c = b);\n  g.W = g.J.createScriptProcessor(d, c, b);\n  g.W.onaudioprocess = function(m) {\n    if (null == g.sa || 0 == g.sa.length) {\n      g.sa = new Float32Array(B.buffer, e, d * b);\n    }\n    if (a == window.h.H.capture || a == window.h.H.Ja) {\n      for (var p = 0; p < b; p += 1) {\n        for (var r = m.inputBuffer.getChannelData(p), w = g.sa, y = 0; y < d; y += 1) {\n          w[y * b + p] = r[y];\n        }\n      }\n      Va(f, d, e);\n    }\n    if (a == window.h.H.Aa || a == window.h.H.Ja) {\n      for (Wa(f, d, e), p = 0; p < m.outputBuffer.numberOfChannels; ++p) {\n        for (r = m.outputBuffer.getChannelData(p), w = g.sa, y = 0; y < d; y += 1) {\n          r[y] = w[y * b + p];\n        }\n      }\n    } else {\n      for (p = 0; p < m.outputBuffer.numberOfChannels; ++p) {\n        m.outputBuffer.getChannelData(p).fill(0.0);\n      }\n    }\n  };\n  a != window.h.H.capture && a != window.h.H.Ja || navigator.mediaDevices.getUserMedia({audio:!0, video:!1}).then(function(m) {\n    g.Da = g.J.createMediaStreamSource(m);\n    g.Da.connect(g.W);\n    g.W.connect(g.J.destination);\n  }).catch(function(m) {\n    console.log(\"Failed to get user media: \" + m);\n  });\n  a == window.h.H.Aa && g.W.connect(g.J.destination);\n  g.kb = f;\n  return window.h.fc(g);\n}, 746404:a => window.h.ra(a).J.sampleRate, 746477:a => {\n  a = window.h.ra(a);\n  void 0 !== a.W && (a.W.onaudioprocess = function() {\n  }, a.W.disconnect(), a.W = void 0);\n  void 0 !== a.Da && (a.Da.disconnect(), a.Da = void 0);\n  a.J.close();\n  a.J = void 0;\n  a.kb = void 0;\n}, 746877:a => {\n  window.h.ub(a);\n}, 746927:a => {\n  a = window.h.ra(a);\n  a.J.resume();\n  a.state = window.h.ga.qb;\n}, 747066:a => {\n  a = window.h.ra(a);\n  a.J.suspend();\n  a.state = window.h.ga.stopped;\n}}, Ya = a => {\n  for (; 0 < a.length;) {\n    a.shift()(l);\n  }\n};\nfunction Za() {\n  var a = x[+$a >> 2];\n  $a += 4;\n  return a;\n}\nvar ab = (a, b) => {\n  for (var c = 0, d = a.length - 1; 0 <= d; d--) {\n    var e = a[d];\n    \".\" === e ? a.splice(d, 1) : \"..\" === e ? (a.splice(d, 1), c++) : c && (a.splice(d, 1), c--);\n  }\n  if (b) {\n    for (; c; c--) {\n      a.unshift(\"..\");\n    }\n  }\n  return a;\n}, bb = a => {\n  var b = \"/\" === a.charAt(0), c = \"/\" === a.substr(-1);\n  (a = ab(a.split(\"/\").filter(d => !!d), !b).join(\"/\")) || b || (a = \".\");\n  a && c && (a += \"/\");\n  return (b ? \"/\" : \"\") + a;\n}, cb = a => {\n  var b = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);\n  a = b[0];\n  b = b[1];\n  if (!a && !b) {\n    return \".\";\n  }\n  b &&= b.substr(0, b.length - 1);\n  return a + b;\n}, db = a => {\n  if (\"/\" === a) {\n    return \"/\";\n  }\n  a = bb(a);\n  a = a.replace(/\\/$/, \"\");\n  var b = a.lastIndexOf(\"/\");\n  return -1 === b ? a : a.substr(b + 1);\n}, eb = () => {\n  if (\"object\" == typeof crypto && \"function\" == typeof crypto.getRandomValues) {\n    return a => crypto.getRandomValues(a);\n  }\n  La(\"initRandomDevice\");\n}, fb = a => (fb = eb())(a), gb = (...a) => {\n  for (var b = \"\", c = !1, d = a.length - 1; -1 <= d && !c; d--) {\n    c = 0 <= d ? a[d] : \"/\";\n    if (\"string\" != typeof c) {\n      throw new TypeError(\"Arguments to path.resolve must be strings\");\n    }\n    if (!c) {\n      return \"\";\n    }\n    b = c + \"/\" + b;\n    c = \"/\" === c.charAt(0);\n  }\n  b = ab(b.split(\"/\").filter(e => !!e), !c).join(\"/\");\n  return (c ? \"/\" : \"\") + b || \".\";\n}, hb = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf8\") : void 0, C = (a, b, c) => {\n  var d = b + c;\n  for (c = b; a[c] && !(c >= d);) {\n    ++c;\n  }\n  if (16 < c - b && a.buffer && hb) {\n    return hb.decode(a.subarray(b, c));\n  }\n  for (d = \"\"; b < c;) {\n    var e = a[b++];\n    if (e & 128) {\n      var f = a[b++] & 63;\n      if (192 == (e & 224)) {\n        d += String.fromCharCode((e & 31) << 6 | f);\n      } else {\n        var g = a[b++] & 63;\n        e = 224 == (e & 240) ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;\n        65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));\n      }\n    } else {\n      d += String.fromCharCode(e);\n    }\n  }\n  return d;\n}, ib = [], jb = a => {\n  for (var b = 0, c = 0; c < a.length; ++c) {\n    var d = a.charCodeAt(c);\n    127 >= d ? b++ : 2047 >= d ? b += 2 : 55296 <= d && 57343 >= d ? (b += 4, ++c) : b += 3;\n  }\n  return b;\n}, kb = (a, b, c, d) => {\n  if (!(0 < d)) {\n    return 0;\n  }\n  var e = c;\n  d = c + d - 1;\n  for (var f = 0; f < a.length; ++f) {\n    var g = a.charCodeAt(f);\n    if (55296 <= g && 57343 >= g) {\n      var k = a.charCodeAt(++f);\n      g = 65536 + ((g & 1023) << 10) | k & 1023;\n    }\n    if (127 >= g) {\n      if (c >= d) {\n        break;\n      }\n      b[c++] = g;\n    } else {\n      if (2047 >= g) {\n        if (c + 1 >= d) {\n          break;\n        }\n        b[c++] = 192 | g >> 6;\n      } else {\n        if (65535 >= g) {\n          if (c + 2 >= d) {\n            break;\n          }\n          b[c++] = 224 | g >> 12;\n        } else {\n          if (c + 3 >= d) {\n            break;\n          }\n          b[c++] = 240 | g >> 18;\n          b[c++] = 128 | g >> 12 & 63;\n        }\n        b[c++] = 128 | g >> 6 & 63;\n      }\n      b[c++] = 128 | g & 63;\n    }\n  }\n  b[c] = 0;\n  return c - e;\n};\nfunction lb(a, b) {\n  var c = Array(jb(a) + 1);\n  a = kb(a, c, 0, c.length);\n  b && (c.length = a);\n  return c;\n}\nvar mb = [];\nfunction nb(a, b) {\n  mb[a] = {input:[], F:[], T:b};\n  ob(a, pb);\n}\nvar pb = {open(a) {\n  var b = mb[a.node.Ba];\n  if (!b) {\n    throw new E(43);\n  }\n  a.s = b;\n  a.seekable = !1;\n}, close(a) {\n  a.s.T.qa(a.s);\n}, qa(a) {\n  a.s.T.qa(a.s);\n}, read(a, b, c, d) {\n  if (!a.s || !a.s.T.cb) {\n    throw new E(60);\n  }\n  for (var e = 0, f = 0; f < d; f++) {\n    try {\n      var g = a.s.T.cb(a.s);\n    } catch (k) {\n      throw new E(29);\n    }\n    if (void 0 === g && 0 === e) {\n      throw new E(6);\n    }\n    if (null === g || void 0 === g) {\n      break;\n    }\n    e++;\n    b[c + f] = g;\n  }\n  e && (a.node.timestamp = Date.now());\n  return e;\n}, write(a, b, c, d) {\n  if (!a.s || !a.s.T.Ma) {\n    throw new E(60);\n  }\n  try {\n    for (var e = 0; e < d; e++) {\n      a.s.T.Ma(a.s, b[c + e]);\n    }\n  } catch (f) {\n    throw new E(29);\n  }\n  d && (a.node.timestamp = Date.now());\n  return e;\n},}, qb = {cb() {\n  a: {\n    if (!ib.length) {\n      var a = null;\n      \"undefined\" != typeof window && \"function\" == typeof window.prompt && (a = window.prompt(\"Input: \"), null !== a && (a += \"\\n\"));\n      if (!a) {\n        a = null;\n        break a;\n      }\n      ib = lb(a, !0);\n    }\n    a = ib.shift();\n  }\n  return a;\n}, Ma(a, b) {\n  null === b || 10 === b ? (va(C(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa(a) {\n  a.F && 0 < a.F.length && (va(C(a.F, 0)), a.F = []);\n}, Rb() {\n  return {oc:25856, qc:5, nc:191, pc:35387, mc:[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}, Sb() {\n  return 0;\n}, Tb() {\n  return [24, 80];\n},}, rb = {Ma(a, b) {\n  null === b || 10 === b ? (wa(C(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa(a) {\n  a.F && 0 < a.F.length && (wa(C(a.F, 0)), a.F = []);\n},};\nfunction sb(a, b) {\n  var c = a.l ? a.l.length : 0;\n  c >= b || (b = Math.max(b, c * (1048576 > c ? 2.0 : 1.125) >>> 0), 0 != c && (b = Math.max(b, 256)), c = a.l, a.l = new Uint8Array(b), 0 < a.v && a.l.set(c.subarray(0, a.v), 0));\n}\nvar G = {M:null, S() {\n  return G.createNode(null, \"/\", 16895, 0);\n}, createNode(a, b, c, d) {\n  if (24576 === (c & 61440) || 4096 === (c & 61440)) {\n    throw new E(63);\n  }\n  G.M || (G.M = {dir:{node:{V:G.j.V, O:G.j.O, ja:G.j.ja, ya:G.j.ya, ob:G.j.ob, tb:G.j.tb, pb:G.j.pb, nb:G.j.nb, Ea:G.j.Ea}, stream:{Z:G.m.Z}}, file:{node:{V:G.j.V, O:G.j.O}, stream:{Z:G.m.Z, read:G.m.read, write:G.m.write, Va:G.m.Va, gb:G.m.gb, ib:G.m.ib}}, link:{node:{V:G.j.V, O:G.j.O, ka:G.j.ka}, stream:{}}, Wa:{node:{V:G.j.V, O:G.j.O}, stream:tb}});\n  c = ub(a, b, c, d);\n  16384 === (c.mode & 61440) ? (c.j = G.M.dir.node, c.m = G.M.dir.stream, c.l = {}) : 32768 === (c.mode & 61440) ? (c.j = G.M.file.node, c.m = G.M.file.stream, c.v = 0, c.l = null) : 40960 === (c.mode & 61440) ? (c.j = G.M.link.node, c.m = G.M.link.stream) : 8192 === (c.mode & 61440) && (c.j = G.M.Wa.node, c.m = G.M.Wa.stream);\n  c.timestamp = Date.now();\n  a && (a.l[b] = c, a.timestamp = c.timestamp);\n  return c;\n}, vc(a) {\n  return a.l ? a.l.subarray ? a.l.subarray(0, a.v) : new Uint8Array(a.l) : new Uint8Array(0);\n}, j:{V(a) {\n  var b = {};\n  b.tc = 8192 === (a.mode & 61440) ? a.id : 1;\n  b.xc = a.id;\n  b.mode = a.mode;\n  b.Cc = 1;\n  b.uid = 0;\n  b.wc = 0;\n  b.Ba = a.Ba;\n  16384 === (a.mode & 61440) ? b.size = 4096 : 32768 === (a.mode & 61440) ? b.size = a.v : 40960 === (a.mode & 61440) ? b.size = a.link.length : b.size = 0;\n  b.kc = new Date(a.timestamp);\n  b.Ac = new Date(a.timestamp);\n  b.rc = new Date(a.timestamp);\n  b.Bb = 4096;\n  b.lc = Math.ceil(b.size / b.Bb);\n  return b;\n}, O(a, b) {\n  void 0 !== b.mode && (a.mode = b.mode);\n  void 0 !== b.timestamp && (a.timestamp = b.timestamp);\n  if (void 0 !== b.size && (b = b.size, a.v != b)) {\n    if (0 == b) {\n      a.l = null, a.v = 0;\n    } else {\n      var c = a.l;\n      a.l = new Uint8Array(b);\n      c && a.l.set(c.subarray(0, Math.min(b, a.v)));\n      a.v = b;\n    }\n  }\n}, ja() {\n  throw vb[44];\n}, ya(a, b, c, d) {\n  return G.createNode(a, b, c, d);\n}, ob(a, b, c) {\n  if (16384 === (a.mode & 61440)) {\n    try {\n      var d = wb(b, c);\n    } catch (f) {\n    }\n    if (d) {\n      for (var e in d.l) {\n        throw new E(55);\n      }\n    }\n  }\n  delete a.parent.l[a.name];\n  a.parent.timestamp = Date.now();\n  a.name = c;\n  b.l[c] = a;\n  b.timestamp = a.parent.timestamp;\n}, tb(a, b) {\n  delete a.l[b];\n  a.timestamp = Date.now();\n}, pb(a, b) {\n  var c = wb(a, b), d;\n  for (d in c.l) {\n    throw new E(55);\n  }\n  delete a.l[b];\n  a.timestamp = Date.now();\n}, nb(a) {\n  var b = [\".\", \"..\"], c;\n  for (c of Object.keys(a.l)) {\n    b.push(c);\n  }\n  return b;\n}, Ea(a, b, c) {\n  a = G.createNode(a, b, 41471, 0);\n  a.link = c;\n  return a;\n}, ka(a) {\n  if (40960 !== (a.mode & 61440)) {\n    throw new E(28);\n  }\n  return a.link;\n},}, m:{read(a, b, c, d, e) {\n  var f = a.node.l;\n  if (e >= a.node.v) {\n    return 0;\n  }\n  a = Math.min(a.node.v - e, d);\n  if (8 < a && f.subarray) {\n    b.set(f.subarray(e, e + a), c);\n  } else {\n    for (d = 0; d < a; d++) {\n      b[c + d] = f[e + d];\n    }\n  }\n  return a;\n}, write(a, b, c, d, e, f) {\n  b.buffer === n.buffer && (f = !1);\n  if (!d) {\n    return 0;\n  }\n  a = a.node;\n  a.timestamp = Date.now();\n  if (b.subarray && (!a.l || a.l.subarray)) {\n    if (f) {\n      return a.l = b.subarray(c, c + d), a.v = d;\n    }\n    if (0 === a.v && 0 === e) {\n      return a.l = b.slice(c, c + d), a.v = d;\n    }\n    if (e + d <= a.v) {\n      return a.l.set(b.subarray(c, c + d), e), d;\n    }\n  }\n  sb(a, e + d);\n  if (a.l.subarray && b.subarray) {\n    a.l.set(b.subarray(c, c + d), e);\n  } else {\n    for (f = 0; f < d; f++) {\n      a.l[e + f] = b[c + f];\n    }\n  }\n  a.v = Math.max(a.v, e + d);\n  return d;\n}, Z(a, b, c) {\n  1 === c ? b += a.position : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.v);\n  if (0 > b) {\n    throw new E(28);\n  }\n  return b;\n}, Va(a, b, c) {\n  sb(a.node, b + c);\n  a.node.v = Math.max(a.node.v, b + c);\n}, gb(a, b, c, d, e) {\n  if (32768 !== (a.node.mode & 61440)) {\n    throw new E(43);\n  }\n  a = a.node.l;\n  if (e & 2 || a.buffer !== n.buffer) {\n    if (0 < c || c + b < a.length) {\n      a.subarray ? a = a.subarray(c, c + b) : a = Array.prototype.slice.call(a, c, c + b);\n    }\n    c = !0;\n    b = 65536 * Math.ceil(b / 65536);\n    (e = xb(65536, b)) ? (u.fill(0, e, e + b), b = e) : b = 0;\n    if (!b) {\n      throw new E(48);\n    }\n    n.set(a, b);\n  } else {\n    c = !1, b = a.byteOffset;\n  }\n  return {o:b, jc:c};\n}, ib(a, b, c, d) {\n  G.m.write(a, b, 0, d, c, !1);\n  return 0;\n},},}, zb = (a, b) => {\n  var c = 0;\n  a && (c |= 365);\n  b && (c |= 146);\n  return c;\n}, Ab = null, Bb = {}, Cb = [], Db = 1, Eb = null, Fb = !0, E = class {\n  constructor(a) {\n    this.name = \"ErrnoError\";\n    this.Y = a;\n  }\n}, vb = {}, Gb = class {\n  constructor() {\n    this.h = {};\n    this.node = null;\n  }\n  get flags() {\n    return this.h.flags;\n  }\n  set flags(a) {\n    this.h.flags = a;\n  }\n  get position() {\n    return this.h.position;\n  }\n  set position(a) {\n    this.h.position = a;\n  }\n}, Hb = class {\n  constructor(a, b, c, d) {\n    a ||= this;\n    this.parent = a;\n    this.S = a.S;\n    this.za = null;\n    this.id = Db++;\n    this.name = b;\n    this.mode = c;\n    this.j = {};\n    this.m = {};\n    this.Ba = d;\n  }\n  get read() {\n    return 365 === (this.mode & 365);\n  }\n  set read(a) {\n    a ? this.mode |= 365 : this.mode &= -366;\n  }\n  get write() {\n    return 146 === (this.mode & 146);\n  }\n  set write(a) {\n    a ? this.mode |= 146 : this.mode &= -147;\n  }\n};\nfunction Ib(a, b = {}) {\n  a = gb(a);\n  if (!a) {\n    return {path:\"\", node:null};\n  }\n  b = Object.assign({bb:!0, Oa:0}, b);\n  if (8 < b.Oa) {\n    throw new E(32);\n  }\n  a = a.split(\"/\").filter(g => !!g);\n  for (var c = Ab, d = \"/\", e = 0; e < a.length; e++) {\n    var f = e === a.length - 1;\n    if (f && b.parent) {\n      break;\n    }\n    c = wb(c, a[e]);\n    d = bb(d + \"/\" + a[e]);\n    c.za && (!f || f && b.bb) && (c = c.za.root);\n    if (!f || b.ab) {\n      for (f = 0; 40960 === (c.mode & 61440);) {\n        if (c = Jb(d), d = gb(cb(d), c), c = Ib(d, {Oa:b.Oa + 1}).node, 40 < f++) {\n          throw new E(32);\n        }\n      }\n    }\n  }\n  return {path:d, node:c};\n}\nfunction Kb(a) {\n  for (var b;;) {\n    if (a === a.parent) {\n      return a = a.S.hb, b ? \"/\" !== a[a.length - 1] ? `${a}/${b}` : a + b : a;\n    }\n    b = b ? `${a.name}/${b}` : a.name;\n    a = a.parent;\n  }\n}\nfunction Lb(a, b) {\n  for (var c = 0, d = 0; d < b.length; d++) {\n    c = (c << 5) - c + b.charCodeAt(d) | 0;\n  }\n  return (a + c >>> 0) % Eb.length;\n}\nfunction wb(a, b) {\n  var c = 16384 === (a.mode & 61440) ? (c = Mb(a, \"x\")) ? c : a.j.ja ? 0 : 2 : 54;\n  if (c) {\n    throw new E(c);\n  }\n  for (c = Eb[Lb(a.id, b)]; c; c = c.Vb) {\n    var d = c.name;\n    if (c.parent.id === a.id && d === b) {\n      return c;\n    }\n  }\n  return a.j.ja(a, b);\n}\nfunction ub(a, b, c, d) {\n  a = new Hb(a, b, c, d);\n  b = Lb(a.parent.id, a.name);\n  a.Vb = Eb[b];\n  return Eb[b] = a;\n}\nfunction Nb(a) {\n  var b = [\"r\", \"w\", \"rw\"][a & 3];\n  a & 512 && (b += \"w\");\n  return b;\n}\nfunction Mb(a, b) {\n  if (Fb) {\n    return 0;\n  }\n  if (!b.includes(\"r\") || a.mode & 292) {\n    if (b.includes(\"w\") && !(a.mode & 146) || b.includes(\"x\") && !(a.mode & 73)) {\n      return 2;\n    }\n  } else {\n    return 2;\n  }\n  return 0;\n}\nfunction Ob(a, b) {\n  try {\n    return wb(a, b), 20;\n  } catch (c) {\n  }\n  return Mb(a, \"wx\");\n}\nfunction Pb(a) {\n  a = Cb[a];\n  if (!a) {\n    throw new E(8);\n  }\n  return a;\n}\nfunction Qb(a, b = -1) {\n  a = Object.assign(new Gb(), a);\n  if (-1 == b) {\n    a: {\n      for (b = 0; 4096 >= b; b++) {\n        if (!Cb[b]) {\n          break a;\n        }\n      }\n      throw new E(33);\n    }\n  }\n  a.U = b;\n  return Cb[b] = a;\n}\nfunction Rb(a, b = -1) {\n  a = Qb(a, b);\n  a.m?.uc?.(a);\n  return a;\n}\nvar tb = {open(a) {\n  a.m = Bb[a.node.Ba].m;\n  a.m.open?.(a);\n}, Z() {\n  throw new E(70);\n},};\nfunction ob(a, b) {\n  Bb[a] = {m:b};\n}\nfunction Sb(a, b) {\n  var c = \"/\" === b;\n  if (c && Ab) {\n    throw new E(10);\n  }\n  if (!c && b) {\n    var d = Ib(b, {bb:!1});\n    b = d.path;\n    d = d.node;\n    if (d.za) {\n      throw new E(10);\n    }\n    if (16384 !== (d.mode & 61440)) {\n      throw new E(54);\n    }\n  }\n  b = {type:a, Ec:{}, hb:b, Ub:[]};\n  a = a.S(b);\n  a.S = b;\n  b.root = a;\n  c ? Ab = a : d && (d.za = b, d.S && d.S.Ub.push(b));\n}\nfunction Tb(a, b, c) {\n  var d = Ib(a, {parent:!0}).node;\n  a = db(a);\n  if (!a || \".\" === a || \"..\" === a) {\n    throw new E(28);\n  }\n  var e = Ob(d, a);\n  if (e) {\n    throw new E(e);\n  }\n  if (!d.j.ya) {\n    throw new E(63);\n  }\n  return d.j.ya(d, a, b, c);\n}\nfunction Ub(a) {\n  return Tb(a, 16895, 0);\n}\nfunction Vb(a, b, c) {\n  \"undefined\" == typeof c && (c = b, b = 438);\n  Tb(a, b | 8192, c);\n}\nfunction Wb(a, b) {\n  if (!gb(a)) {\n    throw new E(44);\n  }\n  var c = Ib(b, {parent:!0}).node;\n  if (!c) {\n    throw new E(44);\n  }\n  b = db(b);\n  var d = Ob(c, b);\n  if (d) {\n    throw new E(d);\n  }\n  if (!c.j.Ea) {\n    throw new E(63);\n  }\n  c.j.Ea(c, b, a);\n}\nfunction Jb(a) {\n  a = Ib(a).node;\n  if (!a) {\n    throw new E(44);\n  }\n  if (!a.j.ka) {\n    throw new E(28);\n  }\n  return gb(Kb(a.parent), a.j.ka(a));\n}\nfunction Xb(a, b, c) {\n  if (\"\" === a) {\n    throw new E(44);\n  }\n  if (\"string\" == typeof b) {\n    var d = {r:0, \"r+\":2, w:577, \"w+\":578, a:1089, \"a+\":1090,}[b];\n    if (\"undefined\" == typeof d) {\n      throw Error(`Unknown file open mode: ${b}`);\n    }\n    b = d;\n  }\n  c = b & 64 ? (\"undefined\" == typeof c ? 438 : c) & 4095 | 32768 : 0;\n  if (\"object\" == typeof a) {\n    var e = a;\n  } else {\n    a = bb(a);\n    try {\n      e = Ib(a, {ab:!(b & 131072)}).node;\n    } catch (f) {\n    }\n  }\n  d = !1;\n  if (b & 64) {\n    if (e) {\n      if (b & 128) {\n        throw new E(20);\n      }\n    } else {\n      e = Tb(a, c, 0), d = !0;\n    }\n  }\n  if (!e) {\n    throw new E(44);\n  }\n  8192 === (e.mode & 61440) && (b &= -513);\n  if (b & 65536 && 16384 !== (e.mode & 61440)) {\n    throw new E(54);\n  }\n  if (!d && (c = e ? 40960 === (e.mode & 61440) ? 32 : 16384 === (e.mode & 61440) && (\"r\" !== Nb(b) || b & 512) ? 31 : Mb(e, Nb(b)) : 44)) {\n    throw new E(c);\n  }\n  if (b & 512 && !d) {\n    c = e;\n    c = \"string\" == typeof c ? Ib(c, {ab:!0}).node : c;\n    if (!c.j.O) {\n      throw new E(63);\n    }\n    if (16384 === (c.mode & 61440)) {\n      throw new E(31);\n    }\n    if (32768 !== (c.mode & 61440)) {\n      throw new E(28);\n    }\n    if (d = Mb(c, \"w\")) {\n      throw new E(d);\n    }\n    c.j.O(c, {size:0, timestamp:Date.now()});\n  }\n  b &= -131713;\n  e = Qb({node:e, path:Kb(e), flags:b, seekable:!0, position:0, m:e.m, hc:[], error:!1});\n  e.m.open && e.m.open(e);\n  !l.logReadFiles || b & 1 || (Yb ||= {}, a in Yb || (Yb[a] = 1));\n  return e;\n}\nfunction Zb(a, b, c) {\n  if (null === a.U) {\n    throw new E(8);\n  }\n  if (!a.seekable || !a.m.Z) {\n    throw new E(70);\n  }\n  if (0 != c && 1 != c && 2 != c) {\n    throw new E(28);\n  }\n  a.position = a.m.Z(a, b, c);\n  a.hc = [];\n}\nvar $b;\nfunction ac(a, b, c) {\n  a = bb(\"/dev/\" + a);\n  var d = zb(!!b, !!c);\n  bc ||= 64;\n  var e = bc++ << 8 | 0;\n  ob(e, {open(f) {\n    f.seekable = !1;\n  }, close() {\n    c?.buffer?.length && c(10);\n  }, read(f, g, k, m) {\n    for (var p = 0, r = 0; r < m; r++) {\n      try {\n        var w = b();\n      } catch (y) {\n        throw new E(29);\n      }\n      if (void 0 === w && 0 === p) {\n        throw new E(6);\n      }\n      if (null === w || void 0 === w) {\n        break;\n      }\n      p++;\n      g[k + r] = w;\n    }\n    p && (f.node.timestamp = Date.now());\n    return p;\n  }, write(f, g, k, m) {\n    for (var p = 0; p < m; p++) {\n      try {\n        c(g[k + p]);\n      } catch (r) {\n        throw new E(29);\n      }\n    }\n    m && (f.node.timestamp = Date.now());\n    return p;\n  }});\n  Vb(a, d, e);\n}\nvar bc, cc = {}, Yb, $a = void 0, dc = (a, b) => Object.defineProperty(b, \"name\", {value:a}), ec = [], fc = [], H, gc = a => {\n  if (!a) {\n    throw new H(\"Cannot use deleted val. handle = \" + a);\n  }\n  return fc[a];\n}, hc = a => {\n  switch(a) {\n    case void 0:\n      return 2;\n    case null:\n      return 4;\n    case !0:\n      return 6;\n    case !1:\n      return 8;\n    default:\n      const b = ec.pop() || fc.length;\n      fc[b] = a;\n      fc[b + 1] = 1;\n      return b;\n  }\n}, ic = a => {\n  var b = Error, c = dc(a, function(d) {\n    this.name = a;\n    this.message = d;\n    d = Error(d).stack;\n    void 0 !== d && (this.stack = this.toString() + \"\\n\" + d.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n  });\n  c.prototype = Object.create(b.prototype);\n  c.prototype.constructor = c;\n  c.prototype.toString = function() {\n    return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n  };\n  return c;\n}, jc, kc, I = a => {\n  for (var b = \"\"; u[a];) {\n    b += kc[u[a++]];\n  }\n  return b;\n}, lc = [], mc = () => {\n  for (; lc.length;) {\n    var a = lc.pop();\n    a.g.fa = !1;\n    a[\"delete\"]();\n  }\n}, nc, oc = {}, pc = (a, b) => {\n  if (void 0 === b) {\n    throw new H(\"ptr should not be undefined\");\n  }\n  for (; a.B;) {\n    b = a.ma(b), a = a.B;\n  }\n  return b;\n}, qc = {}, tc = a => {\n  a = rc(a);\n  var b = I(a);\n  sc(a);\n  return b;\n}, uc = (a, b) => {\n  var c = qc[a];\n  if (void 0 === c) {\n    throw a = `${b} has unknown type ${tc(a)}`, new H(a);\n  }\n  return c;\n}, vc = () => {\n}, wc = !1, xc = (a, b, c) => {\n  if (b === c) {\n    return a;\n  }\n  if (void 0 === c.B) {\n    return null;\n  }\n  a = xc(a, b, c.B);\n  return null === a ? null : c.Eb(a);\n}, yc = {}, zc = (a, b) => {\n  b = pc(a, b);\n  return oc[b];\n}, Ac, Cc = (a, b) => {\n  if (!b.u || !b.o) {\n    throw new Ac(\"makeClassHandle requires ptr and ptrType\");\n  }\n  if (!!b.I !== !!b.D) {\n    throw new Ac(\"Both smartPtrType and smartPtr must be specified\");\n  }\n  b.count = {value:1};\n  return Bc(Object.create(a, {g:{value:b, writable:!0,},}));\n}, Bc = a => {\n  if (\"undefined\" === typeof FinalizationRegistry) {\n    return Bc = b => b, a;\n  }\n  wc = new FinalizationRegistry(b => {\n    b = b.g;\n    --b.count.value;\n    0 === b.count.value && (b.D ? b.I.N(b.D) : b.u.i.N(b.o));\n  });\n  Bc = b => {\n    var c = b.g;\n    c.D && wc.register(b, {g:c}, b);\n    return b;\n  };\n  vc = b => {\n    wc.unregister(b);\n  };\n  return Bc(a);\n}, Dc = {}, Ec = a => {\n  for (; a.length;) {\n    var b = a.pop();\n    a.pop()(b);\n  }\n};\nfunction Fc(a) {\n  return this.fromWireType(A[a >> 2]);\n}\nvar Gc = {}, Hc = {}, J = (a, b, c) => {\n  function d(k) {\n    k = c(k);\n    if (k.length !== a.length) {\n      throw new Ac(\"Mismatched type converter count\");\n    }\n    for (var m = 0; m < a.length; ++m) {\n      Ic(a[m], k[m]);\n    }\n  }\n  a.forEach(function(k) {\n    Hc[k] = b;\n  });\n  var e = Array(b.length), f = [], g = 0;\n  b.forEach((k, m) => {\n    qc.hasOwnProperty(k) ? e[m] = qc[k] : (f.push(k), Gc.hasOwnProperty(k) || (Gc[k] = []), Gc[k].push(() => {\n      e[m] = qc[k];\n      ++g;\n      g === f.length && d(e);\n    }));\n  });\n  0 === f.length && d(e);\n};\nfunction Jc(a, b, c = {}) {\n  var d = b.name;\n  if (!a) {\n    throw new H(`type \"${d}\" must have a positive integer typeid pointer`);\n  }\n  if (qc.hasOwnProperty(a)) {\n    if (c.Ob) {\n      return;\n    }\n    throw new H(`Cannot register type '${d}' twice`);\n  }\n  qc[a] = b;\n  delete Hc[a];\n  Gc.hasOwnProperty(a) && (b = Gc[a], delete Gc[a], b.forEach(e => e()));\n}\nfunction Ic(a, b, c = {}) {\n  if (!(\"argPackAdvance\" in b)) {\n    throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n  }\n  return Jc(a, b, c);\n}\nvar Kc = a => {\n  throw new H(a.g.u.i.name + \" instance already deleted\");\n};\nfunction Lc() {\n}\nvar Mc = (a, b, c) => {\n  if (void 0 === a[b].A) {\n    var d = a[b];\n    a[b] = function(...e) {\n      if (!a[b].A.hasOwnProperty(e.length)) {\n        throw new H(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].A})!`);\n      }\n      return a[b].A[e.length].apply(this, e);\n    };\n    a[b].A = [];\n    a[b].A[d.da] = d;\n  }\n}, Nc = (a, b, c) => {\n  if (l.hasOwnProperty(a)) {\n    if (void 0 === c || void 0 !== l[a].A && void 0 !== l[a].A[c]) {\n      throw new H(`Cannot register public name '${a}' twice`);\n    }\n    Mc(l, a, a);\n    if (l.hasOwnProperty(c)) {\n      throw new H(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`);\n    }\n    l[a].A[c] = b;\n  } else {\n    l[a] = b, void 0 !== c && (l[a].Dc = c);\n  }\n}, Oc = a => {\n  if (void 0 === a) {\n    return \"_unknown\";\n  }\n  a = a.replace(/[^a-zA-Z0-9_]/g, \"$\");\n  var b = a.charCodeAt(0);\n  return 48 <= b && 57 >= b ? `_${a}` : a;\n};\nfunction Pc(a, b, c, d, e, f, g, k) {\n  this.name = a;\n  this.constructor = b;\n  this.L = c;\n  this.N = d;\n  this.B = e;\n  this.Jb = f;\n  this.ma = g;\n  this.Eb = k;\n  this.lb = [];\n}\nvar Qc = (a, b, c) => {\n  for (; b !== c;) {\n    if (!b.ma) {\n      throw new H(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);\n    }\n    a = b.ma(a);\n    b = b.B;\n  }\n  return a;\n};\nfunction Rc(a, b) {\n  if (null === b) {\n    if (this.La) {\n      throw new H(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!b.g) {\n    throw new H(`Cannot pass \"${Sc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new H(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  return Qc(b.g.o, b.g.u.i, this.i);\n}\nfunction Tc(a, b) {\n  if (null === b) {\n    if (this.La) {\n      throw new H(`null is not a valid ${this.name}`);\n    }\n    if (this.ua) {\n      var c = this.Na();\n      null !== a && a.push(this.N, c);\n      return c;\n    }\n    return 0;\n  }\n  if (!b || !b.g) {\n    throw new H(`Cannot pass \"${Sc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new H(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (!this.ta && b.g.u.ta) {\n    throw new H(`Cannot convert argument of type ${b.g.I ? b.g.I.name : b.g.u.name} to parameter type ${this.name}`);\n  }\n  c = Qc(b.g.o, b.g.u.i, this.i);\n  if (this.ua) {\n    if (void 0 === b.g.D) {\n      throw new H(\"Passing raw pointer to smart pointer is illegal\");\n    }\n    switch(this.ac) {\n      case 0:\n        if (b.g.I === this) {\n          c = b.g.D;\n        } else {\n          throw new H(`Cannot convert argument of type ${b.g.I ? b.g.I.name : b.g.u.name} to parameter type ${this.name}`);\n        }\n        break;\n      case 1:\n        c = b.g.D;\n        break;\n      case 2:\n        if (b.g.I === this) {\n          c = b.g.D;\n        } else {\n          var d = b.clone();\n          c = this.Xb(c, hc(() => d[\"delete\"]()));\n          null !== a && a.push(this.N, c);\n        }\n        break;\n      default:\n        throw new H(\"Unsupporting sharing policy\");\n    }\n  }\n  return c;\n}\nfunction Uc(a, b) {\n  if (null === b) {\n    if (this.La) {\n      throw new H(`null is not a valid ${this.name}`);\n    }\n    return 0;\n  }\n  if (!b.g) {\n    throw new H(`Cannot pass \"${Sc(b)}\" as a ${this.name}`);\n  }\n  if (!b.g.o) {\n    throw new H(`Cannot pass deleted object as a pointer of type ${this.name}`);\n  }\n  if (b.g.u.ta) {\n    throw new H(`Cannot convert argument of type ${b.g.u.name} to parameter type ${this.name}`);\n  }\n  return Qc(b.g.o, b.g.u.i, this.i);\n}\nfunction Vc(a, b, c, d, e, f, g, k, m, p, r) {\n  this.name = a;\n  this.i = b;\n  this.La = c;\n  this.ta = d;\n  this.ua = e;\n  this.Wb = f;\n  this.ac = g;\n  this.mb = k;\n  this.Na = m;\n  this.Xb = p;\n  this.N = r;\n  e || void 0 !== b.B ? this.toWireType = Tc : (this.toWireType = d ? Rc : Uc, this.K = null);\n}\nvar Wc = (a, b, c) => {\n  if (!l.hasOwnProperty(a)) {\n    throw new Ac(\"Replacing nonexistent public symbol\");\n  }\n  void 0 !== l[a].A && void 0 !== c ? l[a].A[c] = b : (l[a] = b, l[a].da = c);\n}, Xc = [], Yc, K = a => {\n  var b = Xc[a];\n  b || (a >= Xc.length && (Xc.length = a + 1), Xc[a] = b = Yc.get(a));\n  return b;\n}, Zc = (a, b, c = []) => {\n  a.includes(\"j\") ? (a = a.replace(/p/g, \"i\"), b = (0,l[\"dynCall_\" + a])(b, ...c)) : b = K(b)(...c);\n  return b;\n}, $c = (a, b) => (...c) => Zc(a, b, c), P = (a, b) => {\n  a = I(a);\n  var c = a.includes(\"j\") ? $c(a, b) : K(b);\n  if (\"function\" != typeof c) {\n    throw new H(`unknown function pointer with signature ${a}: ${b}`);\n  }\n  return c;\n}, ad, bd = (a, b) => {\n  function c(f) {\n    e[f] || qc[f] || (Hc[f] ? Hc[f].forEach(c) : (d.push(f), e[f] = !0));\n  }\n  var d = [], e = {};\n  b.forEach(c);\n  throw new ad(`${a}: ` + d.map(tc).join([\", \"]));\n};\nfunction cd(a) {\n  for (var b = 1; b < a.length; ++b) {\n    if (null !== a[b] && void 0 === a[b].K) {\n      return !0;\n    }\n  }\n  return !1;\n}\nfunction dd(a, b, c, d, e) {\n  var f = b.length;\n  if (2 > f) {\n    throw new H(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n  }\n  var g = null !== b[1] && null !== c, k = cd(b), m = \"void\" !== b[0].name, p = f - 2, r = Array(p), w = [], y = [];\n  return dc(a, function(...q) {\n    if (q.length !== p) {\n      throw new H(`function ${a} called with ${q.length} arguments, expected ${p}`);\n    }\n    y.length = 0;\n    w.length = g ? 2 : 1;\n    w[0] = e;\n    if (g) {\n      var t = b[1].toWireType(y, this);\n      w[1] = t;\n    }\n    for (var v = 0; v < p; ++v) {\n      r[v] = b[v + 2].toWireType(y, q[v]), w.push(r[v]);\n    }\n    q = d(...w);\n    if (k) {\n      Ec(y);\n    } else {\n      for (v = g ? 1 : 2; v < b.length; v++) {\n        var z = 1 === v ? t : r[v - 2];\n        null !== b[v].K && b[v].K(z);\n      }\n    }\n    t = m ? b[0].fromWireType(q) : void 0;\n    return t;\n  });\n}\nvar ed = (a, b) => {\n  for (var c = [], d = 0; d < a; d++) {\n    c.push(A[b + 4 * d >> 2]);\n  }\n  return c;\n}, fd = a => {\n  a = a.trim();\n  const b = a.indexOf(\"(\");\n  return -1 !== b ? a.substr(0, b) : a;\n}, gd = (a, b, c) => {\n  if (!(a instanceof Object)) {\n    throw new H(`${c} with invalid \"this\": ${a}`);\n  }\n  if (!(a instanceof b.i.constructor)) {\n    throw new H(`${c} incompatible with \"this\" of type ${a.constructor.name}`);\n  }\n  if (!a.g.o) {\n    throw new H(`cannot call emscripten binding method ${c} on deleted object`);\n  }\n  return Qc(a.g.o, a.g.u.i, b.i);\n}, hd = a => {\n  9 < a && 0 === --fc[a + 1] && (fc[a] = void 0, ec.push(a));\n}, jd = {name:\"emscripten::val\", fromWireType:a => {\n  var b = gc(a);\n  hd(a);\n  return b;\n}, toWireType:(a, b) => hc(b), argPackAdvance:8, readValueFromPointer:Fc, K:null,}, kd = (a, b, c) => {\n  switch(b) {\n    case 1:\n      return c ? function(d) {\n        return this.fromWireType(n[d]);\n      } : function(d) {\n        return this.fromWireType(u[d]);\n      };\n    case 2:\n      return c ? function(d) {\n        return this.fromWireType(Aa[d >> 1]);\n      } : function(d) {\n        return this.fromWireType(Ba[d >> 1]);\n      };\n    case 4:\n      return c ? function(d) {\n        return this.fromWireType(x[d >> 2]);\n      } : function(d) {\n        return this.fromWireType(A[d >> 2]);\n      };\n    default:\n      throw new TypeError(`invalid integer width (${b}): ${a}`);\n  }\n}, Sc = a => {\n  if (null === a) {\n    return \"null\";\n  }\n  var b = typeof a;\n  return \"object\" === b || \"array\" === b || \"function\" === b ? a.toString() : \"\" + a;\n}, ld = (a, b) => {\n  switch(b) {\n    case 4:\n      return function(c) {\n        return this.fromWireType(B[c >> 2]);\n      };\n    case 8:\n      return function(c) {\n        return this.fromWireType(Ca[c >> 3]);\n      };\n    default:\n      throw new TypeError(`invalid float width (${b}): ${a}`);\n  }\n}, md = (a, b, c) => {\n  switch(b) {\n    case 1:\n      return c ? d => n[d] : d => u[d];\n    case 2:\n      return c ? d => Aa[d >> 1] : d => Ba[d >> 1];\n    case 4:\n      return c ? d => x[d >> 2] : d => A[d >> 2];\n    default:\n      throw new TypeError(`invalid integer width (${b}): ${a}`);\n  }\n}, nd = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-16le\") : void 0, od = (a, b) => {\n  var c = a >> 1;\n  for (var d = c + b / 2; !(c >= d) && Ba[c];) {\n    ++c;\n  }\n  c <<= 1;\n  if (32 < c - a && nd) {\n    return nd.decode(u.subarray(a, c));\n  }\n  c = \"\";\n  for (d = 0; !(d >= b / 2); ++d) {\n    var e = Aa[a + 2 * d >> 1];\n    if (0 == e) {\n      break;\n    }\n    c += String.fromCharCode(e);\n  }\n  return c;\n}, pd = (a, b, c) => {\n  c ??= 2147483647;\n  if (2 > c) {\n    return 0;\n  }\n  c -= 2;\n  var d = b;\n  c = c < 2 * a.length ? c / 2 : a.length;\n  for (var e = 0; e < c; ++e) {\n    Aa[b >> 1] = a.charCodeAt(e), b += 2;\n  }\n  Aa[b >> 1] = 0;\n  return b - d;\n}, qd = a => 2 * a.length, rd = (a, b) => {\n  for (var c = 0, d = \"\"; !(c >= b / 4);) {\n    var e = x[a + 4 * c >> 2];\n    if (0 == e) {\n      break;\n    }\n    ++c;\n    65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);\n  }\n  return d;\n}, sd = (a, b, c) => {\n  c ??= 2147483647;\n  if (4 > c) {\n    return 0;\n  }\n  var d = b;\n  c = d + c - 4;\n  for (var e = 0; e < a.length; ++e) {\n    var f = a.charCodeAt(e);\n    if (55296 <= f && 57343 >= f) {\n      var g = a.charCodeAt(++e);\n      f = 65536 + ((f & 1023) << 10) | g & 1023;\n    }\n    x[b >> 2] = f;\n    b += 4;\n    if (b + 4 > c) {\n      break;\n    }\n  }\n  x[b >> 2] = 0;\n  return b - d;\n}, td = a => {\n  for (var b = 0, c = 0; c < a.length; ++c) {\n    var d = a.charCodeAt(c);\n    55296 <= d && 57343 >= d && ++c;\n    b += 4;\n  }\n  return b;\n}, ud = (a, b, c) => {\n  var d = [];\n  a = a.toWireType(d, c);\n  d.length && (A[b >> 2] = hc(d));\n  return a;\n}, vd = {}, wd = a => {\n  var b = vd[a];\n  return void 0 === b ? I(a) : b;\n}, xd = [], yd = a => {\n  var b = xd.length;\n  xd.push(a);\n  return b;\n}, zd = (a, b) => {\n  for (var c = Array(a), d = 0; d < a; ++d) {\n    c[d] = uc(A[b + 4 * d >> 2], \"parameter \" + d);\n  }\n  return c;\n}, Ad = Reflect.construct, Bd = a => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400), Cd = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335], Dd = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], Ed = [], Fd = a => {\n  var b = a.getExtension(\"ANGLE_instanced_arrays\");\n  b && (a.vertexAttribDivisor = (c, d) => b.vertexAttribDivisorANGLE(c, d), a.drawArraysInstanced = (c, d, e, f) => b.drawArraysInstancedANGLE(c, d, e, f), a.drawElementsInstanced = (c, d, e, f, g) => b.drawElementsInstancedANGLE(c, d, e, f, g));\n}, Gd = a => {\n  var b = a.getExtension(\"OES_vertex_array_object\");\n  b && (a.createVertexArray = () => b.createVertexArrayOES(), a.deleteVertexArray = c => b.deleteVertexArrayOES(c), a.bindVertexArray = c => b.bindVertexArrayOES(c), a.isVertexArray = c => b.isVertexArrayOES(c));\n}, Hd = a => {\n  var b = a.getExtension(\"WEBGL_draw_buffers\");\n  b && (a.drawBuffers = (c, d) => b.drawBuffersWEBGL(c, d));\n}, Id = a => {\n  var b = \"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_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend 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\".split(\" \");\n  return (a.getSupportedExtensions() || []).filter(c => b.includes(c));\n}, Jd = 1, Kd = [], Q = [], Ld = [], Md = [], Nd = [], Od = [], Pd = [], ma = [], Qd = [], Rd = [], Sd = {}, Td = {}, Ud = 4, Vd = 0, la = a => {\n  for (var b = Jd++, c = a.length; c < b; c++) {\n    a[c] = null;\n  }\n  return b;\n}, Wd = (a, b, c, d) => {\n  for (var e = 0; e < a; e++) {\n    var f = R[c](), g = f && la(d);\n    f ? (f.name = g, d[g] = f) : S ||= 1282;\n    x[b + 4 * e >> 2] = g;\n  }\n}, oa = a => {\n  T = ma[a];\n  l.sc = R = T?.Sa;\n  return !(a && !R);\n}, na = a => {\n  a ||= T;\n  if (!a.Pb) {\n    a.Pb = !0;\n    var b = a.Sa;\n    Fd(b);\n    Gd(b);\n    Hd(b);\n    b.Ya = b.getExtension(\"WEBGL_draw_instanced_base_vertex_base_instance\");\n    b.fb = b.getExtension(\"WEBGL_multi_draw_instanced_base_vertex_base_instance\");\n    2 <= a.version && (b.Za = b.getExtension(\"EXT_disjoint_timer_query_webgl2\"));\n    if (2 > a.version || !b.Za) {\n      b.Za = b.getExtension(\"EXT_disjoint_timer_query\");\n    }\n    b.Bc = b.getExtension(\"WEBGL_multi_draw\");\n    Id(b).forEach(c => {\n      c.includes(\"lose_context\") || c.includes(\"debug\") || b.getExtension(c);\n    });\n  }\n}, S, T, Xd = (a, b) => {\n  R.bindFramebuffer(a, Ld[b]);\n}, Yd = a => {\n  R.bindVertexArray(Pd[a]);\n}, Zd = (a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = x[b + 4 * c >> 2];\n    R.deleteVertexArray(Pd[d]);\n    Pd[d] = null;\n  }\n}, $d = [], ae = (a, b) => {\n  Wd(a, b, \"createVertexArray\", Pd);\n};\nfunction be() {\n  var a = Id(R);\n  return a = a.concat(a.map(b => \"GL_\" + b));\n}\nvar ce = (a, b) => {\n  if (b) {\n    var c = void 0;\n    switch(a) {\n      case 36346:\n        c = 1;\n        break;\n      case 36344:\n        return;\n      case 34814:\n      case 36345:\n        c = 0;\n        break;\n      case 34466:\n        var d = R.getParameter(34467);\n        c = d ? d.length : 0;\n        break;\n      case 33309:\n        if (2 > T.version) {\n          S ||= 1282;\n          return;\n        }\n        c = be().length;\n        break;\n      case 33307:\n      case 33308:\n        if (2 > T.version) {\n          S ||= 1280;\n          return;\n        }\n        c = 33307 == a ? 3 : 0;\n    }\n    if (void 0 === c) {\n      switch(d = R.getParameter(a), typeof d) {\n        case \"number\":\n          c = d;\n          break;\n        case \"boolean\":\n          c = d ? 1 : 0;\n          break;\n        case \"string\":\n          S ||= 1280;\n          return;\n        case \"object\":\n          if (null === d) {\n            switch(a) {\n              case 34964:\n              case 35725:\n              case 34965:\n              case 36006:\n              case 36007:\n              case 32873:\n              case 34229:\n              case 36662:\n              case 36663:\n              case 35053:\n              case 35055:\n              case 36010:\n              case 35097:\n              case 35869:\n              case 32874:\n              case 36389:\n              case 35983:\n              case 35368:\n              case 34068:\n                c = 0;\n                break;\n              default:\n                S ||= 1280;\n                return;\n            }\n          } else {\n            if (d instanceof Float32Array || d instanceof Uint32Array || d instanceof Int32Array || d instanceof Array) {\n              for (a = 0; a < d.length; ++a) {\n                x[b + 4 * a >> 2] = d[a];\n              }\n              return;\n            }\n            try {\n              c = d.name | 0;\n            } catch (e) {\n              S ||= 1280;\n              wa(`GL_INVALID_ENUM in glGet${0}v: Unknown object returned from WebGL getParameter(${a})! (error: ${e})`);\n              return;\n            }\n          }\n          break;\n        default:\n          S ||= 1280;\n          wa(`GL_INVALID_ENUM in glGet${0}v: Native code calling glGet${0}v(${a}) and it returns ${d} of type ${typeof d}!`);\n          return;\n      }\n    }\n    x[b >> 2] = c;\n  } else {\n    S ||= 1281;\n  }\n}, de = (a, b) => ce(a, b), fe = a => {\n  var b = jb(a) + 1, c = ee(b);\n  c && kb(a, u, c, b);\n  return c;\n}, ge = a => \"]\" == a.slice(-1) && a.lastIndexOf(\"[\"), he = a => {\n  a -= 5120;\n  return 0 == a ? n : 1 == a ? u : 2 == a ? Aa : 4 == a ? x : 6 == a ? B : 5 == a || 28922 == a || 28520 == a || 30779 == a || 30782 == a ? A : Ba;\n}, ie = (a, b, c, d, e) => {\n  a = he(a);\n  b = d * ((Vd || c) * ({5:3, 6:4, 8:2, 29502:3, 29504:4, 26917:2, 26918:2, 29846:3, 29847:4}[b - 6402] || 1) * a.BYTES_PER_ELEMENT + Ud - 1 & -Ud);\n  return a.subarray(e >>> 31 - Math.clz32(a.BYTES_PER_ELEMENT), e + b >>> 31 - Math.clz32(a.BYTES_PER_ELEMENT));\n}, U = a => {\n  var b = R.Db;\n  if (b) {\n    var c = b.la[a];\n    \"number\" == typeof c && (b.la[a] = c = R.getUniformLocation(b, b.rb[a] + (0 < c ? `[${c}]` : \"\")));\n    return c;\n  }\n  S ||= 1282;\n}, je = [], ke = [], le = {}, ne = () => {\n  if (!me) {\n    var a = {USER:\"web_user\", LOGNAME:\"web_user\", PATH:\"/\", PWD:\"/\", HOME:\"/home/web_user\", LANG:(\"object\" == typeof navigator && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", _:qa || \"./this.program\"}, b;\n    for (b in le) {\n      void 0 === le[b] ? delete a[b] : a[b] = le[b];\n    }\n    var c = [];\n    for (b in a) {\n      c.push(`${b}=${a[b]}`);\n    }\n    me = c;\n  }\n  return me;\n}, me, oe = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], pe = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], qe = (a, b, c, d) => {\n  function e(q, t, v) {\n    for (q = \"number\" == typeof q ? q.toString() : q || \"\"; q.length < t;) {\n      q = v[0] + q;\n    }\n    return q;\n  }\n  function f(q, t) {\n    return e(q, t, \"0\");\n  }\n  function g(q, t) {\n    function v(D) {\n      return 0 > D ? -1 : 0 < D ? 1 : 0;\n    }\n    var z;\n    0 === (z = v(q.getFullYear() - t.getFullYear())) && 0 === (z = v(q.getMonth() - t.getMonth())) && (z = v(q.getDate() - t.getDate()));\n    return z;\n  }\n  function k(q) {\n    switch(q.getDay()) {\n      case 0:\n        return new Date(q.getFullYear() - 1, 11, 29);\n      case 1:\n        return q;\n      case 2:\n        return new Date(q.getFullYear(), 0, 3);\n      case 3:\n        return new Date(q.getFullYear(), 0, 2);\n      case 4:\n        return new Date(q.getFullYear(), 0, 1);\n      case 5:\n        return new Date(q.getFullYear() - 1, 11, 31);\n      case 6:\n        return new Date(q.getFullYear() - 1, 11, 30);\n    }\n  }\n  function m(q) {\n    var t = q.$;\n    for (q = new Date((new Date(q.aa + 1900, 0, 1)).getTime()); 0 < t;) {\n      var v = q.getMonth(), z = (Bd(q.getFullYear()) ? oe : pe)[v];\n      if (t > z - q.getDate()) {\n        t -= z - q.getDate() + 1, q.setDate(1), 11 > v ? q.setMonth(v + 1) : (q.setMonth(0), q.setFullYear(q.getFullYear() + 1));\n      } else {\n        q.setDate(q.getDate() + t);\n        break;\n      }\n    }\n    v = new Date(q.getFullYear() + 1, 0, 4);\n    t = k(new Date(q.getFullYear(), 0, 4));\n    v = k(v);\n    return 0 >= g(t, q) ? 0 >= g(v, q) ? q.getFullYear() + 1 : q.getFullYear() : q.getFullYear() - 1;\n  }\n  var p = A[d + 40 >> 2];\n  d = {dc:x[d >> 2], cc:x[d + 4 >> 2], Fa:x[d + 8 >> 2], Pa:x[d + 12 >> 2], Ga:x[d + 16 >> 2], aa:x[d + 20 >> 2], P:x[d + 24 >> 2], $:x[d + 28 >> 2], Fc:x[d + 32 >> 2], bc:x[d + 36 >> 2], ec:p ? p ? C(u, p) : \"\" : \"\"};\n  c = c ? C(u, c) : \"\";\n  p = {\"%c\":\"%a %b %d %H:%M:%S %Y\", \"%D\":\"%m/%d/%y\", \"%F\":\"%Y-%m-%d\", \"%h\":\"%b\", \"%r\":\"%I:%M:%S %p\", \"%R\":\"%H:%M\", \"%T\":\"%H:%M:%S\", \"%x\":\"%m/%d/%y\", \"%X\":\"%H:%M:%S\", \"%Ec\":\"%c\", \"%EC\":\"%C\", \"%Ex\":\"%m/%d/%y\", \"%EX\":\"%H:%M:%S\", \"%Ey\":\"%y\", \"%EY\":\"%Y\", \"%Od\":\"%d\", \"%Oe\":\"%e\", \"%OH\":\"%H\", \"%OI\":\"%I\", \"%Om\":\"%m\", \"%OM\":\"%M\", \"%OS\":\"%S\", \"%Ou\":\"%u\", \"%OU\":\"%U\", \"%OV\":\"%V\", \"%Ow\":\"%w\", \"%OW\":\"%W\", \"%Oy\":\"%y\",};\n  for (var r in p) {\n    c = c.replace(new RegExp(r, \"g\"), p[r]);\n  }\n  var w = \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"), y = \"January February March April May June July August September October November December\".split(\" \");\n  p = {\"%a\":q => w[q.P].substring(0, 3), \"%A\":q => w[q.P], \"%b\":q => y[q.Ga].substring(0, 3), \"%B\":q => y[q.Ga], \"%C\":q => f((q.aa + 1900) / 100 | 0, 2), \"%d\":q => f(q.Pa, 2), \"%e\":q => e(q.Pa, 2, \" \"), \"%g\":q => m(q).toString().substring(2), \"%G\":m, \"%H\":q => f(q.Fa, 2), \"%I\":q => {\n    q = q.Fa;\n    0 == q ? q = 12 : 12 < q && (q -= 12);\n    return f(q, 2);\n  }, \"%j\":q => {\n    for (var t = 0, v = 0; v <= q.Ga - 1; t += (Bd(q.aa + 1900) ? oe : pe)[v++]) {\n    }\n    return f(q.Pa + t, 3);\n  }, \"%m\":q => f(q.Ga + 1, 2), \"%M\":q => f(q.cc, 2), \"%n\":() => \"\\n\", \"%p\":q => 0 <= q.Fa && 12 > q.Fa ? \"AM\" : \"PM\", \"%S\":q => f(q.dc, 2), \"%t\":() => \"\\t\", \"%u\":q => q.P || 7, \"%U\":q => f(Math.floor((q.$ + 7 - q.P) / 7), 2), \"%V\":q => {\n    var t = Math.floor((q.$ + 7 - (q.P + 6) % 7) / 7);\n    2 >= (q.P + 371 - q.$ - 2) % 7 && t++;\n    if (t) {\n      53 == t && (v = (q.P + 371 - q.$) % 7, 4 == v || 3 == v && Bd(q.aa) || (t = 1));\n    } else {\n      t = 52;\n      var v = (q.P + 7 - q.$ - 1) % 7;\n      (4 == v || 5 == v && Bd(q.aa % 400 - 1)) && t++;\n    }\n    return f(t, 2);\n  }, \"%w\":q => q.P, \"%W\":q => f(Math.floor((q.$ + 7 - (q.P + 6) % 7) / 7), 2), \"%y\":q => (q.aa + 1900).toString().substring(2), \"%Y\":q => q.aa + 1900, \"%z\":q => {\n    q = q.bc;\n    var t = 0 <= q;\n    q = Math.abs(q) / 60;\n    return (t ? \"+\" : \"-\") + String(\"0000\" + (q / 60 * 100 + q % 60)).slice(-4);\n  }, \"%Z\":q => q.ec, \"%%\":() => \"%\"};\n  c = c.replace(/%%/g, \"\\x00\\x00\");\n  for (r in p) {\n    c.includes(r) && (c = c.replace(new RegExp(r, \"g\"), p[r](d)));\n  }\n  c = c.replace(/\\0\\0/g, \"%\");\n  r = lb(c, !1);\n  if (r.length > b) {\n    return 0;\n  }\n  n.set(r, a);\n  return r.length - 1;\n};\n[44].forEach(a => {\n  vb[a] = new E(a);\n  vb[a].stack = \"<generic error, no stack>\";\n});\nEb = Array(4096);\nSb(G, \"/\");\nUb(\"/tmp\");\nUb(\"/home\");\nUb(\"/home/web_user\");\n(function() {\n  Ub(\"/dev\");\n  ob(259, {read:() => 0, write:(d, e, f, g) => g,});\n  Vb(\"/dev/null\", 259);\n  nb(1280, qb);\n  nb(1536, rb);\n  Vb(\"/dev/tty\", 1280);\n  Vb(\"/dev/tty1\", 1536);\n  var a = new Uint8Array(1024), b = 0, c = () => {\n    0 === b && (b = fb(a).byteLength);\n    return a[--b];\n  };\n  ac(\"random\", c);\n  ac(\"urandom\", c);\n  Ub(\"/dev/shm\");\n  Ub(\"/dev/shm/tmp\");\n})();\n(function() {\n  Ub(\"/proc\");\n  var a = Ub(\"/proc/self\");\n  Ub(\"/proc/self/fd\");\n  Sb({S() {\n    var b = ub(a, \"fd\", 16895, 73);\n    b.j = {ja(c, d) {\n      var e = Pb(+d);\n      c = {parent:null, S:{hb:\"fake\"}, j:{ka:() => e.path},};\n      return c.parent = c;\n    }};\n    return b;\n  }}, \"/proc/self/fd\");\n})();\nH = l.BindingError = class extends Error {\n  constructor(a) {\n    super(a);\n    this.name = \"BindingError\";\n  }\n};\nfc.push(0, 1, void 0, 1, null, 1, !0, 1, !1, 1,);\nl.count_emval_handles = () => fc.length / 2 - 5 - ec.length;\njc = l.PureVirtualError = ic(\"PureVirtualError\");\nfor (var re = Array(256), se = 0; 256 > se; ++se) {\n  re[se] = String.fromCharCode(se);\n}\nkc = re;\nl.getInheritedInstanceCount = () => Object.keys(oc).length;\nl.getLiveInheritedInstances = () => {\n  var a = [], b;\n  for (b in oc) {\n    oc.hasOwnProperty(b) && a.push(oc[b]);\n  }\n  return a;\n};\nl.flushPendingDeletes = mc;\nl.setDelayFunction = a => {\n  nc = a;\n  lc.length && nc && nc(mc);\n};\nAc = l.InternalError = class extends Error {\n  constructor(a) {\n    super(a);\n    this.name = \"InternalError\";\n  }\n};\nObject.assign(Lc.prototype, {isAliasOf:function(a) {\n  if (!(this instanceof Lc && a instanceof Lc)) {\n    return !1;\n  }\n  var b = this.g.u.i, c = this.g.o;\n  a.g = a.g;\n  var d = a.g.u.i;\n  for (a = a.g.o; b.B;) {\n    c = b.ma(c), b = b.B;\n  }\n  for (; d.B;) {\n    a = d.ma(a), d = d.B;\n  }\n  return b === d && c === a;\n}, clone:function() {\n  this.g.o || Kc(this);\n  if (this.g.ha) {\n    return this.g.count.value += 1, this;\n  }\n  var a = Bc, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.g;\n  a = a(c.call(b, d, {g:{value:{count:e.count, fa:e.fa, ha:e.ha, o:e.o, u:e.u, D:e.D, I:e.I,},}}));\n  a.g.count.value += 1;\n  a.g.fa = !1;\n  return a;\n}, [\"delete\"]() {\n  this.g.o || Kc(this);\n  if (this.g.fa && !this.g.ha) {\n    throw new H(\"Object already scheduled for deletion\");\n  }\n  vc(this);\n  var a = this.g;\n  --a.count.value;\n  0 === a.count.value && (a.D ? a.I.N(a.D) : a.u.i.N(a.o));\n  this.g.ha || (this.g.D = void 0, this.g.o = void 0);\n}, isDeleted:function() {\n  return !this.g.o;\n}, deleteLater:function() {\n  this.g.o || Kc(this);\n  if (this.g.fa && !this.g.ha) {\n    throw new H(\"Object already scheduled for deletion\");\n  }\n  lc.push(this);\n  1 === lc.length && nc && nc(mc);\n  this.g.fa = !0;\n  return this;\n},});\nObject.assign(Vc.prototype, {Kb(a) {\n  this.mb && (a = this.mb(a));\n  return a;\n}, Xa(a) {\n  this.N?.(a);\n}, argPackAdvance:8, readValueFromPointer:Fc, fromWireType:function(a) {\n  function b() {\n    return this.ua ? Cc(this.i.L, {u:this.Wb, o:c, I:this, D:a,}) : Cc(this.i.L, {u:this, o:a,});\n  }\n  var c = this.Kb(a);\n  if (!c) {\n    return this.Xa(a), null;\n  }\n  var d = zc(this.i, c);\n  if (void 0 !== d) {\n    if (0 === d.g.count.value) {\n      return d.g.o = c, d.g.D = a, d.clone();\n    }\n    d = d.clone();\n    this.Xa(a);\n    return d;\n  }\n  d = this.i.Jb(c);\n  d = yc[d];\n  if (!d) {\n    return b.call(this);\n  }\n  d = this.ta ? d.Cb : d.pointerType;\n  var e = xc(c, this.i, d.i);\n  return null === e ? b.call(this) : this.ua ? Cc(d.i.L, {u:d, o:e, I:this, D:a,}) : Cc(d.i.L, {u:d, o:e,});\n},});\nad = l.UnboundTypeError = ic(\"UnboundTypeError\");\nfor (var R, V = 0; 32 > V; ++V) {\n  $d.push(Array(V));\n}\nvar te = new Float32Array(288);\nfor (V = 0; 288 > V; ++V) {\n  je[V] = te.subarray(0, V);\n}\nvar ue = new Int32Array(288);\nfor (V = 0; 288 > V; ++V) {\n  ke[V] = ue.subarray(0, V);\n}\nvar Ke = {__syscall_fcntl64:function(a, b, c) {\n  $a = c;\n  try {\n    var d = Pb(a);\n    switch(b) {\n      case 0:\n        var e = Za();\n        if (0 > e) {\n          break;\n        }\n        for (; Cb[e];) {\n          e++;\n        }\n        return Rb(d, e).U;\n      case 1:\n      case 2:\n        return 0;\n      case 3:\n        return d.flags;\n      case 4:\n        return e = Za(), d.flags |= e, 0;\n      case 12:\n        return e = Za(), Aa[e + 0 >> 1] = 2, 0;\n      case 13:\n      case 14:\n        return 0;\n    }\n    return -28;\n  } catch (f) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== f.name) {\n      throw f;\n    }\n    return -f.Y;\n  }\n}, __syscall_ioctl:function(a, b, c) {\n  $a = c;\n  try {\n    var d = Pb(a);\n    switch(b) {\n      case 21509:\n        return d.s ? 0 : -59;\n      case 21505:\n        if (!d.s) {\n          return -59;\n        }\n        if (d.s.T.Rb) {\n          a = [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          var e = Za();\n          x[e >> 2] = 25856;\n          x[e + 4 >> 2] = 5;\n          x[e + 8 >> 2] = 191;\n          x[e + 12 >> 2] = 35387;\n          for (var f = 0; 32 > f; f++) {\n            n[e + f + 17] = a[f] || 0;\n          }\n        }\n        return 0;\n      case 21510:\n      case 21511:\n      case 21512:\n        return d.s ? 0 : -59;\n      case 21506:\n      case 21507:\n      case 21508:\n        if (!d.s) {\n          return -59;\n        }\n        if (d.s.T.Sb) {\n          for (e = Za(), a = [], f = 0; 32 > f; f++) {\n            a.push(n[e + f + 17]);\n          }\n        }\n        return 0;\n      case 21519:\n        if (!d.s) {\n          return -59;\n        }\n        e = Za();\n        return x[e >> 2] = 0;\n      case 21520:\n        return d.s ? -28 : -59;\n      case 21531:\n        e = Za();\n        if (!d.m.Qb) {\n          throw new E(59);\n        }\n        return d.m.Qb(d, b, e);\n      case 21523:\n        if (!d.s) {\n          return -59;\n        }\n        d.s.T.Tb && (f = [24, 80], e = Za(), Aa[e >> 1] = f[0], Aa[e + 2 >> 1] = f[1]);\n        return 0;\n      case 21524:\n        return d.s ? 0 : -59;\n      case 21515:\n        return d.s ? 0 : -59;\n      default:\n        return -28;\n    }\n  } catch (g) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== g.name) {\n      throw g;\n    }\n    return -g.Y;\n  }\n}, __syscall_openat:function(a, b, c, d) {\n  $a = d;\n  try {\n    b = b ? C(u, b) : \"\";\n    var e = b;\n    if (\"/\" === e.charAt(0)) {\n      b = e;\n    } else {\n      var f = -100 === a ? \"/\" : Pb(a).path;\n      if (0 == e.length) {\n        throw new E(44);\n      }\n      b = bb(f + \"/\" + e);\n    }\n    var g = d ? Za() : 0;\n    return Xb(b, c, g).U;\n  } catch (k) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== k.name) {\n      throw k;\n    }\n    return -k.Y;\n  }\n}, _abort_js:() => {\n  La(\"\");\n}, _embind_create_inheriting_constructor:(a, b, c) => {\n  a = I(a);\n  b = uc(b, \"wrapper\");\n  c = gc(c);\n  var d = b.i, e = d.L, f = d.B.L, g = d.B.constructor;\n  a = dc(a, function(...k) {\n    d.B.lb.forEach(function(m) {\n      if (this[m] === f[m]) {\n        throw new jc(`Pure virtual function ${m} must be implemented in JavaScript`);\n      }\n    }.bind(this));\n    Object.defineProperty(this, \"__parent\", {value:e});\n    this.__construct(...k);\n  });\n  e.__construct = function(...k) {\n    if (this === e) {\n      throw new H(\"Pass correct 'this' to __construct\");\n    }\n    k = g.implement(this, ...k);\n    vc(k);\n    var m = k.g;\n    k.notifyOnDestruction();\n    m.ha = !0;\n    Object.defineProperties(this, {g:{value:m}});\n    Bc(this);\n    k = m.o;\n    k = pc(d, k);\n    if (oc.hasOwnProperty(k)) {\n      throw new H(`Tried to register registered instance: ${k}`);\n    }\n    oc[k] = this;\n  };\n  e.__destruct = function() {\n    if (this === e) {\n      throw new H(\"Pass correct 'this' to __destruct\");\n    }\n    vc(this);\n    var k = this.g.o;\n    k = pc(d, k);\n    if (oc.hasOwnProperty(k)) {\n      delete oc[k];\n    } else {\n      throw new H(`Tried to unregister unregistered instance: ${k}`);\n    }\n  };\n  a.prototype = Object.create(e);\n  Object.assign(a.prototype, c);\n  return hc(a);\n}, _embind_finalize_value_object:a => {\n  var b = Dc[a];\n  delete Dc[a];\n  var c = b.Na, d = b.N, e = b.$a, f = e.map(g => g.Nb).concat(e.map(g => g.Zb));\n  J([a], f, g => {\n    var k = {};\n    e.forEach((m, p) => {\n      var r = g[p], w = m.Lb, y = m.Mb, q = g[p + e.length], t = m.Yb, v = m.$b;\n      k[m.Hb] = {read:z => r.fromWireType(w(y, z)), write:(z, D) => {\n        var F = [];\n        t(v, z, q.toWireType(F, D));\n        Ec(F);\n      }};\n    });\n    return [{name:b.name, fromWireType:m => {\n      var p = {}, r;\n      for (r in k) {\n        p[r] = k[r].read(m);\n      }\n      d(m);\n      return p;\n    }, toWireType:(m, p) => {\n      for (var r in k) {\n        if (!(r in p)) {\n          throw new TypeError(`Missing field: \"${r}\"`);\n        }\n      }\n      var w = c();\n      for (r in k) {\n        k[r].write(w, p[r]);\n      }\n      null !== m && m.push(d, w);\n      return w;\n    }, argPackAdvance:8, readValueFromPointer:Fc, K:d,}];\n  });\n}, _embind_register_bigint:() => {\n}, _embind_register_bool:(a, b, c, d) => {\n  b = I(b);\n  Ic(a, {name:b, fromWireType:function(e) {\n    return !!e;\n  }, toWireType:function(e, f) {\n    return f ? c : d;\n  }, argPackAdvance:8, readValueFromPointer:function(e) {\n    return this.fromWireType(u[e]);\n  }, K:null,});\n}, _embind_register_class:(a, b, c, d, e, f, g, k, m, p, r, w, y) => {\n  r = I(r);\n  f = P(e, f);\n  k &&= P(g, k);\n  p &&= P(m, p);\n  y = P(w, y);\n  var q = Oc(r);\n  Nc(q, function() {\n    bd(`Cannot construct ${r} due to unbound types`, [d]);\n  });\n  J([a, b, c], d ? [d] : [], t => {\n    t = t[0];\n    if (d) {\n      var v = t.i;\n      var z = v.L;\n    } else {\n      z = Lc.prototype;\n    }\n    t = dc(r, function(...N) {\n      if (Object.getPrototypeOf(this) !== D) {\n        throw new H(\"Use 'new' to construct \" + r);\n      }\n      if (void 0 === F.X) {\n        throw new H(r + \" has no accessible constructor\");\n      }\n      var O = F.X[N.length];\n      if (void 0 === O) {\n        throw new H(`Tried to invoke ctor of ${r} with invalid number of parameters (${N.length}) - expected (${Object.keys(F.X).toString()}) parameters instead!`);\n      }\n      return O.apply(this, N);\n    });\n    var D = Object.create(z, {constructor:{value:t},});\n    t.prototype = D;\n    var F = new Pc(r, t, D, y, v, f, k, p);\n    if (F.B) {\n      var M;\n      (M = F.B).na ?? (M.na = []);\n      F.B.na.push(F);\n    }\n    v = new Vc(r, F, !0, !1, !1);\n    M = new Vc(r + \"*\", F, !1, !1, !1);\n    z = new Vc(r + \" const*\", F, !1, !0, !1);\n    yc[a] = {pointerType:M, Cb:z};\n    Wc(q, t);\n    return [v, M, z];\n  });\n}, _embind_register_class_class_function:(a, b, c, d, e, f, g) => {\n  var k = ed(c, d);\n  b = I(b);\n  b = fd(b);\n  f = P(e, f);\n  J([], [a], m => {\n    function p() {\n      bd(`Cannot call ${r} due to unbound types`, k);\n    }\n    m = m[0];\n    var r = `${m.name}.${b}`;\n    b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n    var w = m.i.constructor;\n    void 0 === w[b] ? (p.da = c - 1, w[b] = p) : (Mc(w, b, r), w[b].A[c - 1] = p);\n    J([], k, y => {\n      y = dd(r, [y[0], null].concat(y.slice(1)), null, f, g);\n      void 0 === w[b].A ? (y.da = c - 1, w[b] = y) : w[b].A[c - 1] = y;\n      if (m.i.na) {\n        for (const q of m.i.na) {\n          q.constructor.hasOwnProperty(b) || (q.constructor[b] = y);\n        }\n      }\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_class_property:(a, b, c, d, e, f, g, k) => {\n  b = I(b);\n  f = P(e, f);\n  J([], [a], m => {\n    m = m[0];\n    var p = `${m.name}.${b}`, r = {get() {\n      bd(`Cannot access ${p} due to unbound types`, [c]);\n    }, enumerable:!0, configurable:!0};\n    r.set = k ? () => {\n      bd(`Cannot access ${p} due to unbound types`, [c]);\n    } : () => {\n      throw new H(`${p} is a read-only property`);\n    };\n    Object.defineProperty(m.i.constructor, b, r);\n    J([], [c], w => {\n      w = w[0];\n      var y = {get() {\n        return w.fromWireType(f(d));\n      }, enumerable:!0};\n      k && (k = P(g, k), y.set = q => {\n        var t = [];\n        k(d, w.toWireType(t, q));\n        Ec(t);\n      });\n      Object.defineProperty(m.i.constructor, b, y);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_constructor:(a, b, c, d, e, f) => {\n  var g = ed(b, c);\n  e = P(d, e);\n  J([], [a], k => {\n    k = k[0];\n    var m = `constructor ${k.name}`;\n    void 0 === k.i.X && (k.i.X = []);\n    if (void 0 !== k.i.X[b - 1]) {\n      throw new H(`Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${k.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n    }\n    k.i.X[b - 1] = () => {\n      bd(`Cannot construct ${k.name} due to unbound types`, g);\n    };\n    J([], g, p => {\n      p.splice(1, 0, null);\n      k.i.X[b - 1] = dd(m, p, null, e, f);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_function:(a, b, c, d, e, f, g, k) => {\n  var m = ed(c, d);\n  b = I(b);\n  b = fd(b);\n  f = P(e, f);\n  J([], [a], p => {\n    function r() {\n      bd(`Cannot call ${w} due to unbound types`, m);\n    }\n    p = p[0];\n    var w = `${p.name}.${b}`;\n    b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n    k && p.i.lb.push(b);\n    var y = p.i.L, q = y[b];\n    void 0 === q || void 0 === q.A && q.className !== p.name && q.da === c - 2 ? (r.da = c - 2, r.className = p.name, y[b] = r) : (Mc(y, b, w), y[b].A[c - 2] = r);\n    J([], m, t => {\n      t = dd(w, t, p, f, g);\n      void 0 === y[b].A ? (t.da = c - 2, y[b] = t) : y[b].A[c - 2] = t;\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_class_property:(a, b, c, d, e, f, g, k, m, p) => {\n  b = I(b);\n  e = P(d, e);\n  J([], [a], r => {\n    r = r[0];\n    var w = `${r.name}.${b}`, y = {get() {\n      bd(`Cannot access ${w} due to unbound types`, [c, g]);\n    }, enumerable:!0, configurable:!0};\n    y.set = m ? () => bd(`Cannot access ${w} due to unbound types`, [c, g]) : () => {\n      throw new H(w + \" is a read-only property\");\n    };\n    Object.defineProperty(r.i.L, b, y);\n    J([], m ? [c, g] : [c], q => {\n      var t = q[0], v = {get() {\n        var D = gd(this, r, w + \" getter\");\n        return t.fromWireType(e(f, D));\n      }, enumerable:!0};\n      if (m) {\n        m = P(k, m);\n        var z = q[1];\n        v.set = function(D) {\n          var F = gd(this, r, w + \" setter\"), M = [];\n          m(p, F, z.toWireType(M, D));\n          Ec(M);\n        };\n      }\n      Object.defineProperty(r.i.L, b, v);\n      return [];\n    });\n    return [];\n  });\n}, _embind_register_emval:a => Ic(a, jd), _embind_register_enum:(a, b, c, d) => {\n  function e() {\n  }\n  b = I(b);\n  e.values = {};\n  Ic(a, {name:b, constructor:e, fromWireType:function(f) {\n    return this.constructor.values[f];\n  }, toWireType:(f, g) => g.value, argPackAdvance:8, readValueFromPointer:kd(b, c, d), K:null,});\n  Nc(b, e);\n}, _embind_register_enum_value:(a, b, c) => {\n  var d = uc(a, \"enum\");\n  b = I(b);\n  a = d.constructor;\n  d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:dc(`${d.name}_${b}`, function() {\n  })},});\n  a.values[c] = d;\n  a[b] = d;\n}, _embind_register_float:(a, b, c) => {\n  b = I(b);\n  Ic(a, {name:b, fromWireType:d => d, toWireType:(d, e) => e, argPackAdvance:8, readValueFromPointer:ld(b, c), K:null,});\n}, _embind_register_function:(a, b, c, d, e, f) => {\n  var g = ed(b, c);\n  a = I(a);\n  a = fd(a);\n  e = P(d, e);\n  Nc(a, function() {\n    bd(`Cannot call ${a} due to unbound types`, g);\n  }, b - 1);\n  J([], g, k => {\n    Wc(a, dd(a, [k[0], null].concat(k.slice(1)), null, e, f), b - 1);\n    return [];\n  });\n}, _embind_register_integer:(a, b, c, d, e) => {\n  b = I(b);\n  -1 === e && (e = 4294967295);\n  e = k => k;\n  if (0 === d) {\n    var f = 32 - 8 * c;\n    e = k => k << f >>> f;\n  }\n  var g = b.includes(\"unsigned\") ? function(k, m) {\n    return m >>> 0;\n  } : function(k, m) {\n    return m;\n  };\n  Ic(a, {name:b, fromWireType:e, toWireType:g, argPackAdvance:8, readValueFromPointer:md(b, c, 0 !== d), K:null,});\n}, _embind_register_memory_view:(a, b, c) => {\n  function d(f) {\n    return new e(n.buffer, A[f + 4 >> 2], A[f >> 2]);\n  }\n  var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array,][b];\n  c = I(c);\n  Ic(a, {name:c, fromWireType:d, argPackAdvance:8, readValueFromPointer:d,}, {Ob:!0,});\n}, _embind_register_std_string:(a, b) => {\n  b = I(b);\n  var c = \"std::string\" === b;\n  Ic(a, {name:b, fromWireType:function(d) {\n    var e = A[d >> 2], f = d + 4;\n    if (c) {\n      for (var g = f, k = 0; k <= e; ++k) {\n        var m = f + k;\n        if (k == e || 0 == u[m]) {\n          g = g ? C(u, g, m - g) : \"\";\n          if (void 0 === p) {\n            var p = g;\n          } else {\n            p += String.fromCharCode(0), p += g;\n          }\n          g = m + 1;\n        }\n      }\n    } else {\n      p = Array(e);\n      for (k = 0; k < e; ++k) {\n        p[k] = String.fromCharCode(u[f + k]);\n      }\n      p = p.join(\"\");\n    }\n    sc(d);\n    return p;\n  }, toWireType:function(d, e) {\n    e instanceof ArrayBuffer && (e = new Uint8Array(e));\n    var f = \"string\" == typeof e;\n    if (!(f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array)) {\n      throw new H(\"Cannot pass non-string to std::string\");\n    }\n    var g = c && f ? jb(e) : e.length;\n    var k = ee(4 + g + 1), m = k + 4;\n    A[k >> 2] = g;\n    if (c && f) {\n      kb(e, u, m, g + 1);\n    } else {\n      if (f) {\n        for (f = 0; f < g; ++f) {\n          var p = e.charCodeAt(f);\n          if (255 < p) {\n            throw sc(m), new H(\"String has UTF-16 code units that do not fit in 8 bits\");\n          }\n          u[m + f] = p;\n        }\n      } else {\n        for (f = 0; f < g; ++f) {\n          u[m + f] = e[f];\n        }\n      }\n    }\n    null !== d && d.push(sc, k);\n    return k;\n  }, argPackAdvance:8, readValueFromPointer:Fc, K(d) {\n    sc(d);\n  },});\n}, _embind_register_std_wstring:(a, b, c) => {\n  c = I(c);\n  if (2 === b) {\n    var d = od;\n    var e = pd;\n    var f = qd;\n    var g = k => Ba[k >> 1];\n  } else {\n    4 === b && (d = rd, e = sd, f = td, g = k => A[k >> 2]);\n  }\n  Ic(a, {name:c, fromWireType:k => {\n    for (var m = A[k >> 2], p, r = k + 4, w = 0; w <= m; ++w) {\n      var y = k + 4 + w * b;\n      if (w == m || 0 == g(y)) {\n        r = d(r, y - r), void 0 === p ? p = r : (p += String.fromCharCode(0), p += r), r = y + b;\n      }\n    }\n    sc(k);\n    return p;\n  }, toWireType:(k, m) => {\n    if (\"string\" != typeof m) {\n      throw new H(`Cannot pass non-string to C++ string type ${c}`);\n    }\n    var p = f(m), r = ee(4 + p + b);\n    A[r >> 2] = p / b;\n    e(m, r + 4, p + b);\n    null !== k && k.push(sc, r);\n    return r;\n  }, argPackAdvance:8, readValueFromPointer:Fc, K(k) {\n    sc(k);\n  }});\n}, _embind_register_value_object:(a, b, c, d, e, f) => {\n  Dc[a] = {name:I(b), Na:P(c, d), N:P(e, f), $a:[],};\n}, _embind_register_value_object_field:(a, b, c, d, e, f, g, k, m, p) => {\n  Dc[a].$a.push({Hb:I(b), Nb:c, Lb:P(d, e), Mb:f, Zb:g, Yb:P(k, m), $b:p,});\n}, _embind_register_void:(a, b) => {\n  b = I(b);\n  Ic(a, {yc:!0, name:b, argPackAdvance:0, fromWireType:() => {\n  }, toWireType:() => {\n  },});\n}, _emscripten_get_now_is_monotonic:() => 1, _emscripten_memcpy_js:(a, b, c) => u.copyWithin(a, b, b + c), _emscripten_throw_longjmp:() => {\n  throw Infinity;\n}, _emval_as:(a, b, c) => {\n  a = gc(a);\n  b = uc(b, \"emval::as\");\n  return ud(b, c, a);\n}, _emval_call_method:(a, b, c, d, e) => {\n  a = xd[a];\n  b = gc(b);\n  c = wd(c);\n  return a(b, b[c], d, e);\n}, _emval_decref:hd, _emval_get_method_caller:(a, b, c) => {\n  var d = zd(a, b), e = d.shift();\n  a--;\n  var f = Array(a);\n  b = `methodCaller<(${d.map(g => g.name).join(\", \")}) => ${e.name}>`;\n  return yd(dc(b, (g, k, m, p) => {\n    for (var r = 0, w = 0; w < a; ++w) {\n      f[w] = d[w].readValueFromPointer(p + r), r += d[w].argPackAdvance;\n    }\n    g = 1 === c ? Ad(k, f) : k.apply(g, f);\n    return ud(e, m, g);\n  }));\n}, _emval_get_property:(a, b) => {\n  a = gc(a);\n  b = gc(b);\n  return hc(a[b]);\n}, _emval_incref:a => {\n  9 < a && (fc[a + 1] += 1);\n}, _emval_new_array:() => hc([]), _emval_new_cstring:a => hc(wd(a)), _emval_new_object:() => hc({}), _emval_run_destructors:a => {\n  var b = gc(a);\n  Ec(b);\n  hd(a);\n}, _emval_set_property:(a, b, c) => {\n  a = gc(a);\n  b = gc(b);\n  c = gc(c);\n  a[b] = c;\n}, _emval_take_value:(a, b) => {\n  a = uc(a, \"_emval_take_value\");\n  a = a.readValueFromPointer(b);\n  return hc(a);\n}, _gmtime_js:function(a, b, c) {\n  a = new Date(1000 * (b + 2097152 >>> 0 < 4194305 - !!a ? (a >>> 0) + 4294967296 * b : NaN));\n  x[c >> 2] = a.getUTCSeconds();\n  x[c + 4 >> 2] = a.getUTCMinutes();\n  x[c + 8 >> 2] = a.getUTCHours();\n  x[c + 12 >> 2] = a.getUTCDate();\n  x[c + 16 >> 2] = a.getUTCMonth();\n  x[c + 20 >> 2] = a.getUTCFullYear() - 1900;\n  x[c + 24 >> 2] = a.getUTCDay();\n  x[c + 28 >> 2] = (a.getTime() - Date.UTC(a.getUTCFullYear(), 0, 1, 0, 0, 0, 0)) / 864E5 | 0;\n}, _localtime_js:function(a, b, c) {\n  a = new Date(1000 * (b + 2097152 >>> 0 < 4194305 - !!a ? (a >>> 0) + 4294967296 * b : NaN));\n  x[c >> 2] = a.getSeconds();\n  x[c + 4 >> 2] = a.getMinutes();\n  x[c + 8 >> 2] = a.getHours();\n  x[c + 12 >> 2] = a.getDate();\n  x[c + 16 >> 2] = a.getMonth();\n  x[c + 20 >> 2] = a.getFullYear() - 1900;\n  x[c + 24 >> 2] = a.getDay();\n  x[c + 28 >> 2] = (Bd(a.getFullYear()) ? Cd : Dd)[a.getMonth()] + a.getDate() - 1 | 0;\n  x[c + 36 >> 2] = -(60 * a.getTimezoneOffset());\n  b = (new Date(a.getFullYear(), 6, 1)).getTimezoneOffset();\n  var d = (new Date(a.getFullYear(), 0, 1)).getTimezoneOffset();\n  x[c + 32 >> 2] = (b != d && a.getTimezoneOffset() == Math.min(d, b)) | 0;\n}, _tzset_js:(a, b, c, d) => {\n  var e = (new Date()).getFullYear(), f = new Date(e, 0, 1), g = new Date(e, 6, 1);\n  e = f.getTimezoneOffset();\n  var k = g.getTimezoneOffset();\n  A[a >> 2] = 60 * Math.max(e, k);\n  x[b >> 2] = Number(e != k);\n  a = m => m.toLocaleTimeString(void 0, {hour12:!1, timeZoneName:\"short\"}).split(\" \")[1];\n  f = a(f);\n  g = a(g);\n  k < e ? (kb(f, u, c, 17), kb(g, u, d, 17)) : (kb(f, u, d, 17), kb(g, u, c, 17));\n}, emscripten_asm_const_int:(a, b, c) => {\n  Ed.length = 0;\n  for (var d; d = u[b++];) {\n    var e = 105 != d;\n    e &= 112 != d;\n    c += e && c % 8 ? 4 : 0;\n    Ed.push(112 == d ? A[c >> 2] : 105 == d ? x[c >> 2] : Ca[c >> 3]);\n    c += e ? 8 : 4;\n  }\n  return Xa[a](...Ed);\n}, emscripten_date_now:() => Date.now(), emscripten_get_now:() => performance.now(), emscripten_glActiveTexture:a => R.activeTexture(a), emscripten_glAttachShader:(a, b) => {\n  R.attachShader(Q[a], Od[b]);\n}, emscripten_glBindAttribLocation:(a, b, c) => {\n  R.bindAttribLocation(Q[a], b, c ? C(u, c) : \"\");\n}, emscripten_glBindBuffer:(a, b) => {\n  35051 == a ? R.Ia = b : 35052 == a && (R.ea = b);\n  R.bindBuffer(a, Kd[b]);\n}, emscripten_glBindFramebuffer:Xd, emscripten_glBindRenderbuffer:(a, b) => {\n  R.bindRenderbuffer(a, Md[b]);\n}, emscripten_glBindSampler:(a, b) => {\n  R.bindSampler(a, Qd[b]);\n}, emscripten_glBindTexture:(a, b) => {\n  R.bindTexture(a, Nd[b]);\n}, emscripten_glBindVertexArray:Yd, emscripten_glBindVertexArrayOES:Yd, emscripten_glBlendColor:(a, b, c, d) => R.blendColor(a, b, c, d), emscripten_glBlendEquation:a => R.blendEquation(a), emscripten_glBlendFunc:(a, b) => R.blendFunc(a, b), emscripten_glBlitFramebuffer:(a, b, c, d, e, f, g, k, m, p) => R.blitFramebuffer(a, b, c, d, e, f, g, k, m, p), emscripten_glBufferData:(a, b, c, d) => {\n  2 <= T.version ? c && b ? R.bufferData(a, u, d, c, b) : R.bufferData(a, b, d) : R.bufferData(a, c ? u.subarray(c, c + b) : b, d);\n}, emscripten_glBufferSubData:(a, b, c, d) => {\n  2 <= T.version ? c && R.bufferSubData(a, b, u, d, c) : R.bufferSubData(a, b, u.subarray(d, d + c));\n}, emscripten_glCheckFramebufferStatus:a => R.checkFramebufferStatus(a), emscripten_glClear:a => R.clear(a), emscripten_glClearColor:(a, b, c, d) => R.clearColor(a, b, c, d), emscripten_glClearStencil:a => R.clearStencil(a), emscripten_glClientWaitSync:(a, b, c, d) => R.clientWaitSync(Rd[a], b, (c >>> 0) + 4294967296 * d), emscripten_glColorMask:(a, b, c, d) => {\n  R.colorMask(!!a, !!b, !!c, !!d);\n}, emscripten_glCompileShader:a => {\n  R.compileShader(Od[a]);\n}, emscripten_glCompressedTexImage2D:(a, b, c, d, e, f, g, k) => {\n  2 <= T.version ? R.ea || !g ? R.compressedTexImage2D(a, b, c, d, e, f, g, k) : R.compressedTexImage2D(a, b, c, d, e, f, u, k, g) : R.compressedTexImage2D(a, b, c, d, e, f, k ? u.subarray(k, k + g) : null);\n}, emscripten_glCompressedTexSubImage2D:(a, b, c, d, e, f, g, k, m) => {\n  2 <= T.version ? R.ea || !k ? R.compressedTexSubImage2D(a, b, c, d, e, f, g, k, m) : R.compressedTexSubImage2D(a, b, c, d, e, f, g, u, m, k) : R.compressedTexSubImage2D(a, b, c, d, e, f, g, m ? u.subarray(m, m + k) : null);\n}, emscripten_glCopyTexSubImage2D:(a, b, c, d, e, f, g, k) => R.copyTexSubImage2D(a, b, c, d, e, f, g, k), emscripten_glCreateProgram:() => {\n  var a = la(Q), b = R.createProgram();\n  b.name = a;\n  b.xa = b.va = b.wa = 0;\n  b.Qa = 1;\n  Q[a] = b;\n  return a;\n}, emscripten_glCreateShader:a => {\n  var b = la(Od);\n  Od[b] = R.createShader(a);\n  return b;\n}, emscripten_glCullFace:a => R.cullFace(a), emscripten_glDeleteBuffers:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = x[b + 4 * c >> 2], e = Kd[d];\n    e && (R.deleteBuffer(e), e.name = 0, Kd[d] = null, d == R.Ia && (R.Ia = 0), d == R.ea && (R.ea = 0));\n  }\n}, emscripten_glDeleteFramebuffers:(a, b) => {\n  for (var c = 0; c < a; ++c) {\n    var d = x[b + 4 * c >> 2], e = Ld[d];\n    e && (R.deleteFramebuffer(e), e.name = 0, Ld[d] = null);\n  }\n}, emscripten_glDeleteProgram:a => {\n  if (a) {\n    var b = Q[a];\n    b ? (R.deleteProgram(b), b.name = 0, Q[a] = null) : S ||= 1281;\n  }\n}, emscripten_glDeleteRenderbuffers:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = x[b + 4 * c >> 2], e = Md[d];\n    e && (R.deleteRenderbuffer(e), e.name = 0, Md[d] = null);\n  }\n}, emscripten_glDeleteSamplers:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = x[b + 4 * c >> 2], e = Qd[d];\n    e && (R.deleteSampler(e), e.name = 0, Qd[d] = null);\n  }\n}, emscripten_glDeleteShader:a => {\n  if (a) {\n    var b = Od[a];\n    b ? (R.deleteShader(b), Od[a] = null) : S ||= 1281;\n  }\n}, emscripten_glDeleteSync:a => {\n  if (a) {\n    var b = Rd[a];\n    b ? (R.deleteSync(b), b.name = 0, Rd[a] = null) : S ||= 1281;\n  }\n}, emscripten_glDeleteTextures:(a, b) => {\n  for (var c = 0; c < a; c++) {\n    var d = x[b + 4 * c >> 2], e = Nd[d];\n    e && (R.deleteTexture(e), e.name = 0, Nd[d] = null);\n  }\n}, emscripten_glDeleteVertexArrays:Zd, emscripten_glDeleteVertexArraysOES:Zd, emscripten_glDepthMask:a => {\n  R.depthMask(!!a);\n}, emscripten_glDisable:a => R.disable(a), emscripten_glDisableVertexAttribArray:a => {\n  R.disableVertexAttribArray(a);\n}, emscripten_glDrawArrays:(a, b, c) => {\n  R.drawArrays(a, b, c);\n}, emscripten_glDrawArraysInstanced:(a, b, c, d) => {\n  R.drawArraysInstanced(a, b, c, d);\n}, emscripten_glDrawArraysInstancedBaseInstanceWEBGL:(a, b, c, d, e) => {\n  R.Ya.drawArraysInstancedBaseInstanceWEBGL(a, b, c, d, e);\n}, emscripten_glDrawBuffers:(a, b) => {\n  for (var c = $d[a], d = 0; d < a; d++) {\n    c[d] = x[b + 4 * d >> 2];\n  }\n  R.drawBuffers(c);\n}, emscripten_glDrawElements:(a, b, c, d) => {\n  R.drawElements(a, b, c, d);\n}, emscripten_glDrawElementsInstanced:(a, b, c, d, e) => {\n  R.drawElementsInstanced(a, b, c, d, e);\n}, emscripten_glDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a, b, c, d, e, f, g) => {\n  R.Ya.drawElementsInstancedBaseVertexBaseInstanceWEBGL(a, b, c, d, e, f, g);\n}, emscripten_glDrawRangeElements:(a, b, c, d, e, f) => {\n  R.drawElements(a, d, e, f);\n}, emscripten_glEnable:a => R.enable(a), emscripten_glEnableVertexAttribArray:a => {\n  R.enableVertexAttribArray(a);\n}, emscripten_glFenceSync:(a, b) => (a = R.fenceSync(a, b)) ? (b = la(Rd), a.name = b, Rd[b] = a, b) : 0, emscripten_glFinish:() => R.finish(), emscripten_glFlush:() => R.flush(), emscripten_glFramebufferRenderbuffer:(a, b, c, d) => {\n  R.framebufferRenderbuffer(a, b, c, Md[d]);\n}, emscripten_glFramebufferTexture2D:(a, b, c, d, e) => {\n  R.framebufferTexture2D(a, b, c, Nd[d], e);\n}, emscripten_glFrontFace:a => R.frontFace(a), emscripten_glGenBuffers:(a, b) => {\n  Wd(a, b, \"createBuffer\", Kd);\n}, emscripten_glGenFramebuffers:(a, b) => {\n  Wd(a, b, \"createFramebuffer\", Ld);\n}, emscripten_glGenRenderbuffers:(a, b) => {\n  Wd(a, b, \"createRenderbuffer\", Md);\n}, emscripten_glGenSamplers:(a, b) => {\n  Wd(a, b, \"createSampler\", Qd);\n}, emscripten_glGenTextures:(a, b) => {\n  Wd(a, b, \"createTexture\", Nd);\n}, emscripten_glGenVertexArrays:ae, emscripten_glGenVertexArraysOES:ae, emscripten_glGenerateMipmap:a => R.generateMipmap(a), emscripten_glGetBufferParameteriv:(a, b, c) => {\n  c ? x[c >> 2] = R.getBufferParameter(a, b) : S ||= 1281;\n}, emscripten_glGetError:() => {\n  var a = R.getError() || S;\n  S = 0;\n  return a;\n}, emscripten_glGetFramebufferAttachmentParameteriv:(a, b, c, d) => {\n  a = R.getFramebufferAttachmentParameter(a, b, c);\n  if (a instanceof WebGLRenderbuffer || a instanceof WebGLTexture) {\n    a = a.name | 0;\n  }\n  x[d >> 2] = a;\n}, emscripten_glGetIntegerv:de, emscripten_glGetProgramInfoLog:(a, b, c, d) => {\n  a = R.getProgramInfoLog(Q[a]);\n  null === a && (a = \"(unknown error)\");\n  b = 0 < b && d ? kb(a, u, d, b) : 0;\n  c && (x[c >> 2] = b);\n}, emscripten_glGetProgramiv:(a, b, c) => {\n  if (c) {\n    if (a >= Jd) {\n      S ||= 1281;\n    } else {\n      if (a = Q[a], 35716 == b) {\n        a = R.getProgramInfoLog(a), null === a && (a = \"(unknown error)\"), x[c >> 2] = a.length + 1;\n      } else if (35719 == b) {\n        if (!a.xa) {\n          for (b = 0; b < R.getProgramParameter(a, 35718); ++b) {\n            a.xa = Math.max(a.xa, R.getActiveUniform(a, b).name.length + 1);\n          }\n        }\n        x[c >> 2] = a.xa;\n      } else if (35722 == b) {\n        if (!a.va) {\n          for (b = 0; b < R.getProgramParameter(a, 35721); ++b) {\n            a.va = Math.max(a.va, R.getActiveAttrib(a, b).name.length + 1);\n          }\n        }\n        x[c >> 2] = a.va;\n      } else if (35381 == b) {\n        if (!a.wa) {\n          for (b = 0; b < R.getProgramParameter(a, 35382); ++b) {\n            a.wa = Math.max(a.wa, R.getActiveUniformBlockName(a, b).length + 1);\n          }\n        }\n        x[c >> 2] = a.wa;\n      } else {\n        x[c >> 2] = R.getProgramParameter(a, b);\n      }\n    }\n  } else {\n    S ||= 1281;\n  }\n}, emscripten_glGetRenderbufferParameteriv:(a, b, c) => {\n  c ? x[c >> 2] = R.getRenderbufferParameter(a, b) : S ||= 1281;\n}, emscripten_glGetShaderInfoLog:(a, b, c, d) => {\n  a = R.getShaderInfoLog(Od[a]);\n  null === a && (a = \"(unknown error)\");\n  b = 0 < b && d ? kb(a, u, d, b) : 0;\n  c && (x[c >> 2] = b);\n}, emscripten_glGetShaderPrecisionFormat:(a, b, c, d) => {\n  a = R.getShaderPrecisionFormat(a, b);\n  x[c >> 2] = a.rangeMin;\n  x[c + 4 >> 2] = a.rangeMax;\n  x[d >> 2] = a.precision;\n}, emscripten_glGetShaderiv:(a, b, c) => {\n  c ? 35716 == b ? (a = R.getShaderInfoLog(Od[a]), null === a && (a = \"(unknown error)\"), x[c >> 2] = a ? a.length + 1 : 0) : 35720 == b ? (a = R.getShaderSource(Od[a]), x[c >> 2] = a ? a.length + 1 : 0) : x[c >> 2] = R.getShaderParameter(Od[a], b) : S ||= 1281;\n}, emscripten_glGetString:a => {\n  var b = Sd[a];\n  if (!b) {\n    switch(a) {\n      case 7939:\n        b = fe(be().join(\" \"));\n        break;\n      case 7936:\n      case 7937:\n      case 37445:\n      case 37446:\n        (b = R.getParameter(a)) || (S ||= 1280);\n        b = b ? fe(b) : 0;\n        break;\n      case 7938:\n        b = R.getParameter(7938);\n        b = 2 <= T.version ? `OpenGL ES 3.0 (${b})` : `OpenGL ES 2.0 (${b})`;\n        b = fe(b);\n        break;\n      case 35724:\n        b = R.getParameter(35724);\n        var c = b.match(/^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/);\n        null !== c && (3 == c[1].length && (c[1] += \"0\"), b = `OpenGL ES GLSL ES ${c[1]} (${b})`);\n        b = fe(b);\n        break;\n      default:\n        S ||= 1280;\n    }\n    Sd[a] = b;\n  }\n  return b;\n}, emscripten_glGetStringi:(a, b) => {\n  if (2 > T.version) {\n    return S ||= 1282, 0;\n  }\n  var c = Td[a];\n  if (c) {\n    return 0 > b || b >= c.length ? (S ||= 1281, 0) : c[b];\n  }\n  switch(a) {\n    case 7939:\n      return c = be().map(fe), c = Td[a] = c, 0 > b || b >= c.length ? (S ||= 1281, 0) : c[b];\n    default:\n      return S ||= 1280, 0;\n  }\n}, emscripten_glGetUniformLocation:(a, b) => {\n  b = b ? C(u, b) : \"\";\n  if (a = Q[a]) {\n    var c = a, d = c.la, e = c.sb, f;\n    if (!d) {\n      for (c.la = d = {}, c.rb = {}, f = 0; f < R.getProgramParameter(c, 35718); ++f) {\n        var g = R.getActiveUniform(c, f);\n        var k = g.name;\n        g = g.size;\n        var m = ge(k);\n        m = 0 < m ? k.slice(0, m) : k;\n        var p = c.Qa;\n        c.Qa += g;\n        e[m] = [g, p];\n        for (k = 0; k < g; ++k) {\n          d[p] = k, c.rb[p++] = m;\n        }\n      }\n    }\n    c = a.la;\n    d = 0;\n    e = b;\n    f = ge(b);\n    0 < f && (d = parseInt(b.slice(f + 1)) >>> 0, e = b.slice(0, f));\n    if ((e = a.sb[e]) && d < e[0] && (d += e[1], c[d] = c[d] || R.getUniformLocation(a, b))) {\n      return d;\n    }\n  } else {\n    S ||= 1281;\n  }\n  return -1;\n}, emscripten_glInvalidateFramebuffer:(a, b, c) => {\n  for (var d = $d[b], e = 0; e < b; e++) {\n    d[e] = x[c + 4 * e >> 2];\n  }\n  R.invalidateFramebuffer(a, d);\n}, emscripten_glInvalidateSubFramebuffer:(a, b, c, d, e, f, g) => {\n  for (var k = $d[b], m = 0; m < b; m++) {\n    k[m] = x[c + 4 * m >> 2];\n  }\n  R.invalidateSubFramebuffer(a, k, d, e, f, g);\n}, emscripten_glIsSync:a => R.isSync(Rd[a]), emscripten_glIsTexture:a => (a = Nd[a]) ? R.isTexture(a) : 0, emscripten_glLineWidth:a => R.lineWidth(a), emscripten_glLinkProgram:a => {\n  a = Q[a];\n  R.linkProgram(a);\n  a.la = 0;\n  a.sb = {};\n}, emscripten_glMultiDrawArraysInstancedBaseInstanceWEBGL:(a, b, c, d, e, f) => {\n  R.fb.multiDrawArraysInstancedBaseInstanceWEBGL(a, x, b >> 2, x, c >> 2, x, d >> 2, A, e >> 2, f);\n}, emscripten_glMultiDrawElementsInstancedBaseVertexBaseInstanceWEBGL:(a, b, c, d, e, f, g, k) => {\n  R.fb.multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(a, x, b >> 2, c, x, d >> 2, x, e >> 2, x, f >> 2, A, g >> 2, k);\n}, emscripten_glPixelStorei:(a, b) => {\n  3317 == a ? Ud = b : 3314 == a && (Vd = b);\n  R.pixelStorei(a, b);\n}, emscripten_glReadBuffer:a => R.readBuffer(a), emscripten_glReadPixels:(a, b, c, d, e, f, g) => {\n  if (2 <= T.version) {\n    if (R.Ia) {\n      R.readPixels(a, b, c, d, e, f, g);\n    } else {\n      var k = he(f);\n      g >>>= 31 - Math.clz32(k.BYTES_PER_ELEMENT);\n      R.readPixels(a, b, c, d, e, f, k, g);\n    }\n  } else {\n    (k = ie(f, e, c, d, g)) ? R.readPixels(a, b, c, d, e, f, k) : S ||= 1280;\n  }\n}, emscripten_glRenderbufferStorage:(a, b, c, d) => R.renderbufferStorage(a, b, c, d), emscripten_glRenderbufferStorageMultisample:(a, b, c, d, e) => R.renderbufferStorageMultisample(a, b, c, d, e), emscripten_glSamplerParameteri:(a, b, c) => {\n  R.samplerParameteri(Qd[a], b, c);\n}, emscripten_glSamplerParameteriv:(a, b, c) => {\n  R.samplerParameteri(Qd[a], b, x[c >> 2]);\n}, emscripten_glScissor:(a, b, c, d) => R.scissor(a, b, c, d), emscripten_glShaderSource:(a, b, c, d) => {\n  for (var e = \"\", f = 0; f < b; ++f) {\n    var g = (g = A[c + 4 * f >> 2]) ? C(u, g, d ? A[d + 4 * f >> 2] : void 0) : \"\";\n    e += g;\n  }\n  R.shaderSource(Od[a], e);\n}, emscripten_glStencilFunc:(a, b, c) => R.stencilFunc(a, b, c), emscripten_glStencilFuncSeparate:(a, b, c, d) => R.stencilFuncSeparate(a, b, c, d), emscripten_glStencilMask:a => R.stencilMask(a), emscripten_glStencilMaskSeparate:(a, b) => R.stencilMaskSeparate(a, b), emscripten_glStencilOp:(a, b, c) => R.stencilOp(a, b, c), emscripten_glStencilOpSeparate:(a, b, c, d) => R.stencilOpSeparate(a, b, c, d), emscripten_glTexImage2D:(a, b, c, d, e, f, g, k, m) => {\n  if (2 <= T.version) {\n    if (R.ea) {\n      R.texImage2D(a, b, c, d, e, f, g, k, m);\n      return;\n    }\n    if (m) {\n      var p = he(k);\n      m >>>= 31 - Math.clz32(p.BYTES_PER_ELEMENT);\n      R.texImage2D(a, b, c, d, e, f, g, k, p, m);\n      return;\n    }\n  }\n  p = m ? ie(k, g, d, e, m) : null;\n  R.texImage2D(a, b, c, d, e, f, g, k, p);\n}, emscripten_glTexParameterf:(a, b, c) => R.texParameterf(a, b, c), emscripten_glTexParameterfv:(a, b, c) => {\n  R.texParameterf(a, b, B[c >> 2]);\n}, emscripten_glTexParameteri:(a, b, c) => R.texParameteri(a, b, c), emscripten_glTexParameteriv:(a, b, c) => {\n  R.texParameteri(a, b, x[c >> 2]);\n}, emscripten_glTexStorage2D:(a, b, c, d, e) => R.texStorage2D(a, b, c, d, e), emscripten_glTexSubImage2D:(a, b, c, d, e, f, g, k, m) => {\n  if (2 <= T.version) {\n    if (R.ea) {\n      R.texSubImage2D(a, b, c, d, e, f, g, k, m);\n      return;\n    }\n    if (m) {\n      var p = he(k);\n      R.texSubImage2D(a, b, c, d, e, f, g, k, p, m >>> 31 - Math.clz32(p.BYTES_PER_ELEMENT));\n      return;\n    }\n  }\n  m = m ? ie(k, g, e, f, m) : null;\n  R.texSubImage2D(a, b, c, d, e, f, g, k, m);\n}, emscripten_glUniform1f:(a, b) => {\n  R.uniform1f(U(a), b);\n}, emscripten_glUniform1fv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform1fv(U(a), B, c >> 2, b);\n  } else {\n    if (288 >= b) {\n      for (var d = je[b], e = 0; e < b; ++e) {\n        d[e] = B[c + 4 * e >> 2];\n      }\n    } else {\n      d = B.subarray(c >> 2, c + 4 * b >> 2);\n    }\n    R.uniform1fv(U(a), d);\n  }\n}, emscripten_glUniform1i:(a, b) => {\n  R.uniform1i(U(a), b);\n}, emscripten_glUniform1iv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform1iv(U(a), x, c >> 2, b);\n  } else {\n    if (288 >= b) {\n      for (var d = ke[b], e = 0; e < b; ++e) {\n        d[e] = x[c + 4 * e >> 2];\n      }\n    } else {\n      d = x.subarray(c >> 2, c + 4 * b >> 2);\n    }\n    R.uniform1iv(U(a), d);\n  }\n}, emscripten_glUniform2f:(a, b, c) => {\n  R.uniform2f(U(a), b, c);\n}, emscripten_glUniform2fv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform2fv(U(a), B, c >> 2, 2 * b);\n  } else {\n    if (144 >= b) {\n      for (var d = je[2 * b], e = 0; e < 2 * b; e += 2) {\n        d[e] = B[c + 4 * e >> 2], d[e + 1] = B[c + (4 * e + 4) >> 2];\n      }\n    } else {\n      d = B.subarray(c >> 2, c + 8 * b >> 2);\n    }\n    R.uniform2fv(U(a), d);\n  }\n}, emscripten_glUniform2i:(a, b, c) => {\n  R.uniform2i(U(a), b, c);\n}, emscripten_glUniform2iv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform2iv(U(a), x, c >> 2, 2 * b);\n  } else {\n    if (144 >= b) {\n      for (var d = ke[2 * b], e = 0; e < 2 * b; e += 2) {\n        d[e] = x[c + 4 * e >> 2], d[e + 1] = x[c + (4 * e + 4) >> 2];\n      }\n    } else {\n      d = x.subarray(c >> 2, c + 8 * b >> 2);\n    }\n    R.uniform2iv(U(a), d);\n  }\n}, emscripten_glUniform3f:(a, b, c, d) => {\n  R.uniform3f(U(a), b, c, d);\n}, emscripten_glUniform3fv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform3fv(U(a), B, c >> 2, 3 * b);\n  } else {\n    if (96 >= b) {\n      for (var d = je[3 * b], e = 0; e < 3 * b; e += 3) {\n        d[e] = B[c + 4 * e >> 2], d[e + 1] = B[c + (4 * e + 4) >> 2], d[e + 2] = B[c + (4 * e + 8) >> 2];\n      }\n    } else {\n      d = B.subarray(c >> 2, c + 12 * b >> 2);\n    }\n    R.uniform3fv(U(a), d);\n  }\n}, emscripten_glUniform3i:(a, b, c, d) => {\n  R.uniform3i(U(a), b, c, d);\n}, emscripten_glUniform3iv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform3iv(U(a), x, c >> 2, 3 * b);\n  } else {\n    if (96 >= b) {\n      for (var d = ke[3 * b], e = 0; e < 3 * b; e += 3) {\n        d[e] = x[c + 4 * e >> 2], d[e + 1] = x[c + (4 * e + 4) >> 2], d[e + 2] = x[c + (4 * e + 8) >> 2];\n      }\n    } else {\n      d = x.subarray(c >> 2, c + 12 * b >> 2);\n    }\n    R.uniform3iv(U(a), d);\n  }\n}, emscripten_glUniform4f:(a, b, c, d, e) => {\n  R.uniform4f(U(a), b, c, d, e);\n}, emscripten_glUniform4fv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform4fv(U(a), B, c >> 2, 4 * b);\n  } else {\n    if (72 >= b) {\n      var d = je[4 * b], e = B;\n      c >>= 2;\n      for (var f = 0; f < 4 * b; f += 4) {\n        var g = c + f;\n        d[f] = e[g];\n        d[f + 1] = e[g + 1];\n        d[f + 2] = e[g + 2];\n        d[f + 3] = e[g + 3];\n      }\n    } else {\n      d = B.subarray(c >> 2, c + 16 * b >> 2);\n    }\n    R.uniform4fv(U(a), d);\n  }\n}, emscripten_glUniform4i:(a, b, c, d, e) => {\n  R.uniform4i(U(a), b, c, d, e);\n}, emscripten_glUniform4iv:(a, b, c) => {\n  if (2 <= T.version) {\n    b && R.uniform4iv(U(a), x, c >> 2, 4 * b);\n  } else {\n    if (72 >= b) {\n      for (var d = ke[4 * b], e = 0; e < 4 * b; e += 4) {\n        d[e] = x[c + 4 * e >> 2], d[e + 1] = x[c + (4 * e + 4) >> 2], d[e + 2] = x[c + (4 * e + 8) >> 2], d[e + 3] = x[c + (4 * e + 12) >> 2];\n      }\n    } else {\n      d = x.subarray(c >> 2, c + 16 * b >> 2);\n    }\n    R.uniform4iv(U(a), d);\n  }\n}, emscripten_glUniformMatrix2fv:(a, b, c, d) => {\n  if (2 <= T.version) {\n    b && R.uniformMatrix2fv(U(a), !!c, B, d >> 2, 4 * b);\n  } else {\n    if (72 >= b) {\n      for (var e = je[4 * b], f = 0; f < 4 * b; f += 4) {\n        e[f] = B[d + 4 * f >> 2], e[f + 1] = B[d + (4 * f + 4) >> 2], e[f + 2] = B[d + (4 * f + 8) >> 2], e[f + 3] = B[d + (4 * f + 12) >> 2];\n      }\n    } else {\n      e = B.subarray(d >> 2, d + 16 * b >> 2);\n    }\n    R.uniformMatrix2fv(U(a), !!c, e);\n  }\n}, emscripten_glUniformMatrix3fv:(a, b, c, d) => {\n  if (2 <= T.version) {\n    b && R.uniformMatrix3fv(U(a), !!c, B, d >> 2, 9 * b);\n  } else {\n    if (32 >= b) {\n      for (var e = je[9 * b], f = 0; f < 9 * b; f += 9) {\n        e[f] = B[d + 4 * f >> 2], e[f + 1] = B[d + (4 * f + 4) >> 2], e[f + 2] = B[d + (4 * f + 8) >> 2], e[f + 3] = B[d + (4 * f + 12) >> 2], e[f + 4] = B[d + (4 * f + 16) >> 2], e[f + 5] = B[d + (4 * f + 20) >> 2], e[f + 6] = B[d + (4 * f + 24) >> 2], e[f + 7] = B[d + (4 * f + 28) >> 2], e[f + 8] = B[d + (4 * f + 32) >> 2];\n      }\n    } else {\n      e = B.subarray(d >> 2, d + 36 * b >> 2);\n    }\n    R.uniformMatrix3fv(U(a), !!c, e);\n  }\n}, emscripten_glUniformMatrix4fv:(a, b, c, d) => {\n  if (2 <= T.version) {\n    b && R.uniformMatrix4fv(U(a), !!c, B, d >> 2, 16 * b);\n  } else {\n    if (18 >= b) {\n      var e = je[16 * b], f = B;\n      d >>= 2;\n      for (var g = 0; g < 16 * b; g += 16) {\n        var k = d + g;\n        e[g] = f[k];\n        e[g + 1] = f[k + 1];\n        e[g + 2] = f[k + 2];\n        e[g + 3] = f[k + 3];\n        e[g + 4] = f[k + 4];\n        e[g + 5] = f[k + 5];\n        e[g + 6] = f[k + 6];\n        e[g + 7] = f[k + 7];\n        e[g + 8] = f[k + 8];\n        e[g + 9] = f[k + 9];\n        e[g + 10] = f[k + 10];\n        e[g + 11] = f[k + 11];\n        e[g + 12] = f[k + 12];\n        e[g + 13] = f[k + 13];\n        e[g + 14] = f[k + 14];\n        e[g + 15] = f[k + 15];\n      }\n    } else {\n      e = B.subarray(d >> 2, d + 64 * b >> 2);\n    }\n    R.uniformMatrix4fv(U(a), !!c, e);\n  }\n}, emscripten_glUseProgram:a => {\n  a = Q[a];\n  R.useProgram(a);\n  R.Db = a;\n}, emscripten_glVertexAttrib1f:(a, b) => R.vertexAttrib1f(a, b), emscripten_glVertexAttrib2fv:(a, b) => {\n  R.vertexAttrib2f(a, B[b >> 2], B[b + 4 >> 2]);\n}, emscripten_glVertexAttrib3fv:(a, b) => {\n  R.vertexAttrib3f(a, B[b >> 2], B[b + 4 >> 2], B[b + 8 >> 2]);\n}, emscripten_glVertexAttrib4fv:(a, b) => {\n  R.vertexAttrib4f(a, B[b >> 2], B[b + 4 >> 2], B[b + 8 >> 2], B[b + 12 >> 2]);\n}, emscripten_glVertexAttribDivisor:(a, b) => {\n  R.vertexAttribDivisor(a, b);\n}, emscripten_glVertexAttribIPointer:(a, b, c, d, e) => {\n  R.vertexAttribIPointer(a, b, c, d, e);\n}, emscripten_glVertexAttribPointer:(a, b, c, d, e, f) => {\n  R.vertexAttribPointer(a, b, c, !!d, e, f);\n}, emscripten_glViewport:(a, b, c, d) => R.viewport(a, b, c, d), emscripten_glWaitSync:(a, b, c, d) => {\n  R.waitSync(Rd[a], b, (c >>> 0) + 4294967296 * d);\n}, emscripten_resize_heap:a => {\n  var b = u.length;\n  a >>>= 0;\n  if (2147483648 < a) {\n    return !1;\n  }\n  for (var c = 1; 4 >= c; c *= 2) {\n    var d = b * (1 + 0.2 / c);\n    d = Math.min(d, a + 100663296);\n    var e = Math;\n    d = Math.max(a, d);\n    a: {\n      e = (e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - ya.buffer.byteLength + 65535) / 65536;\n      try {\n        ya.grow(e);\n        Da();\n        var f = 1;\n        break a;\n      } catch (g) {\n      }\n      f = void 0;\n    }\n    if (f) {\n      return !0;\n    }\n  }\n  return !1;\n}, emscripten_webgl_get_current_context:() => T ? T.handle : 0, emscripten_webgl_make_context_current:a => oa(a) ? 0 : -5, environ_get:(a, b) => {\n  var c = 0;\n  ne().forEach((d, e) => {\n    var f = b + c;\n    e = A[a + 4 * e >> 2] = f;\n    for (f = 0; f < d.length; ++f) {\n      n[e++] = d.charCodeAt(f);\n    }\n    n[e] = 0;\n    c += d.length + 1;\n  });\n  return 0;\n}, environ_sizes_get:(a, b) => {\n  var c = ne();\n  A[a >> 2] = c.length;\n  var d = 0;\n  c.forEach(e => d += e.length + 1);\n  A[b >> 2] = d;\n  return 0;\n}, fd_close:function(a) {\n  try {\n    var b = Pb(a);\n    if (null === b.U) {\n      throw new E(8);\n    }\n    b.Ka && (b.Ka = null);\n    try {\n      b.m.close && b.m.close(b);\n    } catch (c) {\n      throw c;\n    } finally {\n      Cb[b.U] = null;\n    }\n    b.U = null;\n    return 0;\n  } catch (c) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== c.name) {\n      throw c;\n    }\n    return c.Y;\n  }\n}, fd_read:function(a, b, c, d) {\n  try {\n    a: {\n      var e = Pb(a);\n      a = b;\n      for (var f, g = b = 0; g < c; g++) {\n        var k = A[a >> 2], m = A[a + 4 >> 2];\n        a += 8;\n        var p = e, r = f, w = n;\n        if (0 > m || 0 > r) {\n          throw new E(28);\n        }\n        if (null === p.U) {\n          throw new E(8);\n        }\n        if (1 === (p.flags & 2097155)) {\n          throw new E(8);\n        }\n        if (16384 === (p.node.mode & 61440)) {\n          throw new E(31);\n        }\n        if (!p.m.read) {\n          throw new E(28);\n        }\n        var y = \"undefined\" != typeof r;\n        if (!y) {\n          r = p.position;\n        } else if (!p.seekable) {\n          throw new E(70);\n        }\n        var q = p.m.read(p, w, k, m, r);\n        y || (p.position += q);\n        var t = q;\n        if (0 > t) {\n          var v = -1;\n          break a;\n        }\n        b += t;\n        if (t < m) {\n          break;\n        }\n        \"undefined\" != typeof f && (f += t);\n      }\n      v = b;\n    }\n    A[d >> 2] = v;\n    return 0;\n  } catch (z) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== z.name) {\n      throw z;\n    }\n    return z.Y;\n  }\n}, fd_seek:function(a, b, c, d, e) {\n  b = c + 2097152 >>> 0 < 4194305 - !!b ? (b >>> 0) + 4294967296 * c : NaN;\n  try {\n    if (isNaN(b)) {\n      return 61;\n    }\n    var f = Pb(a);\n    Zb(f, b, d);\n    Ta = [f.position >>> 0, (Sa = f.position, 1.0 <= +Math.abs(Sa) ? 0.0 < Sa ? +Math.floor(Sa / 4294967296.0) >>> 0 : ~~+Math.ceil((Sa - +(~~Sa >>> 0)) / 4294967296.0) >>> 0 : 0)];\n    x[e >> 2] = Ta[0];\n    x[e + 4 >> 2] = Ta[1];\n    f.Ka && 0 === b && 0 === d && (f.Ka = null);\n    return 0;\n  } catch (g) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== g.name) {\n      throw g;\n    }\n    return g.Y;\n  }\n}, fd_write:function(a, b, c, d) {\n  try {\n    a: {\n      var e = Pb(a);\n      a = b;\n      for (var f, g = b = 0; g < c; g++) {\n        var k = A[a >> 2], m = A[a + 4 >> 2];\n        a += 8;\n        var p = e, r = k, w = m, y = f, q = n;\n        if (0 > w || 0 > y) {\n          throw new E(28);\n        }\n        if (null === p.U) {\n          throw new E(8);\n        }\n        if (0 === (p.flags & 2097155)) {\n          throw new E(8);\n        }\n        if (16384 === (p.node.mode & 61440)) {\n          throw new E(31);\n        }\n        if (!p.m.write) {\n          throw new E(28);\n        }\n        p.seekable && p.flags & 1024 && Zb(p, 0, 2);\n        var t = \"undefined\" != typeof y;\n        if (!t) {\n          y = p.position;\n        } else if (!p.seekable) {\n          throw new E(70);\n        }\n        var v = p.m.write(p, q, r, w, y, void 0);\n        t || (p.position += v);\n        var z = v;\n        if (0 > z) {\n          var D = -1;\n          break a;\n        }\n        b += z;\n        \"undefined\" != typeof f && (f += z);\n      }\n      D = b;\n    }\n    A[d >> 2] = D;\n    return 0;\n  } catch (F) {\n    if (\"undefined\" == typeof cc || \"ErrnoError\" !== F.name) {\n      throw F;\n    }\n    return F.Y;\n  }\n}, glBindFramebuffer:Xd, glGetIntegerv:de, invoke_ii:ve, invoke_iii:we, invoke_iiii:xe, invoke_iiiii:ye, invoke_iiiiii:ze, invoke_iiiiiii:Ae, invoke_iiiiiiiiii:Be, invoke_v:Ce, invoke_vi:De, invoke_vii:Ee, invoke_viii:Fe, invoke_viiii:Ge, invoke_viiiiii:He, invoke_viiiiiii:Ie, invoke_viiiiiiii:Je, isWindowsBrowser:function() {\n  return -1 < navigator.platform.indexOf(\"Win\");\n}, strftime:qe, strftime_l:(a, b, c, d) => qe(a, b, c, d)}, W = function() {\n  function a(c) {\n    W = c.exports;\n    ya = W.memory;\n    Da();\n    Yc = W.__indirect_function_table;\n    Fa.unshift(W.__wasm_call_ctors);\n    Ia--;\n    l.monitorRunDependencies?.(Ia);\n    0 == Ia && (null !== Ja && (clearInterval(Ja), Ja = null), Ka && (c = Ka, Ka = null, c()));\n    return W;\n  }\n  var b = {env:Ke, wasi_snapshot_preview1:Ke,};\n  Ia++;\n  l.monitorRunDependencies?.(Ia);\n  if (l.instantiateWasm) {\n    try {\n      return l.instantiateWasm(b, a);\n    } catch (c) {\n      wa(`Module.instantiateWasm callback failed with error: ${c}`), ba(c);\n    }\n  }\n  Na ||= Ma(\"webgl_advanced.wasm\") ? \"webgl_advanced.wasm\" : l.locateFile ? l.locateFile(\"webgl_advanced.wasm\", ra) : ra + \"webgl_advanced.wasm\";\n  Ra(b, function(c) {\n    a(c.instance);\n  }).catch(ba);\n  return {};\n}(), sc = a => (sc = W.free)(a), ee = a => (ee = W.malloc)(a), rc = a => (rc = W.__getTypeName)(a), Ua = l._ma_device__on_notification_unlocked = a => (Ua = l._ma_device__on_notification_unlocked = W.ma_device__on_notification_unlocked)(a);\nl._ma_malloc_emscripten = (a, b) => (l._ma_malloc_emscripten = W.ma_malloc_emscripten)(a, b);\nl._ma_free_emscripten = (a, b) => (l._ma_free_emscripten = W.ma_free_emscripten)(a, b);\nvar Va = l._ma_device_process_pcm_frames_capture__webaudio = (a, b, c) => (Va = l._ma_device_process_pcm_frames_capture__webaudio = W.ma_device_process_pcm_frames_capture__webaudio)(a, b, c), Wa = l._ma_device_process_pcm_frames_playback__webaudio = (a, b, c) => (Wa = l._ma_device_process_pcm_frames_playback__webaudio = W.ma_device_process_pcm_frames_playback__webaudio)(a, b, c), xb = (a, b) => (xb = W.emscripten_builtin_memalign)(a, b), X = (a, b) => (X = W.setThrew)(a, b), Y = a => (Y = W._emscripten_stack_restore)(a), \nZ = () => (Z = W.emscripten_stack_get_current)();\nl.dynCall_iiij = (a, b, c, d, e) => (l.dynCall_iiij = W.dynCall_iiij)(a, b, c, d, e);\nl.dynCall_iiiij = (a, b, c, d, e, f) => (l.dynCall_iiiij = W.dynCall_iiiij)(a, b, c, d, e, f);\nl.dynCall_viij = (a, b, c, d, e) => (l.dynCall_viij = W.dynCall_viij)(a, b, c, d, e);\nl.dynCall_viiij = (a, b, c, d, e, f) => (l.dynCall_viiij = W.dynCall_viiij)(a, b, c, d, e, f);\nl.dynCall_iiji = (a, b, c, d, e) => (l.dynCall_iiji = W.dynCall_iiji)(a, b, c, d, e);\nl.dynCall_jiji = (a, b, c, d, e) => (l.dynCall_jiji = W.dynCall_jiji)(a, b, c, d, e);\nl.dynCall_iiiji = (a, b, c, d, e, f) => (l.dynCall_iiiji = W.dynCall_iiiji)(a, b, c, d, e, f);\nl.dynCall_iij = (a, b, c, d) => (l.dynCall_iij = W.dynCall_iij)(a, b, c, d);\nl.dynCall_jii = (a, b, c) => (l.dynCall_jii = W.dynCall_jii)(a, b, c);\nl.dynCall_viiiiij = (a, b, c, d, e, f, g, k) => (l.dynCall_viiiiij = W.dynCall_viiiiij)(a, b, c, d, e, f, g, k);\nl.dynCall_viji = (a, b, c, d, e) => (l.dynCall_viji = W.dynCall_viji)(a, b, c, d, e);\nl.dynCall_ji = (a, b) => (l.dynCall_ji = W.dynCall_ji)(a, b);\nl.dynCall_vij = (a, b, c, d) => (l.dynCall_vij = W.dynCall_vij)(a, b, c, d);\nl.dynCall_viijii = (a, b, c, d, e, f, g) => (l.dynCall_viijii = W.dynCall_viijii)(a, b, c, d, e, f, g);\nl.dynCall_iiiiij = (a, b, c, d, e, f, g) => (l.dynCall_iiiiij = W.dynCall_iiiiij)(a, b, c, d, e, f, g);\nl.dynCall_iiiiijj = (a, b, c, d, e, f, g, k, m) => (l.dynCall_iiiiijj = W.dynCall_iiiiijj)(a, b, c, d, e, f, g, k, m);\nl.dynCall_iiiiiijj = (a, b, c, d, e, f, g, k, m, p) => (l.dynCall_iiiiiijj = W.dynCall_iiiiiijj)(a, b, c, d, e, f, g, k, m, p);\nfunction Ee(a, b, c) {\n  var d = Z();\n  try {\n    K(a)(b, c);\n  } catch (e) {\n    Y(d);\n    if (e !== e + 0) {\n      throw e;\n    }\n    X(1, 0);\n  }\n}\nfunction ve(a, b) {\n  var c = Z();\n  try {\n    return K(a)(b);\n  } catch (d) {\n    Y(c);\n    if (d !== d + 0) {\n      throw d;\n    }\n    X(1, 0);\n  }\n}\nfunction De(a, b) {\n  var c = Z();\n  try {\n    K(a)(b);\n  } catch (d) {\n    Y(c);\n    if (d !== d + 0) {\n      throw d;\n    }\n    X(1, 0);\n  }\n}\nfunction xe(a, b, c, d) {\n  var e = Z();\n  try {\n    return K(a)(b, c, d);\n  } catch (f) {\n    Y(e);\n    if (f !== f + 0) {\n      throw f;\n    }\n    X(1, 0);\n  }\n}\nfunction Fe(a, b, c, d) {\n  var e = Z();\n  try {\n    K(a)(b, c, d);\n  } catch (f) {\n    Y(e);\n    if (f !== f + 0) {\n      throw f;\n    }\n    X(1, 0);\n  }\n}\nfunction Ge(a, b, c, d, e) {\n  var f = Z();\n  try {\n    K(a)(b, c, d, e);\n  } catch (g) {\n    Y(f);\n    if (g !== g + 0) {\n      throw g;\n    }\n    X(1, 0);\n  }\n}\nfunction Ce(a) {\n  var b = Z();\n  try {\n    K(a)();\n  } catch (c) {\n    Y(b);\n    if (c !== c + 0) {\n      throw c;\n    }\n    X(1, 0);\n  }\n}\nfunction Ae(a, b, c, d, e, f, g) {\n  var k = Z();\n  try {\n    return K(a)(b, c, d, e, f, g);\n  } catch (m) {\n    Y(k);\n    if (m !== m + 0) {\n      throw m;\n    }\n    X(1, 0);\n  }\n}\nfunction we(a, b, c) {\n  var d = Z();\n  try {\n    return K(a)(b, c);\n  } catch (e) {\n    Y(d);\n    if (e !== e + 0) {\n      throw e;\n    }\n    X(1, 0);\n  }\n}\nfunction Ie(a, b, c, d, e, f, g, k) {\n  var m = Z();\n  try {\n    K(a)(b, c, d, e, f, g, k);\n  } catch (p) {\n    Y(m);\n    if (p !== p + 0) {\n      throw p;\n    }\n    X(1, 0);\n  }\n}\nfunction Be(a, b, c, d, e, f, g, k, m, p) {\n  var r = Z();\n  try {\n    return K(a)(b, c, d, e, f, g, k, m, p);\n  } catch (w) {\n    Y(r);\n    if (w !== w + 0) {\n      throw w;\n    }\n    X(1, 0);\n  }\n}\nfunction ye(a, b, c, d, e) {\n  var f = Z();\n  try {\n    return K(a)(b, c, d, e);\n  } catch (g) {\n    Y(f);\n    if (g !== g + 0) {\n      throw g;\n    }\n    X(1, 0);\n  }\n}\nfunction Je(a, b, c, d, e, f, g, k, m) {\n  var p = Z();\n  try {\n    K(a)(b, c, d, e, f, g, k, m);\n  } catch (r) {\n    Y(p);\n    if (r !== r + 0) {\n      throw r;\n    }\n    X(1, 0);\n  }\n}\nfunction ze(a, b, c, d, e, f) {\n  var g = Z();\n  try {\n    return K(a)(b, c, d, e, f);\n  } catch (k) {\n    Y(g);\n    if (k !== k + 0) {\n      throw k;\n    }\n    X(1, 0);\n  }\n}\nfunction He(a, b, c, d, e, f, g) {\n  var k = Z();\n  try {\n    K(a)(b, c, d, e, f, g);\n  } catch (m) {\n    Y(k);\n    if (m !== m + 0) {\n      throw m;\n    }\n    X(1, 0);\n  }\n}\nvar Le;\nKa = function Me() {\n  Le || Ne();\n  Le || (Ka = Me);\n};\nfunction Ne() {\n  function a() {\n    if (!Le && (Le = !0, l.calledRun = !0, !za)) {\n      l.noFSInit || $b || ($b = !0, l.stdin = l.stdin, l.stdout = l.stdout, l.stderr = l.stderr, l.stdin ? ac(\"stdin\", l.stdin) : Wb(\"/dev/tty\", \"/dev/stdin\"), l.stdout ? ac(\"stdout\", null, l.stdout) : Wb(\"/dev/tty\", \"/dev/stdout\"), l.stderr ? ac(\"stderr\", null, l.stderr) : Wb(\"/dev/tty1\", \"/dev/stderr\"), Xb(\"/dev/stdin\", 0), Xb(\"/dev/stdout\", 1), Xb(\"/dev/stderr\", 1));\n      Fb = !1;\n      Ya(Fa);\n      aa(l);\n      if (l.onRuntimeInitialized) {\n        l.onRuntimeInitialized();\n      }\n      if (l.postRun) {\n        for (\"function\" == typeof l.postRun && (l.postRun = [l.postRun]); l.postRun.length;) {\n          var b = l.postRun.shift();\n          Ga.unshift(b);\n        }\n      }\n      Ya(Ga);\n    }\n  }\n  if (!(0 < Ia)) {\n    if (l.preRun) {\n      for (\"function\" == typeof l.preRun && (l.preRun = [l.preRun]); l.preRun.length;) {\n        Ha();\n      }\n    }\n    Ya(Ea);\n    0 < Ia || (l.setStatus ? (l.setStatus(\"Running...\"), setTimeout(function() {\n      setTimeout(function() {\n        l.setStatus(\"\");\n      }, 1);\n      a();\n    }, 1)) : a());\n  }\n}\nif (l.preInit) {\n  for (\"function\" == typeof l.preInit && (l.preInit = [l.preInit]); 0 < l.preInit.length;) {\n    l.preInit.pop()();\n  }\n}\nNe();\nmoduleRtn = ca;\n\n\n\n  return moduleRtn;\n}\n);\n})();\nexport default Rive;\n","import type {\n  LinearAnimationInstance,\n  LinearAnimation,\n  Artboard,\n  RiveCanvas,\n} from \"./../rive_advanced.mjs\";\n\n/**\n * Represents an animation that can be played on an Artboard. \n * Wraps animations and instances from the runtime and keeps track of playback state.\n *\n * The `Animation` class manages the state and behavior of a single animation instance,\n * including its current time, loop count, and ability to scrub to a specific time.\n *\n * The class provides methods to advance the animation, apply its interpolated keyframe\n * values to the Artboard, and clean up the underlying animation instance when the\n * animation is no longer needed.\n */\nexport class Animation {\n  public loopCount = 0;\n  public readonly instance: LinearAnimationInstance;\n\n  /**\n   * The time to which the animation should move to on the next render.\n   * If not null, the animation will scrub to this time instead of advancing by the given time.\n   */\n  public scrubTo: number | null = null;\n\n  /**\n   * Constructs a new animation\n   * @constructor\n   * @param {any} animation: runtime animation object\n   * @param {any} instance: runtime animation instance object\n   */\n  constructor(\n    private animation: LinearAnimation,\n    private artboard: Artboard,\n    runtime: RiveCanvas,\n    public playing: boolean\n  ) {\n    this.instance = new runtime.LinearAnimationInstance(animation, artboard);\n  }\n\n  /**\n   * Returns the animation's name\n   */\n  public get name(): string {\n    return this.animation.name;\n  }\n\n  /**\n   * Returns the animation's name\n   */\n  public get time(): number {\n    return this.instance.time;\n  }\n\n  /**\n   * Sets the animation's current time\n   */\n  public set time(value: number) {\n    this.instance.time = value;\n  }\n\n  /**\n   * Returns the animation's loop type\n   */\n  public get loopValue(): number {\n    return this.animation.loopValue;\n  }\n\n  /**\n   * Indicates whether the animation needs to be scrubbed.\n   * @returns `true` if the animation needs to be scrubbed, `false` otherwise.\n   */\n  public get needsScrub(): boolean {\n    return this.scrubTo !== null;\n  }\n\n  /**\n   * Advances the animation by the give time. If the animation needs scrubbing,\n   * time is ignored and the stored scrub value is used.\n   * @param time the time to advance the animation by if no scrubbing required\n   */\n  public advance(time: number) {\n    if (this.scrubTo === null) {\n      this.instance.advance(time);\n    } else {\n      this.instance.time = 0;\n      this.instance.advance(this.scrubTo);\n      this.scrubTo = null;\n    }\n  }\n\n  /**\n   * Apply interpolated keyframe values to the artboard. This should be called after calling\n   * .advance() on an animation instance so that new values are applied to properties.\n   *\n   * Note: This does not advance the artboard, which updates all objects on the artboard\n   * @param mix - Mix value for the animation from 0 to 1\n   */\n  public apply(mix: number) {\n    this.instance.apply(mix);\n  }\n\n  /**\n   * Deletes the backing Wasm animation instance; once this is called, this\n   * animation is no more.\n   */\n  public cleanup() {\n    this.instance.delete();\n  }\n}\n","import * as rc from \"../rive_advanced.mjs\";\n\nexport interface TouchInteractionsParams {\n  canvas: HTMLCanvasElement | OffscreenCanvas;\n  artboard: rc.Artboard;\n  stateMachines: rc.StateMachineInstance[];\n  renderer: rc.Renderer;\n  rive: rc.RiveCanvas;\n  fit: rc.Fit;\n  alignment: rc.Alignment;\n  isTouchScrollEnabled?: boolean;\n  dispatchPointerExit?: boolean;\n  enableMultiTouch?: boolean;\n  layoutScaleFactor?: number;\n}\n\ninterface ClientCoordinates {\n  clientX: number;\n  clientY: number;\n  identifier: number;\n  transformedX?: number | undefined;\n  transformedY?: number | undefined;\n}\n\n/**\n * Returns the clientX and clientY properties from touch or mouse events. Also\n * calls preventDefault() on the event if it is a touchstart or touchmove to prevent\n * scrolling the page on mobile devices\n * @param event - Either a TouchEvent or a MouseEvent\n * @returns - Coordinates of the clientX and clientY properties from the touch/mouse event\n */\nconst getClientCoordinates = (\n  event: MouseEvent | TouchEvent,\n  isTouchScrollEnabled: boolean,\n  enableMultiTouch: boolean,\n): ClientCoordinates[] => {\n  const coordinates: ClientCoordinates[] = [];\n  if (\n    [\"touchstart\", \"touchmove\"].indexOf(event.type) > -1 &&\n    (event as TouchEvent).changedTouches?.length\n  ) {\n    // This flag, if false, prevents touch events on the canvas default behavior\n    // which may prevent scrolling if a drag motion on the canvas is performed\n    if (!isTouchScrollEnabled) {\n      event.preventDefault();\n    }\n    let cnt = 0;\n    let totalTouches = enableMultiTouch\n      ? (event as TouchEvent).changedTouches.length\n      : 1;\n    while (cnt < totalTouches) {\n      const touch = (event as TouchEvent).changedTouches[cnt];\n      coordinates.push({\n        clientX: touch.clientX,\n        clientY: touch.clientY,\n        identifier: touch.identifier,\n      });\n      cnt++;\n    }\n  } else if (\n    event.type === \"touchend\" &&\n    (event as TouchEvent).changedTouches?.length\n  ) {\n    let cnt = 0;\n    let totalTouches = enableMultiTouch\n      ? (event as TouchEvent).changedTouches.length\n      : 1;\n    while (cnt < totalTouches) {\n      const touch = (event as TouchEvent).changedTouches[cnt];\n      coordinates.push({\n        clientX: touch.clientX,\n        clientY: touch.clientY,\n        identifier: touch.identifier,\n      });\n      cnt++;\n    }\n  } else {\n    coordinates.push({\n      clientX: (event as MouseEvent).clientX,\n      clientY: (event as MouseEvent).clientY,\n      identifier: 0,\n    });\n  }\n  return coordinates;\n};\n\n/**\n * Registers mouse move/up/down callback handlers on the canvas to send meaningful coordinates to\n * the state machine pointer move/up/down functions based on cursor interaction\n */\nexport const registerTouchInteractions = ({\n  canvas,\n  artboard,\n  stateMachines = [],\n  renderer,\n  rive,\n  fit,\n  alignment,\n  isTouchScrollEnabled = false,\n  dispatchPointerExit = true,\n  enableMultiTouch = false,\n  layoutScaleFactor = 1.0,\n}: TouchInteractionsParams) => {\n  if (\n    !canvas ||\n    !stateMachines.length ||\n    !renderer ||\n    !rive ||\n    !artboard ||\n    typeof window === \"undefined\"\n  ) {\n    return null;\n  }\n  /**\n   * After a touchend event, some browsers may fire synthetic mouse events\n   * (mouseover, mousedown, mousemove, mouseup) if the touch interaction did not cause\n   * any default action (such as scrolling).\n   *\n   * This is done to simulate the behavior of a mouse for applications that do not support\n   * touch events.\n   *\n   * We're keeping track of the previous event to not send the synthetic mouse events if the\n   * touch event was a click (touchstart -> touchend).\n   *\n   * This is only needed when `isTouchScrollEnabled` is false\n   * When true, `preventDefault()` is called which prevents this behaviour.\n   **/\n  let _prevEventType: string | null = null;\n  let _syntheticEventsActive = false;\n  const processEventCallback = (event: MouseEvent | TouchEvent) => {\n    // Exit early out of all synthetic mouse events\n    // https://stackoverflow.com/questions/9656990/how-to-prevent-simulated-mouse-events-in-mobile-browsers\n    // https://stackoverflow.com/questions/25572070/javascript-touchend-versus-click-dilemma\n    if (_syntheticEventsActive && event instanceof MouseEvent) {\n      // Synthetic event finished\n      if (event.type == \"mouseup\") {\n        _syntheticEventsActive = false;\n      }\n\n      return;\n    }\n\n    // Test if it's a \"touch click\". This could cause the browser to send\n    // synthetic mouse events.\n    _syntheticEventsActive =\n      isTouchScrollEnabled &&\n      event.type === \"touchend\" &&\n      _prevEventType === \"touchstart\";\n\n    _prevEventType = event.type;\n\n    const boundingRect = (\n      event.currentTarget as HTMLCanvasElement\n    ).getBoundingClientRect();\n\n    const coordinateSets = getClientCoordinates(\n      event,\n      isTouchScrollEnabled,\n      enableMultiTouch,\n    );\n    const forwardMatrix = rive.computeAlignment(\n      fit,\n      alignment,\n      {\n        minX: 0,\n        minY: 0,\n        maxX: boundingRect.width,\n        maxY: boundingRect.height,\n      },\n      artboard.bounds,\n      layoutScaleFactor,\n    );\n    const invertedMatrix = new rive.Mat2D();\n    forwardMatrix.invert(invertedMatrix);\n\n    coordinateSets.forEach((coordinateSet) => {\n      const clientX = coordinateSet.clientX;\n      const clientY = coordinateSet.clientY;\n      if (!clientX && !clientY) {\n        return;\n      }\n      const canvasX = clientX - boundingRect.left;\n      const canvasY = clientY - boundingRect.top;\n      const canvasCoordinatesVector = new rive.Vec2D(canvasX, canvasY);\n      const transformedVector = rive.mapXY(\n        invertedMatrix,\n        canvasCoordinatesVector,\n      );\n      const transformedX = transformedVector.x();\n      const transformedY = transformedVector.y();\n      coordinateSet.transformedX = transformedX;\n      coordinateSet.transformedY = transformedY;\n      transformedVector.delete();\n      canvasCoordinatesVector.delete();\n    });\n\n    invertedMatrix.delete();\n    forwardMatrix.delete();\n\n    switch (event.type) {\n      /**\n       * There's a 2px buffer for a hitRadius when translating the pointer coordinates\n       * down to the state machine. In cases where the hitbox is about that much away\n       * from the Artboard border, we don't have exact precision on determining pointer\n       * exit. We're therefore adding to the translated coordinates on mouseout of a canvas\n       * to ensure that we report the mouse has truly exited the hitarea.\n       * https://github.com/rive-app/rive-cpp/blob/master/src/animation/state_machine_instance.cpp#L336\n       *\n       */\n      case \"mouseout\":\n        for (const stateMachine of stateMachines) {\n          if (dispatchPointerExit) {\n            coordinateSets.forEach((coordinateSet) => {\n              stateMachine.pointerExit(\n                coordinateSet.transformedX,\n                coordinateSet.transformedY,\n                coordinateSet.identifier,\n              );\n            });\n          } else {\n            coordinateSets.forEach((coordinateSet) => {\n              stateMachine.pointerMove(\n                coordinateSet.transformedX,\n                coordinateSet.transformedY,\n                coordinateSet.identifier,\n              );\n            });\n          }\n        }\n        break;\n\n      // Pointer moving/hovering on the canvas\n      case \"touchmove\":\n      case \"mouseover\":\n      case \"mousemove\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerMove(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      // Pointer click initiated but not released yet on the canvas\n      case \"touchstart\":\n      case \"mousedown\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerDown(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      // Pointer click released on the canvas\n      case \"touchend\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerUp(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n            stateMachine.pointerExit(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      case \"mouseup\": {\n        for (const stateMachine of stateMachines) {\n          coordinateSets.forEach((coordinateSet) => {\n            stateMachine.pointerUp(\n              coordinateSet.transformedX,\n              coordinateSet.transformedY,\n              coordinateSet.identifier,\n            );\n          });\n        }\n        break;\n      }\n      default:\n    }\n  };\n  const callback = processEventCallback.bind(this);\n  canvas.addEventListener(\"mouseover\", callback);\n  canvas.addEventListener(\"mouseout\", callback);\n  canvas.addEventListener(\"mousemove\", callback);\n  canvas.addEventListener(\"mousedown\", callback);\n  canvas.addEventListener(\"mouseup\", callback);\n  canvas.addEventListener(\"touchmove\", callback, {\n    passive: isTouchScrollEnabled,\n  });\n  canvas.addEventListener(\"touchstart\", callback, {\n    passive: isTouchScrollEnabled,\n  });\n  canvas.addEventListener(\"touchend\", callback);\n  return () => {\n    canvas.removeEventListener(\"mouseover\", callback);\n    canvas.removeEventListener(\"mouseout\", callback);\n    canvas.removeEventListener(\"mousemove\", callback);\n    canvas.removeEventListener(\"mousedown\", callback);\n    canvas.removeEventListener(\"mouseup\", callback);\n    canvas.removeEventListener(\"touchmove\", callback);\n    canvas.removeEventListener(\"touchstart\", callback);\n    canvas.removeEventListener(\"touchend\", callback);\n  };\n};\n","// Reference: https://github.com/braintree/sanitize-url/tree/main\nconst invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nconst htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nconst htmlCtrlEntityRegex = /&(newline|tab);/gi;\nconst ctrlCharactersRegex =\n  /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nconst urlSchemeRegex = /^.+(:|&colon;)/gim;\nconst relativeFirstCharacters = [\".\", \"/\"];\nexport const BLANK_URL = \"about:blank\";\n\nfunction isRelativeUrlWithoutProtocol(url: string): boolean {\n  return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str: string) {\n  const removedNullByte = str.replace(ctrlCharactersRegex, \"\");\n  return removedNullByte.replace(htmlEntitiesRegex, (match, dec) => {\n    return String.fromCharCode(dec);\n  });\n}\n\nexport function sanitizeUrl(url?: string): string {\n  if (!url) {\n    return BLANK_URL;\n  }\n\n  const sanitizedUrl = decodeHtmlCharacters(url)\n    .replace(htmlCtrlEntityRegex, \"\")\n    .replace(ctrlCharactersRegex, \"\")\n    .trim();\n\n  if (!sanitizedUrl) {\n    return BLANK_URL;\n  }\n\n  if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n    return sanitizedUrl;\n  }\n\n  const urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n\n  if (!urlSchemeParseResults) {\n    return sanitizedUrl;\n  }\n\n  const urlScheme = urlSchemeParseResults[0];\n\n  if (invalidProtocolRegex.test(urlScheme)) {\n    return BLANK_URL;\n  }\n\n  return sanitizedUrl;\n}\n","import * as rc from \"../rive_advanced.mjs\";\n\ninterface Finalizable {\n  unref: () => void;\n}\n\nclass FileFinalizer implements Finalizable {\n  private _file: rc.File;\n  public selfUnref: boolean = false;\n  constructor(file: rc.File) {\n    this._file = file;\n  }\n\n  public unref() {\n    if (this._file) {\n      this._file.unref();\n    }\n  }\n}\n\nclass ObjectFinalizer<T extends Finalizable> {\n  private _finalizableObject: T;\n  constructor(finalizableObject: T) {\n    this._finalizableObject = finalizableObject;\n  }\n\n  public unref() {\n    this._finalizableObject.unref();\n  }\n}\n\n\nclass AssetWrapper implements rc.FinalizableTarget {\n  public selfUnref: boolean = false;\n  public unref() {}\n}\n\nclass ImageWrapper extends AssetWrapper {\n  private _nativeImage: rc.Image;\n\n  constructor(image: rc.Image) {\n    super();\n    this._nativeImage = image;\n  }\n\n  public get nativeImage(): rc.ImageInternal {\n    return this._nativeImage;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeImage.unref();\n    }\n  }\n}\n\nclass AudioWrapper extends AssetWrapper {\n  private _nativeAudio: rc.Audio;\n\n  constructor(audio: rc.Audio) {\n    super();\n    this._nativeAudio = audio;\n  }\n\n  public get nativeAudio(): rc.AudioInternal {\n    return this._nativeAudio;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeAudio.unref();\n    }\n  }\n}\n\nclass FontWrapper extends AssetWrapper {\n  private _nativeFont: rc.Font;\n\n  constructor(font: rc.Font) {\n    super();\n    this._nativeFont = font;\n  }\n\n  public get nativeFont(): rc.FontInternal {\n    return this._nativeFont;\n  }\n\n  public unref() {\n    if (this.selfUnref) {\n      this._nativeFont.unref();\n    }\n  }\n}\n\nexport type AssetLoadCallbackWrapper = (\n  asset: rc.FileAssetInternal,\n  bytes: Uint8Array,\n) => Boolean;\n\nclass CustomFileAssetLoaderWrapper {\n  assetLoader: rc.CustomFileAssetLoader;\n  _assetLoaderCallback: AssetLoadCallbackWrapper;\n\n  constructor(\n    runtime: rc.RiveCanvas,\n    loaderCallback: AssetLoadCallbackWrapper,\n  ) {\n    this._assetLoaderCallback = loaderCallback;\n    this.assetLoader = new runtime.CustomFileAssetLoader({\n      loadContents: this.loadContents.bind(this),\n    });\n  }\n\n  loadContents(asset: rc.FileAsset, bytes: any) {\n    let assetWrapper: FileAssetWrapper;\n    if (asset.isImage) {\n      assetWrapper = new ImageAssetWrapper(asset);\n    } else if (asset.isAudio) {\n      assetWrapper = new AudioAssetWrapper(asset);\n    } else if (asset.isFont) {\n      assetWrapper = new FontAssetWrapper(asset);\n    }\n    return this._assetLoaderCallback(assetWrapper, bytes);\n  }\n}\n\n/**\n * Rive class representing a FileAsset with relevant metadata fields to describe\n * an asset associated wtih the Rive File\n */\nclass FileAssetWrapper {\n  _nativeFileAsset: rc.FileAssetInternal;\n\n  constructor(nativeAsset: rc.FileAssetInternal) {\n    this._nativeFileAsset = nativeAsset;\n  }\n\n  decode(bytes: Uint8Array): void {\n    this._nativeFileAsset.decode(bytes);\n  }\n\n  get name(): string {\n    return this._nativeFileAsset.name;\n  }\n\n  get fileExtension(): string {\n    return this._nativeFileAsset.fileExtension;\n  }\n\n  get uniqueFilename(): string {\n    return this._nativeFileAsset.uniqueFilename;\n  }\n\n  get isAudio(): boolean {\n    return this._nativeFileAsset.isAudio;\n  }\n\n  get isImage(): boolean {\n    return this._nativeFileAsset.isImage;\n  }\n\n  get isFont(): boolean {\n    return this._nativeFileAsset.isFont;\n  }\n\n  get cdnUuid(): string {\n    return this._nativeFileAsset.cdnUuid;\n  }\n\n  get nativeFileAsset() {\n    return this._nativeFileAsset;\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setRenderImage()` API with a\n * decoded Image (via the `decodeImage()` API) to set a new Image on the Rive FileAsset\n */\nclass ImageAssetWrapper extends FileAssetWrapper {\n  setRenderImage(image: ImageWrapper): void {\n    (this._nativeFileAsset as rc.ImageAssetInternal).setRenderImage(\n      image.nativeImage,\n    );\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setAudioSource()` API with a\n * decoded Audio (via the `decodeAudio()` API) to set a new Audio on the Rive FileAsset\n */\nclass AudioAssetWrapper extends FileAssetWrapper {\n  setAudioSource(audio: AudioWrapper): void {\n    (this._nativeFileAsset as rc.AudioAssetInternal).setAudioSource(\n      audio.nativeAudio,\n    );\n  }\n}\n\n/**\n * Rive class extending the FileAsset that exposes a `setFont()` API with a\n * decoded Font (via the `decodeFont()` API) to set a new Font on the Rive FileAsset\n */\nclass FontAssetWrapper extends FileAssetWrapper {\n  setFont(font: FontWrapper): void {\n    (this._nativeFileAsset as rc.FontAssetInternal).setFont(font.nativeFont);\n  }\n}\n\ndeclare const FinalizationRegistry: {\n  new (fn: Function): typeof FinalizationRegistry;\n\n  register<T extends rc.FinalizableTarget>(\n    object: T,\n    description: Finalizable,\n  ): void;\n\n  unregister<T>(object: T): void;\n};\n\nclass FakeFinalizationRegistry {\n  constructor(_: Function) {}\n  register(object: rc.FinalizableTarget) {\n    object.selfUnref = true;\n  }\n\n  unregister<T>(_: T) {}\n}\nconst MyFinalizationRegistry =\n  typeof FinalizationRegistry !== \"undefined\"\n    ? FinalizationRegistry\n    : FakeFinalizationRegistry;\n\nconst finalizationRegistry = new MyFinalizationRegistry((ob: Finalizable) => {\n  ob?.unref();\n});\n\nconst createFinalization = <T extends Finalizable>(\n  target: rc.FinalizableTarget,\n  finalizable: T,\n) => {\n  const finalizer = new ObjectFinalizer<T>(finalizable);\n  finalizationRegistry.register(target, finalizer);\n};\n\nexport {\n  finalizationRegistry,\n  createFinalization,\n  Finalizable,\n  ImageWrapper,\n  AudioWrapper,\n  FontWrapper,\n  ImageAssetWrapper,\n  AudioAssetWrapper,\n  FontAssetWrapper,\n  CustomFileAssetLoaderWrapper,\n  FileAssetWrapper,\n  FileFinalizer,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n",null,null,null,"import * as rc from \"./rive_advanced.mjs\";\nimport packageData from \"package.json\";\nimport { Animation } from \"./animation\";\nimport {\n  registerTouchInteractions,\n  sanitizeUrl,\n  BLANK_URL,\n  ImageWrapper,\n  AudioWrapper,\n  FontWrapper,\n  finalizationRegistry,\n  CustomFileAssetLoaderWrapper,\n  FileFinalizer,\n  createFinalization,\n} from \"./utils\";\nexport type AssetLoadCallback = (\n  asset: rc.FileAsset,\n  bytes: Uint8Array,\n) => Boolean;\n\nclass RiveError extends Error {\n  public isHandledError = true;\n}\n\n// Note: Re-exporting a few types from rive_advanced.mjs to expose for high-level\n// API usage without re-defining their type definition here. May want to revisit\n// and see if we want to expose both types from rive.ts and rive_advanced.mjs in\n// the future\nexport type {\n  FileAsset,\n  AudioAsset,\n  FontAsset,\n  ImageAsset,\n} from \"./rive_advanced.mjs\";\n\n/**\n * Generic type for a parameterless void callback\n */\nexport type VoidCallback = () => void;\n\ninterface SetupRiveListenersOptions {\n  isTouchScrollEnabled?: boolean;\n}\n\n/**\n * Type for artboard bounds\n */\nexport type Bounds = rc.AABB;\n\n// #regions helpers\nconst resolveErrorMessage = (error: any): string =>\n  error && error.isHandledError\n    ? error.message\n    : \"Problem loading file; may be corrupt!\";\n\n// #region layout\n\n// Fit options for the canvas\nexport enum Fit {\n  Cover = \"cover\",\n  Contain = \"contain\",\n  Fill = \"fill\",\n  FitWidth = \"fitWidth\",\n  FitHeight = \"fitHeight\",\n  None = \"none\",\n  ScaleDown = \"scaleDown\",\n  Layout = \"layout\",\n}\n\n// Alignment options for the canvas\nexport enum Alignment {\n  Center = \"center\",\n  TopLeft = \"topLeft\",\n  TopCenter = \"topCenter\",\n  TopRight = \"topRight\",\n  CenterLeft = \"centerLeft\",\n  CenterRight = \"centerRight\",\n  BottomLeft = \"bottomLeft\",\n  BottomCenter = \"bottomCenter\",\n  BottomRight = \"bottomRight\",\n}\n\n// Drawing optimization options\nexport enum DrawOptimizationOptions {\n  AlwaysDraw = \"alwaysDraw\",\n  DrawOnChanged = \"drawOnChanged\",\n}\n\n// Interface for the Layout static method contructor\nexport interface LayoutParameters {\n  fit?: Fit;\n  alignment?: Alignment;\n  layoutScaleFactor?: number;\n  minX?: number;\n  minY?: number;\n  maxX?: number;\n  maxY?: number;\n}\n\n// Alignment options for Rive animations in a HTML canvas\nexport class Layout {\n  // Runtime fit and alignment are accessed every frame, so we cache their\n  // values to save cycles\n  private cachedRuntimeFit: rc.Fit;\n  private cachedRuntimeAlignment: rc.Alignment;\n\n  public readonly fit: Fit;\n  public readonly alignment: Alignment;\n  public readonly layoutScaleFactor: number;\n  public readonly minX: number;\n  public readonly minY: number;\n  public readonly maxX: number;\n  public readonly maxY: number;\n\n  constructor(params?: LayoutParameters) {\n    this.fit = params?.fit ?? Fit.Contain;\n    this.alignment = params?.alignment ?? Alignment.Center;\n    this.layoutScaleFactor = params?.layoutScaleFactor ?? 1;\n    this.minX = params?.minX ?? 0;\n    this.minY = params?.minY ?? 0;\n    this.maxX = params?.maxX ?? 0;\n    this.maxY = params?.maxY ?? 0;\n  }\n\n  // Alternative constructor to build a Layout from an interface/object\n  static new({\n    fit,\n    alignment,\n    minX,\n    minY,\n    maxX,\n    maxY,\n  }: LayoutParameters): Layout {\n    console.warn(\n      \"This function is deprecated: please use `new Layout({})` instead\",\n    );\n    return new Layout({ fit, alignment, minX, minY, maxX, maxY });\n  }\n\n  /**\n   * Makes a copy of the layout, replacing any specified parameters\n   */\n  public copyWith({\n    fit,\n    alignment,\n    layoutScaleFactor,\n    minX,\n    minY,\n    maxX,\n    maxY,\n  }: LayoutParameters): Layout {\n    return new Layout({\n      fit: fit ?? this.fit,\n      alignment: alignment ?? this.alignment,\n      layoutScaleFactor: layoutScaleFactor ?? this.layoutScaleFactor,\n      minX: minX ?? this.minX,\n      minY: minY ?? this.minY,\n      maxX: maxX ?? this.maxX,\n      maxY: maxY ?? this.maxY,\n    });\n  }\n\n  // Returns fit for the Wasm runtime format\n  public runtimeFit(rive: rc.RiveCanvas): rc.Fit {\n    if (this.cachedRuntimeFit) return this.cachedRuntimeFit;\n\n    let fit;\n    if (this.fit === Fit.Cover) fit = rive.Fit.cover;\n    else if (this.fit === Fit.Contain) fit = rive.Fit.contain;\n    else if (this.fit === Fit.Fill) fit = rive.Fit.fill;\n    else if (this.fit === Fit.FitWidth) fit = rive.Fit.fitWidth;\n    else if (this.fit === Fit.FitHeight) fit = rive.Fit.fitHeight;\n    else if (this.fit === Fit.ScaleDown) fit = rive.Fit.scaleDown;\n    else if (this.fit === Fit.Layout) fit = rive.Fit.layout;\n    else fit = rive.Fit.none;\n\n    this.cachedRuntimeFit = fit;\n    return fit;\n  }\n\n  // Returns alignment for the Wasm runtime format\n  public runtimeAlignment(rive: rc.RiveCanvas): rc.Alignment {\n    if (this.cachedRuntimeAlignment) return this.cachedRuntimeAlignment;\n\n    let alignment;\n    if (this.alignment === Alignment.TopLeft)\n      alignment = rive.Alignment.topLeft;\n    else if (this.alignment === Alignment.TopCenter)\n      alignment = rive.Alignment.topCenter;\n    else if (this.alignment === Alignment.TopRight)\n      alignment = rive.Alignment.topRight;\n    else if (this.alignment === Alignment.CenterLeft)\n      alignment = rive.Alignment.centerLeft;\n    else if (this.alignment === Alignment.CenterRight)\n      alignment = rive.Alignment.centerRight;\n    else if (this.alignment === Alignment.BottomLeft)\n      alignment = rive.Alignment.bottomLeft;\n    else if (this.alignment === Alignment.BottomCenter)\n      alignment = rive.Alignment.bottomCenter;\n    else if (this.alignment === Alignment.BottomRight)\n      alignment = rive.Alignment.bottomRight;\n    else alignment = rive.Alignment.center;\n\n    this.cachedRuntimeAlignment = alignment;\n    return alignment;\n  }\n}\n\n// #endregion\n\n// #region runtime\n\n// Callback type when looking for a runtime instance\nexport type RuntimeCallback = (rive: rc.RiveCanvas) => void;\n\n// Runtime singleton; use getInstance to provide a callback that returns the\n// Rive runtime\nexport class RuntimeLoader {\n  // Singleton helpers\n  private static runtime: rc.RiveCanvas;\n  // Flag to indicate that loading has started/completed\n  private static isLoading = false;\n  // List of callbacks for the runtime that come in while loading\n  private static callBackQueue: RuntimeCallback[] = [];\n  // Instance of the Rive runtime\n  private static rive: rc.RiveCanvas;\n  // Path to the Wasm file; default path works for testing only;\n  // if embedded wasm is used then this is never used.\n  private static wasmURL = `https://unpkg.com/${packageData.name}@${packageData.version}/rive.wasm`;\n\n  // Class is never instantiated\n  private constructor() {}\n\n  // Loads the runtime\n  private static loadRuntime(): void {\n    rc.default({\n      // Loads Wasm bundle\n      locateFile: () => RuntimeLoader.wasmURL,\n    })\n      .then((rive: rc.RiveCanvas) => {\n        RuntimeLoader.runtime = rive;\n        // Fire all the callbacks\n        while (RuntimeLoader.callBackQueue.length > 0) {\n          RuntimeLoader.callBackQueue.shift()?.(RuntimeLoader.runtime);\n        }\n      })\n      .catch((error) => {\n        // Capture specific error details\n        const errorDetails = {\n          message: error?.message || \"Unknown error\",\n          type: error?.name || \"Error\",\n          // Some browsers may provide additional WebAssembly-specific details\n          wasmError:\n            error instanceof WebAssembly.CompileError ||\n            error instanceof WebAssembly.RuntimeError,\n          originalError: error,\n        };\n\n        // Log detailed error for debugging\n        console.debug(\"Rive WASM load error details:\", errorDetails);\n\n        // In case unpkg fails, or the wasm was not supported, we try to load the fallback module from jsdelivr.\n        // This `rive_fallback.wasm` is compiled to support older architecture.\n        // TODO: (Gordon): preemptively test browser support and load the correct wasm file. Then use jsdelvr only if unpkg fails.\n        const backupJsdelivrUrl = `https://cdn.jsdelivr.net/npm/${packageData.name}@${packageData.version}/rive_fallback.wasm`;\n        if (RuntimeLoader.wasmURL.toLowerCase() !== backupJsdelivrUrl) {\n          console.warn(\n            `Failed to load WASM from ${RuntimeLoader.wasmURL} (${errorDetails.message}), trying jsdelivr as a backup`,\n          );\n          RuntimeLoader.setWasmUrl(backupJsdelivrUrl);\n          RuntimeLoader.loadRuntime();\n        } else {\n          const errorMessage = [\n            `Could not load Rive WASM file from ${RuntimeLoader.wasmURL} or ${backupJsdelivrUrl}.`,\n            \"Possible reasons:\",\n            \"- Network connection is down\",\n            \"- WebAssembly is not supported in this environment\",\n            \"- The WASM file is corrupted or incompatible\",\n            \"\\nError details:\",\n            `- Type: ${errorDetails.type}`,\n            `- Message: ${errorDetails.message}`,\n            `- WebAssembly-specific error: ${errorDetails.wasmError}`,\n            \"\\nTo resolve, you may need to:\",\n            \"1. Check your network connection\",\n            \"2. Set a new WASM source via RuntimeLoader.setWasmUrl()\",\n            \"3. Call RuntimeLoader.loadRuntime() again\",\n          ].join(\"\\n\");\n\n          console.error(errorMessage);\n        }\n      });\n  }\n\n  // Provides a runtime instance via a callback\n  public static getInstance(callback: RuntimeCallback): void {\n    // If it's not loading, start loading runtime\n    if (!RuntimeLoader.isLoading) {\n      RuntimeLoader.isLoading = true;\n      RuntimeLoader.loadRuntime();\n    }\n    if (!RuntimeLoader.runtime) {\n      RuntimeLoader.callBackQueue.push(callback);\n    } else {\n      callback(RuntimeLoader.runtime);\n    }\n  }\n\n  // Provides a runtime instance via a promise\n  public static awaitInstance(): Promise<rc.RiveCanvas> {\n    return new Promise<rc.RiveCanvas>((resolve) =>\n      RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => resolve(rive)),\n    );\n  }\n\n  // Manually sets the wasm url\n  public static setWasmUrl(url: string): void {\n    RuntimeLoader.wasmURL = url;\n  }\n\n  // Gets the current wasm url\n  public static getWasmUrl(): string {\n    return RuntimeLoader.wasmURL;\n  }\n}\n\n// #endregion\n\n// #region state machines\n\nexport enum StateMachineInputType {\n  Number = 56,\n  Trigger = 58,\n  Boolean = 59,\n}\n\n/**\n * An input for a state machine\n */\nexport class StateMachineInput {\n  constructor(\n    public readonly type: StateMachineInputType,\n    private runtimeInput: rc.SMIInput,\n  ) {}\n\n  /**\n   * Returns the name of the input\n   */\n  public get name(): string {\n    return this.runtimeInput.name;\n  }\n\n  /**\n   * Returns the current value of the input\n   */\n  public get value(): number | boolean {\n    return this.runtimeInput.value;\n  }\n\n  /**\n   * Sets the value of the input\n   */\n  public set value(value: number | boolean) {\n    this.runtimeInput.value = value;\n  }\n\n  /**\n   * Fires a trigger; does nothing on Number or Boolean input types\n   */\n  public fire(): void {\n    if (this.type === StateMachineInputType.Trigger) {\n      this.runtimeInput.fire();\n    }\n  }\n\n  /**\n   * Deletes the input\n   */\n  public delete(): void {\n    this.runtimeInput = null;\n  }\n}\n\nexport enum RiveEventType {\n  General = 128,\n  OpenUrl = 131,\n}\n\nclass BaseArtboard {\n  public isBindableArtboard: boolean = false;\n  constructor(_isBindableArtboard: boolean) {\n    this.isBindableArtboard = _isBindableArtboard;\n  }\n}\n\nclass Artboard extends BaseArtboard {\n  public nativeArtboard: rc.Artboard;\n  public file: RiveFile;\n  constructor(artboard: rc.Artboard, _file: RiveFile) {\n    super(false);\n    this.nativeArtboard = artboard;\n    this.file = _file;\n  }\n}\n\nclass BindableArtboard extends BaseArtboard implements rc.FinalizableTarget {\n  public selfUnref: boolean = false;\n  public nativeArtboard: rc.BindableArtboard;\n  public nativeViewModel: rc.ViewModelInstance | null;\n  constructor(artboard: rc.BindableArtboard) {\n    super(true);\n    this.nativeArtboard = artboard;\n  }\n  public set viewModel(value: ViewModelInstance) {\n    this.nativeViewModel = value.nativeInstance;\n  }\n  destroy() {\n    if (this.selfUnref) {\n      this.nativeArtboard.unref();\n      this.nativeViewModel?.unref();\n    }\n  }\n}\n\nclass StateMachine {\n  /**\n   * Caches the inputs from the runtime\n   */\n  public readonly inputs: StateMachineInput[] = [];\n\n  /**\n   * Runtime state machine instance\n   */\n  public readonly instance: rc.StateMachineInstance;\n\n  /**\n   * @constructor\n   * @param stateMachine runtime state machine object\n   * @param instance runtime state machine instance object\n   */\n  constructor(\n    private stateMachine: rc.StateMachine,\n    runtime: rc.RiveCanvas,\n    public playing: boolean,\n    private artboard: rc.Artboard,\n  ) {\n    this.instance = new runtime.StateMachineInstance(stateMachine, artboard);\n    this.initInputs(runtime);\n  }\n\n  public get name(): string {\n    return this.stateMachine.name;\n  }\n\n  /**\n   * Returns a list of state names that have changed on this frame\n   */\n  public get statesChanged(): string[] {\n    const names: string[] = [];\n    for (let i = 0; i < this.instance.stateChangedCount(); i++) {\n      names.push(this.instance.stateChangedNameByIndex(i));\n    }\n    return names;\n  }\n\n  /**\n   * Advances the state machine instance by a given time.\n   * @param time - the time to advance the animation by in seconds\n   */\n  public advance(time: number) {\n    this.instance.advance(time);\n  }\n\n  /**\n   * Advances the state machine instance by a given time and apply changes to artboard.\n   * @param time - the time to advance the animation by in seconds\n   */\n  public advanceAndApply(time: number) {\n    this.instance.advanceAndApply(time);\n  }\n\n  /**\n   * Returns the number of events reported from the last advance call\n   * @returns Number of events reported\n   */\n  public reportedEventCount(): number {\n    return this.instance.reportedEventCount();\n  }\n\n  /**\n   * Returns a RiveEvent object emitted from the last advance call at the given index\n   * of a list of potentially multiple events. If an event at the index is not found,\n   * undefined is returned.\n   * @param i index of the event reported in a list of potentially multiple events\n   * @returns RiveEvent or extended RiveEvent object returned, or undefined\n   */\n  reportedEventAt(i: number): rc.OpenUrlEvent | rc.RiveEvent | undefined {\n    return this.instance.reportedEventAt(i);\n  }\n\n  /**\n   * Fetches references to the state machine's inputs and caches them\n   * @param runtime an instance of the runtime; needed for the SMIInput types\n   */\n  private initInputs(runtime: rc.RiveCanvas): void {\n    // Fetch the inputs from the runtime if we don't have them\n    for (let i = 0; i < this.instance.inputCount(); i++) {\n      const input = this.instance.input(i);\n      this.inputs.push(this.mapRuntimeInput(input, runtime));\n    }\n  }\n\n  /**\n   * Maps a runtime input to it's appropriate type\n   * @param input\n   */\n  private mapRuntimeInput(\n    input: rc.SMIInput,\n    runtime: rc.RiveCanvas,\n  ): StateMachineInput {\n    if (input.type === runtime.SMIInput.bool) {\n      return new StateMachineInput(\n        StateMachineInputType.Boolean,\n        input.asBool(),\n      );\n    } else if (input.type === runtime.SMIInput.number) {\n      return new StateMachineInput(\n        StateMachineInputType.Number,\n        input.asNumber(),\n      );\n    } else if (input.type === runtime.SMIInput.trigger) {\n      return new StateMachineInput(\n        StateMachineInputType.Trigger,\n        input.asTrigger(),\n      );\n    }\n  }\n\n  /**\n   * Deletes the backing Wasm state machine instance; once this is called, this\n   * state machine is no more.\n   */\n  public cleanup() {\n    this.inputs.forEach((input) => {\n      input.delete();\n    });\n    this.inputs.length = 0;\n    this.instance.delete();\n  }\n\n  public bindViewModelInstance(viewModelInstance: ViewModelInstance) {\n    if (viewModelInstance.runtimeInstance != null) {\n      this.instance.bindViewModelInstance(viewModelInstance.runtimeInstance);\n    }\n  }\n}\n\n// #endregion\n\n// #region animator\n\n/**\n * Manages animation\n */\nclass Animator {\n  /**\n   * Constructs a new animator\n   * @constructor\n   * @param runtime Rive runtime; needed to instance animations & state machines\n   * @param artboard the artboard that holds all animations and state machines\n   * @param animations optional list of animations\n   * @param stateMachines optional list of state machines\n   */\n  constructor(\n    private runtime: rc.RiveCanvas,\n    private artboard: rc.Artboard,\n    private eventManager: EventManager,\n    public readonly animations: Animation[] = [],\n    public readonly stateMachines: StateMachine[] = [],\n  ) {}\n\n  /**\n   * Adds animations and state machines by their names. If names are shared\n   * between animations & state machines, then the first one found will be\n   * created. Best not to use the same names for these in your Rive file.\n   * @param animatable the name(s) of animations and state machines to add\n   * @returns a list of names of the playing animations and state machines\n   */\n  public add(\n    animatables: string | string[],\n    playing: boolean,\n    fireEvent = true,\n  ): string[] {\n    animatables = mapToStringArray(animatables);\n    // If animatables is empty, play or pause everything\n    if (animatables.length === 0) {\n      this.animations.forEach((a) => (a.playing = playing));\n      this.stateMachines.forEach((m) => (m.playing = playing));\n    } else {\n      // Play/pause already instanced items, or create new instances\n      const instancedAnimationNames = this.animations.map((a) => a.name);\n      const instancedMachineNames = this.stateMachines.map((m) => m.name);\n      for (let i = 0; i < animatables.length; i++) {\n        const aIndex = instancedAnimationNames.indexOf(animatables[i]);\n        const mIndex = instancedMachineNames.indexOf(animatables[i]);\n        if (aIndex >= 0 || mIndex >= 0) {\n          if (aIndex >= 0) {\n            // Animation is instanced, play/pause it\n            this.animations[aIndex].playing = playing;\n          } else {\n            // State machine is instanced, play/pause it\n            this.stateMachines[mIndex].playing = playing;\n          }\n        } else {\n          // Try to create a new animation instance\n          const anim = this.artboard.animationByName(animatables[i]);\n          if (anim) {\n            const newAnimation = new Animation(\n              anim,\n              this.artboard,\n              this.runtime,\n              playing,\n            );\n            // Display the first frame of the specified animation\n            newAnimation.advance(0);\n            newAnimation.apply(1.0);\n            this.animations.push(newAnimation);\n          } else {\n            // Try to create a new state machine instance\n            const sm = this.artboard.stateMachineByName(animatables[i]);\n            if (sm) {\n              const newStateMachine = new StateMachine(\n                sm,\n                this.runtime,\n                playing,\n                this.artboard,\n              );\n              this.stateMachines.push(newStateMachine);\n            }\n          }\n        }\n      }\n    }\n    // Fire play/paused events for animations\n    if (fireEvent) {\n      if (playing) {\n        this.eventManager.fire({\n          type: EventType.Play,\n          data: this.playing,\n        });\n      } else {\n        this.eventManager.fire({\n          type: EventType.Pause,\n          data: this.paused,\n        });\n      }\n    }\n\n    return playing ? this.playing : this.paused;\n  }\n\n  /**\n   * Adds linear animations by their names.\n   * @param animatables the name(s) of animations to add\n   * @param playing whether animations should play on instantiation\n   */\n  public initLinearAnimations(animatables: string[], playing: boolean) {\n    // Play/pause already instanced items, or create new instances\n    // This validation is kept to maintain compatibility with current behavior.\n    // But given that it this is called during artboard initialization\n    // it should probably be safe to remove.\n    const instancedAnimationNames = this.animations.map((a) => a.name);\n    for (let i = 0; i < animatables.length; i++) {\n      const aIndex = instancedAnimationNames.indexOf(animatables[i]);\n      if (aIndex >= 0) {\n        this.animations[aIndex].playing = playing;\n      } else {\n        // Try to create a new animation instance\n        const anim = this.artboard.animationByName(animatables[i]);\n        if (anim) {\n          const newAnimation = new Animation(\n            anim,\n            this.artboard,\n            this.runtime,\n            playing,\n          );\n          // Display the first frame of the specified animation\n          newAnimation.advance(0);\n          newAnimation.apply(1.0);\n          this.animations.push(newAnimation);\n        } else {\n          console.error(`Animation with name ${animatables[i]} not found.`);\n        }\n      }\n    }\n  }\n\n  /**\n   * Adds state machines by their names.\n   * @param animatables the name(s) of state machines to add\n   * @param playing whether state machines should play on instantiation\n   */\n  public initStateMachines(animatables: string[], playing: boolean) {\n    // Play/pause already instanced items, or create new instances\n    // This validation is kept to maintain compatibility with current behavior.\n    // But given that it this is called during artboard initialization\n    // it should probably be safe to remove.\n    const instancedStateMachineNames = this.stateMachines.map((a) => a.name);\n    for (let i = 0; i < animatables.length; i++) {\n      const aIndex = instancedStateMachineNames.indexOf(animatables[i]);\n      if (aIndex >= 0) {\n        this.stateMachines[aIndex].playing = playing;\n      } else {\n        // Try to create a new state machine instance\n        const sm = this.artboard.stateMachineByName(animatables[i]);\n        if (sm) {\n          const newStateMachine = new StateMachine(\n            sm,\n            this.runtime,\n            playing,\n            this.artboard,\n          );\n          this.stateMachines.push(newStateMachine);\n        } else {\n          console.warn(`State Machine with name ${animatables[i]} not found.`);\n          // In order to maintain compatibility with current behavior, if a state machine is not found\n          // we look for an animation with the same name\n          this.initLinearAnimations([animatables[i]], playing);\n        }\n      }\n    }\n  }\n\n  /**\n   * Play the named animations/state machines\n   * @param animatables the names of the animations/machines to play; plays all if empty\n   * @returns a list of the playing items\n   */\n  public play(animatables: string | string[]): string[] {\n    return this.add(animatables, true);\n  }\n\n  /**\n   * Advance state machines if they are paused after initialization\n   */\n  public advanceIfPaused(): void {\n    this.stateMachines.forEach((sm) => {\n      if (!sm.playing) {\n        sm.advanceAndApply(0);\n      }\n    });\n  }\n\n  /**\n   * Pauses named animations and state machines, or everything if nothing is\n   * specified\n   * @param animatables names of the animations and state machines to pause\n   * @returns a list of names of the animations and state machines paused\n   */\n  public pause(animatables: string[]): string[] {\n    return this.add(animatables, false);\n  }\n\n  /**\n   * Set time of named animations\n   * @param animations names of the animations to scrub\n   * @param value time scrub value, a floating point number to which the playhead is jumped\n   * @returns a list of names of the animations that were scrubbed\n   */\n  public scrub(animatables: string[], value: number): string[] {\n    const forScrubbing = this.animations.filter((a) =>\n      animatables.includes(a.name),\n    );\n    forScrubbing.forEach((a) => (a.scrubTo = value));\n    return forScrubbing.map((a) => a.name);\n  }\n\n  /**\n   * Returns a list of names of all animations and state machines currently\n   * playing\n   */\n  public get playing(): string[] {\n    return this.animations\n      .filter((a) => a.playing)\n      .map((a) => a.name)\n      .concat(this.stateMachines.filter((m) => m.playing).map((m) => m.name));\n  }\n\n  /**\n   * Returns a list of names of all animations and state machines currently\n   * paused\n   */\n  public get paused(): string[] {\n    return this.animations\n      .filter((a) => !a.playing)\n      .map((a) => a.name)\n      .concat(this.stateMachines.filter((m) => !m.playing).map((m) => m.name));\n  }\n\n  /**\n   * Stops and removes all named animations and state machines\n   * @param animatables animations and state machines to remove\n   * @returns a list of names of removed items\n   */\n  public stop(animatables?: string[] | string): string[] {\n    animatables = mapToStringArray(animatables);\n\n    // If nothing's specified, wipe them out, all of them\n    let removedNames: string[] = [];\n    // Stop everything\n    if (animatables.length === 0) {\n      removedNames = this.animations\n        .map((a) => a.name)\n        .concat(this.stateMachines.map((m) => m.name));\n      // Clean up before emptying the arrays\n      this.animations.forEach((a) => a.cleanup());\n      this.stateMachines.forEach((m) => m.cleanup());\n      // Empty out the arrays\n      this.animations.splice(0, this.animations.length);\n      this.stateMachines.splice(0, this.stateMachines.length);\n    } else {\n      // Remove only the named animations/state machines\n      const animationsToRemove = this.animations.filter((a) =>\n        animatables.includes(a.name),\n      );\n\n      animationsToRemove.forEach((a) => {\n        a.cleanup();\n        this.animations.splice(this.animations.indexOf(a), 1);\n      });\n      const machinesToRemove = this.stateMachines.filter((m) =>\n        animatables.includes(m.name),\n      );\n      machinesToRemove.forEach((m) => {\n        m.cleanup();\n        this.stateMachines.splice(this.stateMachines.indexOf(m), 1);\n      });\n      removedNames = animationsToRemove\n        .map((a) => a.name)\n        .concat(machinesToRemove.map((m) => m.name));\n    }\n\n    this.eventManager.fire({\n      type: EventType.Stop,\n      data: removedNames,\n    });\n\n    // Return the list of animations removed\n    return removedNames;\n  }\n\n  /**\n   * Returns true if at least one animation is active\n   */\n  public get isPlaying(): boolean {\n    return (\n      this.animations.reduce((acc, curr) => acc || curr.playing, false) ||\n      this.stateMachines.reduce((acc, curr) => acc || curr.playing, false)\n    );\n  }\n\n  /**\n   * Returns true if all animations are paused and there's at least one animation\n   */\n  public get isPaused(): boolean {\n    return (\n      !this.isPlaying &&\n      (this.animations.length > 0 || this.stateMachines.length > 0)\n    );\n  }\n\n  /**\n   * Returns true if there are no playing or paused animations/state machines\n   */\n  public get isStopped(): boolean {\n    return this.animations.length === 0 && this.stateMachines.length === 0;\n  }\n\n  /**\n   * If there are no animations or state machines, add the first one found\n   * @returns the name of the animation or state machine instanced\n   */\n  public atLeastOne(playing: boolean, fireEvent = true): string {\n    let instancedName: string;\n    if (this.animations.length === 0 && this.stateMachines.length === 0) {\n      if (this.artboard.animationCount() > 0) {\n        // Add the first animation\n        this.add(\n          [(instancedName = this.artboard.animationByIndex(0).name)],\n          playing,\n          fireEvent,\n        );\n      } else if (this.artboard.stateMachineCount() > 0) {\n        // Add the first state machine\n        this.add(\n          [(instancedName = this.artboard.stateMachineByIndex(0).name)],\n          playing,\n          fireEvent,\n        );\n      }\n    }\n    return instancedName;\n  }\n\n  /**\n   * Checks if any animations have looped and if so, fire the appropriate event\n   */\n  public handleLooping() {\n    for (const animation of this.animations.filter((a) => a.playing)) {\n      // Emit if the animation looped\n      if (animation.loopValue === 0 && animation.loopCount) {\n        animation.loopCount = 0;\n        // This is a one-shot; if it has ended, delete the instance\n        this.stop(animation.name);\n      } else if (animation.loopValue === 1 && animation.loopCount) {\n        this.eventManager.fire({\n          type: EventType.Loop,\n          data: { animation: animation.name, type: LoopType.Loop },\n        });\n        animation.loopCount = 0;\n      }\n      // Wasm indicates a loop at each time the animation\n      // changes direction, so a full loop/lap occurs every\n      // two loop counts\n      else if (animation.loopValue === 2 && animation.loopCount > 1) {\n        this.eventManager.fire({\n          type: EventType.Loop,\n          data: { animation: animation.name, type: LoopType.PingPong },\n        });\n        animation.loopCount = 0;\n      }\n    }\n  }\n\n  /**\n   * Checks if states have changed in state machines and fires a statechange\n   * event\n   */\n  public handleStateChanges() {\n    const statesChanged: string[] = [];\n    for (const stateMachine of this.stateMachines.filter((sm) => sm.playing)) {\n      statesChanged.push(...stateMachine.statesChanged);\n    }\n    if (statesChanged.length > 0) {\n      this.eventManager.fire({\n        type: EventType.StateChange,\n        data: statesChanged,\n      });\n    }\n  }\n\n  public handleAdvancing(time: number) {\n    this.eventManager.fire({\n      type: EventType.Advance,\n      data: time,\n    });\n  }\n}\n\n// #endregion\n\n// #region events\n\n/**\n * Supported event types triggered in Rive\n */\nexport enum EventType {\n  Load = \"load\",\n  LoadError = \"loaderror\",\n  Play = \"play\",\n  Pause = \"pause\",\n  Stop = \"stop\",\n  Loop = \"loop\",\n  Draw = \"draw\",\n  Advance = \"advance\",\n  StateChange = \"statechange\",\n  RiveEvent = \"riveevent\",\n  AudioStatusChange = \"audiostatuschange\", // internal event. TODO: split\n}\n\nexport type RiveEventPayload = rc.RiveEvent | rc.OpenUrlEvent;\n\n// Event reported by Rive for significant events during animation playback (i.e. play, pause, stop, etc.),\n// as well as for custom Rive events reported from the state machine defined at design-time.\nexport interface Event {\n  type: EventType;\n  data?: string | string[] | LoopEvent | number | RiveEventPayload | RiveFile;\n}\n\n/**\n * Looping types: one-shot, loop, and ping-pong\n */\nexport enum LoopType {\n  OneShot = \"oneshot\", // has value 0 in runtime\n  Loop = \"loop\", // has value 1 in runtime\n  PingPong = \"pingpong\", // has value 2 in runtime\n}\n\n/**\n * Loop events are returned through onloop callbacks\n */\nexport interface LoopEvent {\n  animation: string;\n  type: LoopType;\n}\n\n/**\n * Loop events are returned through onloop callbacks\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Event listeners registered with the event manager\n */\nexport interface EventListener {\n  type: EventType;\n  callback: EventCallback;\n}\n\n/**\n * FPS Reporting through callbacks sent to the WASM runtime\n */\nexport type FPSCallback = (fps: number) => void;\n\n// Manages Rive events and listeners\nclass EventManager {\n  constructor(private listeners: EventListener[] = []) {}\n\n  // Gets listeners of specified type\n  private getListeners(type: EventType): EventListener[] {\n    return this.listeners.filter((e) => e.type === type);\n  }\n\n  // Adds a listener\n  public add(listener: EventListener): void {\n    if (!this.listeners.includes(listener)) {\n      this.listeners.push(listener);\n    }\n  }\n\n  /**\n   * Removes a listener\n   * @param listener the listener with the callback to be removed\n   */\n  public remove(listener: EventListener): void {\n    // We can't simply look for the listener as it'll be a different instance to\n    // one originally subscribed. Find all the listeners of the right type and\n    // then check their callbacks which should match.\n    for (let i = 0; i < this.listeners.length; i++) {\n      const currentListener = this.listeners[i];\n      if (currentListener.type === listener.type) {\n        if (currentListener.callback === listener.callback) {\n          this.listeners.splice(i, 1);\n          break;\n        }\n      }\n    }\n  }\n\n  /**\n   * Clears all listeners of specified type, or every listener if no type is\n   * specified\n   * @param type the type of listeners to clear, or all listeners if not\n   * specified\n   */\n  public removeAll(type?: EventType) {\n    if (!type) {\n      this.listeners.splice(0, this.listeners.length);\n    } else {\n      this.listeners\n        .filter((l) => l.type === type)\n        .forEach((l) => this.remove(l));\n    }\n  }\n\n  // Fires an event\n  public fire(event: Event): void {\n    const eventListeners = this.getListeners(event.type);\n    eventListeners.forEach((listener) => listener.callback(event));\n  }\n}\n\n// #endregion\n\n// #region Manages a queue of tasks\n\n// A task in the queue; will fire the action when the queue is processed; will\n// also optionally fire an event.\nexport interface Task {\n  action?: VoidCallback;\n  event?: Event;\n}\n\n// Manages a queue of tasks\nclass TaskQueueManager {\n  private queue: Task[] = [];\n\n  constructor(private eventManager: EventManager) {}\n\n  // Adds a task top the queue\n  public add(task: Task): void {\n    this.queue.push(task);\n  }\n\n  // Processes all tasks in the queue\n  public process(): void {\n    while (this.queue.length > 0) {\n      const task = this.queue.shift();\n      if (task?.action) {\n        task.action();\n      }\n      if (task?.event) {\n        this.eventManager.fire(task.event);\n      }\n    }\n  }\n}\n\n// #endregion\n\n// #region Audio\n\nenum SystemAudioStatus {\n  AVAILABLE,\n  UNAVAILABLE,\n}\n\n// Class to handle audio context availability and status changes\nclass AudioManager extends EventManager {\n  private _started: boolean = false;\n  private _enabled: boolean = false;\n\n  private _status: SystemAudioStatus = SystemAudioStatus.UNAVAILABLE;\n  private _audioContext: AudioContext;\n\n  private async delay(time: number) {\n    return new Promise((resolve) => setTimeout(resolve, time));\n  }\n\n  private async timeout() {\n    return new Promise((_, reject) => setTimeout(reject, 50));\n  }\n\n  // Alerts animations on status changes and removes the listeners to avoid alerting twice.\n  private reportToListeners() {\n    this.fire({ type: EventType.AudioStatusChange });\n    this.removeAll();\n  }\n\n  /**\n   * The audio context has been resolved.\n   * Alert any listeners that we can now play audio.\n   * Rive will now play audio at the configured volume.\n   */\n  private async enableAudio() {\n    if (!this._enabled) {\n      this._enabled = true;\n      this._status = SystemAudioStatus.AVAILABLE;\n      this.reportToListeners();\n    }\n  }\n\n  /**\n   * Check if we are able to play audio.\n   *\n   * We currently check the audio context, when resume() returns before a timeout we know that the\n   * audio context is running and we can enable audio.\n   */\n  private async testAudio() {\n    if (\n      this._status === SystemAudioStatus.UNAVAILABLE &&\n      this._audioContext !== null\n    ) {\n      // if the audio context is not available, it will never resume,\n      // so the timeout will throw after 50ms and a new cycle will start\n      try {\n        await Promise.race([this._audioContext.resume(), this.timeout()]);\n        this.enableAudio();\n      } catch {\n        // we expect the promise race to timeout, which we ignore.\n      }\n    }\n  }\n\n  /**\n   * Establish audio for use with rive.\n   * We both test if we can use audio intermittently and listen for user interaction.\n   * The aim is to enable audio playback as soon as the browser allows this.\n   */\n  private async _establishAudio() {\n    if (!this._started) {\n      this._started = true;\n      // If window doesn't exist we assume they are not in a browser context\n      // so audio will not be blocked\n      if (typeof window == \"undefined\") {\n        this.enableAudio();\n      } else {\n        this._audioContext = new AudioContext();\n        this.listenForUserAction();\n        while (this._status === SystemAudioStatus.UNAVAILABLE) {\n          await this.testAudio();\n          await this.delay(1000);\n        }\n      }\n    }\n  }\n\n  private listenForUserAction() {\n    // NOTE: AudioContexts are ready immediately if requested in a ui callback\n    // we *could* re request one in this listener.\n    const _clickListener = async () => {\n      // note this has \"better\" results than calling `await this.testAudio()`\n      // as we force audio to be enabled in the current thread, rather than chancing\n      // the thread to be passed over for some other async context\n\n      this.enableAudio();\n    };\n    // NOTE: we should test this on mobile/pads\n    document.addEventListener(\"pointerdown\", _clickListener, {\n      once: true,\n    });\n  }\n\n  /**\n   * Establish the audio context for rive, this lets rive know that we can play audio.\n   */\n  public async establishAudio() {\n    this._establishAudio();\n  }\n\n  public get systemVolume() {\n    if (this._status === SystemAudioStatus.UNAVAILABLE) {\n      // We do an immediate test to avoid depending on the delay of the running test\n      this.testAudio();\n      return 0;\n    }\n    return 1;\n  }\n\n  public get status(): SystemAudioStatus {\n    return this._status;\n  }\n}\n\nconst audioManager = new AudioManager();\n\n// #endregion\n\n// #region Observers\n\ntype ObservedObject = {\n  onResize: Function;\n  element: HTMLCanvasElement;\n};\n\ntype MyResizeObserverType = {\n  observe: Function;\n  unobserve: Function;\n  disconnect: Function;\n};\n\nclass FakeResizeObserver {\n  observe() {}\n  unobserve() {}\n  disconnect() {}\n}\n\nconst MyResizeObserver = globalThis.ResizeObserver || FakeResizeObserver;\n\n/**\n * This class takes care of any observers that will be attached to an animation.\n * It should be treated as a singleton because observers are much more performant\n * when used for observing multiple elements by a single instance.\n */\n\nclass ObjectObservers {\n  private _elementsMap: Map<HTMLCanvasElement, ObservedObject> = new Map();\n\n  private _resizeObserver: MyResizeObserverType;\n\n  constructor() {\n    this._resizeObserver = new MyResizeObserver(this._onObserved);\n  }\n\n  /**\n   * Resize observers trigger both when the element changes its size and also when the\n   * element is added or removed from the document.\n   */\n  private _onObservedEntry = (entry: ResizeObserverEntry) => {\n    const observed = this._elementsMap.get(entry.target as HTMLCanvasElement);\n    if (observed !== null) {\n      observed.onResize(\n        entry.target.clientWidth == 0 || entry.target.clientHeight == 0,\n      );\n    } else {\n      this._resizeObserver.unobserve(entry.target);\n    }\n  };\n\n  private _onObserved = (entries: ResizeObserverEntry[]) => {\n    entries.forEach(this._onObservedEntry);\n  };\n\n  // Adds an observable element\n  public add(element: HTMLCanvasElement, onResize: Function) {\n    let observed: ObservedObject = {\n      onResize,\n      element,\n    };\n    this._elementsMap.set(element, observed);\n    this._resizeObserver.observe(element);\n    return observed;\n  }\n\n  // Removes an observable element\n  public remove(observed: ObservedObject) {\n    this._resizeObserver.unobserve(observed.element);\n    this._elementsMap.delete(observed.element);\n  }\n}\n\nconst observers = new ObjectObservers();\n\n// #endregion\n\n// #region Rive\n\n// Interface for the Rive static method contructor\nexport interface RiveParameters {\n  canvas: HTMLCanvasElement | OffscreenCanvas; // canvas is required\n  src?: string; // one of src or buffer or file is required\n  buffer?: ArrayBuffer; // one of src or buffer or file is required\n  riveFile?: RiveFile;\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  layout?: Layout;\n  autoplay?: boolean;\n  useOffscreenRenderer?: boolean;\n  /**\n   * Allow the runtime to automatically load assets hosted in Rive's CDN.\n   * enabled by default.\n   */\n  enableRiveAssetCDN?: boolean;\n  /**\n   * Turn off Rive Listeners. This means state machines that have Listeners\n   * will not be invoked, and also, no event listeners pertaining to Listeners\n   * will be attached to the <canvas> element\n   */\n  shouldDisableRiveListeners?: boolean;\n  /**\n   * For Rive Listeners, allows scrolling behavior to still occur on canvas elements\n   * when a touch/drag action is performed on touch-enabled devices. Otherwise,\n   * scroll behavior may be prevented on touch/drag actions on the canvas by default.\n   */\n  isTouchScrollEnabled?: boolean;\n  /**\n   * Enable Rive Events to be handled by the runtime. This means any special Rive Event may have\n   * a side effect that takes place implicitly.\n   *\n   * For example, if during the render loop an OpenUrlEvent is detected, the\n   * browser may try to open the specified URL in the payload.\n   *\n   * This flag is false by default to prevent any unwanted behaviors from taking place.\n   * This means any special Rive Event will have to be handled manually by subscribing to\n   * EventType.RiveEvent\n   */\n  automaticallyHandleEvents?: boolean;\n  /**\n   * Rive will look for a default view model and view model instance to bind to the artboard\n   */\n  autoBind?: boolean;\n  /**\n   * For Rive Listeners, dispatch a pointer exit when the pointer exits the canvas.\n   */\n  dispatchPointerExit?: boolean;\n  /**\n   * Enables multi touch support\n   */\n  enableMultiTouch?: boolean;\n  /**\n   * Enum with drawing options for optimizations\n   */\n  drawingOptions?: DrawOptimizationOptions;\n  onLoad?: EventCallback;\n  onLoadError?: EventCallback;\n  onPlay?: EventCallback;\n  onPause?: EventCallback;\n  onStop?: EventCallback;\n  onLoop?: EventCallback;\n  onStateChange?: EventCallback;\n  onAdvance?: EventCallback;\n  assetLoader?: AssetLoadCallback;\n  /**\n   * @deprecated Use `onLoad()` instead\n   */\n  onload?: EventCallback;\n  /**\n   * @deprecated Use `onLoadError()` instead\n   */\n  onloaderror?: EventCallback;\n  /**\n   * @deprecated Use `onPoad()` instead\n   */\n  onplay?: EventCallback;\n  /**\n   * @deprecated Use `onPause()` instead\n   */\n  onpause?: EventCallback;\n  /**\n   * @deprecated Use `onStop()` instead\n   */\n  onstop?: EventCallback;\n  /**\n   * @deprecated Use `onLoop()` instead\n   */\n  onloop?: EventCallback;\n  /**\n   * @deprecated Use `onStateChange()` instead\n   */\n  onstatechange?: EventCallback;\n}\n\n// Interface to Rive.load function\nexport interface RiveLoadParameters {\n  src?: string;\n  buffer?: ArrayBuffer;\n  riveFile?: RiveFile;\n  autoplay?: boolean;\n  autoBind?: boolean;\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  useOffscreenRenderer?: boolean;\n  shouldDisableRiveListeners?: boolean;\n}\n\n// Interface ot Rive.reset function\nexport interface RiveResetParameters {\n  artboard?: string;\n  animations?: string | string[];\n  stateMachines?: string | string[];\n  autoplay?: boolean;\n  autoBind?: boolean;\n}\n// Interface to RiveFile.load function\nexport interface RiveFileParameters {\n  src?: string;\n  buffer?: ArrayBuffer;\n  assetLoader?: AssetLoadCallback;\n  enableRiveAssetCDN?: boolean;\n  onLoad?: EventCallback;\n  onLoadError?: EventCallback;\n}\n\nexport class RiveFile implements rc.FinalizableTarget {\n  // Error message for missing source or buffer\n  private static readonly missingErrorMessage: string =\n    \"Rive source file or data buffer required\";\n\n  // Error message for file load error\n  private static readonly fileLoadErrorMessage: string =\n    \"The file failed to load\";\n\n  // A url to a Rive file; may be undefined if a buffer is specified\n  private src: string;\n\n  // Raw Rive file data; may be undefined if a src is specified\n  private buffer: ArrayBuffer;\n\n  // Wasm runtime\n  private runtime: rc.RiveCanvas;\n\n  // Runtime file\n  private file: rc.File;\n\n  // AssetLoadCallback: allows customizing asset loading for images and fonts.\n  private assetLoader: AssetLoadCallback;\n\n  // Allow the runtime to automatically load assets hosted in Rive's runtime.\n  private enableRiveAssetCDN: boolean = true;\n\n  // Holds event listeners\n  private eventManager: EventManager;\n\n  private referenceCount: number = 0;\n\n  private destroyed: boolean = false;\n\n  public selfUnref: boolean = false;\n\n  private bindableArtboards: BindableArtboard[] = [];\n\n  constructor(params: RiveFileParameters) {\n    this.src = params.src;\n    this.buffer = params.buffer;\n\n    if (params.assetLoader) this.assetLoader = params.assetLoader;\n    this.enableRiveAssetCDN =\n      typeof params.enableRiveAssetCDN == \"boolean\"\n        ? params.enableRiveAssetCDN\n        : true;\n\n    // New event management system\n    this.eventManager = new EventManager();\n    if (params.onLoad) this.on(EventType.Load, params.onLoad);\n    if (params.onLoadError) this.on(EventType.LoadError, params.onLoadError);\n  }\n\n  private releaseFile() {\n    if (this.selfUnref) {\n      this.file?.unref();\n    }\n    this.file = null;\n  }\n\n  private releaseBindableArtboards() {\n    this.bindableArtboards.forEach((bindableArtboard) =>\n      bindableArtboard.destroy(),\n    );\n  }\n\n  private async initData() {\n    if (this.src) {\n      this.buffer = await loadRiveFile(this.src);\n    }\n    if (this.destroyed) {\n      return;\n    }\n    let loader;\n    if (this.assetLoader) {\n      const loaderWrapper = new CustomFileAssetLoaderWrapper(\n        this.runtime,\n        this.assetLoader,\n      );\n      loader = loaderWrapper.assetLoader;\n    }\n    // Load the Rive file\n    this.file = await this.runtime.load(\n      new Uint8Array(this.buffer),\n      loader,\n      this.enableRiveAssetCDN,\n    );\n    const fileFinalizer = new FileFinalizer(this.file);\n    finalizationRegistry.register(this, fileFinalizer);\n\n    if (this.destroyed) {\n      this.releaseFile();\n      return;\n    }\n    if (this.file !== null) {\n      this.eventManager.fire({\n        type: EventType.Load,\n        data: this,\n      });\n    } else {\n      this.fireLoadError(RiveFile.fileLoadErrorMessage);\n    }\n  }\n\n  public async init() {\n    // If no source file url specified, it's a bust\n    if (!this.src && !this.buffer) {\n      this.fireLoadError(RiveFile.missingErrorMessage);\n      return;\n    }\n\n    try {\n      this.runtime = await RuntimeLoader.awaitInstance();\n\n      if (this.destroyed) {\n        return;\n      }\n\n      await this.initData();\n    } catch (error) {\n      this.fireLoadError(\n        error instanceof Error ? error.message : RiveFile.fileLoadErrorMessage,\n      );\n    }\n  }\n\n  private fireLoadError(message: string): void {\n    this.eventManager.fire({\n      type: EventType.LoadError,\n      data: message,\n    });\n\n    throw new Error(message);\n  }\n\n  /**\n   * Subscribe to Rive-generated events\n   * @param type the type of event to subscribe to\n   * @param callback callback to fire when the event occurs\n   */\n  public on(type: EventType, callback: EventCallback) {\n    this.eventManager.add({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @param type the type of event to unsubscribe from\n   * @param callback the callback to unsubscribe\n   */\n  public off(type: EventType, callback: EventCallback) {\n    this.eventManager.remove({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  public cleanup() {\n    this.referenceCount -= 1;\n    if (this.referenceCount <= 0) {\n      this.removeAllRiveEventListeners();\n      this.releaseFile();\n      this.releaseBindableArtboards();\n      this.destroyed = true;\n    }\n  }\n\n  /**\n   * Unsubscribes all Rive listeners from an event type, or everything if no type is\n   * given\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public removeAllRiveEventListeners(type?: EventType) {\n    this.eventManager.removeAll(type);\n  }\n\n  public getInstance(): rc.File {\n    if (this.file !== null) {\n      this.referenceCount += 1;\n      return this.file;\n    }\n  }\n\n  public destroyIfUnused() {\n    if (this.referenceCount <= 0) {\n      this.cleanup();\n    }\n  }\n\n  private createBindableArtboard(\n    nativeBindableArtboard: rc.BindableArtboard,\n  ): BindableArtboard | null {\n    if (nativeBindableArtboard != null) {\n      const bindableArtboard = new BindableArtboard(nativeBindableArtboard);\n      createFinalization(bindableArtboard, bindableArtboard.nativeArtboard);\n      this.bindableArtboards.push(bindableArtboard);\n      return bindableArtboard;\n    }\n    return null;\n  }\n\n  /**\n   * @deprecated This function is deprecated. For better stability and memory management\n   * use `getBindableArtboard()` instead.\n   * @param {string} name - The name of the artboard.\n   * @returns {Artboard} The artboard to bind to.\n   */\n  public getArtboard(name: string): Artboard | null {\n    const nativeArtboard = this.file.artboardByName(name);\n    if (nativeArtboard != null) {\n      return new Artboard(nativeArtboard, this);\n    }\n  }\n\n  public getBindableArtboard(name: string): BindableArtboard | null {\n    const nativeArtboard = this.file.bindableArtboardByName(name);\n    return this.createBindableArtboard(nativeArtboard);\n  }\n\n  public getDefaultBindableArtboard(): BindableArtboard | null {\n    const nativeArtboard = this.file.bindableArtboardDefault();\n    return this.createBindableArtboard(nativeArtboard);\n  }\n\n  public internalBindableArtboardFromArtboard(\n    artboard: rc.Artboard,\n  ): BindableArtboard | null {\n    const nativeBindableArtboard =\n      this.file.internalBindableArtboardFromArtboard(artboard);\n    return this.createBindableArtboard(nativeBindableArtboard);\n  }\n\n  public viewModelByName(name: string): ViewModel | null {\n    const viewModel = this.file.viewModelByName(name);\n    if (viewModel !== null) {\n      return new ViewModel(viewModel);\n    }\n    return null;\n  }\n}\n\nexport class Rive {\n  // Canvas in which to render the artboard\n  private readonly canvas: HTMLCanvasElement | OffscreenCanvas;\n\n  // A url to a Rive file; may be undefined if a buffer is specified\n  private src: string;\n\n  // Raw Rive file data; may be undefined if a src is specified\n  private buffer: ArrayBuffer;\n\n  // The layout for rendering in the canvas\n  private _layout: Layout;\n\n  // The runtime renderer\n  private renderer: rc.WrappedRenderer;\n\n  // Tracks if a Rive file is loaded\n  private loaded = false;\n\n  // Tracks if a Rive file is destroyed\n  private destroyed = false;\n\n  // Reference of an object that handles any observers for the animation\n  private _observed: ObservedObject | null = null;\n\n  /**\n   * Tracks if a Rive file is loaded; we need this in addition to loaded as some\n   * commands (e.g. contents) can be called as soon as the file is loaded.\n   * However, playback commands need to be queued and run in order once initial\n   * animations and autoplay has been sorted out. This applies to play, pause,\n   * and start.\n   */\n  private readyForPlaying = false;\n\n  // Wasm runtime\n  private runtime: rc.RiveCanvas;\n\n  // Runtime artboard\n  private artboard: rc.Artboard | null = null;\n\n  // place to clear up event listeners\n  private eventCleanup: VoidCallback | null = null;\n\n  // Runtime file\n  private file: rc.File;\n\n  // Rive file instance\n  private riveFile: RiveFile;\n\n  // Holds event listeners\n  private eventManager: EventManager;\n\n  // Manages the loading task queue\n  private taskQueue: TaskQueueManager;\n\n  // Animator: manages animations and state machines\n  private animator: Animator;\n\n  // AssetLoadCallback: allows customizing asset loading for images and fonts.\n  private assetLoader: AssetLoadCallback;\n\n  // Error message for missing source or buffer\n  private static readonly missingErrorMessage: string =\n    \"Rive source file or data buffer required\";\n\n  // Error message for removed rive file\n  private static readonly cleanupErrorMessage: string =\n    \"Attempt to use file after calling cleanup.\";\n\n  private shouldDisableRiveListeners = false;\n\n  private automaticallyHandleEvents = false;\n\n  private dispatchPointerExit = true;\n\n  // Allow all pointers to be passed to the runtime\n  private enableMultiTouch = false;\n\n  // Allow the runtime to automatically load assets hosted in Rive's runtime.\n  private enableRiveAssetCDN = true;\n\n  // Keep a local value of the set volume to update it asynchronously\n  private _volume = 1;\n\n  // Keep a local value of the set width to update it asynchronously\n  private _artboardWidth: number | undefined = undefined;\n\n  // Keep a local value of the set height to update it asynchronously\n  private _artboardHeight: number | undefined = undefined;\n\n  // Keep a local value of the device pixel ratio used in rendering and canvas/artboard resizing\n  private _devicePixelRatioUsed = 1;\n\n  // Whether the canvas element's size is 0\n  private _hasZeroSize = false;\n\n  // Whether a draw operation needs to be forced\n  private _needsRedraw = false;\n\n  // Canvas width and height. Values are lazily updated so they might\n  // not be in sync with current canvas size.\n  private _currentCanvasWidth = 0;\n  private _currentCanvasHeight = 0;\n\n  // Audio event listener\n  private _audioEventListener: EventListener | null = null;\n\n  // draw method bound to the class\n  private _boundDraw: (t: number) => void | null = null;\n\n  private _viewModelInstance: ViewModelInstance | null = null;\n  private _dataEnums: DataEnum[] | null = null;\n\n  private drawOptimization: DrawOptimizationOptions =\n    DrawOptimizationOptions.DrawOnChanged;\n\n  // Durations to generate a frame for the last second. Used for performance profiling.\n  public durations: number[] = [];\n  public frameTimes: number[] = [];\n  public frameCount = 0;\n  public isTouchScrollEnabled = false;\n\n  constructor(params: RiveParameters) {\n    this._boundDraw = this.draw.bind(this);\n    this.canvas = params.canvas;\n    if (params.canvas.constructor === HTMLCanvasElement) {\n      this._observed = observers.add(\n        this.canvas as HTMLCanvasElement,\n        this.onCanvasResize,\n      );\n    }\n    this._currentCanvasWidth = this.canvas.width;\n    this._currentCanvasHeight = this.canvas.height;\n    this.src = params.src;\n    this.buffer = params.buffer;\n    this.riveFile = params.riveFile;\n    this.layout = params.layout ?? new Layout();\n    this.shouldDisableRiveListeners = !!params.shouldDisableRiveListeners;\n    this.isTouchScrollEnabled = !!params.isTouchScrollEnabled;\n    this.automaticallyHandleEvents = !!params.automaticallyHandleEvents;\n    this.dispatchPointerExit =\n      params.dispatchPointerExit === false\n        ? params.dispatchPointerExit\n        : this.dispatchPointerExit;\n    this.enableMultiTouch = !!params.enableMultiTouch;\n    this.drawOptimization = params.drawingOptions ?? this.drawOptimization;\n    this.enableRiveAssetCDN =\n      params.enableRiveAssetCDN === undefined\n        ? true\n        : params.enableRiveAssetCDN;\n\n    // New event management system\n    this.eventManager = new EventManager();\n    if (params.onLoad) this.on(EventType.Load, params.onLoad);\n    if (params.onLoadError) this.on(EventType.LoadError, params.onLoadError);\n    if (params.onPlay) this.on(EventType.Play, params.onPlay);\n    if (params.onPause) this.on(EventType.Pause, params.onPause);\n    if (params.onStop) this.on(EventType.Stop, params.onStop);\n    if (params.onLoop) this.on(EventType.Loop, params.onLoop);\n    if (params.onStateChange)\n      this.on(EventType.StateChange, params.onStateChange);\n    if (params.onAdvance) this.on(EventType.Advance, params.onAdvance);\n\n    /**\n     * @deprecated Use camelCase'd versions instead.\n     */\n    if (params.onload && !params.onLoad) this.on(EventType.Load, params.onload);\n    if (params.onloaderror && !params.onLoadError)\n      this.on(EventType.LoadError, params.onloaderror);\n    if (params.onplay && !params.onPlay) this.on(EventType.Play, params.onplay);\n    if (params.onpause && !params.onPause)\n      this.on(EventType.Pause, params.onpause);\n    if (params.onstop && !params.onStop) this.on(EventType.Stop, params.onstop);\n    if (params.onloop && !params.onLoop) this.on(EventType.Loop, params.onloop);\n    if (params.onstatechange && !params.onStateChange)\n      this.on(EventType.StateChange, params.onstatechange);\n\n    /**\n     * Asset loading\n     */\n    if (params.assetLoader) this.assetLoader = params.assetLoader;\n\n    // Hook up the task queue\n    this.taskQueue = new TaskQueueManager(this.eventManager);\n\n    this.init({\n      src: this.src,\n      buffer: this.buffer,\n      riveFile: this.riveFile,\n      autoplay: params.autoplay,\n      autoBind: params.autoBind,\n      animations: params.animations,\n      stateMachines: params.stateMachines,\n      artboard: params.artboard,\n      useOffscreenRenderer: params.useOffscreenRenderer,\n    });\n  }\n\n  public get viewModelCount(): number {\n    return this.file.viewModelCount();\n  }\n\n  // Alternative constructor to build a Rive instance from an interface/object\n  public static new(params: RiveParameters): Rive {\n    console.warn(\n      \"This function is deprecated: please use `new Rive({})` instead\",\n    );\n    return new Rive(params);\n  }\n\n  // Event handler for when audio context becomes available\n  private onSystemAudioChanged() {\n    this.volume = this._volume;\n  }\n\n  private onCanvasResize = (hasZeroSize: boolean) => {\n    const toggledDisplay = this._hasZeroSize !== hasZeroSize;\n    this._hasZeroSize = hasZeroSize;\n    if (!hasZeroSize) {\n      if (toggledDisplay) {\n        this.resizeDrawingSurfaceToCanvas();\n      }\n    } else if (!this._layout.maxX || !this._layout.maxY) {\n      this.resizeToCanvas();\n    }\n  };\n\n  // Initializes the Rive object either from constructor or load()\n  private init({\n    src,\n    buffer,\n    riveFile,\n    animations,\n    stateMachines,\n    artboard,\n    autoplay = false,\n    useOffscreenRenderer = false,\n    autoBind = false,\n  }: RiveLoadParameters): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.src = src;\n    this.buffer = buffer;\n    this.riveFile = riveFile;\n\n    // If no source file url specified, it's a bust\n    if (!this.src && !this.buffer && !this.riveFile) {\n      throw new RiveError(Rive.missingErrorMessage);\n    }\n\n    // List of animations that should be initialized.\n    const startingAnimationNames = mapToStringArray(animations);\n\n    // List of state machines that should be initialized\n    const startingStateMachineNames = mapToStringArray(stateMachines);\n\n    // Ensure loaded is marked as false if loading new file\n    this.loaded = false;\n    this.readyForPlaying = false;\n\n    // Ensure the runtime is loaded\n    RuntimeLoader.awaitInstance()\n      .then((runtime) => {\n        if (this.destroyed) {\n          return;\n        }\n        this.runtime = runtime;\n\n        this.removeRiveListeners();\n        this.deleteRiveRenderer();\n\n        // Get the canvas where you want to render the animation and create a renderer\n        this.renderer = this.runtime.makeRenderer(\n          this.canvas,\n          useOffscreenRenderer,\n        );\n\n        // Initial size adjustment based on devicePixelRatio if no width/height are\n        // specified explicitly\n        if (!(this.canvas.width || this.canvas.height)) {\n          this.resizeDrawingSurfaceToCanvas();\n        }\n\n        // Load Rive data from a source uri or a data buffer\n        this.initData(\n          artboard,\n          startingAnimationNames,\n          startingStateMachineNames,\n          autoplay,\n          autoBind,\n        )\n          .then((hasInitialized: boolean) => {\n            if (hasInitialized) {\n              return this.setupRiveListeners();\n            }\n          })\n          .catch((e) => {\n            console.error(e);\n          });\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n\n  /**\n   * Setup Rive Listeners on the canvas\n   * @param riveListenerOptions - Enables TouchEvent events on the canvas. Set to true to allow\n   * touch scrolling on the canvas element on touch-enabled devices\n   * i.e. { isTouchScrollEnabled: true }\n   */\n  public setupRiveListeners(\n    riveListenerOptions?: SetupRiveListenersOptions,\n  ): void {\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    if (!this.shouldDisableRiveListeners) {\n      const activeStateMachines = (this.animator.stateMachines || [])\n        .filter((sm) => sm.playing && this.runtime.hasListeners(sm.instance))\n        .map((sm) => sm.instance);\n      let touchScrollEnabledOption = this.isTouchScrollEnabled;\n      let dispatchPointerExit = this.dispatchPointerExit;\n      let enableMultiTouch = this.enableMultiTouch;\n      if (\n        riveListenerOptions &&\n        \"isTouchScrollEnabled\" in riveListenerOptions\n      ) {\n        touchScrollEnabledOption = riveListenerOptions.isTouchScrollEnabled;\n      }\n      this.eventCleanup = registerTouchInteractions({\n        canvas: this.canvas,\n        artboard: this.artboard,\n        stateMachines: activeStateMachines,\n        renderer: this.renderer,\n        rive: this.runtime,\n        fit: this._layout.runtimeFit(this.runtime),\n        alignment: this._layout.runtimeAlignment(this.runtime),\n        isTouchScrollEnabled: touchScrollEnabledOption,\n        dispatchPointerExit: dispatchPointerExit,\n        enableMultiTouch: enableMultiTouch,\n        layoutScaleFactor: this._layout.layoutScaleFactor,\n      });\n    }\n  }\n\n  /**\n   * Remove Rive Listeners setup on the canvas\n   */\n  public removeRiveListeners(): void {\n    if (this.eventCleanup) {\n      this.eventCleanup();\n      this.eventCleanup = null;\n    }\n  }\n\n  /**\n   * If the instance has audio and the system audio is not ready\n   * we hook the instance to the audio manager\n   */\n  private initializeAudio() {\n    // Initialize audio if needed\n    if (audioManager.status == SystemAudioStatus.UNAVAILABLE) {\n      if (\n        this.file.hasAudio ||\n        (this.artboard?.hasAudio && this._audioEventListener === null)\n      ) {\n        this._audioEventListener = {\n          type: EventType.AudioStatusChange,\n          callback: () => this.onSystemAudioChanged(),\n        };\n        audioManager.add(this._audioEventListener);\n        audioManager.establishAudio();\n      }\n    }\n  }\n\n  private initArtboardSize() {\n    if (!this.artboard) return;\n\n    // Use preset values if they are not undefined\n    this._artboardWidth = this.artboard.width =\n      this._artboardWidth || this.artboard.width;\n    this._artboardHeight = this.artboard.height =\n      this._artboardHeight || this.artboard.height;\n  }\n\n  // Initializes runtime with Rive data and preps for playing.\n  // Returns true for successful initialization.\n  private async initData(\n    artboardName: string,\n    animationNames: string[],\n    stateMachineNames: string[],\n    autoplay: boolean,\n    autoBind: boolean,\n  ): Promise<boolean> {\n    try {\n      if (this.riveFile == null) {\n        const riveFile = new RiveFile({\n          src: this.src,\n          buffer: this.buffer,\n          enableRiveAssetCDN: this.enableRiveAssetCDN,\n          assetLoader: this.assetLoader,\n        });\n        this.riveFile = riveFile;\n        await riveFile.init();\n        if (this.destroyed) {\n          // In the very unlikely scenario where the rive file created by this Rive is shared by\n          // another rive file, we only want to destroy it if this file is the only owner.\n          riveFile.destroyIfUnused();\n          return false;\n        }\n      }\n      this.file = this.riveFile.getInstance();\n      // Initialize and draw frame\n      this.initArtboard(\n        artboardName,\n        animationNames,\n        stateMachineNames,\n        autoplay,\n        autoBind,\n      );\n\n      // Initialize the artboard size\n      this.initArtboardSize();\n\n      // Check for audio\n      this.initializeAudio();\n\n      // Everything's set up, emit a load event\n      this.loaded = true;\n      this.eventManager.fire({\n        type: EventType.Load,\n        data: this.src ?? \"buffer\",\n      });\n\n      // Only initialize paused state machines after the load event has been fired\n      // to allow users to initialize inputs and view models before the first advance\n      this.animator.advanceIfPaused();\n\n      // Flag ready for playback commands and clear the task queue; this order\n      // is important or it may infinitely recurse\n      this.readyForPlaying = true;\n      this.taskQueue.process();\n\n      this.drawFrame();\n\n      return true;\n    } catch (error) {\n      const msg = resolveErrorMessage(error);\n      console.warn(msg);\n      this.eventManager.fire({ type: EventType.LoadError, data: msg });\n      return Promise.reject(msg);\n    }\n  }\n\n  // Initialize for playback\n  private initArtboard(\n    artboardName: string,\n    animationNames: string[],\n    stateMachineNames: string[],\n    autoplay: boolean,\n    autoBind: boolean,\n  ): void {\n    if (!this.file) {\n      return;\n    }\n    // Fetch the artboard\n    const rootArtboard = artboardName\n      ? this.file.artboardByName(artboardName)\n      : this.file.defaultArtboard();\n\n    // Check we have a working artboard\n    if (!rootArtboard) {\n      const msg = \"Invalid artboard name or no default artboard\";\n      console.warn(msg);\n      this.eventManager.fire({ type: EventType.LoadError, data: msg });\n      return;\n    }\n\n    this.artboard = rootArtboard;\n    rootArtboard.volume = this._volume * audioManager.systemVolume;\n\n    // Initialize the animator\n    this.animator = new Animator(\n      this.runtime,\n      this.artboard,\n      this.eventManager,\n    );\n\n    // Initialize the animations; as loaded hasn't happened yet, we need to\n    // suppress firing the play/pause events until the load event has fired. To\n    // do this we tell the animator to suppress firing events, and add event\n    // firing to the task queue.\n    let instanceNames: string[];\n    if (animationNames.length > 0 || stateMachineNames.length > 0) {\n      instanceNames = animationNames.concat(stateMachineNames);\n      this.animator.initLinearAnimations(animationNames, autoplay);\n      this.animator.initStateMachines(stateMachineNames, autoplay);\n    } else {\n      instanceNames = [this.animator.atLeastOne(autoplay, false)];\n    }\n    // Queue up firing the playback events\n    this.taskQueue.add({\n      event: {\n        type: autoplay ? EventType.Play : EventType.Pause,\n        data: instanceNames,\n      },\n    });\n\n    if (autoBind) {\n      const viewModel = this.file.defaultArtboardViewModel(rootArtboard);\n      if (viewModel !== null) {\n        const runtimeInstance = viewModel.defaultInstance();\n        if (runtimeInstance !== null) {\n          const viewModelInstance = new ViewModelInstance(\n            runtimeInstance,\n            null,\n          );\n          createFinalization(\n            viewModelInstance,\n            viewModelInstance.runtimeInstance,\n          );\n          this.bindViewModelInstance(viewModelInstance);\n        }\n      }\n    }\n  }\n\n  // Draws the current artboard frame\n  public drawFrame() {\n    if (document?.timeline?.currentTime) {\n      if (this.loaded && this.artboard && !this.frameRequestId) {\n        this._boundDraw(document!.timeline!.currentTime as number);\n        this.runtime?.resolveAnimationFrame();\n      }\n    } else {\n      this.scheduleRendering();\n    }\n  }\n\n  private _canvasSizeChanged(): boolean {\n    let changed = false;\n    if (this.canvas) {\n      if (this.canvas.width !== this._currentCanvasWidth) {\n        this._currentCanvasWidth = this.canvas.width;\n        changed = true;\n      }\n      if (this.canvas.height !== this._currentCanvasHeight) {\n        this._currentCanvasHeight = this.canvas.height;\n        changed = true;\n      }\n    }\n    return changed;\n  }\n\n  // Tracks the last timestamp at which the animation was rendered. Used only in\n  // draw().\n  private lastRenderTime: number;\n\n  // Tracks the current animation frame request\n  private frameRequestId: number | null;\n\n  /**\n   * Used be draw to track when a second of active rendering time has passed.\n   * Used for debugging purposes\n   */\n  private renderSecondTimer = 0;\n\n  /**\n   * Draw rendering loop; renders animation frames at the correct time interval.\n   * @param time the time at which to render a frame\n   */\n  private draw(time: number, onSecond?: VoidCallback): void {\n    // Clear the frameRequestId, as we're now rendering a fresh frame\n    this.frameRequestId = null;\n\n    const before = performance.now();\n\n    // On the first pass, make sure lastTime has a valid value\n    if (!this.lastRenderTime) {\n      this.lastRenderTime = time;\n    }\n\n    // Handle the onSecond callback\n    this.renderSecondTimer += time - this.lastRenderTime;\n    if (this.renderSecondTimer > 5000) {\n      this.renderSecondTimer = 0;\n      onSecond?.();\n    }\n\n    // Calculate the elapsed time between frames in seconds\n    const elapsedTime = (time - this.lastRenderTime) / 1000;\n    this.lastRenderTime = time;\n\n    // - Advance non-paused animations by the elapsed number of seconds\n    // - Advance any animations that require scrubbing\n    // - Advance to the first frame even when autoplay is false\n    const activeAnimations = this.animator.animations\n      .filter((a) => a.playing || a.needsScrub)\n      // The scrubbed animations must be applied first to prevent weird artifacts\n      // if the playing animations conflict with the scrubbed animating attribuates.\n      .sort((first) => (first.needsScrub ? -1 : 1));\n    for (const animation of activeAnimations) {\n      animation.advance(elapsedTime);\n      if (animation.instance.didLoop) {\n        animation.loopCount += 1;\n      }\n      animation.apply(1.0);\n    }\n\n    // - Advance non-paused state machines by the elapsed number of seconds\n    // - Advance to the first frame even when autoplay is false\n    const activeStateMachines = this.animator.stateMachines.filter(\n      (a) => a.playing,\n    );\n    for (const stateMachine of activeStateMachines) {\n      // Check for events before the current frame's state machine advance\n      const numEventsReported = stateMachine.reportedEventCount();\n      if (numEventsReported) {\n        for (let i = 0; i < numEventsReported; i++) {\n          const event = stateMachine.reportedEventAt(i);\n\n          if (event) {\n            if (event.type === RiveEventType.OpenUrl) {\n              this.eventManager.fire({\n                type: EventType.RiveEvent,\n                data: event as rc.OpenUrlEvent,\n              });\n              // Handle the event side effect if explicitly enabled\n              if (this.automaticallyHandleEvents) {\n                const newAnchorTag = document.createElement(\"a\");\n                const { url, target } = event as rc.OpenUrlEvent;\n\n                const sanitizedUrl = sanitizeUrl(url);\n                url && newAnchorTag.setAttribute(\"href\", sanitizedUrl);\n                target && newAnchorTag.setAttribute(\"target\", target);\n                if (sanitizedUrl && sanitizedUrl !== BLANK_URL) {\n                  newAnchorTag.click();\n                }\n              }\n            } else {\n              this.eventManager.fire({\n                type: EventType.RiveEvent,\n                data: event as rc.RiveEvent,\n              });\n            }\n          }\n        }\n      }\n      stateMachine.advanceAndApply(elapsedTime);\n      // stateMachine.instance.apply(this.artboard);\n    }\n\n    // Once the animations have been applied to the artboard, advance it\n    // by the elapsed time.\n    if (this.animator.stateMachines.length == 0) {\n      this.artboard.advance(elapsedTime);\n    }\n\n    const { renderer } = this;\n    // Do not draw on 0 canvas size\n    if (!this._hasZeroSize) {\n      // If there was no dirt on this frame, do not clear and draw\n      if (\n        this.drawOptimization == DrawOptimizationOptions.AlwaysDraw ||\n        this.artboard.didChange() ||\n        this._needsRedraw ||\n        this._canvasSizeChanged()\n      ) {\n        // Canvas must be wiped to prevent artifacts\n        renderer.clear();\n        renderer.save();\n\n        // Update the renderer alignment if necessary\n        this.alignRenderer();\n        this.artboard.draw(renderer);\n        renderer.restore();\n        renderer.flush();\n        this._needsRedraw = false;\n      }\n    }\n\n    // Check for any animations that looped\n    this.animator.handleLooping();\n\n    // Check for any state machines that had a state change\n    this.animator.handleStateChanges();\n\n    // Report advanced time\n    this.animator.handleAdvancing(elapsedTime);\n\n    // Add duration to create frame to durations array\n    this.frameCount++;\n    const after = performance.now();\n    this.frameTimes.push(after);\n    this.durations.push(after - before);\n    while (this.frameTimes[0] <= after - 1000) {\n      this.frameTimes.shift();\n      this.durations.shift();\n    }\n\n    this._viewModelInstance?.handleCallbacks();\n\n    // Calling requestAnimationFrame will rerun draw() at the correct rate:\n    // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations\n    if (this.animator.isPlaying) {\n      // Request a new rendering frame\n      this.scheduleRendering();\n    } else if (this.animator.isPaused) {\n      // Reset the end time so on playback it starts at the correct frame\n      this.lastRenderTime = 0;\n    } else if (this.animator.isStopped) {\n      // Reset animation instances, artboard and time\n      // TODO: implement this properly when we have instancing\n      // this.initArtboard();\n      // this.drawFrame();\n      this.lastRenderTime = 0;\n    }\n  }\n\n  /**\n   * Align the renderer\n   */\n  private alignRenderer(): void {\n    const { renderer, runtime, _layout, artboard } = this;\n    // Align things up safe in the knowledge we can restore if changed\n    renderer.align(\n      _layout.runtimeFit(runtime),\n      _layout.runtimeAlignment(runtime),\n      {\n        minX: _layout.minX,\n        minY: _layout.minY,\n        maxX: _layout.maxX,\n        maxY: _layout.maxY,\n      },\n      artboard.bounds,\n      this._devicePixelRatioUsed * _layout.layoutScaleFactor,\n    );\n  }\n\n  public get fps() {\n    return this.durations.length;\n  }\n\n  public get frameTime() {\n    if (this.durations.length === 0) {\n      return 0;\n    }\n    return (\n      this.durations.reduce((a, b) => a + b, 0) / this.durations.length\n    ).toFixed(4);\n  }\n\n  /**\n   * Cleans up all Wasm-generated objects that need to be manually destroyed:\n   * artboard instances, animation instances, state machine instances,\n   * renderer instance, file and runtime.\n   *\n   * Once this is called, you will need to initialise a new instance of the\n   * Rive class\n   */\n  public cleanup() {\n    this.destroyed = true;\n    // Stop the renderer if it hasn't already been stopped.\n    this.stopRendering();\n    // Clean up any artboard, animation or state machine instances.\n    this.cleanupInstances();\n    // Remove from observer\n    if (this._observed !== null) {\n      observers.remove(this._observed);\n    }\n    this.removeRiveListeners();\n    if (this.file) {\n      this.riveFile?.cleanup();\n      this.file = null;\n    }\n    this.riveFile = null;\n    this.deleteRiveRenderer();\n    if (this._audioEventListener !== null) {\n      audioManager.remove(this._audioEventListener);\n      this._audioEventListener = null;\n    }\n    this._viewModelInstance?.cleanup();\n    this._viewModelInstance = null;\n    this._dataEnums = null;\n  }\n\n  /**\n   * Cleans up the Renderer object. Only call this API if you no longer\n   * need to render Rive content in your session.\n   */\n  public deleteRiveRenderer() {\n    this.renderer?.delete();\n    this.renderer = null;\n  }\n\n  /**\n   * Cleans up any Wasm-generated objects that need to be manually destroyed:\n   * artboard instances, animation instances, state machine instances.\n   *\n   * Once this is called, things will need to be reinitialized or bad things\n   * might happen.\n   */\n  public cleanupInstances() {\n    if (this.eventCleanup !== null) {\n      this.eventCleanup();\n    }\n    // Delete all animation and state machine instances\n    this.stop();\n    if (this.artboard) {\n      this.artboard.delete();\n      this.artboard = null;\n    }\n  }\n\n  /**\n   * Tries to query the setup Artboard for a text run node with the given name.\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @returns - TextValueRun node or undefined if the text run cannot be queried\n   */\n  private retrieveTextRun(textRunName: string): rc.TextValueRun | undefined {\n    if (!textRunName) {\n      console.warn(\"No text run name provided\");\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\"Tried to access text run, but the Artboard is null\");\n      return;\n    }\n    const textRun: rc.TextValueRun = this.artboard.textRun(textRunName);\n    if (!textRun) {\n      console.warn(\n        `Could not access a text run with name '${textRunName}' in the '${this.artboard?.name}' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.`,\n      );\n      return;\n    }\n    return textRun;\n  }\n\n  /**\n   * Returns a string from a given text run node name, or undefined if the text run\n   * cannot be queried.\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @returns - String value of the text run node or undefined\n   */\n  public getTextRunValue(textRunName: string): string | undefined {\n    const textRun = this.retrieveTextRun(textRunName);\n    return textRun ? textRun.text : undefined;\n  }\n\n  /**\n   * Sets a text value for a given text run node name if possible\n   *\n   * @param textRunName - Name of the text run node associated with a text object\n   * @param textRunValue - String value to set on the text run node\n   */\n  public setTextRunValue(textRunName: string, textRunValue: string): void {\n    const textRun = this.retrieveTextRun(textRunName);\n    if (textRun) {\n      textRun.text = textRunValue;\n    }\n  }\n\n  // Plays specified animations; if none specified, it unpauses everything.\n  public play(animationNames?: string | string[], autoplay?: true): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, queue up the play\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.play(animationNames, autoplay),\n      });\n      return;\n    }\n    this.animator.play(animationNames);\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    this.setupRiveListeners();\n    this.startRendering();\n  }\n\n  // Pauses specified animations; if none specified, pauses all.\n  public pause(animationNames?: string | string[]): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.pause(animationNames),\n      });\n      return;\n    }\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n    this.animator.pause(animationNames);\n  }\n\n  public scrub(animationNames?: string | string[], value?: number): void {\n    animationNames = mapToStringArray(animationNames);\n\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.scrub(animationNames, value),\n      });\n      return;\n    }\n\n    // Scrub the animation time; we draw a single frame here so that if\n    // nothing's currently playing, the scrubbed animation is still rendered/\n    this.animator.scrub(animationNames, value || 0);\n    this.drawFrame();\n  }\n\n  // Stops specified animations; if none specifies, stops them all.\n  public stop(animationNames?: string | string[] | undefined): void {\n    animationNames = mapToStringArray(animationNames);\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.readyForPlaying) {\n      this.taskQueue.add({\n        action: () => this.stop(animationNames),\n      });\n      return;\n    }\n    // If there is no artboard, this.animator will be undefined\n    if (this.animator) {\n      this.animator.stop(animationNames);\n    }\n    if (this.eventCleanup) {\n      this.eventCleanup();\n    }\n  }\n\n  /**\n   * Resets the animation\n   * @param artboard the name of the artboard, or default if none given\n   * @param animations the names of animations for playback\n   * @param stateMachines the names of state machines for playback\n   * @param autoplay whether to autoplay when reset, defaults to false\n   *\n   */\n  public reset(params?: RiveResetParameters): void {\n    // Get the current artboard, animations, state machines, and playback states\n    const artBoardName = params?.artboard;\n    const animationNames = mapToStringArray(params?.animations);\n    const stateMachineNames = mapToStringArray(params?.stateMachines);\n    const autoplay = params?.autoplay ?? false;\n    const autoBind = params?.autoBind ?? false;\n\n    // Stop everything and clean up\n    this.cleanupInstances();\n\n    // Reinitialize an artboard instance with the state\n    this.initArtboard(\n      artBoardName,\n      animationNames,\n      stateMachineNames,\n      autoplay,\n      autoBind,\n    );\n    this.taskQueue.process();\n  }\n\n  // Loads a new Rive file, keeping listeners in place\n  public load(params: RiveLoadParameters): void {\n    this.file = null;\n    // Stop all animations\n    this.stop();\n    // Reinitialize\n    this.init(params);\n  }\n\n  // Sets a new layout\n  public set layout(layout: Layout) {\n    this._layout = layout;\n    // If the maxX or maxY are 0, then set them to the canvas width and height\n    if (!layout.maxX || !layout.maxY) {\n      this.resizeToCanvas();\n    }\n    if (this.loaded && !this.animator.isPlaying) {\n      this.drawFrame();\n    }\n  }\n\n  /**\n   * Returns the current layout. Note that layout should be treated as\n   * immutable. If you want to change the layout, create a new one use the\n   * layout setter\n   */\n  public get layout() {\n    return this._layout;\n  }\n\n  /**\n   * Sets the layout bounds to the current canvas size; this is typically called\n   * when the canvas is resized\n   */\n  public resizeToCanvas() {\n    this._layout = this.layout.copyWith({\n      minX: 0,\n      minY: 0,\n      maxX: this.canvas.width,\n      maxY: this.canvas.height,\n    });\n  }\n\n  /**\n   * Accounts for devicePixelRatio as a multiplier to render the size of the canvas drawing surface.\n   * Uses the size of the backing canvas to set new width/height attributes. Need to re-render\n   * and resize the layout to match the new drawing surface afterwards.\n   * Useful function for consumers to include in a window resize listener.\n   *\n   * This method will set the {@link devicePixelRatioUsed} property.\n   *\n   * Optionally, you can provide a {@link customDevicePixelRatio} to provide a\n   * custom value.\n   */\n  public resizeDrawingSurfaceToCanvas(customDevicePixelRatio?: number) {\n    if (this.canvas instanceof HTMLCanvasElement && !!window) {\n      const { width, height } = this.canvas.getBoundingClientRect();\n      const dpr = customDevicePixelRatio || window.devicePixelRatio || 1;\n      this.devicePixelRatioUsed = dpr;\n      this.canvas.width = dpr * width;\n      this.canvas.height = dpr * height;\n      this._needsRedraw = true;\n      this.resizeToCanvas();\n      this.drawFrame();\n\n      if (this.layout.fit === Fit.Layout) {\n        const scaleFactor = this._layout.layoutScaleFactor;\n        this.artboard.width = width / scaleFactor;\n        this.artboard.height = height / scaleFactor;\n      }\n    }\n  }\n\n  // Returns the animation source, which may be undefined\n  public get source(): string {\n    return this.src;\n  }\n\n  /**\n   * Returns the name of the active artboard\n   */\n  public get activeArtboard(): string {\n    return this.artboard ? this.artboard.name : \"\";\n  }\n\n  // Returns a list of animation names on the chosen artboard\n  public get animationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded || !this.artboard) {\n      return [];\n    }\n    const animationNames: string[] = [];\n    for (let i = 0; i < this.artboard.animationCount(); i++) {\n      animationNames.push(this.artboard.animationByIndex(i).name);\n    }\n    return animationNames;\n  }\n\n  /**\n   * Returns a list of state machine names from the current artboard\n   */\n  public get stateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded || !this.artboard) {\n      return [];\n    }\n    const stateMachineNames: string[] = [];\n    for (let i = 0; i < this.artboard.stateMachineCount(); i++) {\n      stateMachineNames.push(this.artboard.stateMachineByIndex(i).name);\n    }\n    return stateMachineNames;\n  }\n\n  /**\n   * Returns the inputs for the specified instanced state machine, or an empty\n   * list if the name is invalid or the state machine is not instanced\n   * @param name the state machine name\n   * @returns the inputs for the named state machine\n   */\n  public stateMachineInputs(name: string): StateMachineInput[] {\n    // If the file's not loaded, early out, nothing to pause\n    if (!this.loaded) {\n      return;\n    }\n    const stateMachine = this.animator.stateMachines.find(\n      (m) => m.name === name,\n    );\n    return stateMachine?.inputs;\n  }\n\n  // Returns the input with the provided name at the given path\n  private retrieveInputAtPath(\n    name: string,\n    path: string,\n  ): rc.SMIInput | undefined {\n    if (!name) {\n      console.warn(`No input name provided for path '${path}'`);\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\n        `Tried to access input: '${name}', at path: '${path}', but the Artboard is null`,\n      );\n      return;\n    }\n    const input: rc.SMIInput = this.artboard.inputByPath(name, path);\n\n    if (!input) {\n      console.warn(\n        `Could not access an input with name: '${name}', at path:'${path}'`,\n      );\n      return;\n    }\n    return input;\n  }\n\n  /**\n   * Set the boolean input with the provided name at the given path with value\n   * @param input the state machine input name\n   * @param value the value to set the input to\n   * @param path the path the input is located at an artboard level\n   */\n  public setBooleanStateAtPath(\n    inputName: string,\n    value: boolean,\n    path: string,\n  ) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Boolean) {\n      input.asBool().value = value;\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a boolean`,\n      );\n    }\n  }\n\n  /**\n   * Set the number input with the provided name at the given path with value\n   * @param input the state machine input name\n   * @param value the value to set the input to\n   * @param path the path the input is located at an artboard level\n   */\n  public setNumberStateAtPath(inputName: string, value: number, path: string) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Number) {\n      input.asNumber().value = value;\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a number`,\n      );\n    }\n  }\n\n  /**\n   * Fire the trigger with the provided name at the given path\n   * @param input the state machine input name\n   * @param path the path the input is located at an artboard level\n   */\n  public fireStateAtPath(inputName: string, path: string) {\n    const input: rc.SMIInput = this.retrieveInputAtPath(inputName, path);\n    if (!input) return;\n\n    if (input.type === StateMachineInputType.Trigger) {\n      input.asTrigger().fire();\n    } else {\n      console.warn(\n        `Input with name: '${inputName}', at path:'${path}' is not a trigger`,\n      );\n    }\n  }\n\n  // Returns the TextValueRun object for the provided name at the given path\n  private retrieveTextAtPath(\n    name: string,\n    path: string,\n  ): rc.TextValueRun | undefined {\n    if (!name) {\n      console.warn(`No text name provided for path '${path}'`);\n      return;\n    }\n    if (!path) {\n      console.warn(`No path provided for text '${name}'`);\n      return;\n    }\n    if (!this.artboard) {\n      console.warn(\n        `Tried to access text: '${name}', at path: '${path}', but the Artboard is null`,\n      );\n      return;\n    }\n    const text: rc.TextValueRun = this.artboard.textByPath(name, path);\n    if (!text) {\n      console.warn(\n        `Could not access text with name: '${name}', at path:'${path}'`,\n      );\n      return;\n    }\n    return text;\n  }\n\n  /**\n   * Retrieves the text value for a specified text run at a given path\n   * @param textName The name of the text run\n   * @param path The path to the text run within the artboard\n   * @returns The text value of the text run, or undefined if not found\n   *\n   * @example\n   * // Get the text value for a text run named \"title\" at one nested artboard deep\n   * const titleText = riveInstance.getTextRunValueAtPath(\"title\", \"artboard1\");\n   *\n   * @example\n   * // Get the text value for a text run named \"subtitle\" within a nested group two artboards deep\n   * const subtitleText = riveInstance.getTextRunValueAtPath(\"subtitle\", \"group/nestedGroup\");\n   *\n   * @remarks\n   * If the text run cannot be found at the specified path, a warning will be logged to the console.\n   */\n  public getTextRunValueAtPath(\n    textName: string,\n    path: string,\n  ): string | undefined {\n    const run: rc.TextValueRun = this.retrieveTextAtPath(textName, path);\n    if (!run) {\n      console.warn(\n        `Could not get text with name: '${textName}', at path:'${path}'`,\n      );\n      return;\n    }\n    return run.text;\n  }\n\n  /**\n   * Sets the text value for a specified text run at a given path\n   * @param textName The name of the text run\n   * @param value The new text value to set\n   * @param path The path to the text run within the artboard\n   * @returns void\n   *\n   * @example\n   * // Set the text value for a text run named \"title\" at one nested artboard deep\n   * riveInstance.setTextRunValueAtPath(\"title\", \"New Title\", \"artboard1\");\n   *\n   * @example\n   * // Set the text value for a text run named \"subtitle\" within a nested group two artboards deep\n   * riveInstance.setTextRunValueAtPath(\"subtitle\", \"New Subtitle\", \"group/nestedGroup\");\n   *\n   * @remarks\n   * If the text run cannot be found at the specified path, a warning will be logged to the console.\n   */\n  public setTextRunValueAtPath(textName: string, value: string, path: string) {\n    const run: rc.TextValueRun = this.retrieveTextAtPath(textName, path);\n    if (!run) {\n      console.warn(\n        `Could not set text with name: '${textName}', at path:'${path}'`,\n      );\n      return;\n    }\n    run.text = value;\n  }\n\n  // Returns a list of playing machine names\n  public get playingStateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.stateMachines\n      .filter((m) => m.playing)\n      .map((m) => m.name);\n  }\n\n  // Returns a list of playing animation names\n  public get playingAnimationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.animations.filter((a) => a.playing).map((a) => a.name);\n  }\n\n  // Returns a list of paused animation names\n  public get pausedAnimationNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.animations\n      .filter((a) => !a.playing)\n      .map((a) => a.name);\n  }\n\n  /**\n   *  Returns a list of paused machine names\n   * @returns a list of state machine names that are paused\n   */\n  public get pausedStateMachineNames(): string[] {\n    // If the file's not loaded, we got nothing to return\n    if (!this.loaded) {\n      return [];\n    }\n    return this.animator.stateMachines\n      .filter((m) => !m.playing)\n      .map((m) => m.name);\n  }\n\n  /**\n   * @returns true if any animation is playing\n   */\n  public get isPlaying(): boolean {\n    return this.animator.isPlaying;\n  }\n\n  /**\n   * @returns true if all instanced animations are paused\n   */\n  public get isPaused(): boolean {\n    return this.animator.isPaused;\n  }\n\n  /**\n   * @returns true if no animations are playing or paused\n   */\n  public get isStopped(): boolean {\n    return this.animator?.isStopped ?? true;\n  }\n\n  /**\n   * @returns the bounds of the current artboard, or undefined if the artboard\n   * isn't loaded yet.\n   */\n  public get bounds(): Bounds {\n    return this.artboard ? this.artboard.bounds : undefined;\n  }\n\n  /**\n   * Subscribe to Rive-generated events\n   * @param type the type of event to subscribe to\n   * @param callback callback to fire when the event occurs\n   */\n  public on(type: EventType, callback: EventCallback) {\n    this.eventManager.add({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @param type the type of event to unsubscribe from\n   * @param callback the callback to unsubscribe\n   */\n  public off(type: EventType, callback: EventCallback) {\n    this.eventManager.remove({\n      type: type,\n      callback: callback,\n    });\n  }\n\n  /**\n   * Unsubscribes from a Rive-generated event\n   * @deprecated\n   * @param callback the callback to unsubscribe from\n   */\n  public unsubscribe(type: EventType, callback: EventCallback) {\n    console.warn(\"This function is deprecated: please use `off()` instead.\");\n    this.off(type, callback);\n  }\n\n  /**\n   * Unsubscribes all Rive listeners from an event type, or everything if no type is\n   * given\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public removeAllRiveEventListeners(type?: EventType) {\n    this.eventManager.removeAll(type);\n  }\n\n  /**\n   * Unsubscribes all listeners from an event type, or everything if no type is\n   * given\n   * @deprecated\n   * @param type the type of event to unsubscribe from, or all types if\n   * undefined\n   */\n  public unsubscribeAll(type?: EventType) {\n    console.warn(\n      \"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\",\n    );\n    this.removeAllRiveEventListeners(type);\n  }\n\n  /**\n   * Stops the rendering loop; this is different from pausing in that it doesn't\n   * change the state of any animation. It stops rendering from occurring. This\n   * is designed for situations such as when Rive isn't visible.\n   *\n   * The only way to start rendering again is to call `startRendering`.\n   * Animations that are marked as playing will start from the position that\n   * they would have been at if rendering had not been stopped.\n   */\n  public stopRendering() {\n    if (this.loaded && this.frameRequestId) {\n      if (this.runtime.cancelAnimationFrame) {\n        this.runtime.cancelAnimationFrame(this.frameRequestId);\n      } else {\n        cancelAnimationFrame(this.frameRequestId);\n      }\n      this.frameRequestId = null;\n    }\n  }\n\n  /**\n   * Starts the rendering loop if it has been previously stopped. If the\n   * renderer is already active, then this will have zero effect.\n   */\n  public startRendering() {\n    this.drawFrame();\n  }\n\n  private scheduleRendering() {\n    if (this.loaded && this.artboard && !this.frameRequestId) {\n      if (this.runtime.requestAnimationFrame) {\n        this.frameRequestId = this.runtime.requestAnimationFrame(\n          this._boundDraw,\n        );\n      } else {\n        this.frameRequestId = requestAnimationFrame(this._boundDraw);\n      }\n    }\n  }\n\n  /**\n   * Enables frames-per-second (FPS) reporting for the runtime\n   * If no callback is provided, Rive will append a fixed-position div at the top-right corner of\n   * the page with the FPS reading\n   * @param fpsCallback - Callback from the runtime during the RAF loop that supplies the FPS value\n   */\n  public enableFPSCounter(fpsCallback?: FPSCallback) {\n    this.runtime.enableFPSCounter(fpsCallback);\n  }\n\n  /**\n   * Disables frames-per-second (FPS) reporting for the runtime\n   */\n  public disableFPSCounter() {\n    this.runtime.disableFPSCounter();\n  }\n\n  /**\n   * Returns the contents of a Rive file: the artboards, animations, and state machines\n   */\n  public get contents(): RiveFileContents {\n    if (!this.loaded) {\n      return undefined;\n    }\n    const riveContents: RiveFileContents = {\n      artboards: [],\n    };\n    for (let i = 0; i < this.file.artboardCount(); i++) {\n      const artboard = this.file.artboardByIndex(i);\n      const artboardContents: ArtboardContents = {\n        name: artboard.name,\n        animations: [],\n        stateMachines: [],\n      };\n      for (let j = 0; j < artboard.animationCount(); j++) {\n        const animation = artboard.animationByIndex(j);\n        artboardContents.animations.push(animation.name);\n      }\n      for (let k = 0; k < artboard.stateMachineCount(); k++) {\n        const stateMachine = artboard.stateMachineByIndex(k);\n        const name = stateMachine.name;\n        const instance = new this.runtime.StateMachineInstance(\n          stateMachine,\n          artboard,\n        );\n        const inputContents: StateMachineInputContents[] = [];\n        for (let l = 0; l < instance.inputCount(); l++) {\n          const input = instance.input(l);\n          inputContents.push({ name: input.name, type: input.type });\n        }\n        artboardContents.stateMachines.push({\n          name: name,\n          inputs: inputContents,\n        });\n      }\n      riveContents.artboards.push(artboardContents);\n    }\n    return riveContents;\n  }\n\n  /**\n   * Getter / Setter for the volume of the artboard\n   */\n  public get volume(): number {\n    if (this.artboard && this.artboard.volume !== this._volume) {\n      this._volume = this.artboard.volume;\n    }\n    return this._volume;\n  }\n\n  public set volume(value: number) {\n    this._volume = value;\n    if (this.artboard) {\n      this.artboard.volume = value * audioManager.systemVolume;\n    }\n  }\n\n  /**\n   * The width of the artboard.\n   *\n   * This will return 0 if the artboard is not loaded yet and a custom\n   * width has not been set.\n   *\n   * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n   * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard width is\n   * automatically set.\n   */\n  public get artboardWidth(): number {\n    if (this.artboard) {\n      return this.artboard.width;\n    }\n    return this._artboardWidth ?? 0;\n  }\n\n  public set artboardWidth(value: number) {\n    this._artboardWidth = value;\n    if (this.artboard) {\n      this.artboard.width = value;\n    }\n  }\n\n  /**\n   * The height of the artboard.\n   *\n   * This will return 0 if the artboard is not loaded yet and a custom\n   * height has not been set.\n   *\n   * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n   * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard height is\n   * automatically set.\n   */\n  public get artboardHeight(): number {\n    if (this.artboard) {\n      return this.artboard.height;\n    }\n    return this._artboardHeight ?? 0;\n  }\n\n  public set artboardHeight(value: number) {\n    this._artboardHeight = value;\n\n    if (this.artboard) {\n      this.artboard.height = value;\n    }\n  }\n\n  /**\n   * Reset the artboard size to its original values.\n   */\n  public resetArtboardSize() {\n    if (this.artboard) {\n      this.artboard.resetArtboardSize();\n      this._artboardWidth = this.artboard.width;\n      this._artboardHeight = this.artboard.height;\n    } else {\n      // If the artboard isn't loaded, we need to reset the custom width and height\n      this._artboardWidth = undefined;\n      this._artboardHeight = undefined;\n    }\n  }\n\n  /**\n   * The device pixel ratio used in rendering and canvas/artboard resizing.\n   *\n   * This value will be overidden by the device pixel ratio used in\n   * {@link resizeDrawingSurfaceToCanvas}. If you use that method, do not set this value.\n   */\n  public get devicePixelRatioUsed(): number {\n    return this._devicePixelRatioUsed;\n  }\n\n  public set devicePixelRatioUsed(value: number) {\n    this._devicePixelRatioUsed = value;\n  }\n\n  /**\n   * Initialize the data context with the view model instance.\n   */\n  public bindViewModelInstance(viewModelInstance: ViewModelInstance | null) {\n    if (this.artboard && !this.destroyed) {\n      if (viewModelInstance && viewModelInstance.runtimeInstance) {\n        viewModelInstance.internalIncrementReferenceCount();\n        this._viewModelInstance?.cleanup();\n        this._viewModelInstance = viewModelInstance;\n        if (this.animator.stateMachines.length > 0) {\n          this.animator.stateMachines.forEach((stateMachine) =>\n            stateMachine.bindViewModelInstance(viewModelInstance),\n          );\n        } else {\n          this.artboard.bindViewModelInstance(\n            viewModelInstance.runtimeInstance,\n          );\n        }\n      }\n    }\n  }\n\n  public get viewModelInstance(): ViewModelInstance | null {\n    return this._viewModelInstance;\n  }\n\n  public viewModelByIndex(index: number): ViewModel | null {\n    const viewModel = this.file.viewModelByIndex(index);\n    if (viewModel !== null) {\n      return new ViewModel(viewModel);\n    }\n    return null;\n  }\n\n  public viewModelByName(name: string): ViewModel | null {\n    return this.riveFile?.viewModelByName(name);\n  }\n\n  public enums(): DataEnum[] {\n    if (this._dataEnums === null) {\n      const dataEnums = this.file.enums();\n      this._dataEnums = dataEnums.map((dataEnum) => {\n        return new DataEnum(dataEnum);\n      });\n    }\n    return this._dataEnums;\n  }\n\n  public defaultViewModel(): ViewModel | null {\n    if (this.artboard) {\n      const viewModel = this.file.defaultArtboardViewModel(this.artboard);\n      if (viewModel) {\n        return new ViewModel(viewModel);\n      }\n    }\n    return null;\n  }\n\n  /**\n   * @deprecated This function is deprecated. For better stability and memory management\n   * use `getBindableArtboard()` instead.\n   * @param {string} name - The name of the artboard.\n   * @returns {Artboard} The artboard to bind to.\n   */\n  public getArtboard(name: string): Artboard | null {\n    return this.riveFile?.getArtboard(name) ?? null;\n  }\n\n  public getBindableArtboard(name: string): BindableArtboard | null {\n    return this.riveFile?.getBindableArtboard(name) ?? null;\n  }\n\n  public getDefaultBindableArtboard(): BindableArtboard | null {\n    return this.riveFile?.getDefaultBindableArtboard() ?? null;\n  }\n}\n\nexport class ViewModel {\n  private _viewModel: rc.ViewModel;\n\n  constructor(viewModel: rc.ViewModel) {\n    this._viewModel = viewModel;\n  }\n\n  public get instanceCount(): number {\n    return this._viewModel.instanceCount;\n  }\n\n  public get name(): string {\n    return this._viewModel.name;\n  }\n\n  public instanceByIndex(index: number): ViewModelInstance | null {\n    const instance = this._viewModel.instanceByIndex(index);\n    if (instance !== null) {\n      const viewModelInstance = new ViewModelInstance(instance, null);\n      createFinalization(viewModelInstance, instance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public instanceByName(name: string): ViewModelInstance | null {\n    const instance = this._viewModel.instanceByName(name);\n    if (instance !== null) {\n      const viewModelInstance = new ViewModelInstance(instance, null);\n      createFinalization(viewModelInstance, instance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public defaultInstance(): ViewModelInstance | null {\n    const runtimeInstance = this._viewModel.defaultInstance();\n    if (runtimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(runtimeInstance, null);\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public instance(): ViewModelInstance | null {\n    const runtimeInstance = this._viewModel.instance();\n    if (runtimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(runtimeInstance, null);\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public get properties(): rc.ViewModelProperty[] {\n    return this._viewModel.getProperties();\n  }\n\n  public get instanceNames(): string[] {\n    return this._viewModel.getInstanceNames();\n  }\n}\n\nexport class DataEnum {\n  private _dataEnum: rc.DataEnum;\n\n  constructor(dataEnum: rc.DataEnum) {\n    this._dataEnum = dataEnum;\n  }\n\n  public get name(): string {\n    return this._dataEnum.name;\n  }\n\n  public get values(): string[] {\n    return this._dataEnum.values;\n  }\n}\n\nenum PropertyType {\n  Number = \"number\",\n  String = \"string\",\n  Boolean = \"boolean\",\n  Color = \"color\",\n  Trigger = \"trigger\",\n  Enum = \"enum\",\n  List = \"list\",\n  Image = \"image\",\n  Artboard = \"artboard\",\n}\n\nexport class ViewModelInstance {\n  private _runtimeInstance: rc.ViewModelInstance | null;\n\n  private _parents: ViewModelInstance[] = [];\n\n  private _children: ViewModelInstance[] = [];\n\n  private _viewModelInstances: Map<string, ViewModelInstance> = new Map();\n\n  private _propertiesWithCallbacks: ViewModelInstanceValue[] = [];\n\n  private _referenceCount = 0;\n\n  public selfUnref: boolean = false;\n\n  constructor(\n    runtimeInstance: rc.ViewModelInstance,\n    parent: ViewModelInstance | null,\n  ) {\n    this._runtimeInstance = runtimeInstance;\n    if (parent !== null) {\n      this._parents.push(parent);\n    }\n  }\n\n  public get runtimeInstance(): rc.ViewModelInstance | null {\n    return this._runtimeInstance;\n  }\n\n  public get nativeInstance(): rc.ViewModelInstance | null {\n    return this._runtimeInstance;\n  }\n\n  public handleCallbacks() {\n    if (this._propertiesWithCallbacks.length !== 0) {\n      this._propertiesWithCallbacks.forEach((property) => {\n        property.handleCallbacks();\n      });\n      this._propertiesWithCallbacks.forEach((property) => {\n        property.clearChanges();\n      });\n    }\n    this._children.forEach((child) => child.handleCallbacks());\n  }\n\n  public addParent(parent: ViewModelInstance) {\n    if (!this._parents.includes(parent)) {\n      this._parents.push(parent);\n      if (\n        this._propertiesWithCallbacks.length > 0 ||\n        this._children.length > 0\n      ) {\n        parent.addToViewModelCallbacks(this);\n      }\n    }\n  }\n\n  public removeParent(parent: ViewModelInstance) {\n    const index = this._parents.indexOf(parent);\n    if (index !== -1) {\n      const parent = this._parents[index];\n      parent.removeFromViewModelCallbacks(this);\n      this._parents.splice(index, 1);\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public addToPropertyCallbacks(property: ViewModelInstanceValue) {\n    if (!this._propertiesWithCallbacks.includes(property)) {\n      this._propertiesWithCallbacks.push(property);\n      if (this._propertiesWithCallbacks.length > 0) {\n        this._parents.forEach((parent) => {\n          parent.addToViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public removeFromPropertyCallbacks(property: ViewModelInstanceValue) {\n    if (this._propertiesWithCallbacks.includes(property)) {\n      this._propertiesWithCallbacks = this._propertiesWithCallbacks.filter(\n        (prop) => prop !== property,\n      );\n      if (\n        this._children.length === 0 &&\n        this._propertiesWithCallbacks.length === 0\n      ) {\n        this._parents.forEach((parent) => {\n          parent.removeFromViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public addToViewModelCallbacks(instance: ViewModelInstance) {\n    if (!this._children.includes(instance)) {\n      this._children.push(instance);\n      this._parents.forEach((parent) => {\n        parent.addToViewModelCallbacks(this);\n      });\n    }\n  }\n\n  /*\n   * method for internal use, it shouldn't be called externally\n   */\n  public removeFromViewModelCallbacks(instance: ViewModelInstance) {\n    if (this._children.includes(instance)) {\n      this._children = this._children.filter((child) => child !== instance);\n      if (\n        this._children.length === 0 &&\n        this._propertiesWithCallbacks.length === 0\n      ) {\n        this._parents.forEach((parent) => {\n          parent.removeFromViewModelCallbacks(this);\n        });\n      }\n    }\n  }\n\n  private clearCallbacks() {\n    this._propertiesWithCallbacks.forEach((property) => {\n      property.clearCallbacks();\n    });\n  }\n\n  private propertyFromPath(\n    path: string,\n    type: PropertyType,\n  ): ViewModelInstanceValue | null {\n    const pathSegments = path.split(\"/\");\n    return this.propertyFromPathSegments(pathSegments, 0, type);\n  }\n\n  private viewModelFromPathSegments(\n    pathSegments: string[],\n    index: number,\n  ): ViewModelInstance | null {\n    const viewModelInstance = this.internalViewModelInstance(\n      pathSegments[index],\n    );\n    if (viewModelInstance !== null) {\n      if (index == pathSegments.length - 1) {\n        return viewModelInstance;\n      } else {\n        return viewModelInstance.viewModelFromPathSegments(\n          pathSegments,\n          index++,\n        );\n      }\n    }\n    return null;\n  }\n\n  private propertyFromPathSegments(\n    pathSegments: string[],\n    index: number,\n    type: PropertyType,\n  ): ViewModelInstanceValue | null {\n    if (index < pathSegments.length - 1) {\n      const viewModelInstance = this.internalViewModelInstance(\n        pathSegments[index],\n      );\n      if (viewModelInstance !== null) {\n        return viewModelInstance.propertyFromPathSegments(\n          pathSegments,\n          index + 1,\n          type,\n        );\n      } else {\n        return null;\n      }\n    }\n    let instance: rc.ViewModelInstanceValue | null = null;\n    switch (type) {\n      case PropertyType.Number:\n        instance = this._runtimeInstance?.number(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceNumber(\n            instance as rc.ViewModelInstanceNumber,\n            this,\n          );\n        }\n        break;\n      case PropertyType.String:\n        instance = this._runtimeInstance?.string(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceString(\n            instance as rc.ViewModelInstanceString,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Boolean:\n        instance = this._runtimeInstance?.boolean(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceBoolean(\n            instance as rc.ViewModelInstanceBoolean,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Color:\n        instance = this._runtimeInstance?.color(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceColor(\n            instance as rc.ViewModelInstanceColor,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Trigger:\n        instance = this._runtimeInstance?.trigger(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceTrigger(\n            instance as rc.ViewModelInstanceTrigger,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Enum:\n        instance = this._runtimeInstance?.enum(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceEnum(\n            instance as rc.ViewModelInstanceEnum,\n            this,\n          );\n        }\n        break;\n      case PropertyType.List:\n        instance = this._runtimeInstance?.list(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceList(\n            instance as rc.ViewModelInstanceList,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Image:\n        instance = this._runtimeInstance?.image(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceAssetImage(\n            instance as rc.ViewModelInstanceAssetImage,\n            this,\n          );\n        }\n        break;\n      case PropertyType.Artboard:\n        instance = this._runtimeInstance?.artboard(pathSegments[index]) ?? null;\n        if (instance !== null) {\n          return new ViewModelInstanceArtboard(\n            instance as rc.ViewModelInstanceArtboard,\n            this,\n          );\n        }\n        break;\n    }\n    return null;\n  }\n\n  private internalViewModelInstance(name: string): ViewModelInstance | null {\n    if (this._viewModelInstances.has(name)) {\n      return this._viewModelInstances.get(name)!;\n    }\n    const viewModelRuntimeInstance = this._runtimeInstance?.viewModel(name);\n    if (viewModelRuntimeInstance !== null) {\n      const viewModelInstance = new ViewModelInstance(\n        viewModelRuntimeInstance!,\n        this,\n      );\n      createFinalization(viewModelInstance, viewModelRuntimeInstance);\n      viewModelInstance.internalIncrementReferenceCount();\n      this._viewModelInstances.set(name, viewModelInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  /**\n   * method to access a property instance of type number belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the number property\n   */\n  public number(path: string): ViewModelInstanceNumber | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Number,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceNumber;\n  }\n\n  /**\n   * method to access a property instance of type string belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the string property\n   */\n  public string(path: string): ViewModelInstanceString | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.String,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceString | null;\n  }\n\n  /**\n   * method to access a property instance of type boolean belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the boolean property\n   */\n  public boolean(path: string): ViewModelInstanceBoolean | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Boolean,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceBoolean | null;\n  }\n\n  /**\n   * method to access a property instance of type color belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the ttrigger property\n   */\n  public color(path: string): ViewModelInstanceColor | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Color,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceColor | null;\n  }\n\n  /**\n   * method to access a property instance of type trigger belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the trigger property\n   */\n  public trigger(path: string): ViewModelInstanceTrigger | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Trigger,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceTrigger | null;\n  }\n\n  /**\n   * method to access a property instance of type enum belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the enum property\n   */\n  public enum(path: string): ViewModelInstanceEnum | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Enum,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceEnum | null;\n  }\n\n  /**\n   * method to access a property instance of type list belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the list property\n   */\n  public list(path: string): ViewModelInstanceList | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.List,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceList | null;\n  }\n\n  /**\n   * method to access a view model property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the image property\n   */\n  public image(path: string): ViewModelInstanceAssetImage | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Image,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceAssetImage | null;\n  }\n\n  /**\n   * method to access an artboard property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the image property\n   */\n  public artboard(path: string): ViewModelInstanceArtboard | null {\n    const viewmodelInstanceValue = this.propertyFromPath(\n      path,\n      PropertyType.Artboard,\n    );\n    return viewmodelInstanceValue as ViewModelInstanceArtboard | null;\n  }\n\n  /**\n   * method to access a view model property instance belonging\n   * to the view model instance or to a nested view model instance\n   * @param path - path to the view model property\n   */\n  public viewModel(path: string): ViewModelInstance | null {\n    const pathSegments = path.split(\"/\");\n    const parentViewModelInstance =\n      pathSegments.length > 1\n        ? this.viewModelFromPathSegments(\n            pathSegments.slice(0, pathSegments.length - 1),\n            0,\n          )\n        : this;\n    if (parentViewModelInstance != null) {\n      return parentViewModelInstance.internalViewModelInstance(\n        pathSegments[pathSegments.length - 1],\n      );\n    }\n    return null;\n  }\n\n  public internalReplaceViewModel(\n    name: string,\n    value: ViewModelInstance,\n  ): boolean {\n    if (value.runtimeInstance !== null) {\n      const result =\n        this._runtimeInstance?.replaceViewModel(name, value.runtimeInstance!) ||\n        false;\n      if (result) {\n        value.internalIncrementReferenceCount();\n        const oldInstance = this.internalViewModelInstance(name);\n        if (oldInstance !== null) {\n          oldInstance.removeParent(this);\n          if (this._children.includes(oldInstance)) {\n            this._children = this._children.filter(\n              (child) => child !== oldInstance,\n            );\n          }\n          oldInstance.cleanup();\n        }\n        this._viewModelInstances.set(name, value);\n        value.addParent(this);\n      }\n      return result;\n    }\n    return false;\n  }\n\n  /**\n   * method to replace a view model property with another view model value\n   * @param path - path to the view model property\n   * @param value - view model that will replace the original\n   */\n  public replaceViewModel(path: string, value: ViewModelInstance): boolean {\n    const pathSegments = path.split(\"/\");\n    const viewModelInstance =\n      pathSegments.length > 1\n        ? this.viewModelFromPathSegments(\n            pathSegments.slice(0, pathSegments.length - 1),\n            0,\n          )\n        : this;\n    return (\n      viewModelInstance?.internalReplaceViewModel(\n        pathSegments[pathSegments.length - 1],\n        value,\n      ) ?? false\n    );\n  }\n\n  /*\n   * method to add one to the reference counter of the instance.\n   * Use if the file owning the reference is destroyed but the instance needs to stay around\n   */\n  public incrementReferenceCount() {\n    this._referenceCount++;\n    this._runtimeInstance?.incrementReferenceCount();\n  }\n\n  /*\n   * method to subtract one to the reference counter of the instance.\n   * Use if incrementReferenceCount has been called\n   */\n  public decrementReferenceCount() {\n    this._referenceCount--;\n    this._runtimeInstance?.decrementReferenceCount();\n  }\n\n  public get properties(): rc.ViewModelProperty[] {\n    return (\n      this._runtimeInstance?.getProperties().map((prop) => ({ ...prop })) || []\n    );\n  }\n\n  public internalIncrementReferenceCount() {\n    this._referenceCount++;\n  }\n\n  public cleanup() {\n    this._referenceCount--;\n    if (this._referenceCount <= 0) {\n      if (this.selfUnref) {\n        this._runtimeInstance?.unref();\n      }\n      this._runtimeInstance = null;\n      this.clearCallbacks();\n      this._propertiesWithCallbacks = [];\n      this._viewModelInstances.forEach((value) => {\n        value.cleanup();\n      });\n      this._viewModelInstances.clear();\n      const children = [...this._children];\n      this._children.length = 0;\n      const parents = [...this._parents];\n      this._parents.length = 0;\n      children.forEach((child) => {\n        child.removeParent(this);\n      });\n      parents.forEach((parent) => {\n        parent.removeFromViewModelCallbacks(this);\n      });\n    }\n  }\n}\n\nexport class ViewModelInstanceValue {\n  protected _parentViewModel: ViewModelInstance;\n  protected callbacks: EventCallback[] = [];\n  protected _viewModelInstanceValue: rc.ViewModelInstanceValue;\n  constructor(instance: rc.ViewModelInstanceValue, parent: ViewModelInstance) {\n    this._viewModelInstanceValue = instance;\n    this._parentViewModel = parent;\n  }\n\n  public on(callback: EventCallback) {\n    // Since we don't clean the changed flag for properties that don't have listeners,\n    // we clean it the first time we add a listener to it\n    if (this.callbacks.length === 0) {\n      this._viewModelInstanceValue.clearChanges();\n    }\n    if (!this.callbacks.includes(callback)) {\n      this.callbacks.push(callback);\n      this._parentViewModel.addToPropertyCallbacks(this);\n    }\n  }\n  public off(callback?: EventCallback) {\n    if (!callback) {\n      this.callbacks.length = 0;\n    } else {\n      this.callbacks = this.callbacks.filter((cb) => cb !== callback);\n    }\n    if (this.callbacks.length === 0) {\n      this._parentViewModel.removeFromPropertyCallbacks(this);\n    }\n  }\n  public internalHandleCallback(callback: Function) {}\n\n  public handleCallbacks() {\n    if (this._viewModelInstanceValue.hasChanged) {\n      this.callbacks.forEach((callback) => {\n        this.internalHandleCallback(callback);\n      });\n    }\n  }\n\n  public clearChanges() {\n    this._viewModelInstanceValue.clearChanges();\n  }\n\n  public clearCallbacks() {\n    this.callbacks.length = 0;\n  }\n\n  public get name() {\n    return this._viewModelInstanceValue.name;\n  }\n}\n\nexport class ViewModelInstanceString extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceString, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): string {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceString).value;\n  }\n\n  public set value(val: string) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceString).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceNumber extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceNumber, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceNumber).value;\n  }\n\n  public set value(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceNumber).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceBoolean extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceBoolean,\n    parent: ViewModelInstance,\n  ) {\n    super(instance, parent);\n  }\n\n  public get value(): boolean {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceBoolean).value;\n  }\n\n  public set value(val: boolean) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceBoolean).value = val;\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceTrigger extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceTrigger,\n    parent: ViewModelInstance,\n  ) {\n    super(instance, parent);\n  }\n\n  public trigger(): void {\n    return (\n      this._viewModelInstanceValue as rc.ViewModelInstanceTrigger\n    ).trigger();\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceEnum extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceEnum, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): string {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).value;\n  }\n\n  public set value(val: string) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).value = val;\n  }\n\n  public set valueIndex(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).valueIndex = val;\n  }\n\n  public get valueIndex(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum)\n      .valueIndex;\n  }\n\n  public get values(): string[] {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceEnum).values;\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceList extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceList, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get length(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceList).size;\n  }\n\n  public addInstance(instance: ViewModelInstance) {\n    if (instance.runtimeInstance != null) {\n      (this._viewModelInstanceValue as rc.ViewModelInstanceList).addInstance(\n        instance.runtimeInstance!,\n      );\n      instance.addParent(this._parentViewModel);\n    }\n  }\n\n  public addInstanceAt(instance: ViewModelInstance, index: number): boolean {\n    if (instance.runtimeInstance != null) {\n      if (\n        (\n          this._viewModelInstanceValue as rc.ViewModelInstanceList\n        ).addInstanceAt(instance.runtimeInstance!, index)\n      ) {\n        instance.addParent(this._parentViewModel);\n        return true;\n      }\n    }\n    return false;\n  }\n\n  public removeInstance(instance: ViewModelInstance) {\n    if (instance.runtimeInstance != null) {\n      (this._viewModelInstanceValue as rc.ViewModelInstanceList).removeInstance(\n        instance.runtimeInstance!,\n      );\n      instance.removeParent(this._parentViewModel);\n    }\n  }\n\n  public removeInstanceAt(index: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceList).removeInstanceAt(\n      index,\n    );\n  }\n\n  public instanceAt(index: number): ViewModelInstance | null {\n    const runtimeInstance = (\n      this._viewModelInstanceValue as rc.ViewModelInstanceList\n    ).instanceAt(index);\n    if (runtimeInstance != null) {\n      const viewModelInstance = new ViewModelInstance(\n        runtimeInstance,\n        this._parentViewModel,\n      );\n      createFinalization(viewModelInstance, runtimeInstance);\n      return viewModelInstance;\n    }\n    return null;\n  }\n\n  public swap(a: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceList).swap(a, b);\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceColor extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceColor, parent: ViewModelInstance) {\n    super(instance, parent);\n  }\n\n  public get value(): number {\n    return (this._viewModelInstanceValue as rc.ViewModelInstanceColor).value;\n  }\n\n  public set value(val: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).value = val;\n  }\n\n  public rgb(r: number, g: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).rgb(r, g, b);\n  }\n\n  public rgba(r: number, g: number, b: number, a: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).argb(\n      a,\n      r,\n      g,\n      b,\n    );\n  }\n\n  public argb(a: number, r: number, g: number, b: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).argb(\n      a,\n      r,\n      g,\n      b,\n    );\n  }\n\n  // Value 0 to 255\n  public alpha(a: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).alpha(a);\n  }\n\n  // Value 0 to 1\n  public opacity(o: number) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceColor).alpha(\n      Math.round(Math.max(0, Math.min(1, o)) * 255),\n    );\n  }\n  public internalHandleCallback(callback: Function) {\n    callback(this.value);\n  }\n}\n\nexport class ViewModelInstanceAssetImage extends ViewModelInstanceValue {\n  constructor(\n    instance: rc.ViewModelInstanceAssetImage,\n    root: ViewModelInstance,\n  ) {\n    super(instance, root);\n  }\n\n  public set value(image: rc.Image | null) {\n    (this._viewModelInstanceValue as rc.ViewModelInstanceAssetImage).value(\n      image?.nativeImage ?? null,\n    );\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\nexport class ViewModelInstanceArtboard extends ViewModelInstanceValue {\n  constructor(instance: rc.ViewModelInstanceArtboard, root: ViewModelInstance) {\n    super(instance, root);\n  }\n\n  public set value(artboard: BaseArtboard | null) {\n    let bindableArtboard: BindableArtboard;\n    if (artboard.isBindableArtboard) {\n      bindableArtboard = artboard as BindableArtboard;\n    } else {\n      bindableArtboard = (\n        artboard as Artboard\n      ).file.internalBindableArtboardFromArtboard(\n        (artboard as Artboard).nativeArtboard,\n      );\n    }\n    (this._viewModelInstanceValue as rc.ViewModelInstanceArtboard).value(\n      bindableArtboard?.nativeArtboard ?? null,\n    );\n    if (bindableArtboard?.nativeViewModel) {\n      (\n        this._viewModelInstanceValue as rc.ViewModelInstanceArtboard\n      ).viewModelInstance(bindableArtboard?.nativeViewModel ?? null);\n    }\n  }\n\n  public internalHandleCallback(callback: Function) {\n    callback();\n  }\n}\n\n/**\n * Contents of a state machine input\n */\ninterface StateMachineInputContents {\n  name: string;\n  type: StateMachineInputType;\n  initialValue?: boolean | number;\n}\n\n/**\n * Contents of a state machine\n */\ninterface StateMachineContents {\n  name: string;\n  inputs: StateMachineInputContents[];\n}\n\n/**\n * Contents of an artboard\n */\ninterface ArtboardContents {\n  animations: string[];\n  stateMachines: StateMachineContents[];\n  name: string;\n}\n\n/**\n * contents of a Rive file\n */\ninterface RiveFileContents {\n  artboards?: ArtboardContents[];\n}\n\n// Loads Rive data from a URI via fetch.\nconst loadRiveFile = async (src: string): Promise<ArrayBuffer> => {\n  const req = new Request(src);\n  const res = await fetch(req);\n  const buffer = await res.arrayBuffer();\n  return buffer;\n};\n\n// #endregion\n\n// #region utility functions\n\n/*\n * Utility function to ensure an object is a string array\n */\nconst mapToStringArray = (obj?: string[] | string | undefined): string[] => {\n  if (typeof obj === \"string\") {\n    return [obj];\n  } else if (obj instanceof Array) {\n    return obj;\n  }\n  // If obj is undefined, return empty array\n  return [];\n};\n\n// #endregion\n\n// #region testing utilities\n\n// Exports to only be used for tests\nexport const Testing = {\n  EventManager: EventManager,\n  TaskQueueManager: TaskQueueManager,\n};\n\n// #endregion\n\n// #region asset loaders\n\n/**\n * Decodes bytes into an audio asset.\n *\n * Be sure to call `.unref()` on the audio once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeAudio = async (bytes: Uint8Array): Promise<rc.Audio> => {\n  const decodedPromise = new Promise<rc.Audio>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeAudio(bytes, resolve);\n    }),\n  );\n  const audio: rc.Audio = await decodedPromise;\n  const audioWrapper = new AudioWrapper(audio);\n  finalizationRegistry.register(audioWrapper, audio);\n  return audioWrapper;\n};\n\n/**\n * Decodes bytes into an image.\n *\n * Be sure to call `.unref()` on the image once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeImage = async (bytes: Uint8Array): Promise<rc.Image> => {\n  const decodedPromise = new Promise<rc.Image>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeImage(bytes, resolve);\n    }),\n  );\n  const image: rc.Image = await decodedPromise;\n  const imageWrapper = new ImageWrapper(image);\n  finalizationRegistry.register(imageWrapper, image);\n  return imageWrapper;\n};\n\n/**\n * Decodes bytes into a font.\n *\n * Be sure to call `.unref()` on the font once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nexport const decodeFont = async (bytes: Uint8Array): Promise<rc.Font> => {\n  const decodedPromise = new Promise<rc.Font>((resolve) =>\n    RuntimeLoader.getInstance((rive: rc.RiveCanvas): void => {\n      rive.decodeFont(bytes, resolve);\n    }),\n  );\n  const font: rc.Font = await decodedPromise;\n  const fontWrapper = new FontWrapper(font);\n  finalizationRegistry.register(fontWrapper, font);\n  return fontWrapper;\n};\n\n// #endregion\n"]}