Current File : /data/web/virtuals/215191/virtual/www/domains/jogosde2.com/ruffle/ruffle.js.map |
{"version":3,"file":"ruffle.js","mappings":"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","sources":["webpack://ruffle-selfhosted/webpack/bootstrap","webpack://ruffle-selfhosted/webpack/runtime/global","webpack://ruffle-selfhosted/webpack/runtime/hasOwnProperty shorthand","webpack://ruffle-selfhosted/webpack/runtime/publicPath","webpack://ruffle-selfhosted/webpack/runtime/jsonp chunk loading","webpack://ruffle-selfhosted/../core/pkg/ruffle_web.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-imports.js","webpack://ruffle-selfhosted/../core/pkg/js-polyfills.js","webpack://ruffle-selfhosted/../core/pkg/public-path.js","webpack://ruffle-selfhosted/../core/pkg/load-ruffle.js","webpack://ruffle-selfhosted/../core/pkg/plugin-polyfill.js","webpack://ruffle-selfhosted/../core/pkg/shadow-template.js","webpack://ruffle-selfhosted/../core/pkg/register-element.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-player.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-embed.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-object.js","webpack://ruffle-selfhosted/../core/pkg/polyfills.js","webpack://ruffle-selfhosted/../core/pkg/version.js","webpack://ruffle-selfhosted/../core/pkg/version-range.js","webpack://ruffle-selfhosted/../core/pkg/public-api.js","webpack://ruffle-selfhosted/./js/ruffle.js","webpack://ruffle-selfhosted/../core/pkg/source-api.js"],"sourcesContent":["// 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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","import { copyToAudioBuffer, getAudioOutputTimestamp } from './ruffle-imports.js';\n\nconst lAudioContext = (typeof AudioContext !== 'undefined' ? AudioContext : (typeof webkitAudioContext !== 'undefined' ? webkitAudioContext : undefined));\nlet wasm;\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachegetFloat64Memory0 = null;\nfunction getFloat64Memory0() {\n if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachegetFloat64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_38(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_41(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_44(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_47(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_50(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_53(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4d5100110060c(arg0, arg1, arg2);\n}\n\nfunction __wbg_adapter_56(arg0, arg1) {\n wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hdbf86f5659a15fa5(arg0, arg1);\n}\n\nfunction __wbg_adapter_59(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_62(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hdb118a22b33e4d3b(arg0, arg1, addHeapObject(arg2));\n}\n\nlet cachegetFloat32Memory0 = null;\nfunction getFloat32Memory0() {\n if (cachegetFloat32Memory0 === null || cachegetFloat32Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat32Memory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachegetFloat32Memory0;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n return getFloat32Memory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nlet stack_pointer = 32;\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n\nlet cachegetUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachegetUint32Memory0;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4);\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* An opaque handle to a `RuffleInstance` inside the pool.\n*\n* This type is exported to JS, and is used to interact with the library.\n*/\nexport class Ruffle {\n\n static __wrap(ptr) {\n const obj = Object.create(Ruffle.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ruffle_free(ptr);\n }\n /**\n * @param {HTMLElement} parent\n * @param {any} js_player\n * @param {any} config\n */\n constructor(parent, js_player, config) {\n try {\n var ret = wasm.ruffle_new(addHeapObject(parent), addHeapObject(js_player), addBorrowedObject(config));\n return Ruffle.__wrap(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * Stream an arbitrary movie file from (presumably) the Internet.\n *\n * This method should only be called once per player.\n * @param {string} movie_url\n * @param {any} parameters\n */\n stream_from(movie_url, parameters) {\n try {\n var ptr0 = passStringToWasm0(movie_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.ruffle_stream_from(this.ptr, ptr0, len0, addBorrowedObject(parameters));\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * Play an arbitrary movie on this instance.\n *\n * This method should only be called once per player.\n * @param {Uint8Array} swf_data\n * @param {any} parameters\n */\n load_data(swf_data, parameters) {\n try {\n wasm.ruffle_load_data(this.ptr, addHeapObject(swf_data), addBorrowedObject(parameters));\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n */\n play() {\n wasm.ruffle_play(this.ptr);\n }\n /**\n */\n pause() {\n wasm.ruffle_pause(this.ptr);\n }\n /**\n * @returns {boolean}\n */\n is_playing() {\n var ret = wasm.ruffle_is_playing(this.ptr);\n return ret !== 0;\n }\n /**\n * @returns {any}\n */\n prepare_context_menu() {\n var ret = wasm.ruffle_prepare_context_menu(this.ptr);\n return takeObject(ret);\n }\n /**\n * @param {number} index\n */\n run_context_menu_callback(index) {\n wasm.ruffle_run_context_menu_callback(this.ptr, index);\n }\n /**\n */\n clear_custom_menu_items() {\n wasm.ruffle_clear_custom_menu_items(this.ptr);\n }\n /**\n */\n destroy() {\n wasm.ruffle_destroy(this.ptr);\n }\n /**\n * @param {string} name\n * @param {any[]} args\n * @returns {any}\n */\n call_exposed_callback(name, args) {\n var ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ret = wasm.ruffle_call_exposed_callback(this.ptr, ptr0, len0, ptr1, len1);\n return takeObject(ret);\n }\n /**\n * @param {any} observer\n */\n set_trace_observer(observer) {\n wasm.ruffle_set_trace_observer(this.ptr, addHeapObject(observer));\n }\n /**\n * Returns the web AudioContext used by this player.\n * Returns `None` if the audio backend does not use Web Audio.\n * @returns {AudioContext | undefined}\n */\n audio_context() {\n var ret = wasm.ruffle_audio_context(this.ptr);\n return takeObject(ret);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('ruffle_web_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_cb_drop = function(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n var ret = false;\n return ret;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n var ret = typeof(getObject(arg0)) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_json_parse = function(arg0, arg1) {\n var ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = JSON.stringify(obj === undefined ? null : obj);\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isFullscreen_96b85640554e160d = function(arg0) {\n var ret = getObject(arg0).isFullscreen;\n return ret;\n };\n imports.wbg.__wbg_displayUnsupportedMessage_a8f81a8e054e5e91 = function(arg0) {\n getObject(arg0).displayUnsupportedMessage();\n };\n imports.wbg.__wbg_displayRootMovieDownloadFailedMessage_1a5c34096259685a = function(arg0) {\n getObject(arg0).displayRootMovieDownloadFailedMessage();\n };\n imports.wbg.__wbg_displayMessage_c57c20204892da2b = function(arg0, arg1, arg2) {\n getObject(arg0).displayMessage(getStringFromWasm0(arg1, arg2));\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_df6e6ab7a65c4c4d = function(arg0, arg1) {\n var ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_panic_bbc809dd04a12c60 = function(arg0, arg1) {\n getObject(arg0).panic(getObject(arg1));\n };\n imports.wbg.__wbg_copyToAudioBuffer_58f244be94bac1d2 = function(arg0, arg1, arg2, arg3, arg4) {\n copyToAudioBuffer(getObject(arg0), arg1 === 0 ? undefined : getArrayF32FromWasm0(arg1, arg2), arg3 === 0 ? undefined : getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_getAudioOutputTimestamp_a67aa6687740cd15 = function(arg0) {\n var ret = getAudioOutputTimestamp(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_setMetadata_bbaeaee7f48274e6 = function(arg0, arg1) {\n getObject(arg0).setMetadata(takeObject(arg1));\n };\n imports.wbg.__wbg_onCallbackAvailable_3a48fae397926c96 = function(arg0, arg1, arg2) {\n getObject(arg0).onCallbackAvailable(getStringFromWasm0(arg1, arg2));\n };\n imports.wbg.__wbg_onFSCommand_fb2f94653f71796e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).onFSCommand(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = getObject(arg0);\n var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n var ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_693216e109162396 = function() {\n var ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_instanceof_WebGl2RenderingContext_61a66a1af6516586 = function(arg0) {\n var ret = getObject(arg0) instanceof WebGL2RenderingContext;\n return ret;\n };\n imports.wbg.__wbg_bindVertexArray_808c39d3c0f17264 = function(arg0, arg1) {\n getObject(arg0).bindVertexArray(getObject(arg1));\n };\n imports.wbg.__wbg_blitFramebuffer_3b625df19331f21c = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).blitFramebuffer(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 >>> 0, arg10 >>> 0);\n };\n imports.wbg.__wbg_createVertexArray_855d59250230c563 = function(arg0) {\n var ret = getObject(arg0).createVertexArray();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_renderbufferStorageMultisample_bbeb2b87cb14307f = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).renderbufferStorageMultisample(arg1 >>> 0, arg2, arg3 >>> 0, arg4, arg5);\n };\n imports.wbg.__wbg_texImage2D_173d216c50e54701 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_bindFramebuffer_ce3cfcfec4aa02cc = function(arg0, arg1, arg2) {\n getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindRenderbuffer_35f3639b7da4e4c7 = function(arg0, arg1, arg2) {\n getObject(arg0).bindRenderbuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindTexture_f2a0487a487a78d9 = function(arg0, arg1, arg2) {\n getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_createFramebuffer_7fd863d54241be81 = function(arg0) {\n var ret = getObject(arg0).createFramebuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createRenderbuffer_52ebc0325ed6e885 = function(arg0) {\n var ret = getObject(arg0).createRenderbuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createTexture_a46f881a1c96b496 = function(arg0) {\n var ret = getObject(arg0).createTexture();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_deleteFramebuffer_867aba8474910f62 = function(arg0, arg1) {\n getObject(arg0).deleteFramebuffer(getObject(arg1));\n };\n imports.wbg.__wbg_deleteRenderbuffer_eb162fd0beb632da = function(arg0, arg1) {\n getObject(arg0).deleteRenderbuffer(getObject(arg1));\n };\n imports.wbg.__wbg_deleteTexture_1affe310edd12b75 = function(arg0, arg1) {\n getObject(arg0).deleteTexture(getObject(arg1));\n };\n imports.wbg.__wbg_framebufferRenderbuffer_7bb033ee5a2eca8c = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).framebufferRenderbuffer(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4));\n };\n imports.wbg.__wbg_framebufferTexture2D_9a77a023fd4aedcc = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).framebufferTexture2D(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5);\n };\n imports.wbg.__wbg_getError_142acae679908a25 = function(arg0) {\n var ret = getObject(arg0).getError();\n return ret;\n };\n imports.wbg.__wbg_getParameter_34e9af6606eb8544 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).getParameter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_texParameteri_e99b48aa90ae569b = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_instanceof_Window_9c4fd26090e1d029 = function(arg0) {\n var ret = getObject(arg0) instanceof Window;\n return ret;\n };\n imports.wbg.__wbg_document_249e9cf340780f93 = function(arg0) {\n var ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_location_cf542a8f458da7b4 = function(arg0) {\n var ret = getObject(arg0).location;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_navigator_fdf3521d0e190a9b = function(arg0) {\n var ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_devicePixelRatio_ea9c0157a379b3ec = function(arg0) {\n var ret = getObject(arg0).devicePixelRatio;\n return ret;\n };\n imports.wbg.__wbg_performance_e029cf47e1c47c09 = function(arg0) {\n var ret = getObject(arg0).performance;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_localStorage_884d77b5cedf820a = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_cancelAnimationFrame_28c6665c9b2a3944 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).cancelAnimationFrame(arg1);\n }, arguments) };\n imports.wbg.__wbg_focus_b5729f61a3280cbc = function() { return handleError(function (arg0) {\n getObject(arg0).focus();\n }, arguments) };\n imports.wbg.__wbg_open_313f5801aab5e2f1 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_requestAnimationFrame_aa3bab1f9557a4da = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).requestAnimationFrame(getObject(arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_fetch_eaee025997e4cd56 = function(arg0, arg1) {\n var ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_destination_c5ce4ac317c9219f = function(arg0) {\n var ret = getObject(arg0).destination;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_sampleRate_cc13fe55474678eb = function(arg0) {\n var ret = getObject(arg0).sampleRate;\n return ret;\n };\n imports.wbg.__wbg_currentTime_ae061c195387b7ac = function(arg0) {\n var ret = getObject(arg0).currentTime;\n return ret;\n };\n imports.wbg.__wbg_new_29e8884899ea6ee2 = function() { return handleError(function () {\n var ret = new lAudioContext();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_suspend_4b5d3b7ee1f4a3ec = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).suspend();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createBuffer_53c7286e081d0b3e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createBuffer(arg1 >>> 0, arg2 >>> 0, arg3);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createBufferSource_8b7fd8bc4222b208 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).createBufferSource();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createChannelMerger_c059636adf34e09d = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).createChannelMerger(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createChannelSplitter_68062f62d4d66ed8 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).createChannelSplitter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createGain_7b6dadac3a6522d6 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).createGain();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createScriptProcessor_bce5438a51faa41d = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createScriptProcessor(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_decodeAudioData_81b31c0703465a21 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).decodeAudioData(getObject(arg1), getObject(arg2), getObject(arg3));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_resume_2c75f8fc1fd26d4b = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).resume();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setvalue_e8ff05630a7ffecb = function(arg0, arg1) {\n getObject(arg0).value = arg1;\n };\n imports.wbg.__wbg_linearRampToValueAtTime_0245aa9e5d87776f = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).linearRampToValueAtTime(arg1, arg2);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setValueAtTime_b4a172acdfc9830f = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).setValueAtTime(arg1, arg2);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_gain_b3536e37256053f5 = function(arg0) {\n var ret = getObject(arg0).gain;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_baseURI_6a10de9fa3003a69 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).baseURI;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_appendChild_6ae001e6d3556190 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_instanceof_SvgsvgElement_28ef05afde3449f9 = function(arg0) {\n var ret = getObject(arg0) instanceof SVGSVGElement;\n return ret;\n };\n imports.wbg.__wbg_createSVGMatrix_43815bd5777c567f = function(arg0) {\n var ret = getObject(arg0).createSVGMatrix();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_setProperty_84c0a22125c731d6 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_protocol_2d293dcd35a07041 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).protocol;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_assign_fc277322e1a88614 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).assign(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_new_3c2bf2a5257369ec = function() { return handleError(function () {\n var ret = new Path2D();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_addPath_cf691ede06f38917 = function(arg0, arg1, arg2) {\n getObject(arg0).addPath(getObject(arg1), getObject(arg2));\n };\n imports.wbg.__wbg_closePath_48f860f5bcbc79f3 = function(arg0) {\n getObject(arg0).closePath();\n };\n imports.wbg.__wbg_lineTo_7fd48462a80ac962 = function(arg0, arg1, arg2) {\n getObject(arg0).lineTo(arg1, arg2);\n };\n imports.wbg.__wbg_moveTo_62ea44f899317925 = function(arg0, arg1, arg2) {\n getObject(arg0).moveTo(arg1, arg2);\n };\n imports.wbg.__wbg_quadraticCurveTo_6f746087da5a242c = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).quadraticCurveTo(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_get_36b7a676e4c8aee9 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg1)[getStringFromWasm0(arg2, arg3)];\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_set_ad2026ce7b489f96 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0)[getStringFromWasm0(arg1, arg2)] = getStringFromWasm0(arg3, arg4);\n }, arguments) };\n imports.wbg.__wbg_delete_9614de882c9a0cf5 = function() { return handleError(function (arg0, arg1, arg2) {\n delete getObject(arg0)[getStringFromWasm0(arg1, arg2)];\n }, arguments) };\n imports.wbg.__wbg_length_914ec377666a1fb8 = function(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_setTransform_4c6870c885e2b89e = function(arg0, arg1) {\n getObject(arg0).setTransform(getObject(arg1));\n };\n imports.wbg.__wbg_offsetX_951495e9516f0aeb = function(arg0) {\n var ret = getObject(arg0).offsetX;\n return ret;\n };\n imports.wbg.__wbg_offsetY_0377a1f53f902a1e = function(arg0) {\n var ret = getObject(arg0).offsetY;\n return ret;\n };\n imports.wbg.__wbg_button_c35922e0098b9cda = function(arg0) {\n var ret = getObject(arg0).button;\n return ret;\n };\n imports.wbg.__wbg_seta_5138c769bc027dee = function(arg0, arg1) {\n getObject(arg0).a = arg1;\n };\n imports.wbg.__wbg_setb_d92c5b9331343d2e = function(arg0, arg1) {\n getObject(arg0).b = arg1;\n };\n imports.wbg.__wbg_setc_c6fbbb68c7ba4693 = function(arg0, arg1) {\n getObject(arg0).c = arg1;\n };\n imports.wbg.__wbg_setd_42dcf42c3ceabc9b = function(arg0, arg1) {\n getObject(arg0).d = arg1;\n };\n imports.wbg.__wbg_sete_49250c2d46b375b3 = function(arg0, arg1) {\n getObject(arg0).e = arg1;\n };\n imports.wbg.__wbg_setf_12cb2512fe19ba3f = function(arg0, arg1) {\n getObject(arg0).f = arg1;\n };\n imports.wbg.__wbg_connect_3a117c24756fdf62 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).connect(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_connect_3a51bca7e31cd323 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).connect(getObject(arg1), arg2 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_connect_52449bed6e387d23 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).connect(getObject(arg1), arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_disconnect_b101656fb34b9fa3 = function() { return handleError(function (arg0) {\n getObject(arg0).disconnect();\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlFormElement_de39c8070c818493 = function(arg0) {\n var ret = getObject(arg0) instanceof HTMLFormElement;\n return ret;\n };\n imports.wbg.__wbg_submit_e668f2e6a4582aa6 = function() { return handleError(function (arg0) {\n getObject(arg0).submit();\n }, arguments) };\n imports.wbg.__wbg_bindVertexArrayOES_bb8a104f35d5cf4f = function(arg0, arg1) {\n getObject(arg0).bindVertexArrayOES(getObject(arg1));\n };\n imports.wbg.__wbg_createVertexArrayOES_51a703442a9d8099 = function(arg0) {\n var ret = getObject(arg0).createVertexArrayOES();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_pointerId_e68d773decdc9224 = function(arg0) {\n var ret = getObject(arg0).pointerId;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Response_8295bf7aacde3233 = function(arg0) {\n var ret = getObject(arg0) instanceof Response;\n return ret;\n };\n imports.wbg.__wbg_ok_e1e8f70fbf7c1fdc = function(arg0) {\n var ret = getObject(arg0).ok;\n return ret;\n };\n imports.wbg.__wbg_statusText_c5b7d9b4bc84d715 = function(arg0, arg1) {\n var ret = getObject(arg1).statusText;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_arrayBuffer_a98df6d58bb5ea26 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).arrayBuffer();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_deltaY_49d792c5901e3fc1 = function(arg0) {\n var ret = getObject(arg0).deltaY;\n return ret;\n };\n imports.wbg.__wbg_deltaMode_7ed5ee895d112617 = function(arg0) {\n var ret = getObject(arg0).deltaMode;\n return ret;\n };\n imports.wbg.__wbg_setbuffer_5aca59a6f26d3307 = function(arg0, arg1) {\n getObject(arg0).buffer = getObject(arg1);\n };\n imports.wbg.__wbg_setloop_710fa1431c2bc494 = function(arg0, arg1) {\n getObject(arg0).loop = arg1 !== 0;\n };\n imports.wbg.__wbg_setloopStart_988c5aad78cc446c = function(arg0, arg1) {\n getObject(arg0).loopStart = arg1;\n };\n imports.wbg.__wbg_setloopEnd_fcc6c08574ca8ae5 = function(arg0, arg1) {\n getObject(arg0).loopEnd = arg1;\n };\n imports.wbg.__wbg_setonended_0efd780b31d16bbf = function(arg0, arg1) {\n getObject(arg0).onended = getObject(arg1);\n };\n imports.wbg.__wbg_start_e92060130d43d928 = function() { return handleError(function (arg0) {\n getObject(arg0).start();\n }, arguments) };\n imports.wbg.__wbg_start_a8d199336331f3a5 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).start(arg1, arg2);\n }, arguments) };\n imports.wbg.__wbg_stop_37842cd5a56a341c = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).stop(arg1);\n }, arguments) };\n imports.wbg.__wbg_outputBuffer_7e7061041aa8a304 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).outputBuffer;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_now_4abbca4ef2aba8d6 = function(arg0) {\n var ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_currentTarget_a3b06d00ff76859b = function(arg0) {\n var ret = getObject(arg0).currentTarget;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_preventDefault_19876bf3a4179b34 = function(arg0) {\n getObject(arg0).preventDefault();\n };\n imports.wbg.__wbg_setsrc_21ed0b40d0ff0413 = function(arg0, arg1, arg2) {\n getObject(arg0).src = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_new_0891fac076d9e6b3 = function() { return handleError(function () {\n var ret = new Image();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_newwithwidthandheight_045e54743ae79290 = function() { return handleError(function (arg0, arg1) {\n var ret = new Image(arg0 >>> 0, arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_data_7db9e348ce1855fa = function(arg0, arg1) {\n var ret = getObject(arg1).data;\n var ptr0 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_key_97a48109ce6890c4 = function(arg0, arg1) {\n var ret = getObject(arg1).key;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_code_e70e2272901f086c = function(arg0, arg1) {\n var ret = getObject(arg1).code;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_newwithstrandinit_a58924208f457f33 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setonaudioprocess_9d6a213da205ae4d = function(arg0, arg1) {\n getObject(arg0).onaudioprocess = getObject(arg1);\n };\n imports.wbg.__wbg_body_0d97f334de622953 = function(arg0) {\n var ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_ba61aad8af6be7f4 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_c951238dc260501e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setid_16518c90432c2f8e = function(arg0, arg1, arg2) {\n getObject(arg0).id = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_clientWidth_405142b36824cd4f = function(arg0) {\n var ret = getObject(arg0).clientWidth;\n return ret;\n };\n imports.wbg.__wbg_clientHeight_645231c9da3480a9 = function(arg0) {\n var ret = getObject(arg0).clientHeight;\n return ret;\n };\n imports.wbg.__wbg_querySelector_6c8f27227fc14315 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).querySelector(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_releasePointerCapture_758b760808d6ce02 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).releasePointerCapture(arg1);\n }, arguments) };\n imports.wbg.__wbg_setAttribute_0b50656f1ccc45bf = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_setAttributeNS_d31649e78e2cf95c = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).setAttributeNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4), getStringFromWasm0(arg5, arg6));\n }, arguments) };\n imports.wbg.__wbg_setPointerCapture_6f31425163cf44a1 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).setPointerCapture(arg1);\n }, arguments) };\n imports.wbg.__wbg_remove_eabff3d9e444a826 = function(arg0) {\n getObject(arg0).remove();\n };\n imports.wbg.__wbg_instanceof_WebGlRenderingContext_5671fd2c102046b1 = function(arg0) {\n var ret = getObject(arg0) instanceof WebGLRenderingContext;\n return ret;\n };\n imports.wbg.__wbg_drawingBufferWidth_0f8ef2b95bb66c81 = function(arg0) {\n var ret = getObject(arg0).drawingBufferWidth;\n return ret;\n };\n imports.wbg.__wbg_drawingBufferHeight_04a3507b6fb21bac = function(arg0) {\n var ret = getObject(arg0).drawingBufferHeight;\n return ret;\n };\n imports.wbg.__wbg_bufferData_9f09145baa3273f9 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).bufferData(arg1 >>> 0, getArrayU8FromWasm0(arg2, arg3), arg4 >>> 0);\n };\n imports.wbg.__wbg_texImage2D_48722cf9f95c8df8 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_uniform1fv_0b5950d4f588ac7e = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).uniform1fv(getObject(arg1), getArrayF32FromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_uniform4fv_8fa4c0052d79aed2 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).uniform4fv(getObject(arg1), getArrayF32FromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_uniformMatrix3fv_c4a15deb8d8fbd61 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).uniformMatrix3fv(getObject(arg1), arg2 !== 0, getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_uniformMatrix4fv_62951f66fbf764cd = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).uniformMatrix4fv(getObject(arg1), arg2 !== 0, getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_activeTexture_790fa161eaf8dcb0 = function(arg0, arg1) {\n getObject(arg0).activeTexture(arg1 >>> 0);\n };\n imports.wbg.__wbg_attachShader_5446231928034874 = function(arg0, arg1, arg2) {\n getObject(arg0).attachShader(getObject(arg1), getObject(arg2));\n };\n imports.wbg.__wbg_bindBuffer_5b0bd39cdc9f3c91 = function(arg0, arg1, arg2) {\n getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindFramebuffer_9490ff183a431d0d = function(arg0, arg1, arg2) {\n getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindRenderbuffer_86495e658e23020f = function(arg0, arg1, arg2) {\n getObject(arg0).bindRenderbuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindTexture_6df7d2262019c813 = function(arg0, arg1, arg2) {\n getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_blendFunc_c91f929b64e24ca6 = function(arg0, arg1, arg2) {\n getObject(arg0).blendFunc(arg1 >>> 0, arg2 >>> 0);\n };\n imports.wbg.__wbg_clear_216e95e64c0ce688 = function(arg0, arg1) {\n getObject(arg0).clear(arg1 >>> 0);\n };\n imports.wbg.__wbg_clearColor_f7316ccd75b2a3b1 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).clearColor(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_colorMask_cc8730de91ea02ce = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).colorMask(arg1 !== 0, arg2 !== 0, arg3 !== 0, arg4 !== 0);\n };\n imports.wbg.__wbg_compileShader_749eb91c541c360c = function(arg0, arg1) {\n getObject(arg0).compileShader(getObject(arg1));\n };\n imports.wbg.__wbg_createBuffer_8ae1735de737ca21 = function(arg0) {\n var ret = getObject(arg0).createBuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createProgram_28f1378728397a46 = function(arg0) {\n var ret = getObject(arg0).createProgram();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createShader_f6da8384be38c095 = function(arg0, arg1) {\n var ret = getObject(arg0).createShader(arg1 >>> 0);\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createTexture_be549d53d11ebf83 = function(arg0) {\n var ret = getObject(arg0).createTexture();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_disable_b2672dfd98db0d2c = function(arg0, arg1) {\n getObject(arg0).disable(arg1 >>> 0);\n };\n imports.wbg.__wbg_disableVertexAttribArray_f5154961c6bbc61f = function(arg0, arg1) {\n getObject(arg0).disableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_drawElements_19a4ea67a2f14d44 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4);\n };\n imports.wbg.__wbg_enable_9c5b69ae0579565d = function(arg0, arg1) {\n getObject(arg0).enable(arg1 >>> 0);\n };\n imports.wbg.__wbg_enableVertexAttribArray_eff1f71734ec0c24 = function(arg0, arg1) {\n getObject(arg0).enableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_getAttribLocation_7321b82ba20f42ed = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n };\n imports.wbg.__wbg_getExtension_29e749f65dd345b5 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getExtension(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getParameter_e02390c31b2aedb9 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).getParameter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getProgramInfoLog_89c655cf7d3deb29 = function(arg0, arg1, arg2) {\n var ret = getObject(arg1).getProgramInfoLog(getObject(arg2));\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_getProgramParameter_97fb617622a1e9c6 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getShaderInfoLog_8fbfc8052cd2a5c2 = function(arg0, arg1, arg2) {\n var ret = getObject(arg1).getShaderInfoLog(getObject(arg2));\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_getUniformLocation_8ef86decd2ceb6a0 = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_linkProgram_b060b6f5c6419695 = function(arg0, arg1) {\n getObject(arg0).linkProgram(getObject(arg1));\n };\n imports.wbg.__wbg_pixelStorei_1e9534b41710bd3f = function(arg0, arg1, arg2) {\n getObject(arg0).pixelStorei(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_shaderSource_e00c8c2b41679a01 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_stencilFunc_eeb2374a49160e1e = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).stencilFunc(arg1 >>> 0, arg2, arg3 >>> 0);\n };\n imports.wbg.__wbg_stencilMask_8383787c8968e634 = function(arg0, arg1) {\n getObject(arg0).stencilMask(arg1 >>> 0);\n };\n imports.wbg.__wbg_stencilOp_d618117604d44e35 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).stencilOp(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0);\n };\n imports.wbg.__wbg_texParameteri_58c0d4e82f062e6f = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_uniform1f_affc2490c2cff524 = function(arg0, arg1, arg2) {\n getObject(arg0).uniform1f(getObject(arg1), arg2);\n };\n imports.wbg.__wbg_uniform1i_584ce89a2fa7078d = function(arg0, arg1, arg2) {\n getObject(arg0).uniform1i(getObject(arg1), arg2);\n };\n imports.wbg.__wbg_useProgram_ad5593b87b2aec4f = function(arg0, arg1) {\n getObject(arg0).useProgram(getObject(arg1));\n };\n imports.wbg.__wbg_vertexAttribPointer_3e272f16a22bb68c = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6);\n };\n imports.wbg.__wbg_viewport_40ac6422fa7e7109 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).viewport(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_debug_3c0b82934d1dd91e = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_9ff84d33a850b1ef = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3b2058a219fa31b9 = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_386a8115a84a780d = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_5fc232d538408d4a = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_style_9290c51fe7cb7783 = function(arg0) {\n var ret = getObject(arg0).style;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbuffersourcesequenceandoptions_689c4999a01e0d8c = function() { return handleError(function (arg0, arg1) {\n var ret = new Blob(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_addEventListener_b334b84e6525699c = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments) };\n imports.wbg.__wbg_addEventListener_502683a26945b1a5 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_addEventListener_b88d8dd107ce2f39 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0);\n }, arguments) };\n imports.wbg.__wbg_removeEventListener_380d0ebdf9cd12ba = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments) };\n imports.wbg.__wbg_removeEventListener_1f30d3e3ef4ee58e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0);\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlCanvasElement_e0e251da2aa0b541 = function(arg0) {\n var ret = getObject(arg0) instanceof HTMLCanvasElement;\n return ret;\n };\n imports.wbg.__wbg_width_5843e31ec081f978 = function(arg0) {\n var ret = getObject(arg0).width;\n return ret;\n };\n imports.wbg.__wbg_setwidth_fd251e9da5abcced = function(arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n };\n imports.wbg.__wbg_height_872c06b1bc666dd9 = function(arg0) {\n var ret = getObject(arg0).height;\n return ret;\n };\n imports.wbg.__wbg_setheight_5b882973e84fa13c = function(arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n };\n imports.wbg.__wbg_getContext_d778ffc8203f64ae = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getContext_4678c25f580222b0 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2), getObject(arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_userAgent_89e0d93ea0bfe354 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).userAgent;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_eea9cd931eb496b7 = function(arg0) {\n var ret = getObject(arg0) instanceof CanvasRenderingContext2D;\n return ret;\n };\n imports.wbg.__wbg_setglobalAlpha_6b6fb9a57a09df9d = function(arg0, arg1) {\n getObject(arg0).globalAlpha = arg1;\n };\n imports.wbg.__wbg_setglobalCompositeOperation_e404daf7e6bb63e4 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).globalCompositeOperation = getStringFromWasm0(arg1, arg2);\n }, arguments) };\n imports.wbg.__wbg_setstrokeStyle_72f1ad8117744d41 = function(arg0, arg1) {\n getObject(arg0).strokeStyle = getObject(arg1);\n };\n imports.wbg.__wbg_setfillStyle_5306396b0368ba08 = function(arg0, arg1) {\n getObject(arg0).fillStyle = getObject(arg1);\n };\n imports.wbg.__wbg_setfilter_fa947e793349a2de = function(arg0, arg1, arg2) {\n getObject(arg0).filter = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setlineWidth_9f25e0ceca65a4d7 = function(arg0, arg1) {\n getObject(arg0).lineWidth = arg1;\n };\n imports.wbg.__wbg_setlineCap_6c7169ac07a6349e = function(arg0, arg1, arg2) {\n getObject(arg0).lineCap = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setlineJoin_d6311997533dcdbf = function(arg0, arg1, arg2) {\n getObject(arg0).lineJoin = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setmiterLimit_cd181ac4dc64fc1d = function(arg0, arg1) {\n getObject(arg0).miterLimit = arg1;\n };\n imports.wbg.__wbg_drawImage_ff0075aa41bc6155 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_drawImage_b43cf9d292491493 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_fill_a928208ebdb3fecc = function(arg0, arg1) {\n getObject(arg0).fill(getObject(arg1));\n };\n imports.wbg.__wbg_stroke_c19677a93050ef02 = function(arg0, arg1) {\n getObject(arg0).stroke(getObject(arg1));\n };\n imports.wbg.__wbg_createPattern_a737181b452c0941 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createPattern(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getImageData_6e56dc172cd2ed36 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).getImageData(arg1, arg2, arg3, arg4);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_clearRect_dbb56982eff2a250 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).clearRect(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_fillRect_33b210367d4a0063 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).fillRect(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_resetTransform_09cd4a47a1d0fc9c = function() { return handleError(function (arg0) {\n getObject(arg0).resetTransform();\n }, arguments) };\n imports.wbg.__wbg_setTransform_36254c0c8f264eee = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).setTransform(arg1, arg2, arg3, arg4, arg5, arg6);\n }, arguments) };\n imports.wbg.__wbg_randomFillSync_64cc7d048f228ca8 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_getRandomValues_98117e9a7e993920 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments) };\n imports.wbg.__wbg_process_2f24d6544ea7b200 = function(arg0) {\n var ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function(arg0) {\n const val = getObject(arg0);\n var ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg_versions_6164651e75405d4a = function(arg0) {\n var ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_4b517d861cbcb3bc = function(arg0) {\n var ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function(arg0) {\n var ret = typeof(getObject(arg0)) === 'string';\n return ret;\n };\n imports.wbg.__wbg_crypto_98fc271021c7d2ad = function(arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_a2cdb043d2bfe57f = function(arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_modulerequire_3440a4bcf44437db = function() { return handleError(function (arg0, arg1) {\n var ret = module.require(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_67189fe0b323d288 = function(arg0, arg1) {\n var ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_949bbc1147195c4e = function() {\n var ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_7720502039b96d00 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_done_b06cf0578e89ff68 = function(arg0) {\n var ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_e74a542443d92451 = function(arg0) {\n var ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4d0f21c2f823742e = function() { return handleError(function (arg0, arg1) {\n var ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_0b83d3df67ecb33e = function() {\n var ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_eb7ad55f2da67dde = function(arg0) {\n var ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_of_db9e1b8e0a7ed9bc = function(arg0, arg1) {\n var ret = Array.of(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_push_284486ca27c6aa8b = function(arg0, arg1) {\n var ret = getObject(arg0).push(getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_764b6d4119231cb3 = function(arg0) {\n var ret = getObject(arg0) instanceof ArrayBuffer;\n return ret;\n };\n imports.wbg.__wbg_new_3e02a228090b2e72 = function(arg0) {\n var ret = new ArrayBuffer(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_slice_dcc477bca8fe38b1 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).slice(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_values_364ae56c608e6824 = function(arg0) {\n var ret = getObject(arg0).values();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_apply_7cfa6ebf144990a5 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).apply(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_346669c262382ad7 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getTime_10d33f4f2959e5dd = function(arg0) {\n var ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8 = function(arg0) {\n var ret = getObject(arg0).getTimezoneOffset();\n return ret;\n };\n imports.wbg.__wbg_new0_fd3a3a290b25cdac = function() {\n var ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Object_66786225e0dbc8ba = function(arg0) {\n var ret = getObject(arg0) instanceof Object;\n return ret;\n };\n imports.wbg.__wbg_entries_aadf9c3f38203a12 = function(arg0) {\n var ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fromEntries_164ebf0f69983a8e = function() { return handleError(function (arg0) {\n var ret = Object.fromEntries(getObject(arg0));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_is_0f5efc7977a2c50b = function(arg0, arg1) {\n var ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_resolve_d23068002f584f22 = function(arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_2fcac196782070cc = function(arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function(arg0, arg1, arg2) {\n var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_a7ce447f15ff496f = function(arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_969ad0a60e51d320 = function(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_1eb8fc608a0d4cdb = function(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_newwithlength_929232475839a482 = function(arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fill_cd6951964c67ad3a = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).fill(arg1, arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_facf0398a281c85b = function(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_8b658422a224f479 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_byteLength_3e250b41a8915757 = function(arg0) {\n var ret = getObject(arg0).byteLength;\n return ret;\n };\n imports.wbg.__wbg_byteOffset_4204ecb24a6e5df9 = function(arg0) {\n var ret = getObject(arg0).byteOffset;\n return ret;\n };\n imports.wbg.__wbg_ownKeys_f3f1916b5564918f = function() { return handleError(function (arg0) {\n var ret = Reflect.ownKeys(getObject(arg0));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_set_82a4e8a85e31ac42 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_rethrow = function(arg0) {\n throw takeObject(arg0);\n };\n imports.wbg.__wbindgen_memory = function() {\n var ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper458 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_38);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper460 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_41);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper462 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_44);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper464 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_47);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper466 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_50);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper468 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_53);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper470 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_56);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper472 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 18, __wbg_adapter_59);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1865 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 915, __wbg_adapter_62);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","/**\n * Functions imported from JS into Ruffle.\n *\n * @ignore\n * @internal\n */\n/**\n * Copies data into the given audio channel.\n * This is necessary because Safari does not support `AudioBuffer.copyToChannel`.\n *\n * @internal\n */\nexport function copyToAudioBuffer(audioBuffer, leftData, rightData) {\n if (leftData) {\n const dstBuffer = audioBuffer.getChannelData(0);\n dstBuffer.set(leftData);\n }\n if (rightData) {\n const dstBuffer = audioBuffer.getChannelData(1);\n dstBuffer.set(rightData);\n }\n}\n/**\n * Returns `AudioContext.getOutputTimestamp`, defaulting to `context.currentTime` if\n * `getOutputTimestamp` is unavailable. This is necessary because `web-sys` does not yet export\n * `AudioBuffer.copyToChannel`.\n *\n * @internal\n */\nexport function getAudioOutputTimestamp(context) {\n var _a, _b;\n const timestamp = (_a = context.getOutputTimestamp) === null || _a === void 0 ? void 0 : _a.call(context);\n return (_b = timestamp === null || timestamp === void 0 ? void 0 : timestamp.contextTime) !== null && _b !== void 0 ? _b : context.currentTime - context.baseLatency;\n}\n","/**\n * Polyfills the `Array.prototype.reduce` method.\n *\n * Production steps of ECMA-262, Edition 5, 15.4.4.21\n * Reference: https://es5.github.io/#x15.4.4.21\n * https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n *\n */\nfunction polyfillArrayPrototypeReduce() {\n Object.defineProperty(Array.prototype, \"reduce\", {\n value(...args) {\n if (args.length === 0 &&\n window.Prototype &&\n window.Prototype.Version &&\n window.Prototype.Version < \"1.6.1\") {\n // Off-spec: compatibility with prototype.js\n return this.length > 1 ? this : this[0];\n }\n const callback = args[0];\n if (this === null) {\n throw new TypeError(\"Array.prototype.reduce called on null or undefined\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(`${callback} is not a function`);\n }\n const o = Object(this);\n const len = o.length >>> 0;\n let k = 0;\n let value;\n if (args.length >= 2) {\n value = args[1];\n }\n else {\n while (k < len && !(k in o)) {\n k++;\n }\n if (k >= len) {\n throw new TypeError(\"Reduce of empty array with no initial value\");\n }\n value = o[k++];\n }\n while (k < len) {\n if (k in o) {\n value = callback(value, o[k], k, o);\n }\n k++;\n }\n return value;\n },\n });\n}\n/**\n * Polyfills the `Window` function.\n *\n */\nfunction polyfillWindow() {\n if (typeof window.constructor !== \"function\" ||\n !isNativeFunction(window.constructor)) {\n // Don't polyfill `Window` if `window.constructor` has been overridden.\n return;\n }\n // @ts-expect-error: `Function not assignable to { new (): Window; prototype: Window; }`\n window.Window = window.constructor;\n}\n/**\n * Polyfills the `Reflect` object and members.\n *\n * Currently it's a minimal implementation with only `get` and `set`\n * just enough for wasm-bindgen's stdlib to not crash on pages I've found.\n *\n */\nfunction tryPolyfillReflect() {\n if (window.Reflect == undefined) {\n // @ts-expect-error: {} indeed doesn't implement Reflect's interface.\n window.Reflect = {};\n }\n if (typeof Reflect.get !== \"function\") {\n Object.defineProperty(Reflect, \"get\", {\n value(target, key) {\n return target[key];\n },\n });\n }\n if (typeof Reflect.set !== \"function\") {\n Object.defineProperty(Reflect, \"set\", {\n value(target, key, value) {\n target[key] = value;\n },\n });\n }\n}\n/**\n * Determines whether a function is native or not.\n *\n * @param func The function to test.\n * @returns True if the function hasn't been overridden.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFunction(func) {\n const val = typeof Function.prototype.toString === \"function\"\n ? Function.prototype.toString()\n : null;\n if (typeof val === \"string\" && val.indexOf(\"[native code]\") >= 0) {\n return (Function.prototype.toString.call(func).indexOf(\"[native code]\") >= 0);\n }\n return false;\n}\n/**\n * Checks and applies the polyfills to the current window, if needed.\n *\n */\nexport function setPolyfillsOnLoad() {\n if (typeof Array.prototype.reduce !== \"function\" ||\n !isNativeFunction(Array.prototype.reduce)) {\n // Some external libraries override the `Array.prototype.reduce` method in a way\n // that causes Webpack to crash (#1507, #1865), so we need to override it again.\n polyfillArrayPrototypeReduce();\n }\n if (typeof Window !== \"function\" || !isNativeFunction(Window)) {\n // Overriding the native `Window` function causes issues in wasm-bindgen, as a\n // code like `window instanceof Window` will no longer work.\n polyfillWindow();\n }\n // Some pages override native `Reflect` with a new object without some properties,\n // which causes issues for wasm-bindgen's stdlib implementation.\n tryPolyfillReflect();\n}\n","// This must be in global scope because `document.currentScript`\n// works only while the script is initially being processed.\nlet currentScriptURL = \"\";\ntry {\n if (document.currentScript !== undefined &&\n document.currentScript !== null &&\n \"src\" in document.currentScript &&\n document.currentScript.src !== \"\") {\n currentScriptURL = new URL(\".\", document.currentScript.src).href;\n }\n}\ncatch (e) {\n console.warn(\"Unable to get currentScript URL\");\n}\n/**\n * Attempt to discover the public path of the current Ruffle source. This can\n * be used to configure Webpack.\n *\n * A global public path can be specified for all sources using the RufflePlayer\n * config:\n *\n * ```js\n * window.RufflePlayer.config.publicPath = \"/dist/\";\n * ```\n *\n * If no such config is specified, then the parent path of where this script is\n * hosted is assumed, which should be the correct default in most cases.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns The public path for the given source.\n */\nexport function publicPath(config) {\n // Default to the directory where this script resides.\n let path = currentScriptURL;\n if (config !== undefined && config.publicPath !== undefined) {\n path = config.publicPath;\n }\n // Webpack expects the paths to end with a slash.\n if (path !== \"\" && !path.endsWith(\"/\")) {\n path += \"/\";\n }\n return path;\n}\n","/**\n * Conditional ruffle loader\n */\nimport init, { Ruffle } from \"../pkg/ruffle_web\";\nimport { setPolyfillsOnLoad } from \"./js-polyfills\";\nimport { publicPath } from \"./public-path\";\n/**\n * Load ruffle from an automatically-detected location.\n *\n * This function returns a new instance of Ruffle and downloads it every time.\n * You should not use it directly; this module will memoize the resource\n * download.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nasync function fetchRuffle(config) {\n // Apply some pure JavaScript polyfills to prevent conflicts with external\n // libraries, if needed.\n setPolyfillsOnLoad();\n __webpack_public_path__ = publicPath(config);\n await init();\n return Ruffle;\n}\nlet lastLoaded = null;\n/**\n * Obtain an instance of `Ruffle`.\n *\n * This function returns a promise which yields `Ruffle` asynchronously.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nexport function loadRuffle(config) {\n if (lastLoaded == null) {\n lastLoaded = fetchRuffle(config);\n }\n return lastLoaded;\n}\n","/**\n * Replacement object for `MimeTypeArray` that lets us install new fake mime\n * types.\n *\n * Unlike plugins we can at least enumerate mime types in Firefox, so we don't\n * lose data.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.mimeTypes` has an\n * `install` method, you should not use `RuffleMimeTypeArray` as some other\n * plugin emulator is already present.\n */\nclass RuffleMimeTypeArray {\n constructor(native_mimetype_array) {\n this.__mimetypes = [];\n this.__named_mimetypes = {};\n if (native_mimetype_array) {\n for (let i = 0; i < native_mimetype_array.length; i++) {\n this.install(native_mimetype_array[i]);\n }\n }\n }\n /**\n * Install a MIME Type into the array.\n *\n * @param mimetype The mimetype to install\n */\n install(mimetype) {\n const id = this.__mimetypes.length;\n this.__mimetypes.push(mimetype);\n this.__named_mimetypes[mimetype.type] = mimetype;\n this[mimetype.type] = mimetype;\n this[id] = mimetype;\n }\n item(index) {\n return this.__mimetypes[index];\n }\n namedItem(name) {\n return this.__named_mimetypes[name];\n }\n get length() {\n return this.__mimetypes.length;\n }\n [Symbol.iterator]() {\n return this.__mimetypes[Symbol.iterator]();\n }\n}\n/**\n * Equivalent object to `Plugin` that allows us to falsify plugins.\n */\nclass RufflePlugin extends RuffleMimeTypeArray {\n constructor(name, description, filename, mimetypes) {\n super(mimetypes);\n this.name = name;\n this.description = description;\n this.filename = filename;\n }\n install(mimetype) {\n super.install(mimetype);\n }\n [Symbol.iterator]() {\n return super[Symbol.iterator]();\n }\n}\n/**\n * Replacement object for `PluginArray` that lets us install new fake plugins.\n *\n * This object needs to wrap the native plugin array, since the user might have\n * actual plugins installed. Firefox doesn't let us enumerate the array, though,\n * which has some consequences. Namely, we can't actually perfectly wrap the\n * native plugin array, at least unless there's some secret \"unresolved object\n * property name handler\" that I've never known before in JS...\n *\n * We can still wrap `namedItem` perfectly at least.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.plugins` has an\n * `install` method, you should not use `RufflePluginArray` as some other plugin\n * emulator is already present.\n */\nclass RufflePluginArray {\n constructor(native_plugin_array) {\n this.__plugins = [];\n this.__named_plugins = {};\n for (let i = 0; i < native_plugin_array.length; i++) {\n this.install(native_plugin_array[i]);\n }\n }\n install(plugin) {\n const id = this.__plugins.length;\n this.__plugins.push(plugin);\n this.__named_plugins[plugin.name] = plugin;\n this[plugin.name] = plugin;\n this[id] = plugin;\n }\n item(index) {\n return this.__plugins[index];\n }\n namedItem(name) {\n return this.__named_plugins[name];\n }\n get length() {\n return this.__plugins.length;\n }\n}\n/**\n * A fake plugin designed to trigger Flash detection scripts.\n */\nexport const FLASH_PLUGIN = new RufflePlugin(\"Shockwave Flash\", \"Shockwave Flash 32.0 r0\", \"ruffle.js\", null);\nFLASH_PLUGIN.install({\n type: \"application/futuresplash\",\n description: \"Shockwave Flash\",\n suffixes: \"spl\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/x-shockwave-flash\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/x-shockwave-flash2-preview\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/vnd.adobe.flash-movie\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\n/**\n * Install a fake plugin such that detectors will see it in `navigator.plugins`.\n *\n * This function takes care to check if the existing implementation of\n * `navigator.plugins` already accepts fake plugin entries. If so, it will use\n * that version of the plugin array. This allows the plugin polyfill to compose\n * across multiple plugin emulators with the first emulator's polyfill winning.\n *\n * @param plugin The plugin to install\n */\nexport function installPlugin(plugin) {\n if (!(\"install\" in navigator.plugins) || !navigator.plugins[\"install\"]) {\n Object.defineProperty(navigator, \"plugins\", {\n value: new RufflePluginArray(navigator.plugins),\n writable: false,\n });\n }\n const plugins = navigator.plugins;\n plugins.install(plugin);\n if (plugin.length > 0 &&\n (!(\"install\" in navigator.mimeTypes) || !navigator.mimeTypes[\"install\"])) {\n Object.defineProperty(navigator, \"mimeTypes\", {\n value: new RuffleMimeTypeArray(navigator.mimeTypes),\n writable: false,\n });\n }\n const mimeTypes = navigator.mimeTypes;\n for (let i = 0; i < plugin.length; i += 1) {\n mimeTypes.install(plugin[i]);\n }\n}\n","/**\n * The shadow template which is used to fill the actual Ruffle player element\n * on the page.\n */\nexport const ruffleShadowTemplate = document.createElement(\"template\");\nruffleShadowTemplate.innerHTML = `\n <style>\n :host {\n --ruffle-blue: #37528c;\n --ruffle-orange: #ffad33;\n\n display: inline-block;\n position: relative;\n /* Default width/height; this will get overridden by user styles/attributes. */\n width: 550px;\n height: 400px;\n font-family: Arial, sans-serif;\n letter-spacing: 0.4px;\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n /* Ruffle's width/height CSS interferes Safari fullscreen CSS. */\n /* Ensure that Safari's fullscreen mode actually fills the screen. */\n :host(:-webkit-full-screen) {\n display: block;\n width: 100% !important;\n height: 100% !important;\n }\n\n /* All of these use the dimensions specified by the embed. */\n #container,\n #play_button,\n #unmute_overlay,\n #unmute_overlay .background,\n #panic,\n #message_overlay {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n #container {\n overflow: hidden;\n }\n\n #container canvas {\n width: 100%;\n height: 100%;\n }\n\n #play_button,\n #unmute_overlay {\n cursor: pointer;\n display: none;\n }\n\n #unmute_overlay .background {\n background: black;\n opacity: 0.7;\n }\n\n #play_button .icon,\n #unmute_overlay .icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n max-width: 384px;\n max-height: 384px;\n transform: translate(-50%, -50%);\n opacity: 0.8;\n }\n\n #play_button:hover .icon,\n #unmute_overlay:hover .icon {\n opacity: 1;\n }\n\n #panic {\n font-size: 20px;\n text-align: center;\n /* Inverted colors from play button! */\n background: linear-gradient(180deg, #fd3a40 0%, #fda138 100%);\n color: white;\n display: flex;\n flex-flow: column;\n justify-content: space-around;\n }\n\n #panic a {\n color: var(--ruffle-blue);\n font-weight: bold;\n }\n\n #panic-title {\n font-size: xxx-large;\n font-weight: bold;\n }\n\n #panic-body.details {\n flex: 0.9;\n margin: 0 10px;\n }\n\n #panic-body textarea {\n width: 100%;\n height: 100%;\n resize: none;\n }\n\n #panic ul {\n padding: 0;\n display: flex;\n list-style-type: none;\n justify-content: space-evenly;\n }\n\n #message_overlay {\n position: absolute;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n opacity: 1;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: auto;\n }\n\n #message_overlay .message {\n text-align: center;\n max-height: 100%;\n max-width: 100%;\n padding: 5%;\n }\n\n #message_overlay p {\n margin: 0.5em 0;\n }\n\n #message_overlay .message div {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n column-gap: 1em;\n }\n\n #message_overlay a, #message_overlay button {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 1.25em;\n border-radius: 0.6em;\n padding: 10px;\n text-decoration: none;\n margin: 2% 0;\n }\n\n #message_overlay a:hover, #message_overlay button:hover {\n background: #ffffff4c;\n }\n\n #continue-btn {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 20px;\n border-radius: 20px;\n padding: 10px;\n }\n\n #continue-btn:hover {\n background: #ffffff4c;\n }\n\n #context-menu {\n display: none;\n color: black;\n background: #fafafa;\n border: 1px solid gray;\n box-shadow: 0px 5px 10px -5px black;\n position: absolute;\n font-size: 14px;\n text-align: left;\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #context-menu .menu_item {\n padding: 5px 10px;\n cursor: pointer;\n color: black;\n }\n\n #context-menu .menu_item.disabled {\n cursor: default;\n color: gray;\n }\n\n #context-menu .menu_item:not(.disabled):hover {\n background: lightgray;\n }\n\n #context-menu .menu_separator hr {\n border: none;\n border-bottom: 1px solid lightgray;\n margin: 2px;\n }\n </style>\n <style id=\"dynamic_styles\"></style>\n\n <div id=\"container\">\n <div id=\"play_button\"><div class=\"icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid\" viewBox=\"0 0 250 250\" style=\"width:100%;height:100%;\"><defs><linearGradient id=\"a\" gradientUnits=\"userSpaceOnUse\" x1=\"125\" y1=\"0\" x2=\"125\" y2=\"250\" spreadMethod=\"pad\"><stop offset=\"0%\" stop-color=\"#FDA138\"/><stop offset=\"100%\" stop-color=\"#FD3A40\"/></linearGradient><g id=\"b\"><path fill=\"url(#a)\" d=\"M250 125q0-52-37-88-36-37-88-37T37 37Q0 73 0 125t37 88q36 37 88 37t88-37q37-36 37-88M87 195V55l100 70-100 70z\"/><path fill=\"#FFF\" d=\"M87 55v140l100-70L87 55z\"/></g></defs><use xlink:href=\"#b\"/></svg></div></div>\n <div id=\"unmute_overlay\"><div class=\"background\"></div><div class=\"icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid\" viewBox=\"0 0 512 584\" style=\"width:100%;height:100%;scale:0.8;\"><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m457.941 256 47.029-47.029c9.372-9.373 9.372-24.568 0-33.941-9.373-9.373-24.568-9.373-33.941 0l-47.029 47.029-47.029-47.029c-9.373-9.373-24.568-9.373-33.941 0-9.372 9.373-9.372 24.568 0 33.941l47.029 47.029-47.029 47.029c-9.372 9.373-9.372 24.568 0 33.941 4.686 4.687 10.827 7.03 16.97 7.03s12.284-2.343 16.971-7.029l47.029-47.03 47.029 47.029c4.687 4.687 10.828 7.03 16.971 7.03s12.284-2.343 16.971-7.029c9.372-9.373 9.372-24.568 0-33.941z\"/><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m99 160h-55c-24.301 0-44 19.699-44 44v104c0 24.301 19.699 44 44 44h55c2.761 0 5-2.239 5-5v-182c0-2.761-2.239-5-5-5z\"/><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m280 56h-24c-5.269 0-10.392 1.734-14.578 4.935l-103.459 79.116c-1.237.946-1.963 2.414-1.963 3.972v223.955c0 1.557.726 3.026 1.963 3.972l103.459 79.115c4.186 3.201 9.309 4.936 14.579 4.936h23.999c13.255 0 24-10.745 24-24v-352.001c0-13.255-10.745-24-24-24z\"/><text x=\"256\" y=\"560\" text-anchor=\"middle\" style=\"font-size:60px;fill:#FFF;stroke:#FFF;\">Click to unmute</text></svg></div></div>\n </div>\n\n <ul id=\"context-menu\"></ul>\n`;\n","/**\n * Number of times to try defining a custom element.\n */\nconst MAX_TRIES = 999;\n/**\n * A mapping between internal element IDs and DOM element IDs.\n */\nconst privateRegistry = {};\n/**\n * Lookup a previously registered custom element.\n *\n * The returned object will have `name`, `class`, and `internal_name`\n * properties listing the external name, implementing class, and internal name\n * respectively.\n *\n * @param elementName The internal element name, previously used to\n * register the element with the private registry.\n * @returns The element data in the registry, or null if there is\n * no such element name registered.\n */\nexport function lookupElement(elementName) {\n const data = privateRegistry[elementName];\n if (data !== undefined) {\n return {\n internalName: elementName,\n name: data.name,\n class: data.class,\n };\n }\n else {\n return null;\n }\n}\n/**\n * Register a custom element.\n *\n * This function is designed to be tolerant of naming conflicts. If\n * registration fails, we modify the name, and try again. As a result, this\n * function returns the real element name to use.\n *\n * Calling this function multiple times will *not* register multiple elements.\n * We store a private registry mapping internal element names to DOM names.\n * Thus, the proper way to use this function is to call it every time you are\n * about to work with custom element names.\n *\n * @param elementName The internal name of the element.\n * @param elementClass The class of the element.\n *\n * You must call this function with the same class every time.\n * @returns The actual element name.\n * @throws Throws an error if two different elements were registered with the\n * same internal name.\n */\nexport function registerElement(elementName, elementClass) {\n if (privateRegistry[elementName] !== undefined) {\n if (privateRegistry[elementName].class !== elementClass) {\n throw new Error(\"Internal naming conflict on \" + elementName);\n }\n else {\n return privateRegistry[elementName].name;\n }\n }\n let tries = 0;\n if (window.customElements !== undefined) {\n while (tries < MAX_TRIES) {\n let externalName = elementName;\n if (tries > 0) {\n externalName = externalName + \"-\" + tries;\n }\n if (window.customElements.get(externalName) !== undefined) {\n tries += 1;\n continue;\n }\n else {\n window.customElements.define(externalName, elementClass);\n }\n privateRegistry[elementName] = {\n class: elementClass,\n name: externalName,\n internalName: elementName,\n };\n return externalName;\n }\n }\n throw new Error(\"Failed to assign custom element \" + elementName);\n}\n","import { loadRuffle } from \"./load-ruffle\";\nimport { ruffleShadowTemplate } from \"./shadow-template\";\nimport { lookupElement } from \"./register-element\";\nexport const FLASH_MIMETYPE = \"application/x-shockwave-flash\";\nexport const FUTURESPLASH_MIMETYPE = \"application/futuresplash\";\nexport const FLASH7_AND_8_MIMETYPE = \"application/x-shockwave-flash2-preview\";\nexport const FLASH_MOVIE_MIMETYPE = \"application/vnd.adobe.flash-movie\";\nexport const FLASH_ACTIVEX_CLASSID = \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\";\nconst RUFFLE_ORIGIN = \"https://ruffle.rs\";\nconst DIMENSION_REGEX = /^\\s*(\\d+(\\.\\d+)?(%)?)/;\n/**\n * Converts arbitrary input to an easy to use record object.\n *\n * @param parameters Parameters to sanitize\n * @returns A sanitized map of param name to param value\n */\nfunction sanitizeParameters(parameters) {\n if (parameters === null || parameters === undefined) {\n return {};\n }\n if (!(parameters instanceof URLSearchParams)) {\n parameters = new URLSearchParams(parameters);\n }\n const output = {};\n for (const [key, value] of parameters) {\n // Every value must be type of string\n output[key] = value.toString();\n }\n return output;\n}\n/**\n * The ruffle player element that should be inserted onto the page.\n *\n * This element will represent the rendered and intractable flash movie.\n */\nexport class RufflePlayer extends HTMLElement {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n */\n constructor() {\n super();\n this.hasContextMenu = false;\n // Allows the user to permanently disable the context menu.\n this.contextMenuForceDisabled = false;\n // Whether this device is a touch device.\n // Set to true when a touch event is encountered.\n this.isTouch = false;\n this.panicked = false;\n this.isExtension = false;\n /**\n * Any configuration that should apply to this specific player.\n * This will be defaulted with any global configuration.\n */\n this.config = {};\n this.shadow = this.attachShadow({ mode: \"open\" });\n this.shadow.appendChild(ruffleShadowTemplate.content.cloneNode(true));\n this.dynamicStyles = (this.shadow.getElementById(\"dynamic_styles\"));\n this.container = this.shadow.getElementById(\"container\");\n this.playButton = this.shadow.getElementById(\"play_button\");\n if (this.playButton) {\n this.playButton.addEventListener(\"click\", () => this.play());\n }\n this.unmuteOverlay = this.shadow.getElementById(\"unmute_overlay\");\n this.contextMenuElement = this.shadow.getElementById(\"context-menu\");\n this.addEventListener(\"contextmenu\", this.showContextMenu.bind(this));\n this.addEventListener(\"pointerdown\", this.pointerDown.bind(this));\n window.addEventListener(\"click\", this.hideContextMenu.bind(this));\n this.instance = null;\n this.options = null;\n this.onFSCommand = null;\n this._readyState = 0 /* HaveNothing */;\n this._metadata = null;\n this.lastActivePlayingState = false;\n this.setupPauseOnTabHidden();\n return this;\n }\n /**\n * Indicates the readiness of the playing movie.\n *\n * @returns The `ReadyState` of the player.\n */\n get readyState() {\n return this._readyState;\n }\n /**\n * The metadata of the playing movie (such as movie width and height).\n * These are inherent properties stored in the SWF file and are not affected by runtime changes.\n * For example, `metadata.width` is the width of the SWF file, and not the width of the Ruffle player.\n *\n * @returns The metadata of the movie, or `null` if the movie metadata has not yet loaded.\n */\n get metadata() {\n return this._metadata;\n }\n /**\n * Setup event listener to detect when tab is not active to pause instance playback.\n * this.instance.play() is called when the tab becomes visible only if the\n * the instance was not paused before tab became hidden.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n * @ignore\n * @internal\n */\n setupPauseOnTabHidden() {\n document.addEventListener(\"visibilitychange\", () => {\n if (!this.instance)\n return;\n // Tab just changed to be inactive. Record whether instance was playing.\n if (document.hidden) {\n this.lastActivePlayingState = this.instance.is_playing();\n this.instance.pause();\n }\n // Play only if instance was playing originally.\n if (!document.hidden && this.lastActivePlayingState === true) {\n this.instance.play();\n }\n }, false);\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n this.updateStyles();\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, _oldValue, _newValue) {\n if (name === \"width\" || name === \"height\") {\n this.updateStyles();\n }\n }\n /**\n * @ignore\n * @internal\n */\n disconnectedCallback() {\n this.destroy();\n }\n /**\n * Updates the internal shadow DOM to reflect any set attributes from\n * this element.\n *\n * @protected\n */\n updateStyles() {\n if (this.dynamicStyles.sheet) {\n if (this.dynamicStyles.sheet.rules) {\n for (let i = 0; i < this.dynamicStyles.sheet.rules.length; i++) {\n this.dynamicStyles.sheet.deleteRule(i);\n }\n }\n const widthAttr = this.attributes.getNamedItem(\"width\");\n if (widthAttr !== undefined && widthAttr !== null) {\n const width = RufflePlayer.htmlDimensionToCssDimension(widthAttr.value);\n if (width !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { width: ${width}; }`);\n }\n }\n const heightAttr = this.attributes.getNamedItem(\"height\");\n if (heightAttr !== undefined && heightAttr !== null) {\n const height = RufflePlayer.htmlDimensionToCssDimension(heightAttr.value);\n if (height !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { height: ${height}; }`);\n }\n }\n }\n }\n /**\n * Determine if this element is the fallback content of another Ruffle\n * player.\n *\n * This heuristic assumes Ruffle objects will never use their fallback\n * content. If this changes, then this code also needs to change.\n *\n * @private\n */\n isUnusedFallbackObject() {\n let parent = this.parentNode;\n const element = lookupElement(\"ruffle-object\");\n if (element !== null) {\n while (parent != document && parent != null) {\n if (parent.nodeName === element.name) {\n return true;\n }\n parent = parent.parentNode;\n }\n }\n return false;\n }\n /**\n * Ensure a fresh Ruffle instance is ready on this player before continuing.\n *\n * @throws Any exceptions generated by loading Ruffle Core will be logged\n * and passed on.\n *\n * @private\n */\n async ensureFreshInstance(config) {\n var _a;\n this.destroy();\n const ruffleConstructor = await loadRuffle(config).catch((e) => {\n console.error(`Serious error loading Ruffle: ${e}`);\n // Serious duck typing. In error conditions, let's not make assumptions.\n if (window.location.protocol === \"file:\") {\n e.ruffleIndexError = 2 /* FileProtocol */;\n }\n else {\n e.ruffleIndexError = 9 /* WasmNotFound */;\n const message = String(e.message).toLowerCase();\n if (message.includes(\"mime\")) {\n e.ruffleIndexError = 8 /* WasmMimeType */;\n }\n else if (message.includes(\"networkerror\") ||\n message.includes(\"failed to fetch\")) {\n e.ruffleIndexError = 6 /* WasmCors */;\n }\n else if (message.includes(\"disallowed by embedder\")) {\n e.ruffleIndexError = 1 /* CSPConflict */;\n }\n else if (e.name === \"CompileError\") {\n e.ruffleIndexError = 3 /* InvalidWasm */;\n }\n else if (message.includes(\"could not download wasm module\") &&\n e.name === \"TypeError\") {\n e.ruffleIndexError = 7 /* WasmDownload */;\n }\n else if (e.name === \"TypeError\") {\n e.ruffleIndexError = 5 /* JavascriptConflict */;\n }\n }\n this.panic(e);\n throw e;\n });\n this.instance = new ruffleConstructor(this.container, this, config);\n console.log(\"New Ruffle instance created.\");\n // In Firefox, AudioContext.state is always \"suspended\" when the object has just been created.\n // It may change by itself to \"running\" some milliseconds later. So we need to wait a little\n // bit before checking if autoplay is supported and applying the instance config.\n if (this.audioState() !== \"running\") {\n this.container.style.visibility = \"hidden\";\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 200);\n });\n this.container.style.visibility = \"\";\n }\n // Treat unspecified and invalid values as `AutoPlay.Auto`.\n if (config.autoplay === \"on\" /* On */ ||\n (config.autoplay !== \"off\" /* Off */ &&\n this.audioState() === \"running\")) {\n this.play();\n if (this.audioState() !== \"running\") {\n // Treat unspecified and invalid values as `UnmuteOverlay.Visible`.\n if (config.unmuteOverlay !== \"hidden\" /* Hidden */) {\n this.unmuteOverlay.style.display = \"block\";\n }\n this.container.addEventListener(\"click\", this.unmuteOverlayClicked.bind(this), {\n once: true,\n });\n const audioContext = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.audio_context();\n if (audioContext) {\n audioContext.onstatechange = () => {\n if (audioContext.state === \"running\") {\n this.unmuteOverlayClicked();\n }\n audioContext.onstatechange = null;\n };\n }\n }\n }\n else {\n this.playButton.style.display = \"block\";\n }\n }\n /**\n * Destroys the currently running instance of Ruffle.\n */\n destroy() {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n this._metadata = null;\n this._readyState = 0 /* HaveNothing */;\n console.log(\"Ruffle instance destroyed.\");\n }\n }\n /**\n * Loads a specified movie into this player.\n *\n * This will replace any existing movie that may be playing.\n *\n * @param options One of the following:\n * - A URL, passed as a string, which will load a URL with default options.\n * - A [[URLLoadOptions]] object, to load a URL with options.\n * - A [[DataLoadOptions]] object, to load data with options.\n *\n * The options will be defaulted by the [[config]] field, which itself\n * is defaulted by a global `window.RufflePlayer.config`.\n */\n async load(options) {\n var _a, _b;\n let optionsError = \"\";\n switch (typeof options) {\n case \"string\":\n options = { url: options };\n break;\n case \"object\":\n if (options === null) {\n optionsError = \"Argument 0 must be a string or object\";\n }\n else if (!(\"url\" in options) && !(\"data\" in options)) {\n optionsError =\n \"Argument 0 must contain a `url` or `data` key\";\n }\n else if (\"url\" in options &&\n typeof options.url !== \"string\") {\n optionsError = \"`url` must be a string\";\n }\n break;\n default:\n optionsError = \"Argument 0 must be a string or object\";\n break;\n }\n if (optionsError.length > 0) {\n const error = new TypeError(optionsError);\n error.ruffleIndexError = 4 /* JavascriptConfiguration */;\n this.panic(error);\n throw error;\n }\n if (!this.isConnected || this.isUnusedFallbackObject()) {\n console.warn(\"Ignoring attempt to play a disconnected or suspended Ruffle element\");\n return;\n }\n if (isFallbackElement(this)) {\n // Silently fail on attempt to play a Ruffle element inside a specific node.\n return;\n }\n try {\n const config = Object.assign(Object.assign(Object.assign({}, ((_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {})), this.config), options);\n // `allowScriptAccess` can only be set in `options`.\n config.allowScriptAccess = options.allowScriptAccess;\n this.options = options;\n this.hasContextMenu = config.contextMenu !== false;\n // Pre-emptively set background color of container while Ruffle/SWF loads.\n if (config.backgroundColor) {\n this.container.style.backgroundColor = config.backgroundColor;\n }\n await this.ensureFreshInstance(config);\n if (\"url\" in options) {\n console.log(`Loading SWF file ${options.url}`);\n try {\n this.swfUrl = new URL(options.url, document.location.href).href;\n }\n catch (_c) {\n this.swfUrl = options.url;\n }\n const parameters = Object.assign(Object.assign({}, sanitizeParameters(options.url.substring(options.url.indexOf(\"?\")))), sanitizeParameters(options.parameters));\n this.instance.stream_from(this.swfUrl, parameters);\n }\n else if (\"data\" in options) {\n console.log(\"Loading SWF data\");\n this.instance.load_data(new Uint8Array(options.data), sanitizeParameters(options.parameters));\n }\n }\n catch (err) {\n console.error(`Serious error occurred loading SWF file: ${err}`);\n throw err;\n }\n }\n /**\n * Plays or resumes the movie.\n */\n play() {\n if (this.instance) {\n this.instance.play();\n if (this.playButton) {\n this.playButton.style.display = \"none\";\n }\n }\n }\n /**\n * Checks if this player is allowed to be fullscreen by the browser.\n *\n * @returns True if you may call [[enterFullscreen]].\n */\n get fullscreenEnabled() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);\n }\n /**\n * Checks if this player is currently fullscreen inside the browser.\n *\n * @returns True if it is fullscreen.\n */\n get isFullscreen() {\n return ((document.fullscreenElement || document.webkitFullscreenElement) ===\n this);\n }\n /**\n * Requests the browser to make this player fullscreen.\n *\n * This is not guaranteed to succeed, please check [[fullscreenEnabled]] first.\n */\n enterFullscreen() {\n const options = {\n navigationUI: \"hide\",\n };\n if (this.requestFullscreen) {\n this.requestFullscreen(options);\n }\n else if (this.webkitRequestFullscreen) {\n this.webkitRequestFullscreen(options);\n }\n else if (this.webkitRequestFullScreen) {\n this.webkitRequestFullScreen(options);\n }\n }\n /**\n * Requests the browser to no longer make this player fullscreen.\n */\n exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n pointerDown(event) {\n // Give option to disable context menu when touch support is being used\n // to avoid a long press triggering the context menu. (#1972)\n if (event.pointerType === \"touch\" || event.pointerType === \"pen\") {\n this.isTouch = true;\n }\n }\n contextMenuItems() {\n const CHECKMARK = String.fromCharCode(0x2713);\n const items = [];\n if (this.instance) {\n const customItems = this.instance.prepare_context_menu();\n customItems.forEach((item, index) => {\n if (item.separatorBefore)\n items.push(null);\n items.push({\n // TODO: better checkboxes\n text: item.caption + (item.checked ? ` (${CHECKMARK})` : ``),\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.run_context_menu_callback(index); },\n enabled: item.enabled,\n });\n });\n }\n items.push(null);\n if (this.fullscreenEnabled) {\n if (this.isFullscreen) {\n items.push({\n text: \"Exit fullscreen\",\n onClick: this.exitFullscreen.bind(this),\n });\n }\n else {\n items.push({\n text: \"Enter fullscreen\",\n onClick: this.enterFullscreen.bind(this),\n });\n }\n }\n items.push(null);\n const extensionString = this.isExtension ? \"extension\" : \"\";\n items.push({\n text: `About Ruffle ${extensionString} (nightly 2021-10-19)`,\n onClick() {\n window.open(RUFFLE_ORIGIN, \"_blank\");\n },\n });\n if (this.isTouch) {\n items.push(null);\n items.push({\n text: \"Hide this menu\",\n onClick: () => (this.contextMenuForceDisabled = true),\n });\n }\n return items;\n }\n showContextMenu(e) {\n e.preventDefault();\n if (!this.hasContextMenu || this.contextMenuForceDisabled) {\n return;\n }\n // Clear all context menu items.\n while (this.contextMenuElement.firstChild) {\n this.contextMenuElement.removeChild(this.contextMenuElement.firstChild);\n }\n // Populate context menu items.\n for (const item of this.contextMenuItems()) {\n if (item === null) {\n if (!this.contextMenuElement.lastElementChild)\n continue; // don't start with separators\n if (this.contextMenuElement.lastElementChild.classList.contains(\"menu_separator\"))\n continue; // don't repeat separators\n const menuSeparator = document.createElement(\"li\");\n menuSeparator.className = \"menu_separator\";\n const hr = document.createElement(\"hr\");\n menuSeparator.appendChild(hr);\n this.contextMenuElement.appendChild(menuSeparator);\n }\n else {\n const { text, onClick, enabled } = item;\n const menuItem = document.createElement(\"li\");\n menuItem.className = \"menu_item\";\n menuItem.textContent = text;\n this.contextMenuElement.appendChild(menuItem);\n if (enabled !== false) {\n menuItem.addEventListener(\"click\", onClick);\n }\n else {\n menuItem.classList.add(\"disabled\");\n }\n }\n }\n // Place a context menu in the top-left corner, so\n // its `clientWidth` and `clientHeight` are not clamped.\n this.contextMenuElement.style.left = \"0\";\n this.contextMenuElement.style.top = \"0\";\n this.contextMenuElement.style.display = \"block\";\n const rect = this.getBoundingClientRect();\n const x = e.clientX - rect.x;\n const y = e.clientY - rect.y;\n const maxX = rect.width - this.contextMenuElement.clientWidth - 1;\n const maxY = rect.height - this.contextMenuElement.clientHeight - 1;\n this.contextMenuElement.style.left =\n Math.floor(Math.min(x, maxX)) + \"px\";\n this.contextMenuElement.style.top =\n Math.floor(Math.min(y, maxY)) + \"px\";\n }\n hideContextMenu() {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.clear_custom_menu_items();\n this.contextMenuElement.style.display = \"none\";\n }\n /**\n * Pauses this player.\n *\n * No more frames, scripts or sounds will be executed.\n * This movie will be considered inactive and will not wake up until resumed.\n */\n pause() {\n if (this.instance) {\n this.instance.pause();\n if (this.playButton) {\n this.playButton.style.display = \"block\";\n }\n }\n }\n audioState() {\n if (this.instance) {\n const audioContext = this.instance.audio_context();\n return (audioContext && audioContext.state) || \"running\";\n }\n return \"suspended\";\n }\n unmuteOverlayClicked() {\n if (this.instance) {\n if (this.audioState() !== \"running\") {\n const audioContext = this.instance.audio_context();\n if (audioContext) {\n audioContext.resume();\n }\n }\n if (this.unmuteOverlay) {\n this.unmuteOverlay.style.display = \"none\";\n }\n }\n }\n /**\n * Copies attributes and children from another element to this player element.\n * Used by the polyfill elements, RuffleObject and RuffleEmbed.\n *\n * @param elem The element to copy all attributes from.\n * @protected\n */\n copyElement(elem) {\n if (elem) {\n for (let i = 0; i < elem.attributes.length; i++) {\n const attrib = elem.attributes[i];\n if (attrib.specified) {\n // Issue 468: Chrome \"Click to Active Flash\" box stomps on title attribute\n if (attrib.name === \"title\" &&\n attrib.value === \"Adobe Flash Player\") {\n continue;\n }\n try {\n this.setAttribute(attrib.name, attrib.value);\n }\n catch (err) {\n // The embed may have invalid attributes, so handle these gracefully.\n console.warn(`Unable to set attribute ${attrib.name} on Ruffle instance`);\n }\n }\n }\n for (const node of Array.from(elem.children)) {\n this.appendChild(node);\n }\n }\n }\n /**\n * Converts a dimension attribute on an HTML embed/object element to a valid CSS dimension.\n * HTML element dimensions are unitless, but can also be percentages.\n * Add a 'px' unit unless the value is a percentage.\n * Returns null if this is not a valid dimension.\n *\n * @param attribute The attribute to convert\n *\n * @private\n */\n static htmlDimensionToCssDimension(attribute) {\n if (attribute) {\n const match = attribute.match(DIMENSION_REGEX);\n if (match) {\n let out = match[1];\n if (!match[3]) {\n // Unitless -- add px for CSS.\n out += \"px\";\n }\n return out;\n }\n }\n return null;\n }\n /**\n * When a movie presents a new callback through `ExternalInterface.addCallback`,\n * we are informed so that we can expose the method on any relevant DOM element.\n *\n * This should only be called by Ruffle itself and not by users.\n *\n * @param name The name of the callback that is now available.\n *\n * @internal\n * @ignore\n */\n onCallbackAvailable(name) {\n const instance = this.instance;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[name] = (...args) => {\n return instance === null || instance === void 0 ? void 0 : instance.call_exposed_callback(name, args);\n };\n }\n /**\n * Sets a trace observer on this flash player.\n *\n * The observer will be called, as a function, for each message that the playing movie will \"trace\" (output).\n *\n * @param observer The observer that will be called for each trace.\n */\n set traceObserver(observer) {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_trace_observer(observer);\n }\n /**\n * Panics this specific player, forcefully destroying all resources and displays an error message to the user.\n *\n * This should be called when something went absolutely, incredibly and disastrously wrong and there is no chance\n * of recovery.\n *\n * Ruffle will attempt to isolate all damage to this specific player instance, but no guarantees can be made if there\n * was a core issue which triggered the panic. If Ruffle is unable to isolate the cause to a specific player, then\n * all players will panic and Ruffle will become \"poisoned\" - no more players will run on this page until it is\n * reloaded fresh.\n *\n * @param error The error, if any, that triggered this panic.\n */\n panic(error) {\n var _a;\n if (this.panicked) {\n // Only show the first major error, not any repeats - they aren't as important\n return;\n }\n this.panicked = true;\n if (error instanceof Error &&\n (error.name === \"AbortError\" ||\n error.message.includes(\"AbortError\"))) {\n // Firefox: Don't display the panic screen if the user leaves the page while something is still loading\n return;\n }\n const errorIndex = (_a = error === null || error === void 0 ? void 0 : error.ruffleIndexError) !== null && _a !== void 0 ? _a : 0 /* Unknown */;\n const errorArray = Object.assign([], {\n stackIndex: -1,\n });\n errorArray.push(\"# Error Info\\n\");\n if (error instanceof Error) {\n errorArray.push(`Error name: ${error.name}\\n`);\n errorArray.push(`Error message: ${error.message}\\n`);\n if (error.stack) {\n const stackIndex = errorArray.push(`Error stack:\\n\\`\\`\\`\\n${error.stack}\\n\\`\\`\\`\\n`) - 1;\n errorArray.stackIndex = stackIndex;\n }\n }\n else {\n errorArray.push(`Error: ${error}\\n`);\n }\n errorArray.push(\"\\n# Player Info\\n\");\n errorArray.push(this.debugPlayerInfo());\n errorArray.push(\"\\n# Page Info\\n\");\n errorArray.push(`Page URL: ${document.location.href}\\n`);\n if (this.swfUrl)\n errorArray.push(`SWF URL: ${this.swfUrl}\\n`);\n errorArray.push(\"\\n# Browser Info\\n\");\n errorArray.push(`Useragent: ${window.navigator.userAgent}\\n`);\n errorArray.push(`OS: ${window.navigator.platform}\\n`);\n errorArray.push(\"\\n# Ruffle Info\\n\");\n errorArray.push(`Version: 0.1.0\\n`);\n errorArray.push(`Name: nightly 2021-10-19\\n`);\n errorArray.push(`Channel: nightly\\n`);\n errorArray.push(`Built: 2021-10-19T00:13:50.428Z\\n`);\n errorArray.push(`Commit: 40aeffb91d2935cf955fe30a23f6c220166eb283\\n`);\n errorArray.push(`Is extension: ${this.isExtension}\\n`);\n const errorText = errorArray.join(\"\");\n // Remove query params for the issue title.\n const pageUrl = document.location.href.split(/[?#]/)[0];\n const issueTitle = `Error on ${pageUrl}`;\n let issueLink = `https://github.com/ruffle-rs/ruffle/issues/new?title=${encodeURIComponent(issueTitle)}&body=`;\n let issueBody = encodeURIComponent(errorText);\n if (errorArray.stackIndex > -1 &&\n String(issueLink + issueBody).length > 8195) {\n // Strip the stack error from the array when the produced URL is way too long.\n // This should prevent \"414 Request-URI Too Large\" errors on Github.\n errorArray[errorArray.stackIndex] = null;\n issueBody = encodeURIComponent(errorArray.join(\"\"));\n }\n issueLink += issueBody;\n // Clears out any existing content (ie play button or canvas) and replaces it with the error screen\n let errorBody, errorFooter;\n switch (errorIndex) {\n case 2 /* FileProtocol */:\n // General error: Running on the `file:` protocol\n errorBody = `\n <p>It appears you are running Ruffle on the \"file:\" protocol.</p>\n <p>This doesn't work as browsers block many features from working for security reasons.</p>\n <p>Instead, we invite you to setup a local server or either use the web demo or the desktop application.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${RUFFLE_ORIGIN}/demo\">Web Demo</a></li>\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/tags\">Desktop Application</a></li>\n `;\n break;\n case 4 /* JavascriptConfiguration */:\n // General error: Incorrect JavaScript configuration\n errorBody = `\n <p>Ruffle has encountered a major issue due to an incorrect JavaScript configuration.</p>\n <p>If you are the server administrator, we invite you to check the error details to find out which parameter is at fault.</p>\n <p>You can also consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#javascript-api\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 9 /* WasmNotFound */:\n // Self hosted: Cannot load `.wasm` file - file not found\n errorBody = `\n <p>Ruffle failed to load the required \".wasm\" file component.</p>\n <p>If you are the server administrator, please ensure the file has correctly been uploaded.</p>\n <p>If the issue persists, you may need to use the \"publicPath\" setting: please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configuration-options\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 8 /* WasmMimeType */:\n // Self hosted: Cannot load `.wasm` file - incorrect MIME type\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This web server is not serving \".wasm\" files with the correct MIME type.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-webassembly-mime-type\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 10 /* SwfFetchError */:\n errorBody = `\n <p>Ruffle failed to load the Flash SWF file.</p>\n <p>The most likely reason is that the file no longer exists, so there is nothing for Ruffle to load.</p>\n <p>Try contacting the website administrator for help.</p>\n `;\n errorFooter = `\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 6 /* WasmCors */:\n // Self hosted: Cannot load `.wasm` file - CORS issues\n errorBody = `\n <p>Ruffle failed to load the required \".wasm\" file component.</p>\n <p>Access to fetch has likely been blocked by CORS policy.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#web\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 3 /* InvalidWasm */:\n // Self hosted: Cannot load `.wasm` file - incorrect configuration or missing files\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>It seems like this page has missing or invalid files for running Ruffle.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#addressing-a-compileerror\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 7 /* WasmDownload */:\n // Usually a transient network error or botched deployment\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This can often resolve itself, so you can try reloading the page.</p>\n <p>Otherwise, please contact the website administrator.</p>\n `;\n errorFooter = `\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 5 /* JavascriptConflict */:\n // Self hosted: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>It seems like this page uses JavaScript code that conflicts with Ruffle.</p>\n <p>If you are the server administrator, we invite you to try loading the file on a blank page.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${issueLink}\">Report Bug</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 1 /* CSPConflict */:\n // General error: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This web server's Content Security Policy does not allow the required \".wasm\" component to run.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-wasm-csp\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n default:\n // Unknown error\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to display this Flash content.</p>\n <p>This isn't supposed to happen, so we'd really appreciate if you could file a bug!</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${issueLink}\">Report Bug</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n }\n this.container.innerHTML = `\n <div id=\"panic\">\n <div id=\"panic-title\">Something went wrong :(</div>\n <div id=\"panic-body\">${errorBody}</div>\n <div id=\"panic-footer\">\n <ul>${errorFooter}</ul>\n </div>\n </div>\n `;\n const viewDetails = (this.container.querySelector(\"#panic-view-details\"));\n if (viewDetails) {\n viewDetails.onclick = () => {\n const panicBody = (this.container.querySelector(\"#panic-body\"));\n panicBody.classList.add(\"details\");\n panicBody.innerHTML = `<textarea>${errorText}</textarea>`;\n return false;\n };\n }\n // Do this last, just in case it causes any cascading issues.\n this.destroy();\n }\n displayRootMovieDownloadFailedMessage() {\n const swfUrl = new URL(this.swfUrl);\n if (window.location.origin == swfUrl.origin ||\n !this.isExtension ||\n !window.location.protocol.includes(\"http\")) {\n const error = new Error(\"Failed to fetch: \" + this.swfUrl);\n error.ruffleIndexError = 10 /* SwfFetchError */;\n this.panic(error);\n return;\n }\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n div.innerHTML = `<div class=\"message\">\n <p>Ruffle wasn't able to run the Flash embedded in this page.</p>\n <p>You can try to open the file in a separate tab, to sidestep this issue.</p>\n <div>\n <a target=\"_blank\" href=\"${this.swfUrl}\">Open in a new tab</a>\n </div>\n </div>`;\n this.container.prepend(div);\n }\n displayUnsupportedMessage() {\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n // TODO: Change link to https://ruffle.rs/faq or similar\n // TODO: Pause content until message is dismissed\n div.innerHTML = `<div class=\"message\">\n <p>Flash Player has been removed from browsers in 2021.</p>\n <p>This content is not yet supported by the Ruffle emulator and will likely not run as intended.</p>\n <div>\n <a target=\"_blank\" class=\"more-info-link\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Questions-For-Users\">More info</a>\n <button id=\"run-anyway-btn\">Run anyway</button>\n </div>\n </div>`;\n this.container.prepend(div);\n const button = div.querySelector(\"#run-anyway-btn\");\n button.onclick = () => {\n div.parentNode.removeChild(div);\n };\n }\n displayMessage(message) {\n // Show a dismissible message in front of the player\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n div.innerHTML = `<div class=\"message\">\n <p>${message}</p>\n <div>\n <button id=\"continue-btn\">continue</button>\n </div>\n </div>`;\n this.container.prepend(div);\n (this.container.querySelector(\"#continue-btn\")).onclick = () => {\n div.parentNode.removeChild(div);\n };\n }\n debugPlayerInfo() {\n var _a, _b;\n return `Allows script access: ${(_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.allowScriptAccess) !== null && _b !== void 0 ? _b : false}\\n`;\n }\n setMetadata(metadata) {\n this._metadata = metadata;\n // TODO: Switch this to ReadyState.Loading when we have streaming support.\n this._readyState = 2 /* Loaded */;\n this.dispatchEvent(new Event(RufflePlayer.LOADED_METADATA));\n // TODO: Move this to whatever function changes the ReadyState to Loaded when we have streaming support.\n this.dispatchEvent(new Event(RufflePlayer.LOADED_DATA));\n }\n setIsExtension(isExtension) {\n this.isExtension = isExtension;\n }\n}\n/**\n * Triggered when a movie metadata has been loaded (such as movie width and height).\n *\n * @event RufflePlayer#loadedmetadata\n */\nRufflePlayer.LOADED_METADATA = \"loadedmetadata\";\n/**\n * Triggered when a movie is fully loaded.\n *\n * @event RufflePlayer#loadeddata\n */\nRufflePlayer.LOADED_DATA = \"loadeddata\";\n/**\n * Returns whether a SWF file can call JavaScript code in the surrounding HTML file.\n *\n * @param access The value of the `allowScriptAccess` attribute.\n * @param url The URL of the SWF file.\n * @returns True if script access is allowed.\n */\nexport function isScriptAccessAllowed(access, url) {\n if (!access) {\n access = \"sameDomain\";\n }\n switch (access.toLowerCase()) {\n case \"always\":\n return true;\n case \"never\":\n return false;\n case \"samedomain\":\n default:\n try {\n return (new URL(window.location.href).origin ===\n new URL(url, window.location.href).origin);\n }\n catch (_a) {\n return false;\n }\n }\n}\n/**\n * Returns whether a SWF file should show the built-in context menu items.\n *\n * @param menu The value of the `menu` attribute.\n * @returns True if the built-in context items should be shown.\n */\nexport function isBuiltInContextMenuVisible(menu) {\n if (menu === null || menu.toLowerCase() === \"true\") {\n return true;\n }\n return false;\n}\n/**\n * Returns whether the given filename ends in a known flash extension.\n *\n * @param filename The filename to test.\n * @returns True if the filename is a flash movie (swf or spl).\n */\nexport function isSwfFilename(filename) {\n if (filename) {\n let pathname = \"\";\n try {\n // A base URL is required if `filename` is a relative URL, but we don't need to detect the real URL origin.\n pathname = new URL(filename, RUFFLE_ORIGIN).pathname;\n }\n catch (err) {\n // Some invalid filenames, like `///`, could raise a TypeError. Let's fail silently in this situation.\n }\n if (pathname && pathname.length >= 4) {\n const extension = pathname.slice(-4).toLowerCase();\n if (extension === \".swf\" || extension === \".spl\") {\n return true;\n }\n }\n }\n return false;\n}\n/**\n * Determine if an element is a child of a node that was not supported\n * in non-HTML5 compliant browsers. If so, the element was meant to be\n * used as a fallback content.\n *\n * @param elem The element to test.\n * @returns True if the element is inside an <audio> or <video> node.\n */\nexport function isFallbackElement(elem) {\n let parent = elem.parentElement;\n while (parent !== null) {\n switch (parent.tagName) {\n case \"AUDIO\":\n case \"VIDEO\":\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n}\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isSwfFilename, RufflePlayer, } from \"./ruffle-player\";\nimport { registerElement } from \"./register-element\";\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleEmbed extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n super.connectedCallback();\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n const allowScriptAccess = (_b = (_a = this.attributes.getNamedItem(\"allowScriptAccess\")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n const menu = (_d = (_c = this.attributes.getNamedItem(\"menu\")) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : null;\n // Kick off the SWF download.\n this.load({\n url: src.value,\n allowScriptAccess: isScriptAccessAllowed(allowScriptAccess, src.value),\n parameters: (_e = this.attributes.getNamedItem(\"flashvars\")) === null || _e === void 0 ? void 0 : _e.value,\n backgroundColor: (_f = this.attributes.getNamedItem(\"bgcolor\")) === null || _f === void 0 ? void 0 : _f.value,\n base: (_g = this.attributes.getNamedItem(\"base\")) === null || _g === void 0 ? void 0 : _g.value,\n menu: isBuiltInContextMenuVisible(menu),\n salign: (_j = (_h = this.attributes.getNamedItem(\"salign\")) === null || _h === void 0 ? void 0 : _h.value) !== null && _j !== void 0 ? _j : \"\",\n quality: (_l = (_k = this.attributes.getNamedItem(\"quality\")) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : \"high\",\n scale: (_o = (_m = this.attributes.getNamedItem(\"scale\")) === null || _m === void 0 ? void 0 : _m.value) !== null && _o !== void 0 ? _o : \"showAll\",\n });\n }\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get src() {\n var _a;\n return (_a = this.attributes.getNamedItem(\"src\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set src(srcval) {\n if (srcval != undefined) {\n const attr = document.createAttribute(\"src\");\n attr.value = srcval;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"src\");\n }\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"src\", \"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, oldValue, newValue) {\n var _a;\n super.attributeChangedCallback(name, oldValue, newValue);\n if (this.isConnected && name === \"src\") {\n let parameters;\n const flashvars = this.attributes.getNamedItem(\"flashvars\");\n if (flashvars) {\n parameters = flashvars.value;\n }\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n this.load({\n url: src.value,\n parameters,\n base: (_a = this.attributes.getNamedItem(\"base\")) === null || _a === void 0 ? void 0 : _a.value,\n });\n }\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a flash embed.\n */\n static isInterdictable(elem) {\n var _a;\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill when no file is specified.\n if (!elem.getAttribute(\"src\")) {\n return false;\n }\n // Check for MIME type.\n const type = (_a = elem.getAttribute(\"type\")) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (type === FLASH_MIMETYPE.toLowerCase() ||\n type === FUTURESPLASH_MIMETYPE.toLowerCase() ||\n type === FLASH7_AND_8_MIMETYPE.toLowerCase() ||\n type === FLASH_MOVIE_MIMETYPE.toLowerCase()) {\n return true;\n }\n else if (type == null || type === \"\") {\n return isSwfFilename(elem.getAttribute(\"src\"));\n }\n return false;\n }\n /**\n * Creates a RuffleEmbed that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleEmbed.\n */\n static fromNativeEmbedElement(elem) {\n const externalName = registerElement(\"ruffle-embed\", RuffleEmbed);\n const ruffleObj = document.createElement(externalName);\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, FLASH_ACTIVEX_CLASSID, isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isSwfFilename, RufflePlayer, } from \"./ruffle-player\";\nimport { registerElement } from \"./register-element\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\n/**\n * Find and return the first value in obj with the given key.\n * Many Flash params were case insensitive, so we use this when checking for them.\n *\n * @param obj Object to check\n * @param key Key to find\n * @param defaultValue Value if not found\n * @returns Value if found, else [[defaultValue]]\n */\nfunction findCaseInsensitive(obj, key, defaultValue) {\n key = key.toLowerCase();\n for (const k in obj) {\n if (Object.hasOwnProperty.call(obj, k) && key === k.toLowerCase()) {\n return obj[k];\n }\n }\n return defaultValue;\n}\n/**\n * Returns all flash params ([[HTMLParamElement]]) that are for the given object.\n *\n * @param elem Element to check.\n * @returns A record of every parameter.\n */\nfunction paramsOf(elem) {\n var _a, _b;\n const params = {};\n for (const param of elem.children) {\n if (param instanceof HTMLParamElement) {\n const key = (_a = param.attributes.getNamedItem(\"name\")) === null || _a === void 0 ? void 0 : _a.value;\n const value = (_b = param.attributes.getNamedItem(\"value\")) === null || _b === void 0 ? void 0 : _b.value;\n if (key && value) {\n params[key] = value;\n }\n }\n }\n return params;\n}\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleObject extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n this.params = {};\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a;\n super.connectedCallback();\n this.params = paramsOf(this);\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params.movie) {\n url = this.params.movie;\n }\n const allowScriptAccess = findCaseInsensitive(this.params, \"allowScriptAccess\", null);\n const parameters = findCaseInsensitive(this.params, \"flashvars\", this.getAttribute(\"flashvars\"));\n const backgroundColor = findCaseInsensitive(this.params, \"bgcolor\", this.getAttribute(\"bgcolor\"));\n const base = findCaseInsensitive(this.params, \"base\", this.getAttribute(\"base\"));\n const menu = findCaseInsensitive(this.params, \"menu\", null);\n const salign = findCaseInsensitive(this.params, \"salign\", \"\");\n const quality = findCaseInsensitive(this.params, \"quality\", \"high\");\n const scale = findCaseInsensitive(this.params, \"scale\", \"showAll\");\n if (url) {\n const options = { url };\n options.allowScriptAccess = isScriptAccessAllowed(allowScriptAccess, url);\n if (parameters) {\n options.parameters = parameters;\n }\n if (backgroundColor) {\n options.backgroundColor = backgroundColor;\n }\n if (base) {\n options.base = base;\n }\n options.menu = isBuiltInContextMenuVisible(menu);\n if (salign) {\n options.salign = salign;\n }\n if (quality) {\n options.quality = quality;\n }\n if (scale) {\n options.scale = scale;\n }\n // Kick off the SWF download.\n this.load(options);\n }\n }\n debugPlayerInfo() {\n var _a;\n let errorText = super.debugPlayerInfo();\n errorText += \"Player type: Object\\n\";\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params.movie) {\n url = this.params.movie;\n }\n errorText += `SWF URL: ${url}\\n`;\n Object.keys(this.params).forEach((key) => {\n errorText += `Param ${key}: ${this.params[key]}\\n`;\n });\n Object.keys(this.attributes).forEach((key) => {\n var _a;\n errorText += `Attribute ${key}: ${(_a = this.attributes.getNamedItem(key)) === null || _a === void 0 ? void 0 : _a.value}\\n`;\n });\n return errorText;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get data() {\n return this.getAttribute(\"data\");\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set data(href) {\n if (href != undefined) {\n const attr = document.createAttribute(\"data\");\n attr.value = href;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"data\");\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a flash object.\n */\n static isInterdictable(elem) {\n var _a, _b, _c;\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill if there's already a <ruffle-embed> inside the <object>.\n if (elem.getElementsByTagName(\"ruffle-embed\").length > 0) {\n return false;\n }\n // Don't polyfill if no movie specified.\n const data = (_a = elem.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value.toLowerCase();\n const params = paramsOf(elem);\n let isSwf;\n // Check for SWF file.\n if (data) {\n isSwf = isSwfFilename(data);\n }\n else if (params && params.movie) {\n isSwf = isSwfFilename(params.movie);\n }\n else {\n // Don't polyfill when no file is specified.\n return false;\n }\n // Check ActiveX class ID.\n const classid = (_b = elem.attributes\n .getNamedItem(\"classid\")) === null || _b === void 0 ? void 0 : _b.value.toLowerCase();\n if (classid === FLASH_ACTIVEX_CLASSID.toLowerCase()) {\n // classid is an old-IE style embed that would not work on modern browsers.\n // Often there will be an <embed> inside the <object> that would take precedence.\n // Only polyfill this <object> if it doesn't contain a polyfillable <embed>.\n return !Array.from(elem.getElementsByTagName(\"embed\")).some(RuffleEmbed.isInterdictable);\n }\n else if (classid != null && classid !== \"\") {\n // Non-Flash classid.\n return false;\n }\n // Check for MIME type.\n const type = (_c = elem.attributes.getNamedItem(\"type\")) === null || _c === void 0 ? void 0 : _c.value.toLowerCase();\n if (type === FLASH_MIMETYPE.toLowerCase() ||\n type === FUTURESPLASH_MIMETYPE.toLowerCase() ||\n type === FLASH7_AND_8_MIMETYPE.toLowerCase() ||\n type === FLASH_MOVIE_MIMETYPE.toLowerCase()) {\n return true;\n }\n else if (type != null && type !== \"\") {\n return false;\n }\n // If no MIME/class type is specified, polyfill if movie is an SWF file.\n return isSwf;\n }\n /**\n * Creates a RuffleObject that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleObject.\n */\n static fromNativeObjectElement(elem) {\n const externalName = registerElement(\"ruffle-object\", RuffleObject);\n const ruffleObj = (document.createElement(externalName));\n // Avoid copying embeds-inside-objects to avoid double polyfilling.\n for (const embedElem of Array.from(elem.getElementsByTagName(\"embed\"))) {\n if (RuffleEmbed.isInterdictable(embedElem)) {\n embedElem.remove();\n }\n }\n // Avoid copying objects-inside-objects to avoid double polyfilling.\n // This may happen when Internet Explorer's conditional comments are used.\n for (const objectElem of Array.from(elem.getElementsByTagName(\"object\"))) {\n if (RuffleObject.isInterdictable(objectElem)) {\n objectElem.remove();\n }\n }\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","var _a, _b;\nimport { RuffleObject } from \"./ruffle-object\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\nimport { installPlugin, FLASH_PLUGIN } from \"./plugin-polyfill\";\nimport { publicPath } from \"./public-path\";\nlet isExtension;\nconst globalConfig = (_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};\nconst jsScriptUrl = publicPath(globalConfig) + \"ruffle.js\";\n/**\n * Polyfill native Flash elements with Ruffle equivalents.\n *\n * This polyfill isn't fool-proof: If there's a chance site JavaScript has\n * access to a pre-polyfill element, then this will break horribly. We can\n * keep native objects out of the DOM, and thus out of JavaScript's grubby\n * little hands, but only if we load first.\n */\nlet objects;\nlet embeds;\n/**\n *\n */\nfunction polyfillFlashInstances() {\n try {\n // Create live collections to track embed tags.\n objects = objects !== null && objects !== void 0 ? objects : document.getElementsByTagName(\"object\");\n embeds = embeds !== null && embeds !== void 0 ? embeds : document.getElementsByTagName(\"embed\");\n // Replace <object> first, because <object> often wraps <embed>.\n for (const elem of Array.from(objects)) {\n if (RuffleObject.isInterdictable(elem)) {\n const ruffleObject = RuffleObject.fromNativeObjectElement(elem);\n ruffleObject.setIsExtension(isExtension);\n elem.replaceWith(ruffleObject);\n }\n }\n for (const elem of Array.from(embeds)) {\n if (RuffleEmbed.isInterdictable(elem)) {\n const ruffleEmbed = RuffleEmbed.fromNativeEmbedElement(elem);\n ruffleEmbed.setIsExtension(isExtension);\n elem.replaceWith(ruffleEmbed);\n }\n }\n }\n catch (err) {\n console.error(`Serious error encountered when polyfilling native Flash elements: ${err}`);\n }\n}\n/**\n * Inject Ruffle into <iframe> and <frame> elements.\n *\n * This polyfill isn't fool-proof either: On self-hosted builds, it may\n * not work due to browsers CORS policy or be loaded too late for some\n * libraries like SWFObject. These should be less of a problem on the\n * web extension. This polyfill should, however, do the trick in most\n * cases, but users should be aware of its natural limits.\n */\nlet iframes;\nlet frames;\n/**\n *\n */\nfunction polyfillFrames() {\n // Create live collections to track embed tags.\n iframes = iframes !== null && iframes !== void 0 ? iframes : document.getElementsByTagName(\"iframe\");\n frames = frames !== null && frames !== void 0 ? frames : document.getElementsByTagName(\"frame\");\n [iframes, frames].forEach((elementsList) => {\n for (let i = 0; i < elementsList.length; i++) {\n const element = elementsList[i];\n if (element.dataset.rufflePolyfilled !== undefined) {\n // Don't re-polyfill elements with the \"data-ruffle-polyfilled\" attribute.\n continue;\n }\n element.dataset.rufflePolyfilled = \"\";\n const elementWindow = element.contentWindow;\n // Cross origin requests may reach an exception, so let's prepare for this eventuality.\n const errorMessage = `Couldn't load Ruffle into ${element.tagName}[${element.src}]: `;\n try {\n if (elementWindow.document.readyState === \"complete\") {\n injectRuffle(elementWindow, errorMessage);\n }\n }\n catch (err) {\n if (!isExtension) {\n // The web extension should be able to load Ruffle into cross origin frames\n // because it has \"all_frames\" set to true in its manifest.json: RufflePlayer\n // config won't be injected but it's not worth showing an error.\n console.warn(errorMessage + err);\n }\n }\n // Attach listener to the element to handle frame navigation.\n element.addEventListener(\"load\", () => {\n injectRuffle(elementWindow, errorMessage);\n }, false);\n }\n });\n}\n/**\n * @param elementWindow The (i)frame's window object.\n * @param errorMessage The message to log when Ruffle cannot access the (i)frame's document.\n */\nasync function injectRuffle(elementWindow, errorMessage) {\n var _a;\n // The document is supposed to be completely loaded when this function is run.\n // As Chrome may be unable to access the document properties, we have to delay the execution a little bit.\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 100);\n });\n let elementDocument;\n try {\n elementDocument = elementWindow.document;\n if (!elementDocument) {\n // Don't polyfill if the window has no document: the element may have been removed from the parent window.\n return;\n }\n }\n catch (err) {\n if (!isExtension) {\n console.warn(errorMessage + err);\n }\n return;\n }\n if (!isExtension &&\n elementDocument.documentElement.dataset.ruffleOptout !== undefined) {\n // Don't polyfill elements with the \"data-ruffle-optout\" attribute.\n return;\n }\n if (!isExtension) {\n if (!elementWindow.RufflePlayer) {\n const script = elementDocument.createElement(\"script\");\n script.setAttribute(\"src\", jsScriptUrl);\n script.onload = () => {\n // Inject parent configuration once the script is loaded, preventing it from being ignored.\n elementWindow.RufflePlayer = {};\n elementWindow.RufflePlayer.config = globalConfig;\n };\n elementDocument.head.appendChild(script);\n }\n }\n else {\n if (!elementWindow.RufflePlayer) {\n elementWindow.RufflePlayer = {};\n }\n // Merge parent window and frame configurations, will likely be applied too late though.\n elementWindow.RufflePlayer.config = Object.assign(Object.assign({}, globalConfig), ((_a = elementWindow.RufflePlayer.config) !== null && _a !== void 0 ? _a : {}));\n }\n}\n/**\n * Listen for changes to the DOM.\n *\n */\nfunction initMutationObserver() {\n const observer = new MutationObserver(function (mutationsList) {\n // If any nodes were added, re-run the polyfill to detect any new instances.\n const nodesAdded = mutationsList.some((mutation) => mutation.addedNodes.length > 0);\n if (nodesAdded) {\n polyfillFlashInstances();\n polyfillFrames();\n }\n });\n observer.observe(document, { childList: true, subtree: true });\n}\n/**\n * Polyfills the detection of Flash plugins in the browser.\n */\nexport function pluginPolyfill() {\n installPlugin(FLASH_PLUGIN);\n}\n/**\n * Polyfills legacy Flash content on the page.\n *\n * @param isExt Whether or not Ruffle is running as a browser's extension.\n */\nexport function polyfill(isExt) {\n isExtension = isExt;\n polyfillFlashInstances();\n polyfillFrames();\n initMutationObserver();\n}\n","/**\n * A representation of a semver 2 compliant version string\n */\nexport class Version {\n /**\n * Construct a Version from specific components.\n *\n * If you wish to parse a string into a Version then please use [[fromSemver]].\n *\n * @param major The major version component.\n * @param minor The minor version component.\n * @param patch The patch version component.\n * @param prIdent A list of pre-release identifiers, if any\n * @param buildIdent A list of build identifiers, if any\n */\n constructor(major, minor, patch, prIdent, buildIdent) {\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.prIdent = prIdent;\n this.buildIdent = buildIdent;\n }\n /**\n * Construct a version from a semver 2 compliant string.\n *\n * This function is intended for use with semver 2 compliant strings.\n * Malformed strings may still parse correctly, but this result is not\n * guaranteed.\n *\n * @param versionString A semver 2.0.0 compliant version string\n * @returns A version object\n */\n static fromSemver(versionString) {\n const buildSplit = versionString.split(\"+\"), prSplit = buildSplit[0].split(\"-\"), versionSplit = prSplit[0].split(\".\");\n const major = parseInt(versionSplit[0], 10);\n let minor = 0;\n let patch = 0;\n let prIdent = null;\n let buildIdent = null;\n if (versionSplit[1] != undefined) {\n minor = parseInt(versionSplit[1], 10);\n }\n if (versionSplit[2] != undefined) {\n patch = parseInt(versionSplit[2], 10);\n }\n if (prSplit[1] != undefined) {\n prIdent = prSplit[1].split(\".\");\n }\n if (buildSplit[1] != undefined) {\n buildIdent = buildSplit[1].split(\".\");\n }\n return new Version(major, minor, patch, prIdent, buildIdent);\n }\n /**\n * Returns true if a given version is compatible with this one.\n *\n * Compatibility is defined as having the same nonzero major version\n * number, or if both major versions are zero, the same nonzero minor\n * version number, or if both minor versions are zero, the same nonzero\n * patch version number.\n *\n * This implements the ^ operator in npm's semver package, with the\n * exception of the prerelease exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if compatible\n */\n isCompatibleWith(other) {\n return ((this.major !== 0 && this.major === other.major) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor !== 0 &&\n this.minor === other.minor) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor === 0 &&\n other.minor === 0 &&\n this.patch !== 0 &&\n this.patch === other.patch));\n }\n /**\n * Returns true if this version has precedence over (is newer than) another\n * version.\n *\n * Precedence is defined as in the Semver 2 spec. This implements the >\n * operator in npm's semver package, with the exception of the prerelease\n * exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if this version has precedence over the other one\n */\n hasPrecedenceOver(other) {\n if (this.major > other.major) {\n return true;\n }\n else if (this.major < other.major) {\n return false;\n }\n if (this.minor > other.minor) {\n return true;\n }\n else if (this.minor < other.minor) {\n return false;\n }\n if (this.patch > other.patch) {\n return true;\n }\n else if (this.patch < other.patch) {\n return false;\n }\n if (this.prIdent == null && other.prIdent != null) {\n return true;\n }\n else if (this.prIdent != null && other.prIdent != null) {\n const isNumeric = /^[0-9]*$/;\n for (let i = 0; i < this.prIdent.length && i < other.prIdent.length; i += 1) {\n if (!isNumeric.test(this.prIdent[i]) &&\n isNumeric.test(other.prIdent[i])) {\n return true;\n }\n else if (isNumeric.test(this.prIdent[i]) &&\n isNumeric.test(other.prIdent[i])) {\n if (parseInt(this.prIdent[i], 10) >\n parseInt(other.prIdent[i], 10)) {\n return true;\n }\n else if (parseInt(this.prIdent[i], 10) <\n parseInt(other.prIdent[i], 10)) {\n return false;\n }\n }\n else if (isNumeric.test(this.prIdent[i]) &&\n !isNumeric.test(other.prIdent[i])) {\n return false;\n }\n else if (!isNumeric.test(this.prIdent[i]) &&\n !isNumeric.test(other.prIdent[i])) {\n if (this.prIdent[i] > other.prIdent[i]) {\n return true;\n }\n else if (this.prIdent[i] < other.prIdent[i]) {\n return false;\n }\n }\n }\n return this.prIdent.length > other.prIdent.length;\n }\n return false;\n }\n /**\n * Tests if a given version is equivalent to this one.\n *\n * Build and prerelease tags are ignored.\n *\n * @param other The other version to test against\n * @returns True if the given version is equivalent\n */\n isEqual(other) {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n /**\n * Tests if a given version is stable or a compatible prerelease for this\n * version.\n *\n * This implements the prerelease exclusion rule of NPM semver: a\n * prerelease version can only pass this check if the major/minor/patch\n * components of both versions are the same. Otherwise, the prerelease\n * version always fails.\n *\n * @param other The other version to test against\n * @returns True if the given version is either stable, or a\n * prerelease in the same series as this one.\n */\n isStableOrCompatiblePrerelease(other) {\n if (other.prIdent == null) {\n return true;\n }\n else {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n }\n}\n","import { Version } from \"./version\";\n/**\n * Represents a set of version requirements.\n */\nexport class VersionRange {\n /**\n * Constructs a range of versions as specified by the given requirements.\n *\n * If you wish to construct this object from a string representation,\n * then use [[fromRequirementString]].\n *\n * @param requirements Requirements to set this range by\n */\n constructor(requirements) {\n this.requirements = requirements;\n }\n /**\n * Determine if a given version satisfies this range.\n *\n * @param fver A version object to test against.\n * @returns Whether or not the given version matches this range\n */\n satisfiedBy(fver) {\n for (let i = 0; i < this.requirements.length; i += 1) {\n let matches = true;\n for (let j = 0; j < this.requirements[i].length; j += 1) {\n const comparator = this.requirements[i][j].comparator;\n const version = this.requirements[i][j].version;\n matches =\n matches && version.isStableOrCompatiblePrerelease(fver);\n if (comparator === \"\" || comparator === \"=\") {\n matches = matches && version.isEqual(fver);\n }\n else if (comparator === \">\") {\n matches = matches && fver.hasPrecedenceOver(version);\n }\n else if (comparator === \">=\") {\n matches =\n matches &&\n (fver.hasPrecedenceOver(version) ||\n version.isEqual(fver));\n }\n else if (comparator === \"<\") {\n matches = matches && version.hasPrecedenceOver(fver);\n }\n else if (comparator === \"<=\") {\n matches =\n matches &&\n (version.hasPrecedenceOver(fver) ||\n version.isEqual(fver));\n }\n else if (comparator === \"^\") {\n matches = matches && version.isCompatibleWith(fver);\n }\n }\n if (matches) {\n return true;\n }\n }\n return false;\n }\n /**\n * Parse a requirement string into a version range.\n *\n * @param requirement The version requirements, consisting of a\n * series of space-separated strings, each one being a semver version\n * optionally prefixed by a comparator or a separator.\n *\n * Valid comparators are:\n * - `\"\"` or `\"=\"`: Precisely this version\n * - `\">`\": A version newer than this one\n * - `\">`=\": A version newer or equal to this one\n * - `\"<\"`: A version older than this one\n * - `\"<=\"`: A version older or equal to this one\n * - `\"^\"`: A version that is compatible with this one\n *\n * A separator is `\"||`\" which splits the requirement string into\n * left OR right.\n * @returns A version range object.\n */\n static fromRequirementString(requirement) {\n const components = requirement.split(\" \");\n let set = [];\n const requirements = [];\n for (let i = 0; i < components.length; i += 1) {\n if (components[i] === \"||\") {\n if (set.length > 0) {\n requirements.push(set);\n set = [];\n }\n }\n else if (components[i].length > 0) {\n const match = /[0-9]/.exec(components[i]);\n if (match) {\n const comparator = components[i]\n .slice(0, match.index)\n .trim();\n const version = Version.fromSemver(components[i].slice(match.index).trim());\n set.push({ comparator, version });\n }\n }\n }\n if (set.length > 0) {\n requirements.push(set);\n }\n return new VersionRange(requirements);\n }\n}\n","import { Version } from \"./version\";\nimport { VersionRange } from \"./version-range\";\n/**\n * Represents the Ruffle public API.\n *\n * The public API exists primarily to allow multiple installs of Ruffle on a\n * page (e.g. an extension install and a local one) to cooperate. In an ideal\n * situation, all Ruffle sources on the page install themselves into a single\n * public API, and then the public API picks the newest version by default.\n *\n * This API *is* versioned, in case we need to upgrade it. However, it must be\n * backwards- and forwards-compatible with all known sources.\n */\nexport class PublicAPI {\n /**\n * Construct the Ruffle public API.\n *\n * Do not use this function to negotiate a public API. Instead, use\n * `public_api` to register your Ruffle source with an existing public API\n * if it exists.\n *\n * Constructing a Public API will also trigger it to initialize Ruffle once\n * the page loads, if the API has not already been superseded.\n *\n * @param prev What used to be in the public API slot.\n *\n * This is used to upgrade from a prior version of the public API, or from\n * a user-defined configuration object placed in the public API slot.\n * @protected\n */\n constructor(prev) {\n this.sources = {};\n this.config = {};\n this.invoked = false;\n this.newestName = null;\n this.conflict = null;\n if (prev !== undefined && prev !== null) {\n if (prev instanceof PublicAPI) {\n /// We're upgrading from a previous API to a new one.\n this.sources = prev.sources;\n this.config = prev.config;\n this.invoked = prev.invoked;\n this.conflict = prev.conflict;\n this.newestName = prev.newestName;\n prev.superseded();\n }\n else if (prev.constructor === Object &&\n prev.config instanceof Object) {\n /// We're the first, install user configuration\n this.config = prev.config;\n }\n else {\n /// We're the first, but conflicting with someone else.\n this.conflict = prev;\n }\n }\n if (document.readyState === \"loading\") {\n window.addEventListener(\"DOMContentLoaded\", this.init.bind(this));\n }\n else {\n window.setTimeout(this.init.bind(this), 0);\n }\n }\n /**\n * The version of the public API.\n *\n * This is *not* the version of Ruffle itself.\n *\n * This allows a page with an old version of the Public API to be upgraded\n * to a new version of the API. The public API is intended to be changed\n * very infrequently, if at all, but this provides an escape mechanism for\n * newer Ruffle sources to upgrade older installations.\n *\n * @returns The version of this public API.\n */\n get version() {\n return \"0.1.0\";\n }\n /**\n * Register a given source with the Ruffle Public API.\n *\n * @param name The name of the source.\n * @param api The public API object. This must conform to the shape\n * of `SourceAPI`.\n */\n registerSource(name, api) {\n this.sources[name] = api;\n }\n /**\n * Determine the name of the newest registered source in the Public API.\n *\n * @returns The name of the source, or `null` if no source\n * has yet to be registered.\n */\n newestSourceName() {\n let newestName = null, newestVersion = Version.fromSemver(\"0.0.0\");\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const kVersion = Version.fromSemver(this.sources[k].version);\n if (kVersion.hasPrecedenceOver(newestVersion)) {\n newestName = k;\n newestVersion = kVersion;\n }\n }\n }\n return newestName;\n }\n /**\n * Negotiate and start Ruffle.\n *\n * This function reads the config parameter to determine which polyfills\n * should be enabled. If the configuration parameter is missing, then we\n * use a built-in set of defaults sufficient to fool sites with static\n * content and weak plugin detection.\n */\n init() {\n if (!this.invoked) {\n this.invoked = true;\n this.newestName = this.newestSourceName();\n if (this.newestName === null) {\n throw new Error(\"No registered Ruffle source!\");\n }\n const polyfills = this.config.polyfills;\n if (polyfills !== false) {\n this.sources[this.newestName].polyfill(this.newestName === \"extension\");\n }\n }\n }\n /**\n * Look up the newest Ruffle source and return it's API.\n *\n * @returns An instance of the Source API.\n */\n newest() {\n const name = this.newestSourceName();\n return name != null ? this.sources[name] : null;\n }\n /**\n * Look up a specific Ruffle version (or any version satisfying a given set\n * of requirements) and return it's API.\n *\n * @param ver_requirement A set of semantic version requirement\n * strings that the player version must satisfy.\n * @returns An instance of the Source API, if one or more\n * sources satisfied the requirement.\n */\n satisfying(ver_requirement) {\n const requirement = VersionRange.fromRequirementString(ver_requirement);\n let valid = null;\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const version = Version.fromSemver(this.sources[k].version);\n if (requirement.satisfiedBy(version)) {\n valid = this.sources[k];\n }\n }\n }\n return valid;\n }\n /**\n * Look up the newest Ruffle version compatible with the `local` source, if\n * it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n localCompatible() {\n if (this.sources.local !== undefined) {\n return this.satisfying(\"^\" + this.sources.local.version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Look up the newest Ruffle version with the exact same version as the\n * `local` source, if it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n local() {\n if (this.sources.local !== undefined) {\n return this.satisfying(\"=\" + this.sources.local.version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Indicates that this version of the public API has been superseded by a\n * newer version.\n *\n * This should only be called by a newer version of the Public API.\n * Identical versions of the Public API should not supersede older versions\n * of that same API.\n *\n * Unfortunately, we can't disable polyfills after-the-fact, so this\n * only lets you disable the init event...\n *\n * @protected\n */\n superseded() {\n this.invoked = true;\n }\n /**\n * Join a source into the public API, if it doesn't already exist.\n *\n * @param prevRuffle The previous iteration of the Ruffle API.\n *\n * The `prevRuffle` param lists the previous object in the RufflePlayer\n * slot. We perform some checks to see if this is a Ruffle public API or a\n * conflicting object. If this is conflicting, then a new public API will\n * be constructed (see the constructor information for what happens to\n * `prevRuffle`).\n *\n * Note that Public API upgrades are deliberately not enabled in this\n * version of Ruffle, since there is no Public API to upgrade from.\n * @param sourceName The name of this particular\n * Ruffle source.\n * @param sourceAPI The Ruffle source to add.\n *\n * If both parameters are provided they will be used to define a new Ruffle\n * source to register with the public API.\n * @returns The Ruffle Public API.\n */\n static negotiate(prevRuffle, sourceName, sourceAPI) {\n let publicAPI;\n if (prevRuffle instanceof PublicAPI) {\n publicAPI = prevRuffle;\n }\n else {\n publicAPI = new PublicAPI(prevRuffle);\n }\n if (sourceName !== undefined && sourceAPI !== undefined) {\n publicAPI.registerSource(sourceName, sourceAPI);\n // Install the faux plugin detection immediately.\n // This is necessary because scripts such as SWFObject check for the\n // Flash Player immediately when they load.\n // TODO: Maybe there's a better place for this.\n const polyfills = publicAPI.config.polyfills;\n if (polyfills !== false) {\n sourceAPI.pluginPolyfill();\n }\n }\n return publicAPI;\n }\n}\n","import { PublicAPI, SourceAPI } from \"ruffle-core\";\n\nwindow.RufflePlayer = PublicAPI.negotiate(\n window.RufflePlayer,\n \"local\",\n new SourceAPI(\"local\")\n);\n","import { pluginPolyfill, polyfill } from \"./polyfills\";\nimport { registerElement } from \"./register-element\";\nimport { RufflePlayer } from \"./ruffle-player\";\n/**\n * Represents this particular version of Ruffle.\n *\n * Multiple APIs can be instantiated from different sources; e.g. an \"extension\"\n * version, versus a \"local\" version. This expresses to the Public API\n * negotiator (see [[PublicAPI]]) what this particular version of Ruffle is and\n * how to control it.\n */\nexport class SourceAPI {\n /**\n * Construct a Source API.\n *\n * @param name The name of this particular source.\n */\n constructor(name) {\n this.name = name;\n }\n /**\n * The version of this particular API.\n *\n * This is returned as a string in a semver compatible format.\n *\n * @returns The version of this Ruffle source\n */\n get version() {\n return \"0.1.0\";\n }\n /**\n * Start up the polyfills.\n *\n * Do not run polyfills for more than one Ruffle source at a time.\n *\n * @param isExt Whether or not Ruffle is running as a browser's extension.\n */\n polyfill(isExt) {\n polyfill(isExt);\n }\n /**\n * Polyfill the plugin detection.\n *\n * This needs to run before any plugin detection script does.\n */\n pluginPolyfill() {\n pluginPolyfill();\n }\n /**\n * Create a Ruffle player element using this particular version of Ruffle.\n *\n * @returns The player element. This is a DOM element that may be inserted\n * into the current page as you wish.\n */\n createPlayer() {\n const name = registerElement(\"ruffle-player\", RufflePlayer);\n return document.createElement(name);\n }\n}\n"],"names":["__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","g","globalThis","this","Function","e","window","o","obj","prop","Object","prototype","hasOwnProperty","call","p","b","document","baseURI","self","location","href","lAudioContext","AudioContext","webkitAudioContext","wasm","heap","Array","fill","getObject","idx","push","heap_next","length","takeObject","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","isLikeNone","x","cachegetFloat64Memory0","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","className","JSON","stringify","_","Error","message","stack","makeMutClosure","arg0","arg1","dtor","f","state","a","cnt","real","args","__wbindgen_export_2","get","original","__wbg_adapter_38","arg2","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4751b34b92b7f","__wbg_adapter_41","__wbg_adapter_44","__wbg_adapter_47","__wbg_adapter_50","__wbg_adapter_53","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h02f4d5100110060c","__wbg_adapter_56","_dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hdbf86f5659a15fa5","__wbg_adapter_59","__wbg_adapter_62","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hdb118a22b33e4d3b","cachegetFloat32Memory0","getArrayF32FromWasm0","Float32Array","handleError","apply","__wbindgen_exn_store","stack_pointer","addBorrowedObject","cachegetUint32Memory0","getArrayU8FromWasm0","Ruffle","create","__destroy_into_raw","free","__wbg_ruffle_free","constructor","parent","js_player","config","ruffle_new","__wrap","stream_from","movie_url","parameters","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ruffle_stream_from","load_data","swf_data","ruffle_load_data","play","ruffle_play","pause","ruffle_pause","is_playing","ruffle_is_playing","prepare_context_menu","ruffle_prepare_context_menu","run_context_menu_callback","index","ruffle_run_context_menu_callback","clear_custom_menu_items","ruffle_clear_custom_menu_items","destroy","ruffle_destroy","call_exposed_callback","ptr1","array","Uint32Array","passArrayJsValueToWasm0","len1","ruffle_call_exposed_callback","set_trace_observer","observer","ruffle_set_trace_observer","audio_context","ruffle_audio_context","async","init","input","URL","imports","wbg","__wbindgen_object_drop_ref","__wbindgen_cb_drop","__wbindgen_is_function","__wbindgen_json_parse","parse","__wbindgen_json_serialize","__wbindgen_object_clone_ref","__wbg_isFullscreen_96b85640554e160d","isFullscreen","__wbg_displayUnsupportedMessage_a8f81a8e054e5e91","displayUnsupportedMessage","__wbg_displayRootMovieDownloadFailedMessage_1a5c34096259685a","displayRootMovieDownloadFailedMessage","__wbg_displayMessage_c57c20204892da2b","displayMessage","__wbindgen_string_new","__wbg_new_df6e6ab7a65c4c4d","__wbg_panic_bbc809dd04a12c60","panic","__wbg_copyToAudioBuffer_58f244be94bac1d2","arg3","arg4","audioBuffer","leftData","rightData","getChannelData","__wbg_getAudioOutputTimestamp_a67aa6687740cd15","context","_a","_b","timestamp","getOutputTimestamp","contextTime","currentTime","baseLatency","getAudioOutputTimestamp","__wbg_setMetadata_bbaeaee7f48274e6","setMetadata","__wbg_onCallbackAvailable_3a48fae397926c96","onCallbackAvailable","__wbg_onFSCommand_fb2f94653f71796e","onFSCommand","arguments","__wbindgen_number_get","Float64Array","__wbindgen_string_get","__wbindgen_boolean_get","v","__wbindgen_number_new","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","__wbg_error_09919627ac0992f5","console","error","__wbindgen_free","__wbindgen_is_undefined","__wbg_instanceof_WebGl2RenderingContext_61a66a1af6516586","WebGL2RenderingContext","__wbg_bindVertexArray_808c39d3c0f17264","bindVertexArray","__wbg_blitFramebuffer_3b625df19331f21c","arg5","arg6","arg7","arg8","arg9","arg10","blitFramebuffer","__wbg_createVertexArray_855d59250230c563","createVertexArray","__wbg_renderbufferStorageMultisample_bbeb2b87cb14307f","renderbufferStorageMultisample","__wbg_texImage2D_173d216c50e54701","texImage2D","__wbg_bindFramebuffer_ce3cfcfec4aa02cc","bindFramebuffer","__wbg_bindRenderbuffer_35f3639b7da4e4c7","bindRenderbuffer","__wbg_bindTexture_f2a0487a487a78d9","bindTexture","__wbg_createFramebuffer_7fd863d54241be81","createFramebuffer","__wbg_createRenderbuffer_52ebc0325ed6e885","createRenderbuffer","__wbg_createTexture_a46f881a1c96b496","createTexture","__wbg_deleteFramebuffer_867aba8474910f62","deleteFramebuffer","__wbg_deleteRenderbuffer_eb162fd0beb632da","deleteRenderbuffer","__wbg_deleteTexture_1affe310edd12b75","deleteTexture","__wbg_framebufferRenderbuffer_7bb033ee5a2eca8c","framebufferRenderbuffer","__wbg_framebufferTexture2D_9a77a023fd4aedcc","framebufferTexture2D","__wbg_getError_142acae679908a25","getError","__wbg_getParameter_34e9af6606eb8544","getParameter","__wbg_texParameteri_e99b48aa90ae569b","texParameteri","__wbg_instanceof_Window_9c4fd26090e1d029","Window","__wbg_document_249e9cf340780f93","__wbg_location_cf542a8f458da7b4","__wbg_navigator_fdf3521d0e190a9b","navigator","__wbg_devicePixelRatio_ea9c0157a379b3ec","devicePixelRatio","__wbg_performance_e029cf47e1c47c09","performance","__wbg_localStorage_884d77b5cedf820a","localStorage","__wbg_cancelAnimationFrame_28c6665c9b2a3944","cancelAnimationFrame","__wbg_focus_b5729f61a3280cbc","focus","__wbg_open_313f5801aab5e2f1","open","__wbg_requestAnimationFrame_aa3bab1f9557a4da","requestAnimationFrame","__wbg_fetch_eaee025997e4cd56","fetch","__wbg_destination_c5ce4ac317c9219f","destination","__wbg_sampleRate_cc13fe55474678eb","sampleRate","__wbg_currentTime_ae061c195387b7ac","__wbg_new_29e8884899ea6ee2","__wbg_suspend_4b5d3b7ee1f4a3ec","suspend","__wbg_createBuffer_53c7286e081d0b3e","createBuffer","__wbg_createBufferSource_8b7fd8bc4222b208","createBufferSource","__wbg_createChannelMerger_c059636adf34e09d","createChannelMerger","__wbg_createChannelSplitter_68062f62d4d66ed8","createChannelSplitter","__wbg_createGain_7b6dadac3a6522d6","createGain","__wbg_createScriptProcessor_bce5438a51faa41d","createScriptProcessor","__wbg_decodeAudioData_81b31c0703465a21","decodeAudioData","__wbg_resume_2c75f8fc1fd26d4b","resume","__wbg_setvalue_e8ff05630a7ffecb","value","__wbg_linearRampToValueAtTime_0245aa9e5d87776f","linearRampToValueAtTime","__wbg_setValueAtTime_b4a172acdfc9830f","setValueAtTime","__wbg_gain_b3536e37256053f5","gain","__wbg_baseURI_6a10de9fa3003a69","__wbg_appendChild_6ae001e6d3556190","appendChild","__wbg_instanceof_SvgsvgElement_28ef05afde3449f9","SVGSVGElement","__wbg_createSVGMatrix_43815bd5777c567f","createSVGMatrix","__wbg_setProperty_84c0a22125c731d6","setProperty","__wbg_protocol_2d293dcd35a07041","protocol","__wbg_assign_fc277322e1a88614","assign","__wbg_new_3c2bf2a5257369ec","Path2D","__wbg_addPath_cf691ede06f38917","addPath","__wbg_closePath_48f860f5bcbc79f3","closePath","__wbg_lineTo_7fd48462a80ac962","lineTo","__wbg_moveTo_62ea44f899317925","moveTo","__wbg_quadraticCurveTo_6f746087da5a242c","quadraticCurveTo","__wbg_get_36b7a676e4c8aee9","__wbg_set_ad2026ce7b489f96","__wbg_delete_9614de882c9a0cf5","__wbg_length_914ec377666a1fb8","__wbg_setTransform_4c6870c885e2b89e","setTransform","__wbg_offsetX_951495e9516f0aeb","offsetX","__wbg_offsetY_0377a1f53f902a1e","offsetY","__wbg_button_c35922e0098b9cda","button","__wbg_seta_5138c769bc027dee","__wbg_setb_d92c5b9331343d2e","__wbg_setc_c6fbbb68c7ba4693","c","__wbg_setd_42dcf42c3ceabc9b","d","__wbg_sete_49250c2d46b375b3","__wbg_setf_12cb2512fe19ba3f","__wbg_connect_3a117c24756fdf62","connect","__wbg_connect_3a51bca7e31cd323","__wbg_connect_52449bed6e387d23","__wbg_disconnect_b101656fb34b9fa3","disconnect","__wbg_instanceof_HtmlFormElement_de39c8070c818493","HTMLFormElement","__wbg_submit_e668f2e6a4582aa6","submit","__wbg_bindVertexArrayOES_bb8a104f35d5cf4f","bindVertexArrayOES","__wbg_createVertexArrayOES_51a703442a9d8099","createVertexArrayOES","__wbg_pointerId_e68d773decdc9224","pointerId","__wbg_instanceof_Response_8295bf7aacde3233","Response","__wbg_ok_e1e8f70fbf7c1fdc","ok","__wbg_statusText_c5b7d9b4bc84d715","statusText","__wbg_arrayBuffer_a98df6d58bb5ea26","arrayBuffer","__wbg_deltaY_49d792c5901e3fc1","deltaY","__wbg_deltaMode_7ed5ee895d112617","deltaMode","__wbg_setbuffer_5aca59a6f26d3307","__wbg_setloop_710fa1431c2bc494","loop","__wbg_setloopStart_988c5aad78cc446c","loopStart","__wbg_setloopEnd_fcc6c08574ca8ae5","loopEnd","__wbg_setonended_0efd780b31d16bbf","onended","__wbg_start_e92060130d43d928","start","__wbg_start_a8d199336331f3a5","__wbg_stop_37842cd5a56a341c","stop","__wbg_outputBuffer_7e7061041aa8a304","outputBuffer","__wbg_now_4abbca4ef2aba8d6","now","__wbg_currentTarget_a3b06d00ff76859b","currentTarget","__wbg_preventDefault_19876bf3a4179b34","preventDefault","__wbg_setsrc_21ed0b40d0ff0413","src","__wbg_new_0891fac076d9e6b3","Image","__wbg_newwithwidthandheight_045e54743ae79290","__wbg_data_7db9e348ce1855fa","passArray8ToWasm0","data","__wbg_key_97a48109ce6890c4","key","__wbg_code_e70e2272901f086c","__wbg_newwithstrandinit_a58924208f457f33","Request","__wbg_setonaudioprocess_9d6a213da205ae4d","onaudioprocess","__wbg_body_0d97f334de622953","body","__wbg_createElement_ba61aad8af6be7f4","createElement","__wbg_createElementNS_c951238dc260501e","createElementNS","__wbg_setid_16518c90432c2f8e","id","__wbg_clientWidth_405142b36824cd4f","clientWidth","__wbg_clientHeight_645231c9da3480a9","clientHeight","__wbg_querySelector_6c8f27227fc14315","querySelector","__wbg_releasePointerCapture_758b760808d6ce02","releasePointerCapture","__wbg_setAttribute_0b50656f1ccc45bf","setAttribute","__wbg_setAttributeNS_d31649e78e2cf95c","setAttributeNS","__wbg_setPointerCapture_6f31425163cf44a1","setPointerCapture","__wbg_remove_eabff3d9e444a826","remove","__wbg_instanceof_WebGlRenderingContext_5671fd2c102046b1","WebGLRenderingContext","__wbg_drawingBufferWidth_0f8ef2b95bb66c81","drawingBufferWidth","__wbg_drawingBufferHeight_04a3507b6fb21bac","drawingBufferHeight","__wbg_bufferData_9f09145baa3273f9","bufferData","__wbg_texImage2D_48722cf9f95c8df8","__wbg_uniform1fv_0b5950d4f588ac7e","uniform1fv","__wbg_uniform4fv_8fa4c0052d79aed2","uniform4fv","__wbg_uniformMatrix3fv_c4a15deb8d8fbd61","uniformMatrix3fv","__wbg_uniformMatrix4fv_62951f66fbf764cd","uniformMatrix4fv","__wbg_activeTexture_790fa161eaf8dcb0","activeTexture","__wbg_attachShader_5446231928034874","attachShader","__wbg_bindBuffer_5b0bd39cdc9f3c91","bindBuffer","__wbg_bindFramebuffer_9490ff183a431d0d","__wbg_bindRenderbuffer_86495e658e23020f","__wbg_bindTexture_6df7d2262019c813","__wbg_blendFunc_c91f929b64e24ca6","blendFunc","__wbg_clear_216e95e64c0ce688","clear","__wbg_clearColor_f7316ccd75b2a3b1","clearColor","__wbg_colorMask_cc8730de91ea02ce","colorMask","__wbg_compileShader_749eb91c541c360c","compileShader","__wbg_createBuffer_8ae1735de737ca21","__wbg_createProgram_28f1378728397a46","createProgram","__wbg_createShader_f6da8384be38c095","createShader","__wbg_createTexture_be549d53d11ebf83","__wbg_disable_b2672dfd98db0d2c","disable","__wbg_disableVertexAttribArray_f5154961c6bbc61f","disableVertexAttribArray","__wbg_drawElements_19a4ea67a2f14d44","drawElements","__wbg_enable_9c5b69ae0579565d","enable","__wbg_enableVertexAttribArray_eff1f71734ec0c24","enableVertexAttribArray","__wbg_getAttribLocation_7321b82ba20f42ed","getAttribLocation","__wbg_getExtension_29e749f65dd345b5","getExtension","__wbg_getParameter_e02390c31b2aedb9","__wbg_getProgramInfoLog_89c655cf7d3deb29","getProgramInfoLog","__wbg_getProgramParameter_97fb617622a1e9c6","getProgramParameter","__wbg_getShaderInfoLog_8fbfc8052cd2a5c2","getShaderInfoLog","__wbg_getUniformLocation_8ef86decd2ceb6a0","getUniformLocation","__wbg_linkProgram_b060b6f5c6419695","linkProgram","__wbg_pixelStorei_1e9534b41710bd3f","pixelStorei","__wbg_shaderSource_e00c8c2b41679a01","shaderSource","__wbg_stencilFunc_eeb2374a49160e1e","stencilFunc","__wbg_stencilMask_8383787c8968e634","stencilMask","__wbg_stencilOp_d618117604d44e35","stencilOp","__wbg_texParameteri_58c0d4e82f062e6f","__wbg_uniform1f_affc2490c2cff524","uniform1f","__wbg_uniform1i_584ce89a2fa7078d","uniform1i","__wbg_useProgram_ad5593b87b2aec4f","useProgram","__wbg_vertexAttribPointer_3e272f16a22bb68c","vertexAttribPointer","__wbg_viewport_40ac6422fa7e7109","viewport","__wbg_debug_3c0b82934d1dd91e","__wbg_error_9ff84d33a850b1ef","__wbg_info_3b2058a219fa31b9","info","__wbg_log_386a8115a84a780d","log","__wbg_warn_5fc232d538408d4a","warn","__wbg_style_9290c51fe7cb7783","style","__wbg_newwithbuffersourcesequenceandoptions_689c4999a01e0d8c","Blob","__wbg_addEventListener_b334b84e6525699c","addEventListener","__wbg_addEventListener_502683a26945b1a5","__wbg_addEventListener_b88d8dd107ce2f39","__wbg_removeEventListener_380d0ebdf9cd12ba","removeEventListener","__wbg_removeEventListener_1f30d3e3ef4ee58e","__wbg_instanceof_HtmlCanvasElement_e0e251da2aa0b541","HTMLCanvasElement","__wbg_width_5843e31ec081f978","width","__wbg_setwidth_fd251e9da5abcced","__wbg_height_872c06b1bc666dd9","height","__wbg_setheight_5b882973e84fa13c","__wbg_getContext_d778ffc8203f64ae","getContext","__wbg_getContext_4678c25f580222b0","__wbg_userAgent_89e0d93ea0bfe354","userAgent","__wbg_instanceof_CanvasRenderingContext2d_eea9cd931eb496b7","CanvasRenderingContext2D","__wbg_setglobalAlpha_6b6fb9a57a09df9d","globalAlpha","__wbg_setglobalCompositeOperation_e404daf7e6bb63e4","globalCompositeOperation","__wbg_setstrokeStyle_72f1ad8117744d41","strokeStyle","__wbg_setfillStyle_5306396b0368ba08","fillStyle","__wbg_setfilter_fa947e793349a2de","filter","__wbg_setlineWidth_9f25e0ceca65a4d7","lineWidth","__wbg_setlineCap_6c7169ac07a6349e","lineCap","__wbg_setlineJoin_d6311997533dcdbf","lineJoin","__wbg_setmiterLimit_cd181ac4dc64fc1d","miterLimit","__wbg_drawImage_ff0075aa41bc6155","drawImage","__wbg_drawImage_b43cf9d292491493","__wbg_fill_a928208ebdb3fecc","__wbg_stroke_c19677a93050ef02","stroke","__wbg_createPattern_a737181b452c0941","createPattern","__wbg_getImageData_6e56dc172cd2ed36","getImageData","__wbg_clearRect_dbb56982eff2a250","clearRect","__wbg_fillRect_33b210367d4a0063","fillRect","__wbg_resetTransform_09cd4a47a1d0fc9c","resetTransform","__wbg_setTransform_36254c0c8f264eee","__wbg_randomFillSync_64cc7d048f228ca8","randomFillSync","__wbg_getRandomValues_98117e9a7e993920","getRandomValues","__wbg_process_2f24d6544ea7b200","process","__wbindgen_is_object","__wbg_versions_6164651e75405d4a","versions","__wbg_node_4b517d861cbcb3bc","node","__wbindgen_is_string","__wbg_crypto_98fc271021c7d2ad","crypto","__wbg_msCrypto_a2cdb043d2bfe57f","msCrypto","__wbg_modulerequire_3440a4bcf44437db","require","__wbg_get_67189fe0b323d288","__wbg_new_949bbc1147195c4e","__wbg_newnoargs_be86524d73f67598","__wbg_next_7720502039b96d00","next","__wbg_done_b06cf0578e89ff68","done","__wbg_value_e74a542443d92451","__wbg_get_4d0f21c2f823742e","Reflect","__wbg_call_888d259a5fefc347","__wbg_new_0b83d3df67ecb33e","__wbg_isArray_eb7ad55f2da67dde","__wbg_of_db9e1b8e0a7ed9bc","of","__wbg_push_284486ca27c6aa8b","__wbg_instanceof_ArrayBuffer_764b6d4119231cb3","ArrayBuffer","__wbg_new_3e02a228090b2e72","__wbg_slice_dcc477bca8fe38b1","__wbg_values_364ae56c608e6824","values","__wbg_apply_7cfa6ebf144990a5","__wbg_call_346669c262382ad7","__wbg_getTime_10d33f4f2959e5dd","getTime","__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8","getTimezoneOffset","__wbg_new0_fd3a3a290b25cdac","Date","__wbg_instanceof_Object_66786225e0dbc8ba","__wbg_entries_aadf9c3f38203a12","entries","__wbg_fromEntries_164ebf0f69983a8e","fromEntries","__wbg_is_0f5efc7977a2c50b","is","__wbg_resolve_d23068002f584f22","Promise","resolve","__wbg_then_2fcac196782070cc","then","__wbg_then_8c2d62e8ae5978f7","__wbg_self_c6fbdfc2918d5e58","__wbg_window_baec038b5ab35c54","__wbg_globalThis_3f735a5746d41fbd","__wbg_global_1bc0b39582740e95","global","__wbg_buffer_397eaa4d72ee94dd","__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff","__wbg_new_a7ce447f15ff496f","__wbg_set_969ad0a60e51d320","__wbg_length_1eb8fc608a0d4cdb","__wbg_newwithlength_929232475839a482","__wbg_fill_cd6951964c67ad3a","__wbg_buffer_facf0398a281c85b","__wbg_subarray_8b658422a224f479","__wbg_byteLength_3e250b41a8915757","byteLength","__wbg_byteOffset_4204ecb24a6e5df9","byteOffset","__wbg_ownKeys_f3f1916b5564918f","ownKeys","__wbg_set_82a4e8a85e31ac42","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_rethrow","__wbindgen_memory","__wbindgen_closure_wrapper458","__wbindgen_closure_wrapper460","__wbindgen_closure_wrapper462","__wbindgen_closure_wrapper464","__wbindgen_closure_wrapper466","__wbindgen_closure_wrapper468","__wbindgen_closure_wrapper470","__wbindgen_closure_wrapper472","__wbindgen_closure_wrapper1865","instance","WebAssembly","instantiateStreaming","headers","bytes","instantiate","Instance","load","__wbindgen_wasm_module","isNativeFunction","func","indexOf","currentScriptURL","currentScript","publicPath","path","endsWith","lastLoaded","loadRuffle","reduce","defineProperty","Prototype","Version","callback","TypeError","k","target","fetchRuffle","RuffleMimeTypeArray","native_mimetype_array","__mimetypes","__named_mimetypes","install","mimetype","item","namedItem","Symbol","iterator","RufflePlugin","filename","mimetypes","super","RufflePluginArray","native_plugin_array","__plugins","__named_plugins","plugin","FLASH_PLUGIN","suffixes","enabledPlugin","ruffleShadowTemplate","innerHTML","privateRegistry","registerElement","elementName","elementClass","class","tries","customElements","externalName","define","internalName","FLASH_MIMETYPE","FUTURESPLASH_MIMETYPE","FLASH7_AND_8_MIMETYPE","FLASH_MOVIE_MIMETYPE","RUFFLE_ORIGIN","DIMENSION_REGEX","sanitizeParameters","URLSearchParams","output","RufflePlayer","HTMLElement","hasContextMenu","contextMenuForceDisabled","isTouch","panicked","isExtension","shadow","attachShadow","mode","content","cloneNode","dynamicStyles","getElementById","container","playButton","unmuteOverlay","contextMenuElement","showContextMenu","bind","pointerDown","hideContextMenu","options","_readyState","_metadata","lastActivePlayingState","setupPauseOnTabHidden","hidden","connectedCallback","updateStyles","attributeChangedCallback","_oldValue","_newValue","disconnectedCallback","sheet","rules","deleteRule","widthAttr","attributes","getNamedItem","htmlDimensionToCssDimension","insertRule","heightAttr","isUnusedFallbackObject","parentNode","element","lookupElement","nodeName","ruffleConstructor","catch","ruffleIndexError","String","toLowerCase","includes","audioState","visibility","setTimeout","autoplay","display","unmuteOverlayClicked","once","audioContext","onstatechange","optionsError","url","isConnected","isFallbackElement","allowScriptAccess","contextMenu","backgroundColor","ensureFreshInstance","swfUrl","_c","substring","err","fullscreenEnabled","webkitFullscreenEnabled","fullscreenElement","webkitFullscreenElement","enterFullscreen","navigationUI","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","exitFullscreen","webkitExitFullscreen","webkitCancelFullScreen","event","pointerType","contextMenuItems","CHECKMARK","fromCharCode","items","forEach","separatorBefore","text","caption","checked","onClick","enabled","extensionString","firstChild","removeChild","lastElementChild","classList","contains","menuSeparator","hr","menuItem","textContent","add","left","top","rect","getBoundingClientRect","clientX","y","clientY","maxX","maxY","Math","floor","min","copyElement","elem","attrib","specified","from","children","attribute","match","out","errorIndex","errorArray","stackIndex","debugPlayerInfo","platform","errorText","join","pageUrl","split","errorBody","errorFooter","issueLink","encodeURIComponent","issueBody","viewDetails","onclick","panicBody","origin","div","prepend","metadata","dispatchEvent","Event","LOADED_METADATA","LOADED_DATA","setIsExtension","isScriptAccessAllowed","access","isBuiltInContextMenuVisible","menu","isSwfFilename","pathname","extension","parentElement","tagName","RuffleEmbed","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","base","salign","quality","scale","srcval","attr","createAttribute","setNamedItem","removeNamedItem","oldValue","newValue","flashvars","getAttribute","ruffleObj","findCaseInsensitive","defaultValue","paramsOf","params","param","HTMLParamElement","RuffleObject","movie","keys","getElementsByTagName","isSwf","classid","some","isInterdictable","embedElem","objectElem","globalConfig","jsScriptUrl","objects","iframes","polyfillFlashInstances","ruffleObject","fromNativeObjectElement","replaceWith","ruffleEmbed","fromNativeEmbedElement","polyfillFrames","elementsList","dataset","rufflePolyfilled","elementWindow","contentWindow","errorMessage","readyState","injectRuffle","elementDocument","documentElement","ruffleOptout","script","onload","head","major","minor","patch","prIdent","buildIdent","versionString","buildSplit","prSplit","versionSplit","parseInt","isCompatibleWith","other","hasPrecedenceOver","isNumeric","test","isEqual","isStableOrCompatiblePrerelease","VersionRange","requirements","satisfiedBy","fver","matches","j","comparator","version","requirement","components","trim","fromSemver","PublicAPI","prev","sources","invoked","newestName","conflict","superseded","registerSource","api","newestSourceName","newestVersion","kVersion","polyfills","polyfill","newest","satisfying","ver_requirement","fromRequirementString","valid","localCompatible","local","prevRuffle","sourceName","sourceAPI","publicAPI","pluginPolyfill","negotiate","isExt","MutationObserver","mutationsList","mutation","addedNodes","observe","childList","subtree","plugins","writable","mimeTypes","installPlugin","createPlayer"],"sourceRoot":""}