diff --git a/app/index.html b/app/index.html index 6087af2..64fdb33 100644 --- a/app/index.html +++ b/app/index.html @@ -636,12 +636,8 @@ - - + +
this.toggleFullscreen()) this.subtitleData = { - fonts: [], + fonts: ['https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4.woff2'], headers: [], tracks: [], current: undefined, @@ -375,7 +375,7 @@ Style: Default,${options.defaultSSAStyles || 'Roboto Medium,26,&H00FFFFFF,&H0000 this.setProgress(0) // look for file and delete its store, idk how to do this Object.assign(this.subtitleData, { - fonts: [], + fonts: ['https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4.woff2'], headers: [], tracks: [], current: undefined, @@ -818,7 +818,7 @@ Style: Default,${options.defaultSSAStyles || 'Roboto Medium,26,&H00FFFFFF,&H0000 targetFps: await this.fps, subContent: this.subtitleData.headers[this.subtitleData.current].header.slice(0, -1), renderMode: 'offscreenCanvas', - fonts: this.subtitleData.fonts.length ? this.subtitleData.fonts : ['https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4.woff2'], + fonts: this.subtitleData.fonts, workerUrl: 'js/subtitles-octopus-worker.js', timeOffset: 0, onReady: () => { // weird hack for laggy subtitles, this is some issue in SO @@ -836,6 +836,45 @@ Style: Default,${options.defaultSSAStyles || 'Roboto Medium,26,&H00FFFFFF,&H0000 } } + convertFile (file) { + const regex = /^(?:\d+\n)?(\S{9,12})\s?-->\s?(\S{9,12})(.*)\n([\s\S]*)$/i + const subtitles = [] + + for (const split of fileContent.split('\n\n')) { + match = split.match(regex) + if (match) { + if (match[1].length === 9) { + match[1] = '0:' + match[1] + } else { + if (match[1][0] === '0') { + match[1].substring(1) + } + } + match[1].replace(',', '.') + if (match[2].length === 9) { + match[2] = '0:' + match[2] + } else { + if (match[2][0] === '0') { + match[2].substring(1) + } + } + match[2].replace(',', '.') + const matches = match[4].match(/<[^>]+>/g) // create array of all tags + if (matches) { + matches.forEach(matched => { + if (/<\//.test(matched)) { // check if its a closing tag + match[4] = match[4].replace(matched, matched.replace('', '0}')) + } else { + match[4] = match[4].replace(matched, matched.replace('<', '{\\').replace('>', '1}')) + } + }) + } + subtitles.push('Dialogue: 1,' + match[1] + ',' + match[2] + ',Default,,0,0,0,,' + match[4]) + } + } + return subtitles + } + async downloadFile () { if (this.currentFile?.done && !this.currentTorrent.store.store._store) { this.currentFile.getBlobURL((err, url) => { diff --git a/app/js/subtitles-octopus-worker.data b/app/js/subtitles-octopus-worker.data index 3caf764..247f5aa 100644 Binary files a/app/js/subtitles-octopus-worker.data and b/app/js/subtitles-octopus-worker.data differ diff --git a/app/js/subtitles-octopus-worker.js b/app/js/subtitles-octopus-worker.js index 2a2a13d..b60c573 100644 --- a/app/js/subtitles-octopus-worker.js +++ b/app/js/subtitles-octopus-worker.js @@ -1,41 +1,41 @@ -var Module = typeof Module !== 'undefined' ? Module : {} +var Module = typeof Module !== "undefined" ? Module : {} if (!Module.expectedDataFileDownloads) { Module.expectedDataFileDownloads = 0 Module.finishedDataFileDownloads = 0 } Module.expectedDataFileDownloads++; (function () { - const loadPackage = function (metadata) { - let PACKAGE_PATH - if (typeof window === 'object') { - PACKAGE_PATH = window.encodeURIComponent(window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/') - } else if (typeof location !== 'undefined') { - PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/') + var loadPackage = function (metadata) { + var PACKAGE_PATH + if (typeof window === "object") { + PACKAGE_PATH = window["encodeURIComponent"](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/") + } else if (typeof location !== "undefined") { + PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/") } else { - throw new Error('using preloaded data can only be done on a web page or in a web worker') + throw "using preloaded data can only be done on a web page or in a web worker" } - const PACKAGE_NAME = 'dist/js/subtitles-octopus-worker.data' - const REMOTE_PACKAGE_BASE = 'subtitles-octopus-worker.data' - if (typeof Module.locateFilePackage === 'function' && !Module.locateFile) { - Module.locateFile = Module.locateFilePackage - err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)') + var PACKAGE_NAME = "dist/js/subtitles-octopus-worker.data"; + var REMOTE_PACKAGE_BASE = "subtitles-octopus-worker.data"; + if (typeof Module["locateFilePackage"] === "function" && !Module["locateFile"]) { + Module["locateFile"] = Module["locateFilePackage"]; + err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)") } - const REMOTE_PACKAGE_NAME = Module.locateFile ? Module.locateFile(REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE - const REMOTE_PACKAGE_SIZE = metadata.remote_package_size - const PACKAGE_UUID = metadata.package_uuid + var REMOTE_PACKAGE_NAME = Module["locateFile"] ? Module["locateFile"](REMOTE_PACKAGE_BASE, "") : REMOTE_PACKAGE_BASE; + var REMOTE_PACKAGE_SIZE = metadata["remote_package_size"]; + var PACKAGE_UUID = metadata["package_uuid"]; - function fetchRemotePackage (packageName, packageSize, callback, errback) { - const xhr = new XMLHttpRequest() - xhr.open('GET', packageName, true) - xhr.responseType = 'arraybuffer' + function fetchRemotePackage(packageName, packageSize, callback, errback) { + var xhr = new XMLHttpRequest; + xhr.open("GET", packageName, true); + xhr.responseType = "arraybuffer"; xhr.onprogress = function (event) { - const url = packageName - let size = packageSize - if (event.total) size = event.total + var url = packageName; + var size = packageSize; + if (event.total) size = event.total; if (event.loaded) { if (!xhr.addedTotal) { - xhr.addedTotal = true - if (!Module.dataFileDownloads) Module.dataFileDownloads = {} + xhr.addedTotal = true; + if (!Module.dataFileDownloads) Module.dataFileDownloads = {}; Module.dataFileDownloads[url] = { loaded: event.loaded, total: size @@ -43,140 +43,138 @@ Module.expectedDataFileDownloads++; } else { Module.dataFileDownloads[url].loaded = event.loaded } - let total = 0 - let loaded = 0 - let num = 0 - for (const download in Module.dataFileDownloads) { - const data = Module.dataFileDownloads[download] - total += data.total - loaded += data.loaded + var total = 0; + var loaded = 0; + var num = 0; + for (var download in Module.dataFileDownloads) { + var data = Module.dataFileDownloads[download]; + total += data.total; + loaded += data.loaded; num++ } - total = Math.ceil(total * Module.expectedDataFileDownloads / num) - if (Module.setStatus) Module.setStatus('Downloading data... (' + loaded + '/' + total + ')') + total = Math.ceil(total * Module.expectedDataFileDownloads / num); + if (Module["setStatus"]) Module["setStatus"]("Downloading data... (" + loaded + "/" + total + ")") } else if (!Module.dataFileDownloads) { - if (Module.setStatus) Module.setStatus('Downloading data...') + if (Module["setStatus"]) Module["setStatus"]("Downloading data...") } - } + }; xhr.onerror = function (event) { - throw new Error('NetworkError for: ' + packageName) - } + throw new Error("NetworkError for: " + packageName) + }; xhr.onload = function (event) { if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || xhr.status == 0 && xhr.response) { - const packageData = xhr.response + var packageData = xhr.response; callback(packageData) } else { - throw new Error(xhr.statusText + ' : ' + xhr.responseURL) + throw new Error(xhr.statusText + " : " + xhr.responseURL) } - } + }; xhr.send(null) } - function handleError (error) { - console.error('package error:', error) + function handleError(error) { + console.error("package error:", error) } - let fetchedCallback = null - let fetched = Module.getPreloadedPackage ? Module.getPreloadedPackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null - if (!fetched) { - fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function (data) { - if (fetchedCallback) { - fetchedCallback(data) - fetchedCallback = null - } else { - fetched = data - } - }, handleError) - } - - function runWithFS () { - function assert (check, msg) { - if (!check) throw msg + (new Error()).stack + var fetchedCallback = null; + var fetched = Module["getPreloadedPackage"] ? Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null; + if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function (data) { + if (fetchedCallback) { + fetchedCallback(data); + fetchedCallback = null + } else { + fetched = data } - Module.FS_createPath('/', 'assets', true, true) + }, handleError); - function DataRequest (start, end, audio) { - this.start = start - this.end = end + function runWithFS() { + function assert(check, msg) { + if (!check) throw msg + (new Error).stack + } + Module["FS_createPath"]("/", "assets", true, true); + + function DataRequest(start, end, audio) { + this.start = start; + this.end = end; this.audio = audio } DataRequest.prototype = { requests: {}, open: function (mode, name) { - this.name = name - this.requests[name] = this - Module.addRunDependency('fp ' + this.name) + this.name = name; + this.requests[name] = this; + Module["addRunDependency"]("fp " + this.name) }, - send: function () { }, + send: function () {}, onload: function () { - const byteArray = this.byteArray.subarray(this.start, this.end) + var byteArray = this.byteArray.subarray(this.start, this.end); this.finish(byteArray) }, finish: function (byteArray) { - const that = this - Module.FS_createPreloadedFile(this.name, null, byteArray, true, true, function () { - Module.removeRunDependency('fp ' + that.name) + var that = this; + Module["FS_createPreloadedFile"](this.name, null, byteArray, true, true, function () { + Module["removeRunDependency"]("fp " + that.name) }, function () { if (that.audio) { - Module.removeRunDependency('fp ' + that.name) + Module["removeRunDependency"]("fp " + that.name) } else { - err('Preloading file ' + that.name + ' failed') + err("Preloading file " + that.name + " failed") } - }, false, true) + }, false, true); this.requests[this.name] = null } - } - const files = metadata.files - for (let i = 0; i < files.length; ++i) { - new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename) + }; + var files = metadata["files"]; + for (var i = 0; i < files.length; ++i) { + new DataRequest(files[i]["start"], files[i]["end"], files[i]["audio"]).open("GET", files[i]["filename"]) } - function processPackageData (arrayBuffer) { - Module.finishedDataFileDownloads++ - assert(arrayBuffer, 'Loading data file failed.') - assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData') - const byteArray = new Uint8Array(arrayBuffer) - DataRequest.prototype.byteArray = byteArray - const files = metadata.files - for (let i = 0; i < files.length; ++i) { + function processPackageData(arrayBuffer) { + Module.finishedDataFileDownloads++; + assert(arrayBuffer, "Loading data file failed."); + assert(arrayBuffer instanceof ArrayBuffer, "bad input to processPackageData"); + var byteArray = new Uint8Array(arrayBuffer); + DataRequest.prototype.byteArray = byteArray; + var files = metadata["files"]; + for (var i = 0; i < files.length; ++i) { DataRequest.prototype.requests[files[i].filename].onload() } - Module.removeRunDependency('datafile_dist/js/subtitles-octopus-worker.data') + Module["removeRunDependency"]("datafile_dist/js/subtitles-octopus-worker.data") } - Module.addRunDependency('datafile_dist/js/subtitles-octopus-worker.data') - if (!Module.preloadResults) Module.preloadResults = {} + Module["addRunDependency"]("datafile_dist/js/subtitles-octopus-worker.data"); + if (!Module.preloadResults) Module.preloadResults = {}; Module.preloadResults[PACKAGE_NAME] = { fromCache: false - } + }; if (fetched) { - processPackageData(fetched) + processPackageData(fetched); fetched = null } else { fetchedCallback = processPackageData } } - if (Module.calledRun) { + if (Module["calledRun"]) { runWithFS() } else { - if (!Module.preRun) Module.preRun = [] - Module.preRun.push(runWithFS) + if (!Module["preRun"]) Module["preRun"] = []; + Module["preRun"].push(runWithFS) } - } + }; loadPackage({ - files: [{ - filename: '/assets/default.woff2', - start: 0, - end: 145972, - audio: 0 + "files": [{ + "filename": "/assets/default.ttc", + "start": 0, + "end": 18748872, + "audio": 0 }, { - filename: '/assets/fonts.conf', - start: 145972, - end: 146775, - audio: 0 + "filename": "/assets/fonts.conf", + "start": 18748872, + "end": 18749675, + "audio": 0 }], - remote_package_size: 146775, - package_uuid: '532d82d0-7e82-4558-8c0b-667113c82bca' + "remote_package_size": 18749675, + "package_uuid": "c2c4bc8c-8d5f-44f7-ba59-afa5c87c5ec1" }) -})() +})(); if (!String.prototype.endsWith) { String.prototype.endsWith = function (search, this_len) { if (this_len === undefined || this_len > this.length) { @@ -186,143 +184,168 @@ if (!String.prototype.endsWith) { } } if (!Uint8Array.prototype.slice) { - Object.defineProperty(Uint8Array.prototype, 'slice', { + Object.defineProperty(Uint8Array.prototype, "slice", { value: function (begin, end) { return new Uint8Array(this.subarray(begin, end)) } }) } -const hasNativeConsole = typeof console !== 'undefined' +var hasNativeConsole = typeof console !== "undefined"; -function makeCustomConsole () { - const console = (function () { - function postConsoleMessage (prefix, args) { +function makeCustomConsole() { + var console = function () { + function postConsoleMessage(prefix, args) { postMessage({ - target: 'console-' + prefix, + target: "console-" + prefix, content: JSON.stringify(Array.prototype.slice.call(args)) }) } return { log: function () { - postConsoleMessage('log', arguments) + postConsoleMessage("log", arguments) }, debug: function () { - postConsoleMessage('debug', arguments) + postConsoleMessage("debug", arguments) }, info: function () { - postConsoleMessage('info', arguments) + postConsoleMessage("info", arguments) }, warn: function () { - postConsoleMessage('warn', arguments) + postConsoleMessage("warn", arguments) }, error: function () { - postConsoleMessage('error', arguments) + postConsoleMessage("error", arguments) } } - }()) + }(); return console } -Module = Module || {} -Module.preRun = Module.preRun || [] -Module.preRun.push(function () { - Module.FS_createFolder('/', 'fonts', true, true) +Module = Module || {}; +Module["preRun"] = Module["preRun"] || []; +Module["preRun"].push(function () { + var i; + Module["FS_createFolder"]("/", "fonts", true, true); if (!self.subContent) { - if (self.subUrl.endsWith('.br')) { - self.subContent = Module.BrotliDecode(readBinary(self.subUrl)) + if (self.subUrl.endsWith(".br")) { + self.subContent = Module["BrotliDecode"](readBinary(self.subUrl)) } else { self.subContent = read_(self.subUrl) } } + let result; { + const regex = new RegExp("^fontname((v2:[ \t]*(?[^_]+)_(?[^,]*).(?[a-z0-9]{3,5}),[ \t]*(?.+)$)|(:[ \t]*(?[^_]+)_(?[^$]*).(?[a-z0-9]{3,5})(?(?:\r?\n[!-`]+)+)))", "mg"); + while ((result = regex.exec(self.subContent)) !== null) { + let font; + if ("fontName2" in result.groups && result.groups.fontName2 !== undefined) { + font = { + content: self.readDataUri(result.groups.fontContent2), + id: result.groups.fontName2, + name: result.groups.fontName2 + "." + result.groups.fontExtension2 + } + } else { + font = { + content: self.decodeASSFontEncoding(result.groups.fontContent), + id: result.groups.fontName2, + name: result.groups.fontName + "." + result.groups.fontExtension + } + } + self.fontMap_[font.id] = true; + Module["FS"].writeFile("/fonts/font" + self.fontId++ + "-" + font.name, font.content, { + encoding: "binary" + }); + console.log("libass: attaching embedded font " + font.name) + } + } if (self.availableFonts && self.availableFonts.length !== 0) { - const sections = parseAss(self.subContent) + var sections = parseAss(self.subContent); for (var i = 0; i < sections.length; i++) { - for (let j = 0; j < sections[i].body.length; j++) { - if (sections[i].body[j].key === 'Style') { - self.writeFontToFS(sections[i].body[j].value.Fontname) + for (var j = 0; j < sections[i].body.length; j++) { + if (sections[i].body[j].key === "Style") { + self.writeFontToFS(sections[i].body[j].value["Fontname"]) } } } - const regex = /\\fn([^\\}]*?)[\\}]/g - let matches + var regex = /\\fn([^\\}]*?)[\\}]/g; + var matches; while (matches = regex.exec(self.subContent)) { self.writeFontToFS(matches[1]) } } if (self.subContent) { - Module.FS.writeFile('/sub.ass', self.subContent) + Module["FS"].writeFile("/sub.ass", self.subContent) } - self.subContent = null - const fontFiles = self.fontFiles || [] + self.subContent = null; + var fontFiles = self.fontFiles || []; for (i = 0; i < fontFiles.length; i++) { - Module.FS_createPreloadedFile('/fonts', 'font' + i + '-' + fontFiles[i].split('/').pop(), fontFiles[i], true, true) + Module["FS_createPreloadedFile"]("/fonts", "font" + i + "-" + fontFiles[i].split("/").pop(), fontFiles[i], true, true) } -}) -Module.onRuntimeInitialized = function () { - self.octObj = new Module.SubtitleOctopus() - self.changed = Module._malloc(4) - self.octObj.initLibrary(screen.width, screen.height) - self.octObj.setDropAnimations(!!self.dropAllAnimations) - self.octObj.createTrack('/sub.ass') - self.ass_track = self.octObj.track - self.ass_library = self.octObj.ass_library - self.ass_renderer = self.octObj.ass_renderer +}); +Module["onRuntimeInitialized"] = function () { + self.octObj = new Module.SubtitleOctopus; + self.changed = Module._malloc(4); + self.octObj.initLibrary(screen.width, screen.height); + self.octObj.setDropAnimations(!!self.dropAllAnimations); + self.octObj.createTrack("/sub.ass"); + self.ass_track = self.octObj.track; + self.ass_library = self.octObj.ass_library; + self.ass_renderer = self.octObj.ass_renderer; if (self.libassMemoryLimit > 0 || self.libassGlyphLimit > 0) { self.octObj.setMemoryLimits(self.libassGlyphLimit, self.libassMemoryLimit) } -} -Module.print = function (text) { - if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ') +}; +Module["print"] = function (text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(" "); console.log(text) -} -Module.printErr = function (text) { - if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(' ') +}; +Module["printErr"] = function (text) { + if (arguments.length > 1) text = Array.prototype.slice.call(arguments).join(" "); console.error(text) -} +}; if (!hasNativeConsole) { var console = { log: function (x) { - if (typeof dump === 'function') dump('log: ' + x + '\n') + if (typeof dump === "function") dump("log: " + x + "\n") }, debug: function (x) { - if (typeof dump === 'function') dump('debug: ' + x + '\n') + if (typeof dump === "function") dump("debug: " + x + "\n") }, info: function (x) { - if (typeof dump === 'function') dump('info: ' + x + '\n') + if (typeof dump === "function") dump("info: " + x + "\n") }, warn: function (x) { - if (typeof dump === 'function') dump('warn: ' + x + '\n') + if (typeof dump === "function") dump("warn: " + x + "\n") }, error: function (x) { - if (typeof dump === 'function') dump('error: ' + x + '\n') + if (typeof dump === "function") dump("error: " + x + "\n") } } } -if ('performance' in self === false) { +if ("performance" in self === false) { self.performance = {} } Date.now = Date.now || function () { - return (new Date()).getTime() -} -if ('now' in self.performance === false) { - let nowOffset = Date.now() + return (new Date).getTime() +}; +if ("now" in self.performance === false) { + var nowOffset = Date.now(); if (performance.timing && performance.timing.navigationStart) { nowOffset = performance.timing.navigationStart } - self.performance.now = function now () { + self.performance.now = function now() { return Date.now() - nowOffset } -} (function (f) { - if (typeof exports === 'object' && typeof module !== 'undefined') { +}(function (f) { + if (typeof exports === "object" && typeof module !== "undefined") { module.exports = f() - } else if (typeof define === 'function' && define.amd) { + } else if (typeof define === "function" && define.amd) { define([], f) } else { - let g - if (typeof window !== 'undefined') { + var g; + if (typeof window !== "undefined") { g = window - } else if (typeof global !== 'undefined') { + } else if (typeof global !== "undefined") { g = global - } else if (typeof self !== 'undefined') { + } else if (typeof self !== "undefined") { g = self } else { g = this @@ -330,152 +353,152 @@ if ('now' in self.performance === false) { g.unbrotli = f() } })(function () { - return (function () { - function r (e, n, t) { - function o (i, f) { + return function () { + function r(e, n, t) { + function o(i, f) { if (!n[i]) { if (!e[i]) { - const c = typeof require === 'function' && require - if (!f && c) return c(i, !0) - if (u) return u(i, !0) - const a = new Error("Cannot find module '" + i + "'") - throw a.code = 'MODULE_NOT_FOUND', a + var c = "function" == typeof require && require; + if (!f && c) return c(i, !0); + if (u) return u(i, !0); + var a = new Error("Cannot find module '" + i + "'"); + throw a.code = "MODULE_NOT_FOUND", a } - const p = n[i] = { + var p = n[i] = { exports: {} - } + }; e[i][0].call(p.exports, function (r) { - const n = e[i][1][r] + var n = e[i][1][r]; return o(n || r) }, p, p.exports, r, e, n, t) } return n[i].exports } - for (var u = typeof require === 'function' && require, i = 0; i < t.length; i++) o(t[i]) + for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) o(t[i]); return o } return r - }())({ + }()({ 1: [function (require, module, exports) { - const BROTLI_READ_SIZE = 4096 - const BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32 - const BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1 - const kBitMask = new Uint32Array([0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215]) + var BROTLI_READ_SIZE = 4096; + var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32; + var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1; + var kBitMask = new Uint32Array([0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215]); - function BrotliBitReader (input) { - this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE) - this.input_ = input + function BrotliBitReader(input) { + this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE); + this.input_ = input; this.reset() } - BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE - BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK + BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE; + BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK; BrotliBitReader.prototype.reset = function () { - this.buf_ptr_ = 0 - this.val_ = 0 - this.pos_ = 0 - this.bit_pos_ = 0 - this.bit_end_pos_ = 0 - this.eos_ = 0 - this.readMoreInput() - for (let i = 0; i < 4; i++) { - this.val_ |= this.buf_[this.pos_] << 8 * i + this.buf_ptr_ = 0; + this.val_ = 0; + this.pos_ = 0; + this.bit_pos_ = 0; + this.bit_end_pos_ = 0; + this.eos_ = 0; + this.readMoreInput(); + for (var i = 0; i < 4; i++) { + this.val_ |= this.buf_[this.pos_] << 8 * i; ++this.pos_ } return this.bit_end_pos_ > 0 - } + }; BrotliBitReader.prototype.readMoreInput = function () { if (this.bit_end_pos_ > 256) { - return null + return } else if (this.eos_) { - if (this.bit_pos_ > this.bit_end_pos_) throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_) + if (this.bit_pos_ > this.bit_end_pos_) throw new Error("Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_) } else { - const dst = this.buf_ptr_ - const bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE) + var dst = this.buf_ptr_; + var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE); if (bytes_read < 0) { - throw new Error('Unexpected end of input') + throw new Error("Unexpected end of input") } if (bytes_read < BROTLI_READ_SIZE) { - this.eos_ = 1 + this.eos_ = 1; for (var p = 0; p < 32; p++) this.buf_[dst + bytes_read + p] = 0 } if (dst === 0) { - for (var p = 0; p < 32; p++) this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p] + for (var p = 0; p < 32; p++) this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p]; this.buf_ptr_ = BROTLI_READ_SIZE } else { this.buf_ptr_ = 0 } this.bit_end_pos_ += bytes_read << 3 } - } + }; BrotliBitReader.prototype.fillBitWindow = function () { while (this.bit_pos_ >= 8) { - this.val_ >>>= 8 - this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24 - ++this.pos_ - this.bit_pos_ = this.bit_pos_ - 8 >>> 0 + this.val_ >>>= 8; + this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24; + ++this.pos_; + this.bit_pos_ = this.bit_pos_ - 8 >>> 0; this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0 } - } + }; BrotliBitReader.prototype.readBits = function (n_bits) { if (32 - this.bit_pos_ < n_bits) { this.fillBitWindow() } - const val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits] - this.bit_pos_ += n_bits + var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits]; + this.bit_pos_ += n_bits; return val - } + }; module.exports = BrotliBitReader }, {}], 2: [function (require, module, exports) { - exports.lookup = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) + exports.lookup = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); exports.lookupOffsets = new Uint16Array([1024, 1536, 1280, 1536, 0, 256, 768, 512]) }, {}], 3: [function (require, module, exports) { - const BrotliInput = require('./streams').BrotliInput - const BrotliOutput = require('./streams').BrotliOutput - const BrotliBitReader = require('./bit_reader') - const BrotliDictionary = require('./dictionary') - const HuffmanCode = require('./huffman').HuffmanCode - const BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable - const Context = require('./context') - const Prefix = require('./prefix') - const Transform = require('./transform') - const kDefaultCodeLength = 8 - const kCodeLengthRepeatCode = 16 - const kNumLiteralCodes = 256 - const kNumInsertAndCopyCodes = 704 - const kNumBlockLengthCodes = 26 - const kLiteralContextBits = 6 - const kDistanceContextBits = 2 - const HUFFMAN_TABLE_BITS = 8 - const HUFFMAN_TABLE_MASK = 255 - const HUFFMAN_MAX_TABLE_SIZE = 1080 - const CODE_LENGTH_CODES = 18 - const kCodeLengthCodeOrder = new Uint8Array([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]) - const NUM_DISTANCE_SHORT_CODES = 16 - const kDistanceShortCodeIndexOffset = new Uint8Array([3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2]) - const kDistanceShortCodeValueOffset = new Int8Array([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]) - const kMaxHuffmanTableSize = new Uint16Array([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]) + var BrotliInput = require("./streams").BrotliInput; + var BrotliOutput = require("./streams").BrotliOutput; + var BrotliBitReader = require("./bit_reader"); + var BrotliDictionary = require("./dictionary"); + var HuffmanCode = require("./huffman").HuffmanCode; + var BrotliBuildHuffmanTable = require("./huffman").BrotliBuildHuffmanTable; + var Context = require("./context"); + var Prefix = require("./prefix"); + var Transform = require("./transform"); + var kDefaultCodeLength = 8; + var kCodeLengthRepeatCode = 16; + var kNumLiteralCodes = 256; + var kNumInsertAndCopyCodes = 704; + var kNumBlockLengthCodes = 26; + var kLiteralContextBits = 6; + var kDistanceContextBits = 2; + var HUFFMAN_TABLE_BITS = 8; + var HUFFMAN_TABLE_MASK = 255; + var HUFFMAN_MAX_TABLE_SIZE = 1080; + var CODE_LENGTH_CODES = 18; + var kCodeLengthCodeOrder = new Uint8Array([1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]); + var NUM_DISTANCE_SHORT_CODES = 16; + var kDistanceShortCodeIndexOffset = new Uint8Array([3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2]); + var kDistanceShortCodeValueOffset = new Int8Array([0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]); + var kMaxHuffmanTableSize = new Uint16Array([256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080]); - function DecodeWindowBits (br) { - let n + function DecodeWindowBits(br) { + var n; if (br.readBits(1) === 0) { return 16 } - n = br.readBits(3) + n = br.readBits(3); if (n > 0) { return 17 + n } - n = br.readBits(3) + n = br.readBits(3); if (n > 0) { return 8 + n } return 17 } - function DecodeVarLenUint8 (br) { + function DecodeVarLenUint8(br) { if (br.readBits(1)) { - const nbits = br.readBits(3) + var nbits = br.readBits(3); if (nbits === 0) { return 1 } else { @@ -485,160 +508,160 @@ if ('now' in self.performance === false) { return 0 } - function MetaBlockLength () { - this.meta_block_length = 0 - this.input_end = 0 - this.is_uncompressed = 0 + function MetaBlockLength() { + this.meta_block_length = 0; + this.input_end = 0; + this.is_uncompressed = 0; this.is_metadata = false } - function DecodeMetaBlockLength (br) { - const out = new MetaBlockLength() - let size_nibbles - let size_bytes - let i - out.input_end = br.readBits(1) + function DecodeMetaBlockLength(br) { + var out = new MetaBlockLength; + var size_nibbles; + var size_bytes; + var i; + out.input_end = br.readBits(1); if (out.input_end && br.readBits(1)) { return out } - size_nibbles = br.readBits(2) + 4 + size_nibbles = br.readBits(2) + 4; if (size_nibbles === 7) { - out.is_metadata = true - if (br.readBits(1) !== 0) throw new Error('Invalid reserved bit') - size_bytes = br.readBits(2) - if (size_bytes === 0) return out + out.is_metadata = true; + if (br.readBits(1) !== 0) throw new Error("Invalid reserved bit"); + size_bytes = br.readBits(2); + if (size_bytes === 0) return out; for (i = 0; i < size_bytes; i++) { - const next_byte = br.readBits(8) - if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0) throw new Error('Invalid size byte') + var next_byte = br.readBits(8); + if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0) throw new Error("Invalid size byte"); out.meta_block_length |= next_byte << i * 8 } } else { for (i = 0; i < size_nibbles; ++i) { - const next_nibble = br.readBits(4) - if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0) throw new Error('Invalid size nibble') + var next_nibble = br.readBits(4); + if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0) throw new Error("Invalid size nibble"); out.meta_block_length |= next_nibble << i * 4 } - } ++out.meta_block_length + }++out.meta_block_length; if (!out.input_end && !out.is_metadata) { out.is_uncompressed = br.readBits(1) } return out } - function ReadSymbol (table, index, br) { - let nbits - br.fillBitWindow() - index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK - nbits = table[index].bits - HUFFMAN_TABLE_BITS + function ReadSymbol(table, index, br) { + var nbits; + br.fillBitWindow(); + index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK; + nbits = table[index].bits - HUFFMAN_TABLE_BITS; if (nbits > 0) { - br.bit_pos_ += HUFFMAN_TABLE_BITS - index += table[index].value + br.bit_pos_ += HUFFMAN_TABLE_BITS; + index += table[index].value; index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1 } - br.bit_pos_ += table[index].bits + br.bit_pos_ += table[index].bits; return table[index].value } - function ReadHuffmanCodeLengths (code_length_code_lengths, num_symbols, code_lengths, br) { - let symbol = 0 - let prev_code_len = kDefaultCodeLength - let repeat = 0 - let repeat_code_len = 0 - let space = 32768 - const table = [] - for (let i = 0; i < 32; i++) table.push(new HuffmanCode(0, 0)) - BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES) + function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) { + var symbol = 0; + var prev_code_len = kDefaultCodeLength; + var repeat = 0; + var repeat_code_len = 0; + var space = 32768; + var table = []; + for (var i = 0; i < 32; i++) table.push(new HuffmanCode(0, 0)); + BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES); while (symbol < num_symbols && space > 0) { - let p = 0 - var code_len - br.readMoreInput() - br.fillBitWindow() - p += br.val_ >>> br.bit_pos_ & 31 - br.bit_pos_ += table[p].bits - code_len = table[p].value & 255 + var p = 0; + var code_len; + br.readMoreInput(); + br.fillBitWindow(); + p += br.val_ >>> br.bit_pos_ & 31; + br.bit_pos_ += table[p].bits; + code_len = table[p].value & 255; if (code_len < kCodeLengthRepeatCode) { - repeat = 0 - code_lengths[symbol++] = code_len + repeat = 0; + code_lengths[symbol++] = code_len; if (code_len !== 0) { - prev_code_len = code_len + prev_code_len = code_len; space -= 32768 >> code_len } } else { - const extra_bits = code_len - 14 - var old_repeat - var repeat_delta - let new_len = 0 + var extra_bits = code_len - 14; + var old_repeat; + var repeat_delta; + var new_len = 0; if (code_len === kCodeLengthRepeatCode) { new_len = prev_code_len } if (repeat_code_len !== new_len) { - repeat = 0 + repeat = 0; repeat_code_len = new_len } - old_repeat = repeat + old_repeat = repeat; if (repeat > 0) { - repeat -= 2 + repeat -= 2; repeat <<= extra_bits } - repeat += br.readBits(extra_bits) + 3 - repeat_delta = repeat - old_repeat + repeat += br.readBits(extra_bits) + 3; + repeat_delta = repeat - old_repeat; if (symbol + repeat_delta > num_symbols) { - throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols') + throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols") } - for (let x = 0; x < repeat_delta; x++) code_lengths[symbol + x] = repeat_code_len - symbol += repeat_delta + for (var x = 0; x < repeat_delta; x++) code_lengths[symbol + x] = repeat_code_len; + symbol += repeat_delta; if (repeat_code_len !== 0) { space -= repeat_delta << 15 - repeat_code_len } } } if (space !== 0) { - throw new Error('[ReadHuffmanCodeLengths] space = ' + space) + throw new Error("[ReadHuffmanCodeLengths] space = " + space) } for (; symbol < num_symbols; symbol++) code_lengths[symbol] = 0 } - function ReadHuffmanCode (alphabet_size, tables, table, br) { - let table_size = 0 - let simple_code_or_skip - const code_lengths = new Uint8Array(alphabet_size) - br.readMoreInput() - simple_code_or_skip = br.readBits(2) + function ReadHuffmanCode(alphabet_size, tables, table, br) { + var table_size = 0; + var simple_code_or_skip; + var code_lengths = new Uint8Array(alphabet_size); + br.readMoreInput(); + simple_code_or_skip = br.readBits(2); if (simple_code_or_skip === 1) { - var i - let max_bits_counter = alphabet_size - 1 - let max_bits = 0 - const symbols = new Int32Array(4) - const num_symbols = br.readBits(2) + 1 + var i; + var max_bits_counter = alphabet_size - 1; + var max_bits = 0; + var symbols = new Int32Array(4); + var num_symbols = br.readBits(2) + 1; while (max_bits_counter) { - max_bits_counter >>= 1 + max_bits_counter >>= 1; ++max_bits } for (i = 0; i < num_symbols; ++i) { - symbols[i] = br.readBits(max_bits) % alphabet_size + symbols[i] = br.readBits(max_bits) % alphabet_size; code_lengths[symbols[i]] = 2 } - code_lengths[symbols[0]] = 1 + code_lengths[symbols[0]] = 1; switch (num_symbols) { case 1: - break + break; case 3: if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) { - throw new Error('[ReadHuffmanCode] invalid symbols') + throw new Error("[ReadHuffmanCode] invalid symbols") } - break + break; case 2: if (symbols[0] === symbols[1]) { - throw new Error('[ReadHuffmanCode] invalid symbols') + throw new Error("[ReadHuffmanCode] invalid symbols") } - code_lengths[symbols[1]] = 1 - break + code_lengths[symbols[1]] = 1; + break; case 4: if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[0] === symbols[3] || symbols[1] === symbols[2] || symbols[1] === symbols[3] || symbols[2] === symbols[3]) { - throw new Error('[ReadHuffmanCode] invalid symbols') + throw new Error("[ReadHuffmanCode] invalid symbols") } if (br.readBits(1)) { - code_lengths[symbols[2]] = 3 + code_lengths[symbols[2]] = 3; code_lengths[symbols[3]] = 3 } else { code_lengths[symbols[0]] = 2 @@ -646,46 +669,48 @@ if ('now' in self.performance === false) { break } } else { - var i - const code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES) - let space = 32 - let num_codes = 0 - const huff = [new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)] + var i; + var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES); + var space = 32; + var num_codes = 0; + var huff = [new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)]; for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) { - const code_len_idx = kCodeLengthCodeOrder[i] - let p = 0 - var v - br.fillBitWindow() - p += br.val_ >>> br.bit_pos_ & 15 - br.bit_pos_ += huff[p].bits - v = huff[p].value - code_length_code_lengths[code_len_idx] = v + var code_len_idx = kCodeLengthCodeOrder[i]; + var p = 0; + var v; + br.fillBitWindow(); + p += br.val_ >>> br.bit_pos_ & 15; + br.bit_pos_ += huff[p].bits; + v = huff[p].value; + code_length_code_lengths[code_len_idx] = v; if (v !== 0) { - space -= 32 >> v + space -= 32 >> v; ++num_codes } } - if (!(num_codes === 1 || space === 0)) throw new Error('[ReadHuffmanCode] invalid num_codes or space') + if (!(num_codes === 1 || space === 0)) throw new Error("[ReadHuffmanCode] invalid num_codes or space"); ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br) } - table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size) + table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size); if (table_size === 0) { - throw new Error('[ReadHuffmanCode] BuildHuffmanTable failed: ') + throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ") } return table_size } - function ReadBlockLength (table, index, br) { - const code = ReadSymbol(table, index, br) - const nbits = Prefix.kBlockLengthPrefixCode[code].nbits + function ReadBlockLength(table, index, br) { + var code; + var nbits; + code = ReadSymbol(table, index, br); + nbits = Prefix.kBlockLengthPrefixCode[code].nbits; return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits) } - function TranslateShortCodes (code, ringbuffer, index) { - let val + function TranslateShortCodes(code, ringbuffer, index) { + var val; if (code < NUM_DISTANCE_SHORT_CODES) { - index += kDistanceShortCodeIndexOffset[code] - index &= 3 + index += kDistanceShortCodeIndexOffset[code]; + index &= 3; val = ringbuffer[index] + kDistanceShortCodeValueOffset[code] } else { val = code - NUM_DISTANCE_SHORT_CODES + 1 @@ -693,87 +718,85 @@ if ('now' in self.performance === false) { return val } - function MoveToFront (v, index) { - const value = v[index] - let i = index - for (; i; --i) v[i] = v[i - 1] + function MoveToFront(v, index) { + var value = v[index]; + var i = index; + for (; i; --i) v[i] = v[i - 1]; v[0] = value } - function InverseMoveToFrontTransform (v, v_len) { - const mtf = new Uint8Array(256) - let i + function InverseMoveToFrontTransform(v, v_len) { + var mtf = new Uint8Array(256); + var i; for (i = 0; i < 256; ++i) { mtf[i] = i } for (i = 0; i < v_len; ++i) { - const index = v[i] - v[i] = mtf[index] + var index = v[i]; + v[i] = mtf[index]; if (index) MoveToFront(mtf, index) } } - class HuffmanTreeGroup { - constructor(alphabet_size, num_htrees) { - this.alphabet_size = alphabet_size; - this.num_htrees = num_htrees; - this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5]); - this.htrees = new Uint32Array(num_htrees); - } - decode(br) { - let i; - let table_size; - let next = 0; - for (i = 0; i < this.num_htrees; ++i) { - this.htrees[i] = next; - table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br); - next += table_size; - } - } + function HuffmanTreeGroup(alphabet_size, num_htrees) { + this.alphabet_size = alphabet_size; + this.num_htrees = num_htrees; + this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5]); + this.htrees = new Uint32Array(num_htrees) } + HuffmanTreeGroup.prototype.decode = function (br) { + var i; + var table_size; + var next = 0; + for (i = 0; i < this.num_htrees; ++i) { + this.htrees[i] = next; + table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br); + next += table_size + } + }; - function DecodeContextMap (context_map_size, br) { - const out = { + function DecodeContextMap(context_map_size, br) { + var out = { num_htrees: null, context_map: null - } - let use_rle_for_zeros - let max_run_length_prefix = 0 - let table - let i - br.readMoreInput() - const num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1 - const context_map = out.context_map = new Uint8Array(context_map_size) + }; + var use_rle_for_zeros; + var max_run_length_prefix = 0; + var table; + var i; + br.readMoreInput(); + var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1; + var context_map = out.context_map = new Uint8Array(context_map_size); if (num_htrees <= 1) { return out } - use_rle_for_zeros = br.readBits(1) + use_rle_for_zeros = br.readBits(1); if (use_rle_for_zeros) { max_run_length_prefix = br.readBits(4) + 1 } - table = [] + table = []; for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) { table[i] = new HuffmanCode(0, 0) } - ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br) + ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br); for (i = 0; i < context_map_size;) { - var code - br.readMoreInput() - code = ReadSymbol(table, 0, br) + var code; + br.readMoreInput(); + code = ReadSymbol(table, 0, br); if (code === 0) { - context_map[i] = 0 + context_map[i] = 0; ++i } else if (code <= max_run_length_prefix) { - let reps = 1 + (1 << code) + br.readBits(code) + var reps = 1 + (1 << code) + br.readBits(code); while (--reps) { if (i >= context_map_size) { - throw new Error('[DecodeContextMap] i >= context_map_size') + throw new Error("[DecodeContextMap] i >= context_map_size") } - context_map[i] = 0 + context_map[i] = 0; ++i } } else { - context_map[i] = code - max_run_length_prefix + context_map[i] = code - max_run_length_prefix; ++i } } @@ -783,11 +806,11 @@ if ('now' in self.performance === false) { return out } - function DecodeBlockType (max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) { - const ringbuffer = tree_type * 2 - const index = tree_type - const type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br) - let block_type + function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) { + var ringbuffer = tree_type * 2; + var index = tree_type; + var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br); + var block_type; if (type_code === 0) { block_type = ringbuffers[ringbuffer + (indexes[index] & 1)] } else if (type_code === 1) { @@ -798,176 +821,176 @@ if ('now' in self.performance === false) { if (block_type >= max_block_type) { block_type -= max_block_type } - block_types[tree_type] = block_type - ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type + block_types[tree_type] = block_type; + ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type; ++indexes[index] } - function CopyUncompressedBlockToOutput (output, len, pos, ringbuffer, ringbuffer_mask, br) { - const rb_size = ringbuffer_mask + 1 - let rb_pos = pos & ringbuffer_mask - let br_pos = br.pos_ & BrotliBitReader.IBUF_MASK - let nbytes + function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) { + var rb_size = ringbuffer_mask + 1; + var rb_pos = pos & ringbuffer_mask; + var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK; + var nbytes; if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) { while (len-- > 0) { - br.readMoreInput() - ringbuffer[rb_pos++] = br.readBits(8) + br.readMoreInput(); + ringbuffer[rb_pos++] = br.readBits(8); if (rb_pos === rb_size) { - output.write(ringbuffer, rb_size) + output.write(ringbuffer, rb_size); rb_pos = 0 } } return } if (br.bit_end_pos_ < 32) { - throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32') + throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32") } while (br.bit_pos_ < 32) { - ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_ - br.bit_pos_ += 8 - ++rb_pos + ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_; + br.bit_pos_ += 8; + ++rb_pos; --len } - nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3 + nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3; if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) { - const tail = BrotliBitReader.IBUF_MASK + 1 - br_pos - for (var x = 0; x < tail; x++) ringbuffer[rb_pos + x] = br.buf_[br_pos + x] - nbytes -= tail - rb_pos += tail - len -= tail + var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos; + for (var x = 0; x < tail; x++) ringbuffer[rb_pos + x] = br.buf_[br_pos + x]; + nbytes -= tail; + rb_pos += tail; + len -= tail; br_pos = 0 } - for (var x = 0; x < nbytes; x++) ringbuffer[rb_pos + x] = br.buf_[br_pos + x] - rb_pos += nbytes - len -= nbytes + for (var x = 0; x < nbytes; x++) ringbuffer[rb_pos + x] = br.buf_[br_pos + x]; + rb_pos += nbytes; + len -= nbytes; if (rb_pos >= rb_size) { - output.write(ringbuffer, rb_size) - rb_pos -= rb_size + output.write(ringbuffer, rb_size); + rb_pos -= rb_size; for (var x = 0; x < rb_pos; x++) ringbuffer[x] = ringbuffer[rb_size + x] } while (rb_pos + len >= rb_size) { - nbytes = rb_size - rb_pos + nbytes = rb_size - rb_pos; if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) { - throw new Error('[CopyUncompressedBlockToOutput] not enough bytes') + throw new Error("[CopyUncompressedBlockToOutput] not enough bytes") } - output.write(ringbuffer, rb_size) - len -= nbytes + output.write(ringbuffer, rb_size); + len -= nbytes; rb_pos = 0 } if (br.input_.read(ringbuffer, rb_pos, len) < len) { - throw new Error('[CopyUncompressedBlockToOutput] not enough bytes') + throw new Error("[CopyUncompressedBlockToOutput] not enough bytes") } br.reset() } - function JumpToByteBoundary (br) { - const new_bit_pos = br.bit_pos_ + 7 & ~7 - const pad_bits = br.readBits(new_bit_pos - br.bit_pos_) + function JumpToByteBoundary(br) { + var new_bit_pos = br.bit_pos_ + 7 & ~7; + var pad_bits = br.readBits(new_bit_pos - br.bit_pos_); return pad_bits == 0 } - function BrotliDecompressedSize (buffer) { - const input = new BrotliInput(buffer) - const br = new BrotliBitReader(input) - DecodeWindowBits(br) - const out = DecodeMetaBlockLength(br) + function BrotliDecompressedSize(buffer) { + var input = new BrotliInput(buffer); + var br = new BrotliBitReader(input); + DecodeWindowBits(br); + var out = DecodeMetaBlockLength(br); return out.meta_block_length } - exports.BrotliDecompressedSize = BrotliDecompressedSize + exports.BrotliDecompressedSize = BrotliDecompressedSize; - function BrotliDecompressBuffer (buffer, output_size) { - const input = new BrotliInput(buffer) + function BrotliDecompressBuffer(buffer, output_size) { + var input = new BrotliInput(buffer); if (output_size == null) { output_size = BrotliDecompressedSize(buffer) } - const output_buffer = new Uint8Array(output_size) - const output = new BrotliOutput(output_buffer) - BrotliDecompress(input, output) + var output_buffer = new Uint8Array(output_size); + var output = new BrotliOutput(output_buffer); + BrotliDecompress(input, output); if (output.pos < output.buffer.length) { output.buffer = output.buffer.subarray(0, output.pos) } return output.buffer } - exports.BrotliDecompressBuffer = BrotliDecompressBuffer + exports.BrotliDecompressBuffer = BrotliDecompressBuffer; - function BrotliDecompress (input, output) { - let i - let pos = 0 - let input_end = 0 - let window_bits = 0 - let max_backward_distance - let max_distance = 0 - let ringbuffer_size - let ringbuffer_mask - let ringbuffer - let ringbuffer_end - const dist_rb = [16, 15, 11, 4] - let dist_rb_idx = 0 - let prev_byte1 = 0 - let prev_byte2 = 0 - const hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)] - let block_type_trees - let block_len_trees - let br - const kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE - br = new BrotliBitReader(input) - window_bits = DecodeWindowBits(br) - max_backward_distance = (1 << window_bits) - 16 - ringbuffer_size = 1 << window_bits - ringbuffer_mask = ringbuffer_size - 1 - ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength) - ringbuffer_end = ringbuffer_size - block_type_trees = [] - block_len_trees = [] - for (let x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) { - block_type_trees[x] = new HuffmanCode(0, 0) + function BrotliDecompress(input, output) { + var i; + var pos = 0; + var input_end = 0; + var window_bits = 0; + var max_backward_distance; + var max_distance = 0; + var ringbuffer_size; + var ringbuffer_mask; + var ringbuffer; + var ringbuffer_end; + var dist_rb = [16, 15, 11, 4]; + var dist_rb_idx = 0; + var prev_byte1 = 0; + var prev_byte2 = 0; + var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)]; + var block_type_trees; + var block_len_trees; + var br; + var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE; + br = new BrotliBitReader(input); + window_bits = DecodeWindowBits(br); + max_backward_distance = (1 << window_bits) - 16; + ringbuffer_size = 1 << window_bits; + ringbuffer_mask = ringbuffer_size - 1; + ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength); + ringbuffer_end = ringbuffer_size; + block_type_trees = []; + block_len_trees = []; + for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) { + block_type_trees[x] = new HuffmanCode(0, 0); block_len_trees[x] = new HuffmanCode(0, 0) } while (!input_end) { - let meta_block_remaining_len = 0 - var is_uncompressed - const block_length = [1 << 28, 1 << 28, 1 << 28] - const block_type = [0] - const num_block_types = [1, 1, 1] - const block_type_rb = [0, 1, 0, 1, 0, 1] - const block_type_rb_index = [0] - var distance_postfix_bits - var num_direct_distance_codes - var distance_postfix_mask - var num_distance_codes - let context_map = null - let context_modes = null - var num_literal_htrees - let dist_context_map = null - var num_dist_htrees - let context_offset = 0 - let context_map_slice = null - let literal_htree_index = 0 - let dist_context_offset = 0 - let dist_context_map_slice = null - let dist_htree_index = 0 - let context_lookup_offset1 = 0 - let context_lookup_offset2 = 0 - var context_mode - var htree_command + var meta_block_remaining_len = 0; + var is_uncompressed; + var block_length = [1 << 28, 1 << 28, 1 << 28]; + var block_type = [0]; + var num_block_types = [1, 1, 1]; + var block_type_rb = [0, 1, 0, 1, 0, 1]; + var block_type_rb_index = [0]; + var distance_postfix_bits; + var num_direct_distance_codes; + var distance_postfix_mask; + var num_distance_codes; + var context_map = null; + var context_modes = null; + var num_literal_htrees; + var dist_context_map = null; + var num_dist_htrees; + var context_offset = 0; + var context_map_slice = null; + var literal_htree_index = 0; + var dist_context_offset = 0; + var dist_context_map_slice = null; + var dist_htree_index = 0; + var context_lookup_offset1 = 0; + var context_lookup_offset2 = 0; + var context_mode; + var htree_command; for (i = 0; i < 3; ++i) { - hgroup[i].codes = null + hgroup[i].codes = null; hgroup[i].htrees = null } - br.readMoreInput() - const _out = DecodeMetaBlockLength(br) - meta_block_remaining_len = _out.meta_block_length + br.readMoreInput(); + var _out = DecodeMetaBlockLength(br); + meta_block_remaining_len = _out.meta_block_length; if (pos + meta_block_remaining_len > output.buffer.length) { - const tmp = new Uint8Array(pos + meta_block_remaining_len) - tmp.set(output.buffer) + var tmp = new Uint8Array(pos + meta_block_remaining_len); + tmp.set(output.buffer); output.buffer = tmp } - input_end = _out.input_end - is_uncompressed = _out.is_uncompressed + input_end = _out.input_end; + is_uncompressed = _out.is_uncompressed; if (_out.is_metadata) { - JumpToByteBoundary(br) + JumpToByteBoundary(br); for (; meta_block_remaining_len > 0; --meta_block_remaining_len) { - br.readMoreInput() + br.readMoreInput(); br.readBits(8) } continue @@ -976,275 +999,275 @@ if ('now' in self.performance === false) { continue } if (is_uncompressed) { - br.bit_pos_ = br.bit_pos_ + 7 & ~7 - CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos, ringbuffer, ringbuffer_mask, br) - pos += meta_block_remaining_len + br.bit_pos_ = br.bit_pos_ + 7 & ~7; + CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos, ringbuffer, ringbuffer_mask, br); + pos += meta_block_remaining_len; continue } for (i = 0; i < 3; ++i) { - num_block_types[i] = DecodeVarLenUint8(br) + 1 + num_block_types[i] = DecodeVarLenUint8(br) + 1; if (num_block_types[i] >= 2) { - ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br) - ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br) - block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br) + ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br); + ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br); + block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br); block_type_rb_index[i] = 1 } } - br.readMoreInput() - distance_postfix_bits = br.readBits(2) - num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits) - distance_postfix_mask = (1 << distance_postfix_bits) - 1 - num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits) - context_modes = new Uint8Array(num_block_types[0]) + br.readMoreInput(); + distance_postfix_bits = br.readBits(2); + num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits); + distance_postfix_mask = (1 << distance_postfix_bits) - 1; + num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits); + context_modes = new Uint8Array(num_block_types[0]); for (i = 0; i < num_block_types[0]; ++i) { - br.readMoreInput() + br.readMoreInput(); context_modes[i] = br.readBits(2) << 1 } - const _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br) - num_literal_htrees = _o1.num_htrees - context_map = _o1.context_map - const _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br) - num_dist_htrees = _o2.num_htrees - dist_context_map = _o2.context_map - hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees) - hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]) - hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees) + var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br); + num_literal_htrees = _o1.num_htrees; + context_map = _o1.context_map; + var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br); + num_dist_htrees = _o2.num_htrees; + dist_context_map = _o2.context_map; + hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees); + hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]); + hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees); for (i = 0; i < 3; ++i) { hgroup[i].decode(br) } - context_map_slice = 0 - dist_context_map_slice = 0 - context_mode = context_modes[block_type[0]] - context_lookup_offset1 = Context.lookupOffsets[context_mode] - context_lookup_offset2 = Context.lookupOffsets[context_mode + 1] - htree_command = hgroup[1].htrees[0] + context_map_slice = 0; + dist_context_map_slice = 0; + context_mode = context_modes[block_type[0]]; + context_lookup_offset1 = Context.lookupOffsets[context_mode]; + context_lookup_offset2 = Context.lookupOffsets[context_mode + 1]; + htree_command = hgroup[1].htrees[0]; while (meta_block_remaining_len > 0) { - var cmd_code - var range_idx - var insert_code - var copy_code - var insert_length - var copy_length - var distance_code - var distance - var context - var j - var copy_dst - br.readMoreInput() + var cmd_code; + var range_idx; + var insert_code; + var copy_code; + var insert_length; + var copy_length; + var distance_code; + var distance; + var context; + var j; + var copy_dst; + br.readMoreInput(); if (block_length[1] === 0) { - DecodeBlockType(num_block_types[1], block_type_trees, 1, block_type, block_type_rb, block_type_rb_index, br) - block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br) + DecodeBlockType(num_block_types[1], block_type_trees, 1, block_type, block_type_rb, block_type_rb_index, br); + block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br); htree_command = hgroup[1].htrees[block_type[1]] - } --block_length[1] - cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br) - range_idx = cmd_code >> 6 + }--block_length[1]; + cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br); + range_idx = cmd_code >> 6; if (range_idx >= 2) { - range_idx -= 2 + range_idx -= 2; distance_code = -1 } else { distance_code = 0 } - insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7) - copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7) - insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits) - copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits) - prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask] - prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask] + insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7); + copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7); + insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits); + copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits); + prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; + prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]; for (j = 0; j < insert_length; ++j) { - br.readMoreInput() + br.readMoreInput(); if (block_length[0] === 0) { - DecodeBlockType(num_block_types[0], block_type_trees, 0, block_type, block_type_rb, block_type_rb_index, br) - block_length[0] = ReadBlockLength(block_len_trees, 0, br) - context_offset = block_type[0] << kLiteralContextBits - context_map_slice = context_offset - context_mode = context_modes[block_type[0]] - context_lookup_offset1 = Context.lookupOffsets[context_mode] + DecodeBlockType(num_block_types[0], block_type_trees, 0, block_type, block_type_rb, block_type_rb_index, br); + block_length[0] = ReadBlockLength(block_len_trees, 0, br); + context_offset = block_type[0] << kLiteralContextBits; + context_map_slice = context_offset; + context_mode = context_modes[block_type[0]]; + context_lookup_offset1 = Context.lookupOffsets[context_mode]; context_lookup_offset2 = Context.lookupOffsets[context_mode + 1] } - context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2] - literal_htree_index = context_map[context_map_slice + context] - --block_length[0] - prev_byte2 = prev_byte1 - prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br) - ringbuffer[pos & ringbuffer_mask] = prev_byte1 + context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2]; + literal_htree_index = context_map[context_map_slice + context]; + --block_length[0]; + prev_byte2 = prev_byte1; + prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br); + ringbuffer[pos & ringbuffer_mask] = prev_byte1; if ((pos & ringbuffer_mask) === ringbuffer_mask) { output.write(ringbuffer, ringbuffer_size) - } ++pos + }++pos } - meta_block_remaining_len -= insert_length - if (meta_block_remaining_len <= 0) break + meta_block_remaining_len -= insert_length; + if (meta_block_remaining_len <= 0) break; if (distance_code < 0) { - var context - br.readMoreInput() + var context; + br.readMoreInput(); if (block_length[2] === 0) { - DecodeBlockType(num_block_types[2], block_type_trees, 2, block_type, block_type_rb, block_type_rb_index, br) - block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br) - dist_context_offset = block_type[2] << kDistanceContextBits + DecodeBlockType(num_block_types[2], block_type_trees, 2, block_type, block_type_rb, block_type_rb_index, br); + block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br); + dist_context_offset = block_type[2] << kDistanceContextBits; dist_context_map_slice = dist_context_offset - } --block_length[2] - context = (copy_length > 4 ? 3 : copy_length - 2) & 255 - dist_htree_index = dist_context_map[dist_context_map_slice + context] - distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br) + }--block_length[2]; + context = (copy_length > 4 ? 3 : copy_length - 2) & 255; + dist_htree_index = dist_context_map[dist_context_map_slice + context]; + distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br); if (distance_code >= num_direct_distance_codes) { - var nbits - var postfix - var offset - distance_code -= num_direct_distance_codes - postfix = distance_code & distance_postfix_mask - distance_code >>= distance_postfix_bits - nbits = (distance_code >> 1) + 1 - offset = (2 + (distance_code & 1) << nbits) - 4 + var nbits; + var postfix; + var offset; + distance_code -= num_direct_distance_codes; + postfix = distance_code & distance_postfix_mask; + distance_code >>= distance_postfix_bits; + nbits = (distance_code >> 1) + 1; + offset = (2 + (distance_code & 1) << nbits) - 4; distance_code = num_direct_distance_codes + (offset + br.readBits(nbits) << distance_postfix_bits) + postfix } } - distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx) + distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx); if (distance < 0) { - throw new Error('[BrotliDecompress] invalid distance') + throw new Error("[BrotliDecompress] invalid distance") } if (pos < max_backward_distance && max_distance !== max_backward_distance) { max_distance = pos } else { max_distance = max_backward_distance } - copy_dst = pos & ringbuffer_mask + copy_dst = pos & ringbuffer_mask; if (distance > max_distance) { if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) { - var offset = BrotliDictionary.offsetsByLength[copy_length] - const word_id = distance - max_distance - 1 - const shift = BrotliDictionary.sizeBitsByLength[copy_length] - const mask = (1 << shift) - 1 - const word_idx = word_id & mask - const transform_idx = word_id >> shift - offset += word_idx * copy_length + var offset = BrotliDictionary.offsetsByLength[copy_length]; + var word_id = distance - max_distance - 1; + var shift = BrotliDictionary.sizeBitsByLength[copy_length]; + var mask = (1 << shift) - 1; + var word_idx = word_id & mask; + var transform_idx = word_id >> shift; + offset += word_idx * copy_length; if (transform_idx < Transform.kNumTransforms) { - const len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx) - copy_dst += len - pos += len - meta_block_remaining_len -= len + var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx); + copy_dst += len; + pos += len; + meta_block_remaining_len -= len; if (copy_dst >= ringbuffer_end) { - output.write(ringbuffer, ringbuffer_size) - for (let _x = 0; _x < copy_dst - ringbuffer_end; _x++) ringbuffer[_x] = ringbuffer[ringbuffer_end + _x] + output.write(ringbuffer, ringbuffer_size); + for (var _x = 0; _x < copy_dst - ringbuffer_end; _x++) ringbuffer[_x] = ringbuffer[ringbuffer_end + _x] } } else { - throw new Error('Invalid backward reference. pos: ' + pos + ' distance: ' + distance + ' len: ' + copy_length + ' bytes left: ' + meta_block_remaining_len) + throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len) } } else { - throw new Error('Invalid backward reference. pos: ' + pos + ' distance: ' + distance + ' len: ' + copy_length + ' bytes left: ' + meta_block_remaining_len) + throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len) } } else { if (distance_code > 0) { - dist_rb[dist_rb_idx & 3] = distance + dist_rb[dist_rb_idx & 3] = distance; ++dist_rb_idx } if (copy_length > meta_block_remaining_len) { - throw new Error('Invalid backward reference. pos: ' + pos + ' distance: ' + distance + ' len: ' + copy_length + ' bytes left: ' + meta_block_remaining_len) + throw new Error("Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len) } for (j = 0; j < copy_length; ++j) { - ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask] + ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask]; if ((pos & ringbuffer_mask) === ringbuffer_mask) { output.write(ringbuffer, ringbuffer_size) - } ++pos + }++pos; --meta_block_remaining_len } } - prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask] + prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask] } pos &= 1073741823 } output.write(ringbuffer, pos & ringbuffer_mask) } - exports.BrotliDecompress = BrotliDecompress + exports.BrotliDecompress = BrotliDecompress; BrotliDictionary.init() }, { - './bit_reader': 1, - './context': 2, - './dictionary': 6, - './huffman': 7, - './prefix': 8, - './streams': 9, - './transform': 10 + "./bit_reader": 1, + "./context": 2, + "./dictionary": 6, + "./huffman": 7, + "./prefix": 8, + "./streams": 9, + "./transform": 10 }], 4: [function (require, module, exports) { - const base64 = require('base64-js') + var base64 = require("base64-js"); exports.init = function () { - const BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer - const compressed = base64.toByteArray(require('./dictionary.bin.js')) + var BrotliDecompressBuffer = require("./decode").BrotliDecompressBuffer; + var compressed = base64.toByteArray(require("./dictionary.bin.js")); return BrotliDecompressBuffer(compressed) } }, { - './decode': 3, - './dictionary.bin.js': 5, - 'base64-js': 12 + "./decode": 3, + "./dictionary.bin.js": 5, + "base64-js": 12 }], 5: [function (require, module, exports) { - module.exports = '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' + module.exports = "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" }, {}], 6: [function (require, module, exports) { - const data = require('./dictionary-browser') + var data = require("./dictionary-browser"); exports.init = function () { exports.dictionary = data.init() - } - exports.offsetsByLength = new Uint32Array([0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280, 122016]) - exports.sizeBitsByLength = new Uint8Array([0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 5]) - exports.minDictionaryWordLength = 4 + }; + exports.offsetsByLength = new Uint32Array([0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280, 122016]); + exports.sizeBitsByLength = new Uint8Array([0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 5]); + exports.minDictionaryWordLength = 4; exports.maxDictionaryWordLength = 24 }, { - './dictionary-browser': 4 + "./dictionary-browser": 4 }], 7: [function (require, module, exports) { - function HuffmanCode (bits, value) { - this.bits = bits + function HuffmanCode(bits, value) { + this.bits = bits; this.value = value } - exports.HuffmanCode = HuffmanCode - const MAX_LENGTH = 15 + exports.HuffmanCode = HuffmanCode; + var MAX_LENGTH = 15; - function GetNextKey (key, len) { - let step = 1 << len - 1 + function GetNextKey(key, len) { + var step = 1 << len - 1; while (key & step) { step >>= 1 } return (key & step - 1) + step } - function ReplicateValue (table, i, step, end, code) { + function ReplicateValue(table, i, step, end, code) { do { - end -= step + end -= step; table[i + end] = new HuffmanCode(code.bits, code.value) } while (end > 0) } - function NextTableBitSize (count, len, root_bits) { - let left = 1 << len - root_bits + function NextTableBitSize(count, len, root_bits) { + var left = 1 << len - root_bits; while (len < MAX_LENGTH) { - left -= count[len] - if (left <= 0) break - ++len + left -= count[len]; + if (left <= 0) break; + ++len; left <<= 1 } return len - root_bits } exports.BrotliBuildHuffmanTable = function (root_table, table, root_bits, code_lengths, code_lengths_size) { - const start_table = table - let code - let len - let symbol - let key - let step - let low - let mask - let table_bits - let table_size - let total_size - let sorted - const count = new Int32Array(MAX_LENGTH + 1) - const offset = new Int32Array(MAX_LENGTH + 1) - sorted = new Int32Array(code_lengths_size) + var start_table = table; + var code; + var len; + var symbol; + var key; + var step; + var low; + var mask; + var table_bits; + var table_size; + var total_size; + var sorted; + var count = new Int32Array(MAX_LENGTH + 1); + var offset = new Int32Array(MAX_LENGTH + 1); + sorted = new Int32Array(code_lengths_size); for (symbol = 0; symbol < code_lengths_size; symbol++) { count[code_lengths[symbol]]++ } - offset[1] = 0 + offset[1] = 0; for (len = 1; len < MAX_LENGTH; len++) { offset[len + 1] = offset[len] + count[len] } @@ -1253,38 +1276,38 @@ if ('now' in self.performance === false) { sorted[offset[code_lengths[symbol]]++] = symbol } } - table_bits = root_bits - table_size = 1 << table_bits - total_size = table_size + table_bits = root_bits; + table_size = 1 << table_bits; + total_size = table_size; if (offset[MAX_LENGTH] === 1) { for (key = 0; key < total_size; ++key) { root_table[table + key] = new HuffmanCode(0, sorted[0] & 65535) } return total_size } - key = 0 - symbol = 0 + key = 0; + symbol = 0; for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) { for (; count[len] > 0; --count[len]) { - code = new HuffmanCode(len & 255, sorted[symbol++] & 65535) - ReplicateValue(root_table, table + key, step, table_size, code) + code = new HuffmanCode(len & 255, sorted[symbol++] & 65535); + ReplicateValue(root_table, table + key, step, table_size, code); key = GetNextKey(key, len) } } - mask = total_size - 1 - low = -1 + mask = total_size - 1; + low = -1; for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) { for (; count[len] > 0; --count[len]) { if ((key & mask) !== low) { - table += table_size - table_bits = NextTableBitSize(count, len, root_bits) - table_size = 1 << table_bits - total_size += table_size - low = key & mask + table += table_size; + table_bits = NextTableBitSize(count, len, root_bits); + table_size = 1 << table_bits; + total_size += table_size; + low = key & mask; root_table[start_table + low] = new HuffmanCode(table_bits + root_bits & 255, table - start_table - low & 65535) } - code = new HuffmanCode(len - root_bits & 255, sorted[symbol++] & 65535) - ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code) + code = new HuffmanCode(len - root_bits & 255, sorted[symbol++] & 65535); + ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code); key = GetNextKey(key, len) } } @@ -1292,78 +1315,78 @@ if ('now' in self.performance === false) { } }, {}], 8: [function (require, module, exports) { - function PrefixCodeRange (offset, nbits) { - this.offset = offset + function PrefixCodeRange(offset, nbits) { + this.offset = offset; this.nbits = nbits } - exports.kBlockLengthPrefixCode = [new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2), new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3), new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4), new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5), new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8), new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12), new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)] - exports.kInsertLengthPrefixCode = [new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1), new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3), new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5), new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9), new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24)] - exports.kCopyLengthPrefixCode = [new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0), new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2), new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4), new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7), new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24)] - exports.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16] + exports.kBlockLengthPrefixCode = [new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2), new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3), new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4), new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5), new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8), new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12), new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)]; + exports.kInsertLengthPrefixCode = [new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1), new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3), new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5), new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9), new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24)]; + exports.kCopyLengthPrefixCode = [new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0), new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2), new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4), new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7), new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24)]; + exports.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16]; exports.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16] }, {}], 9: [function (require, module, exports) { - function BrotliInput (buffer) { - this.buffer = buffer + function BrotliInput(buffer) { + this.buffer = buffer; this.pos = 0 } BrotliInput.prototype.read = function (buf, i, count) { if (this.pos + count > this.buffer.length) { count = this.buffer.length - this.pos } - for (let p = 0; p < count; p++) buf[i + p] = this.buffer[this.pos + p] - this.pos += count + for (var p = 0; p < count; p++) buf[i + p] = this.buffer[this.pos + p]; + this.pos += count; return count - } - exports.BrotliInput = BrotliInput + }; + exports.BrotliInput = BrotliInput; - function BrotliOutput (buf) { - this.buffer = buf + function BrotliOutput(buf) { + this.buffer = buf; this.pos = 0 } BrotliOutput.prototype.write = function (buf, count) { - if (this.pos + count > this.buffer.length) throw new Error('Output buffer is not large enough') - this.buffer.set(buf.subarray(0, count), this.pos) - this.pos += count + if (this.pos + count > this.buffer.length) throw new Error("Output buffer is not large enough"); + this.buffer.set(buf.subarray(0, count), this.pos); + this.pos += count; return count - } + }; exports.BrotliOutput = BrotliOutput }, {}], 10: [function (require, module, exports) { - const BrotliDictionary = require('./dictionary') - const kIdentity = 0 - const kOmitLast1 = 1 - const kOmitLast2 = 2 - const kOmitLast3 = 3 - const kOmitLast4 = 4 - const kOmitLast5 = 5 - const kOmitLast6 = 6 - const kOmitLast7 = 7 - const kOmitLast8 = 8 - const kOmitLast9 = 9 - const kUppercaseFirst = 10 - const kUppercaseAll = 11 - const kOmitFirst1 = 12 - const kOmitFirst2 = 13 - const kOmitFirst3 = 14 - const kOmitFirst4 = 15 - const kOmitFirst5 = 16 - const kOmitFirst6 = 17 - const kOmitFirst7 = 18 - const kOmitFirst9 = 20 + var BrotliDictionary = require("./dictionary"); + var kIdentity = 0; + var kOmitLast1 = 1; + var kOmitLast2 = 2; + var kOmitLast3 = 3; + var kOmitLast4 = 4; + var kOmitLast5 = 5; + var kOmitLast6 = 6; + var kOmitLast7 = 7; + var kOmitLast8 = 8; + var kOmitLast9 = 9; + var kUppercaseFirst = 10; + var kUppercaseAll = 11; + var kOmitFirst1 = 12; + var kOmitFirst2 = 13; + var kOmitFirst3 = 14; + var kOmitFirst4 = 15; + var kOmitFirst5 = 16; + var kOmitFirst6 = 17; + var kOmitFirst7 = 18; + var kOmitFirst9 = 20; - function Transform (prefix, transform, suffix) { - this.prefix = new Uint8Array(prefix.length) - this.transform = transform - this.suffix = new Uint8Array(suffix.length) - for (var i = 0; i < prefix.length; i++) this.prefix[i] = prefix.charCodeAt(i) + function Transform(prefix, transform, suffix) { + this.prefix = new Uint8Array(prefix.length); + this.transform = transform; + this.suffix = new Uint8Array(suffix.length); + for (var i = 0; i < prefix.length; i++) this.prefix[i] = prefix.charCodeAt(i); for (var i = 0; i < suffix.length; i++) this.suffix[i] = suffix.charCodeAt(i) } - const kTransforms = [new Transform('', kIdentity, ''), new Transform('', kIdentity, ' '), new Transform(' ', kIdentity, ' '), new Transform('', kOmitFirst1, ''), new Transform('', kUppercaseFirst, ' '), new Transform('', kIdentity, ' the '), new Transform(' ', kIdentity, ''), new Transform('s ', kIdentity, ' '), new Transform('', kIdentity, ' of '), new Transform('', kUppercaseFirst, ''), new Transform('', kIdentity, ' and '), new Transform('', kOmitFirst2, ''), new Transform('', kOmitLast1, ''), new Transform(', ', kIdentity, ' '), new Transform('', kIdentity, ', '), new Transform(' ', kUppercaseFirst, ' '), new Transform('', kIdentity, ' in '), new Transform('', kIdentity, ' to '), new Transform('e ', kIdentity, ' '), new Transform('', kIdentity, '"'), new Transform('', kIdentity, '.'), new Transform('', kIdentity, '">'), new Transform('', kIdentity, '\n'), new Transform('', kOmitLast3, ''), new Transform('', kIdentity, ']'), new Transform('', kIdentity, ' for '), new Transform('', kOmitFirst3, ''), new Transform('', kOmitLast2, ''), new Transform('', kIdentity, ' a '), new Transform('', kIdentity, ' that '), new Transform(' ', kUppercaseFirst, ''), new Transform('', kIdentity, '. '), new Transform('.', kIdentity, ''), new Transform(' ', kIdentity, ', '), new Transform('', kOmitFirst4, ''), new Transform('', kIdentity, ' with '), new Transform('', kIdentity, "'"), new Transform('', kIdentity, ' from '), new Transform('', kIdentity, ' by '), new Transform('', kOmitFirst5, ''), new Transform('', kOmitFirst6, ''), new Transform(' the ', kIdentity, ''), new Transform('', kOmitLast4, ''), new Transform('', kIdentity, '. The '), new Transform('', kUppercaseAll, ''), new Transform('', kIdentity, ' on '), new Transform('', kIdentity, ' as '), new Transform('', kIdentity, ' is '), new Transform('', kOmitLast7, ''), new Transform('', kOmitLast1, 'ing '), new Transform('', kIdentity, '\n\t'), new Transform('', kIdentity, ':'), new Transform(' ', kIdentity, '. '), new Transform('', kIdentity, 'ed '), new Transform('', kOmitFirst9, ''), new Transform('', kOmitFirst7, ''), new Transform('', kOmitLast6, ''), new Transform('', kIdentity, '('), new Transform('', kUppercaseFirst, ', '), new Transform('', kOmitLast8, ''), new Transform('', kIdentity, ' at '), new Transform('', kIdentity, 'ly '), new Transform(' the ', kIdentity, ' of '), new Transform('', kOmitLast5, ''), new Transform('', kOmitLast9, ''), new Transform(' ', kUppercaseFirst, ', '), new Transform('', kUppercaseFirst, '"'), new Transform('.', kIdentity, '('), new Transform('', kUppercaseAll, ' '), new Transform('', kUppercaseFirst, '">'), new Transform('', kIdentity, '="'), new Transform(' ', kIdentity, '.'), new Transform('.com/', kIdentity, ''), new Transform(' the ', kIdentity, ' of the '), new Transform('', kUppercaseFirst, "'"), new Transform('', kIdentity, '. This '), new Transform('', kIdentity, ','), new Transform('.', kIdentity, ' '), new Transform('', kUppercaseFirst, '('), new Transform('', kUppercaseFirst, '.'), new Transform('', kIdentity, ' not '), new Transform(' ', kIdentity, '="'), new Transform('', kIdentity, 'er '), new Transform(' ', kUppercaseAll, ' '), new Transform('', kIdentity, 'al '), new Transform(' ', kUppercaseAll, ''), new Transform('', kIdentity, "='"), new Transform('', kUppercaseAll, '"'), new Transform('', kUppercaseFirst, '. '), new Transform(' ', kIdentity, '('), new Transform('', kIdentity, 'ful '), new Transform(' ', kUppercaseFirst, '. '), new Transform('', kIdentity, 'ive '), new Transform('', kIdentity, 'less '), new Transform('', kUppercaseAll, "'"), new Transform('', kIdentity, 'est '), new Transform(' ', kUppercaseFirst, '.'), new Transform('', kUppercaseAll, '">'), new Transform(' ', kIdentity, "='"), new Transform('', kUppercaseFirst, ','), new Transform('', kIdentity, 'ize '), new Transform('', kUppercaseAll, '.'), new Transform('Â ', kIdentity, ''), new Transform(' ', kIdentity, ','), new Transform('', kUppercaseFirst, '="'), new Transform('', kUppercaseAll, '="'), new Transform('', kIdentity, 'ous '), new Transform('', kUppercaseAll, ', '), new Transform('', kUppercaseFirst, "='"), new Transform(' ', kUppercaseFirst, ','), new Transform(' ', kUppercaseAll, '="'), new Transform(' ', kUppercaseAll, ', '), new Transform('', kUppercaseAll, ','), new Transform('', kUppercaseAll, '('), new Transform('', kUppercaseAll, '. '), new Transform(' ', kUppercaseAll, '.'), new Transform('', kUppercaseAll, "='"), new Transform(' ', kUppercaseAll, '. '), new Transform(' ', kUppercaseFirst, '="'), new Transform(' ', kUppercaseAll, "='"), new Transform(' ', kUppercaseFirst, "='")] - exports.kTransforms = kTransforms - exports.kNumTransforms = kTransforms.length + var kTransforms = [new Transform("", kIdentity, ""), new Transform("", kIdentity, " "), new Transform(" ", kIdentity, " "), new Transform("", kOmitFirst1, ""), new Transform("", kUppercaseFirst, " "), new Transform("", kIdentity, " the "), new Transform(" ", kIdentity, ""), new Transform("s ", kIdentity, " "), new Transform("", kIdentity, " of "), new Transform("", kUppercaseFirst, ""), new Transform("", kIdentity, " and "), new Transform("", kOmitFirst2, ""), new Transform("", kOmitLast1, ""), new Transform(", ", kIdentity, " "), new Transform("", kIdentity, ", "), new Transform(" ", kUppercaseFirst, " "), new Transform("", kIdentity, " in "), new Transform("", kIdentity, " to "), new Transform("e ", kIdentity, " "), new Transform("", kIdentity, '"'), new Transform("", kIdentity, "."), new Transform("", kIdentity, '">'), new Transform("", kIdentity, "\n"), new Transform("", kOmitLast3, ""), new Transform("", kIdentity, "]"), new Transform("", kIdentity, " for "), new Transform("", kOmitFirst3, ""), new Transform("", kOmitLast2, ""), new Transform("", kIdentity, " a "), new Transform("", kIdentity, " that "), new Transform(" ", kUppercaseFirst, ""), new Transform("", kIdentity, ". "), new Transform(".", kIdentity, ""), new Transform(" ", kIdentity, ", "), new Transform("", kOmitFirst4, ""), new Transform("", kIdentity, " with "), new Transform("", kIdentity, "'"), new Transform("", kIdentity, " from "), new Transform("", kIdentity, " by "), new Transform("", kOmitFirst5, ""), new Transform("", kOmitFirst6, ""), new Transform(" the ", kIdentity, ""), new Transform("", kOmitLast4, ""), new Transform("", kIdentity, ". The "), new Transform("", kUppercaseAll, ""), new Transform("", kIdentity, " on "), new Transform("", kIdentity, " as "), new Transform("", kIdentity, " is "), new Transform("", kOmitLast7, ""), new Transform("", kOmitLast1, "ing "), new Transform("", kIdentity, "\n\t"), new Transform("", kIdentity, ":"), new Transform(" ", kIdentity, ". "), new Transform("", kIdentity, "ed "), new Transform("", kOmitFirst9, ""), new Transform("", kOmitFirst7, ""), new Transform("", kOmitLast6, ""), new Transform("", kIdentity, "("), new Transform("", kUppercaseFirst, ", "), new Transform("", kOmitLast8, ""), new Transform("", kIdentity, " at "), new Transform("", kIdentity, "ly "), new Transform(" the ", kIdentity, " of "), new Transform("", kOmitLast5, ""), new Transform("", kOmitLast9, ""), new Transform(" ", kUppercaseFirst, ", "), new Transform("", kUppercaseFirst, '"'), new Transform(".", kIdentity, "("), new Transform("", kUppercaseAll, " "), new Transform("", kUppercaseFirst, '">'), new Transform("", kIdentity, '="'), new Transform(" ", kIdentity, "."), new Transform(".com/", kIdentity, ""), new Transform(" the ", kIdentity, " of the "), new Transform("", kUppercaseFirst, "'"), new Transform("", kIdentity, ". This "), new Transform("", kIdentity, ","), new Transform(".", kIdentity, " "), new Transform("", kUppercaseFirst, "("), new Transform("", kUppercaseFirst, "."), new Transform("", kIdentity, " not "), new Transform(" ", kIdentity, '="'), new Transform("", kIdentity, "er "), new Transform(" ", kUppercaseAll, " "), new Transform("", kIdentity, "al "), new Transform(" ", kUppercaseAll, ""), new Transform("", kIdentity, "='"), new Transform("", kUppercaseAll, '"'), new Transform("", kUppercaseFirst, ". "), new Transform(" ", kIdentity, "("), new Transform("", kIdentity, "ful "), new Transform(" ", kUppercaseFirst, ". "), new Transform("", kIdentity, "ive "), new Transform("", kIdentity, "less "), new Transform("", kUppercaseAll, "'"), new Transform("", kIdentity, "est "), new Transform(" ", kUppercaseFirst, "."), new Transform("", kUppercaseAll, '">'), new Transform(" ", kIdentity, "='"), new Transform("", kUppercaseFirst, ","), new Transform("", kIdentity, "ize "), new Transform("", kUppercaseAll, "."), new Transform("Â ", kIdentity, ""), new Transform(" ", kIdentity, ","), new Transform("", kUppercaseFirst, '="'), new Transform("", kUppercaseAll, '="'), new Transform("", kIdentity, "ous "), new Transform("", kUppercaseAll, ", "), new Transform("", kUppercaseFirst, "='"), new Transform(" ", kUppercaseFirst, ","), new Transform(" ", kUppercaseAll, '="'), new Transform(" ", kUppercaseAll, ", "), new Transform("", kUppercaseAll, ","), new Transform("", kUppercaseAll, "("), new Transform("", kUppercaseAll, ". "), new Transform(" ", kUppercaseAll, "."), new Transform("", kUppercaseAll, "='"), new Transform(" ", kUppercaseAll, ". "), new Transform(" ", kUppercaseFirst, '="'), new Transform(" ", kUppercaseAll, "='"), new Transform(" ", kUppercaseFirst, "='")]; + exports.kTransforms = kTransforms; + exports.kNumTransforms = kTransforms.length; - function ToUpperCase (p, i) { + function ToUpperCase(p, i) { if (p[i] < 192) { if (p[i] >= 97 && p[i] <= 122) { p[i] ^= 32 @@ -1371,367 +1394,367 @@ if ('now' in self.performance === false) { return 1 } if (p[i] < 224) { - p[i + 1] ^= 32 + p[i + 1] ^= 32; return 2 } - p[i + 2] ^= 5 + p[i + 2] ^= 5; return 3 } exports.transformDictionaryWord = function (dst, idx, word, len, transform) { - const prefix = kTransforms[transform].prefix - const suffix = kTransforms[transform].suffix - const t = kTransforms[transform].transform - let skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1) - let i = 0 - const start_idx = idx - let uppercase + var prefix = kTransforms[transform].prefix; + var suffix = kTransforms[transform].suffix; + var t = kTransforms[transform].transform; + var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1); + var i = 0; + var start_idx = idx; + var uppercase; if (skip > len) { skip = len } - let prefix_pos = 0 + var prefix_pos = 0; while (prefix_pos < prefix.length) { dst[idx++] = prefix[prefix_pos++] } - word += skip - len -= skip + word += skip; + len -= skip; if (t <= kOmitLast9) { len -= t } for (i = 0; i < len; i++) { dst[idx++] = BrotliDictionary.dictionary[word + i] } - uppercase = idx - len + uppercase = idx - len; if (t === kUppercaseFirst) { ToUpperCase(dst, uppercase) } else if (t === kUppercaseAll) { while (len > 0) { - const step = ToUpperCase(dst, uppercase) - uppercase += step + var step = ToUpperCase(dst, uppercase); + uppercase += step; len -= step } } - let suffix_pos = 0 + var suffix_pos = 0; while (suffix_pos < suffix.length) { dst[idx++] = suffix[suffix_pos++] } return idx - start_idx } }, { - './dictionary': 6 + "./dictionary": 6 }], 11: [function (require, module, exports) { - Module.BrotliDecode = require('./dec/decode').BrotliDecompressBuffer + Module["BrotliDecode"] = require("./dec/decode").BrotliDecompressBuffer }, { - './dec/decode': 3 + "./dec/decode": 3 }], 12: [function (require, module, exports) { - 'use strict' - exports.byteLength = byteLength - exports.toByteArray = toByteArray - exports.fromByteArray = fromByteArray - const lookup = [] - const revLookup = [] - const Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - const code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - for (let i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] + null; + exports.byteLength = byteLength; + exports.toByteArray = toByteArray; + exports.fromByteArray = fromByteArray; + var lookup = []; + var revLookup = []; + var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; + var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; revLookup[code.charCodeAt(i)] = i } - revLookup['-'.charCodeAt(0)] = 62 - revLookup['_'.charCodeAt(0)] = 63 + revLookup["-".charCodeAt(0)] = 62; + revLookup["_".charCodeAt(0)] = 63; - function getLens (b64) { - const len = b64.length + function getLens(b64) { + var len = b64.length; if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') + throw new Error("Invalid string. Length must be a multiple of 4") } - let validLen = b64.indexOf('=') - if (validLen === -1) validLen = len - const placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4 + var validLen = b64.indexOf("="); + if (validLen === -1) validLen = len; + var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; return [validLen, placeHoldersLen] } - function byteLength (b64) { - const lens = getLens(b64) - const validLen = lens[0] - const placeHoldersLen = lens[1] + function byteLength(b64) { + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen } - function _byteLength (b64, validLen, placeHoldersLen) { + function _byteLength(b64, validLen, placeHoldersLen) { return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen } - function toByteArray (b64) { - let tmp - const lens = getLens(b64) - const validLen = lens[0] - const placeHoldersLen = lens[1] - const arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) - let curByte = 0 - const len = placeHoldersLen > 0 ? validLen - 4 : validLen - let i + function toByteArray(b64) { + var tmp; + var lens = getLens(b64); + var validLen = lens[0]; + var placeHoldersLen = lens[1]; + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); + var curByte = 0; + var len = placeHoldersLen > 0 ? validLen - 4 : validLen; + var i; for (i = 0; i < len; i += 4) { - tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)] - arr[curByte++] = tmp >> 16 & 255 - arr[curByte++] = tmp >> 8 & 255 + tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; + arr[curByte++] = tmp >> 16 & 255; + arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255 } if (placeHoldersLen === 2) { - tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4 + tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; arr[curByte++] = tmp & 255 } if (placeHoldersLen === 1) { - tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2 - arr[curByte++] = tmp >> 8 & 255 + tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; + arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255 } return arr } - function tripletToBase64 (num) { + function tripletToBase64(num) { return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63] } - function encodeChunk (uint8, start, end) { - let tmp - const output = [] - for (let i = start; i < end; i += 3) { - tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255) + function encodeChunk(uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255); output.push(tripletToBase64(tmp)) } - return output.join('') + return output.join("") } - function fromByteArray (uint8) { - let tmp - const len = uint8.length - const extraBytes = len % 3 - const parts = [] - const maxChunkLength = 16383 - for (let i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + function fromByteArray(uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; + var parts = []; + var maxChunkLength = 16383; + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)) } if (extraBytes === 1) { - tmp = uint8[len - 1] - parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + '==') + tmp = uint8[len - 1]; + parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==") } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + uint8[len - 1] - parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + '=') + tmp = (uint8[len - 2] << 8) + uint8[len - 1]; + parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=") } - return parts.join('') + return parts.join("") } }, {}] }, {}, [11])(11) -}) -let moduleOverrides = {} -let key +}); +var moduleOverrides = {}; +var key; for (key in Module) { if (Module.hasOwnProperty(key)) { moduleOverrides[key] = Module[key] } } -let arguments_ = [] -let thisProgram = './this.program' -let quit_ = function (status, toThrow) { +var arguments_ = []; +var thisProgram = "./this.program"; +var quit_ = function (status, toThrow) { throw toThrow -} -let ENVIRONMENT_IS_WEB = false -let ENVIRONMENT_IS_WORKER = false -let ENVIRONMENT_IS_NODE = false -let ENVIRONMENT_IS_SHELL = false -ENVIRONMENT_IS_WEB = typeof window === 'object' -ENVIRONMENT_IS_WORKER = typeof importScripts === 'function' -ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string' -ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER -let scriptDirectory = '' +}; +var ENVIRONMENT_IS_WEB = false; +var ENVIRONMENT_IS_WORKER = false; +var ENVIRONMENT_IS_NODE = false; +var ENVIRONMENT_IS_SHELL = false; +ENVIRONMENT_IS_WEB = typeof window === "object"; +ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; +ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; +ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; +var scriptDirectory = ""; -function locateFile (path) { - if (Module.locateFile) { - return Module.locateFile(path, scriptDirectory) +function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory) } return scriptDirectory + path } -let read_, readAsync, readBinary, setWindowTitle +var read_, readAsync, readBinary, setWindowTitle; if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { if (ENVIRONMENT_IS_WORKER) { scriptDirectory = self.location.href } else if (document.currentScript) { scriptDirectory = document.currentScript.src } - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/') + 1) + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1) } else { - scriptDirectory = '' + scriptDirectory = "" } { - read_ = function shell_read (url) { - const xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.send(null) + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.send(null); return xhr.responseText - } + }; if (ENVIRONMENT_IS_WORKER) { - readBinary = function readBinary (url) { - const xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.responseType = 'arraybuffer' - xhr.send(null) + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); return new Uint8Array(xhr.response) } } - readAsync = function readAsync (url, onload, onerror) { - const xhr = new XMLHttpRequest() - xhr.open('GET', url, true) - xhr.responseType = 'arraybuffer' - xhr.onload = function xhr_onload () { + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest; + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function xhr_onload() { if (xhr.status == 200 || xhr.status == 0 && xhr.response) { - onload(xhr.response) + onload(xhr.response); return } onerror() - } - xhr.onerror = onerror + }; + xhr.onerror = onerror; xhr.send(null) } } setWindowTitle = function (title) { document.title = title } -} else { } -const out = Module.print || console.log.bind(console) -var err = Module.printErr || console.warn.bind(console) +} else {} +var out = Module["print"] || console.log.bind(console); +var err = Module["printErr"] || console.warn.bind(console); for (key in moduleOverrides) { if (moduleOverrides.hasOwnProperty(key)) { Module[key] = moduleOverrides[key] } } -moduleOverrides = null -if (Module.arguments) arguments_ = Module.arguments -if (Module.thisProgram) thisProgram = Module.thisProgram -if (Module.quit) quit_ = Module.quit +moduleOverrides = null; +if (Module["arguments"]) arguments_ = Module["arguments"]; +if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; +if (Module["quit"]) quit_ = Module["quit"]; -function dynamicAlloc (size) { - const ret = HEAP32[DYNAMICTOP_PTR >> 2] - const end = ret + size + 15 & -16 - HEAP32[DYNAMICTOP_PTR >> 2] = end +function dynamicAlloc(size) { + var ret = HEAP32[DYNAMICTOP_PTR >> 2]; + var end = ret + size + 15 & -16; + HEAP32[DYNAMICTOP_PTR >> 2] = end; return ret } -function warnOnce (text) { - if (!warnOnce.shown) warnOnce.shown = {} +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1 + warnOnce.shown[text] = 1; err(text) } } -let tempRet0 = 0 -const setTempRet0 = function (value) { +var tempRet0 = 0; +var setTempRet0 = function (value) { tempRet0 = value -} -const getTempRet0 = function () { +}; +var getTempRet0 = function () { return tempRet0 -} -let wasmBinary -if (Module.wasmBinary) wasmBinary = Module.wasmBinary -let noExitRuntime -if (Module.noExitRuntime) noExitRuntime = Module.noExitRuntime -if (typeof WebAssembly !== 'object') { - err('no native wasm support detected') +}; +var wasmBinary; +if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; +var noExitRuntime; +if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; +if (typeof WebAssembly !== "object") { + err("no native wasm support detected") } -function getValue (ptr, type, noSafe) { - type = type || 'i8' - if (type.charAt(type.length - 1) === '*') type = 'i32' +function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; switch (type) { - case 'i1': - return HEAP8[ptr >> 0] - case 'i8': - return HEAP8[ptr >> 0] - case 'i16': - return HEAP16[ptr >> 1] - case 'i32': - return HEAP32[ptr >> 2] - case 'i64': - return HEAP32[ptr >> 2] - case 'float': - return HEAPF32[ptr >> 2] - case 'double': - return HEAPF64[ptr >> 3] + case "i1": + return HEAP8[ptr >> 0]; + case "i8": + return HEAP8[ptr >> 0]; + case "i16": + return HEAP16[ptr >> 1]; + case "i32": + return HEAP32[ptr >> 2]; + case "i64": + return HEAP32[ptr >> 2]; + case "float": + return HEAPF32[ptr >> 2]; + case "double": + return HEAPF64[ptr >> 3]; default: - abort('invalid type for getValue: ' + type) + abort("invalid type for getValue: " + type) } return null } -let wasmMemory -const wasmTable = new WebAssembly.Table({ - initial: 1009, - maximum: 1009 + 0, - element: 'anyfunc' -}) -let ABORT = false -let EXITSTATUS = 0 +var wasmMemory; +var wasmTable = new WebAssembly.Table({ + "initial": 1014, + "maximum": 1014 + 0, + "element": "anyfunc" +}); +var ABORT = false; +var EXITSTATUS = 0; -function assert (condition, text) { +function assert(condition, text) { if (!condition) { - abort('Assertion failed: ' + text) + abort("Assertion failed: " + text) } } -function getCFunc (ident) { - const func = Module['_' + ident] - assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported') +function getCFunc(ident) { + var func = Module["_" + ident]; + assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); return func } -function ccall (ident, returnType, argTypes, args, opts) { - const toC = { - string: function (str) { - let ret = 0 +function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + "string": function (str) { + var ret = 0; if (str !== null && str !== undefined && str !== 0) { - const len = (str.length << 2) + 1 - ret = stackAlloc(len) + var len = (str.length << 2) + 1; + ret = stackAlloc(len); stringToUTF8(str, ret, len) } return ret }, - array: function (arr) { - const ret = stackAlloc(arr.length) - writeArrayToMemory(arr, ret) + "array": function (arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); return ret } - } + }; - function convertReturnValue (ret) { - if (returnType === 'string') return UTF8ToString(ret) - if (returnType === 'boolean') return Boolean(ret) + function convertReturnValue(ret) { + if (returnType === "string") return UTF8ToString(ret); + if (returnType === "boolean") return Boolean(ret); return ret } - const func = getCFunc(ident) - const cArgs = [] - let stack = 0 + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; if (args) { - for (let i = 0; i < args.length; i++) { - const converter = toC[argTypes[i]] + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; if (converter) { - if (stack === 0) stack = stackSave() + if (stack === 0) stack = stackSave(); cArgs[i] = converter(args[i]) } else { cArgs[i] = args[i] } } } - let ret = func.apply(null, cArgs) - ret = convertReturnValue(ret) - if (stack !== 0) stackRestore(stack) + var ret = func.apply(null, cArgs); + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); return ret } -function cwrap (ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - const numericArgs = argTypes.every(function (type) { - return type === 'number' - }) - const numericRet = returnType !== 'string' +function cwrap(ident, returnType, argTypes, opts) { + argTypes = argTypes || []; + var numericArgs = argTypes.every(function (type) { + return type === "number" + }); + var numericRet = returnType !== "string"; if (numericRet && numericArgs && !opts) { return getCFunc(ident) } @@ -1740,32 +1763,32 @@ function cwrap (ident, returnType, argTypes, opts) { } } -function getMemory (size) { - if (!runtimeInitialized) return dynamicAlloc(size) +function getMemory(size) { + if (!runtimeInitialized) return dynamicAlloc(size); return _malloc(size) } -const UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined +var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; -function UTF8ArrayToString (heap, idx, maxBytesToRead) { - const endIdx = idx + maxBytesToRead - let endPtr = idx - while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr +function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { return UTF8Decoder.decode(heap.subarray(idx, endPtr)) } else { - var str = '' + var str = ""; while (idx < endPtr) { - let u0 = heap[idx++] + var u0 = heap[idx++]; if (!(u0 & 128)) { - str += String.fromCharCode(u0) + str += String.fromCharCode(u0); continue } - const u1 = heap[idx++] & 63 + var u1 = heap[idx++] & 63; if ((u0 & 224) == 192) { - str += String.fromCharCode((u0 & 31) << 6 | u1) + str += String.fromCharCode((u0 & 31) << 6 | u1); continue } - const u2 = heap[idx++] & 63 + var u2 = heap[idx++] & 63; if ((u0 & 240) == 224) { u0 = (u0 & 15) << 12 | u1 << 6 | u2 } else { @@ -1774,7 +1797,7 @@ function UTF8ArrayToString (heap, idx, maxBytesToRead) { if (u0 < 65536) { str += String.fromCharCode(u0) } else { - const ch = u0 - 65536 + var ch = u0 - 65536; str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023) } } @@ -1782,262 +1805,261 @@ function UTF8ArrayToString (heap, idx, maxBytesToRead) { return str } -function UTF8ToString (ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' +function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "" } -function stringToUTF8Array (str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0 - const startIdx = outIdx - const endIdx = outIdx + maxBytesToWrite - 1 - for (let i = 0; i < str.length; ++i) { - let u = str.charCodeAt(i) +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); if (u >= 55296 && u <= 57343) { - const u1 = str.charCodeAt(++i) + var u1 = str.charCodeAt(++i); u = 65536 + ((u & 1023) << 10) | u1 & 1023 } if (u <= 127) { - if (outIdx >= endIdx) break + if (outIdx >= endIdx) break; heap[outIdx++] = u } else if (u <= 2047) { - if (outIdx + 1 >= endIdx) break - heap[outIdx++] = 192 | u >> 6 + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; heap[outIdx++] = 128 | u & 63 } else if (u <= 65535) { - if (outIdx + 2 >= endIdx) break - heap[outIdx++] = 224 | u >> 12 - heap[outIdx++] = 128 | u >> 6 & 63 + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; heap[outIdx++] = 128 | u & 63 } else { - if (outIdx + 3 >= endIdx) break - heap[outIdx++] = 240 | u >> 18 - heap[outIdx++] = 128 | u >> 12 & 63 - heap[outIdx++] = 128 | u >> 6 & 63 + if (outIdx + 3 >= endIdx) break; + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; heap[outIdx++] = 128 | u & 63 } } - heap[outIdx] = 0 + heap[outIdx] = 0; return outIdx - startIdx } -function stringToUTF8 (str, outPtr, maxBytesToWrite) { +function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) } -function lengthBytesUTF8 (str) { - let len = 0 - for (let i = 0; i < str.length; ++i) { - let u = str.charCodeAt(i) - if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023 - if (u <= 127) ++len - else if (u <= 2047) len += 2 - else if (u <= 65535) len += 3 +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; + else if (u <= 2047) len += 2; + else if (u <= 65535) len += 3; else len += 4 } return len } -const UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined -function allocateUTF8OnStack (str) { - const size = lengthBytesUTF8(str) + 1 - const ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); return ret } -function writeArrayToMemory (array, buffer) { +function writeArrayToMemory(array, buffer) { HEAP8.set(array, buffer) } -function writeAsciiToMemory (str, buffer, dontAddNull) { - for (let i = 0; i < str.length; ++i) { +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { HEAP8[buffer++ >> 0] = str.charCodeAt(i) } if (!dontAddNull) HEAP8[buffer >> 0] = 0 } -const WASM_PAGE_SIZE = 65536 +var WASM_PAGE_SIZE = 65536; -function alignUp (x, multiple) { +function alignUp(x, multiple) { if (x % multiple > 0) { x += multiple - x % multiple } return x } -let buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 +var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; -function updateGlobalBufferAndViews (buf) { - buffer = buf - Module.HEAP8 = HEAP8 = new Int8Array(buf) - Module.HEAP16 = HEAP16 = new Int16Array(buf) - Module.HEAP32 = HEAP32 = new Int32Array(buf) - Module.HEAPU8 = HEAPU8 = new Uint8Array(buf) - Module.HEAPU16 = HEAPU16 = new Uint16Array(buf) - Module.HEAPU32 = HEAPU32 = new Uint32Array(buf) - Module.HEAPF32 = HEAPF32 = new Float32Array(buf) - Module.HEAPF64 = HEAPF64 = new Float64Array(buf) +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf) } -const DYNAMIC_BASE = 5888592 -var DYNAMICTOP_PTR = 645552 -let INITIAL_INITIAL_MEMORY = Module.INITIAL_MEMORY || 16777216 -if (Module.wasmMemory) { - wasmMemory = Module.wasmMemory +var DYNAMIC_BASE = 5888880, + DYNAMICTOP_PTR = 645840; +var INITIAL_INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; +if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"] } else { wasmMemory = new WebAssembly.Memory({ - initial: INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE, - maximum: 2147483648 / WASM_PAGE_SIZE + "initial": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE, + "maximum": 2147483648 / WASM_PAGE_SIZE }) } if (wasmMemory) { buffer = wasmMemory.buffer } -INITIAL_INITIAL_MEMORY = buffer.byteLength -updateGlobalBufferAndViews(buffer) -HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE +INITIAL_INITIAL_MEMORY = buffer.byteLength; +updateGlobalBufferAndViews(buffer); +HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE; -function callRuntimeCallbacks (callbacks) { +function callRuntimeCallbacks(callbacks) { while (callbacks.length > 0) { - const callback = callbacks.shift() - if (typeof callback === 'function') { - callback(Module) + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); continue } - const func = callback.func - if (typeof func === 'number') { + var func = callback.func; + if (typeof func === "number") { if (callback.arg === undefined) { - Module.dynCall_v(func) + Module["dynCall_v"](func) } else { - Module.dynCall_vi(func, callback.arg) + Module["dynCall_vi"](func, callback.arg) } } else { func(callback.arg === undefined ? null : callback.arg) } } } -const __ATPRERUN__ = [] -const __ATINIT__ = [] -const __ATMAIN__ = [] -const __ATPOSTRUN__ = [] -var runtimeInitialized = false -let runtimeExited = false +var __ATPRERUN__ = []; +var __ATINIT__ = []; +var __ATMAIN__ = []; +var __ATPOSTRUN__ = []; +var runtimeInitialized = false; +var runtimeExited = false; -function preRun () { - if (Module.preRun) { - if (typeof Module.preRun === 'function') Module.preRun = [Module.preRun] - while (Module.preRun.length) { - addOnPreRun(Module.preRun.shift()) +function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()) } } callRuntimeCallbacks(__ATPRERUN__) } -function initRuntime () { - runtimeInitialized = true - if (!Module.noFSInit && !FS.init.initialized) FS.init() - TTY.init() +function initRuntime() { + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + TTY.init(); callRuntimeCallbacks(__ATINIT__) } -function preMain () { - FS.ignorePermissions = false +function preMain() { + FS.ignorePermissions = false; callRuntimeCallbacks(__ATMAIN__) } -function exitRuntime () { +function exitRuntime() { runtimeExited = true } -function postRun () { - if (Module.postRun) { - if (typeof Module.postRun === 'function') Module.postRun = [Module.postRun] - while (Module.postRun.length) { - addOnPostRun(Module.postRun.shift()) +function postRun() { + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()) } } callRuntimeCallbacks(__ATPOSTRUN__) } -function addOnPreRun (cb) { +function addOnPreRun(cb) { __ATPRERUN__.unshift(cb) } -function addOnPreMain (cb) { +function addOnPreMain(cb) { __ATMAIN__.unshift(cb) } -function addOnPostRun (cb) { +function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb) } -const Math_abs = Math.abs -const Math_ceil = Math.ceil -const Math_floor = Math.floor -const Math_min = Math.min -let runDependencies = 0 -let runDependencyWatcher = null -let dependenciesFulfilled = null +var Math_abs = Math.abs; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_min = Math.min; +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; -function getUniqueRunDependency (id) { +function getUniqueRunDependency(id) { return id } -function addRunDependency (id) { - runDependencies++ - if (Module.monitorRunDependencies) { - Module.monitorRunDependencies(runDependencies) +function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies) } } -function removeRunDependency (id) { - runDependencies-- - if (Module.monitorRunDependencies) { - Module.monitorRunDependencies(runDependencies) +function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies) } if (runDependencies == 0) { if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher) + clearInterval(runDependencyWatcher); runDependencyWatcher = null } if (dependenciesFulfilled) { - const callback = dependenciesFulfilled - dependenciesFulfilled = null + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; callback() } } } -Module.preloadedImages = {} -Module.preloadedAudios = {} +Module["preloadedImages"] = {}; +Module["preloadedAudios"] = {}; -function abort (what) { - if (Module.onAbort) { - Module.onAbort(what) +function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what) } - what += '' - out(what) - err(what) - ABORT = true - EXITSTATUS = 1 - what = 'abort(' + what + '). Build with -s ASSERTIONS=1 for more info.' + what += ""; + out(what); + err(what); + ABORT = true; + EXITSTATUS = 1; + what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; throw new WebAssembly.RuntimeError(what) } -function hasPrefix (str, prefix) { +function hasPrefix(str, prefix) { return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0 } -const dataURIPrefix = 'data:application/octet-stream;base64,' +var dataURIPrefix = "data:application/octet-stream;base64,"; -function isDataURI (filename) { +function isDataURI(filename) { return hasPrefix(filename, dataURIPrefix) } -const fileURIPrefix = 'file://' +var fileURIPrefix = "file://"; -function isFileURI (filename) { +function isFileURI(filename) { return hasPrefix(filename, fileURIPrefix) } -let wasmBinaryFile = 'subtitles-octopus-worker.wasm' +var wasmBinaryFile = "subtitles-octopus-worker.wasm"; if (!isDataURI(wasmBinaryFile)) { wasmBinaryFile = locateFile(wasmBinaryFile) } -function getBinary () { +function getBinary() { try { if (wasmBinary) { return new Uint8Array(wasmBinary) @@ -2045,22 +2067,22 @@ function getBinary () { if (readBinary) { return readBinary(wasmBinaryFile) } else { - throw 'both async and sync fetching of the wasm failed' + throw "both async and sync fetching of the wasm failed" } } catch (err) { abort(err) } } -function getBinaryPromise () { - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function' && !isFileURI(wasmBinaryFile)) { +function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { return fetch(wasmBinaryFile, { - credentials: 'same-origin' + credentials: "same-origin" }).then(function (response) { - if (!response.ok) { + if (!response["ok"]) { throw "failed to load wasm binary file at '" + wasmBinaryFile + "'" } - return response.arrayBuffer() + return response["arrayBuffer"]() }).catch(function () { return getBinary() }) @@ -2070,40 +2092,40 @@ function getBinaryPromise () { }) } -function createWasm () { - const info = { - a: asmLibraryArg +function createWasm() { + var info = { + "a": asmLibraryArg + }; + + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + removeRunDependency("wasm-instantiate") + } + addRunDependency("wasm-instantiate"); + + function receiveInstantiatedSource(output) { + receiveInstance(output["instance"]) } - function receiveInstance (instance, module) { - const exports = instance.exports - Module.asm = exports - removeRunDependency('wasm-instantiate') - } - addRunDependency('wasm-instantiate') - - function receiveInstantiatedSource (output) { - receiveInstance(output.instance) - } - - function instantiateArrayBuffer (receiver) { + function instantiateArrayBuffer(receiver) { return getBinaryPromise().then(function (binary) { return WebAssembly.instantiate(binary, info) }).then(receiver, function (reason) { - err('failed to asynchronously prepare wasm: ' + reason) + err("failed to asynchronously prepare wasm: " + reason); abort(reason) }) } - function instantiateAsync () { - if (!wasmBinary && typeof WebAssembly.instantiateStreaming === 'function' && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === 'function') { + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { fetch(wasmBinaryFile, { - credentials: 'same-origin' + credentials: "same-origin" }).then(function (response) { - const result = WebAssembly.instantiateStreaming(response, info) + var result = WebAssembly.instantiateStreaming(response, info); return result.then(receiveInstantiatedSource, function (reason) { - err('wasm streaming compile failed: ' + reason) - err('falling back to ArrayBuffer instantiation') + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); instantiateArrayBuffer(receiveInstantiatedSource) }) }) @@ -2111,141 +2133,141 @@ function createWasm () { return instantiateArrayBuffer(receiveInstantiatedSource) } } - if (Module.instantiateWasm) { + if (Module["instantiateWasm"]) { try { - const exports = Module.instantiateWasm(info, receiveInstance) + var exports = Module["instantiateWasm"](info, receiveInstance); return exports } catch (e) { - err('Module.instantiateWasm callback failed with error: ' + e) + err("Module.instantiateWasm callback failed with error: " + e); return false } } - instantiateAsync() + instantiateAsync(); return {} } -let tempDouble -let tempI64 +var tempDouble; +var tempI64; __ATINIT__.push({ func: function () { ___wasm_call_ctors() } -}) +}); -function _emscripten_set_main_loop_timing (mode, value) { - Browser.mainLoop.timingMode = mode - Browser.mainLoop.timingValue = value +function _emscripten_set_main_loop_timing(mode, value) { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; if (!Browser.mainLoop.func) { return 1 } if (mode == 0) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout () { - const timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0 + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { + var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; setTimeout(Browser.mainLoop.runner, timeUntilNextTick) - } - Browser.mainLoop.method = 'timeout' + }; + Browser.mainLoop.method = "timeout" } else if (mode == 1) { - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF () { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { Browser.requestAnimationFrame(Browser.mainLoop.runner) - } - Browser.mainLoop.method = 'rAF' + }; + Browser.mainLoop.method = "rAF" } else if (mode == 2) { - if (typeof setImmediate === 'undefined') { - const setImmediates = [] - const emscriptenMainLoopMessageId = 'setimmediate' - const Browser_setImmediate_messageHandler = function (event) { + if (typeof setImmediate === "undefined") { + var setImmediates = []; + var emscriptenMainLoopMessageId = "setimmediate"; + var Browser_setImmediate_messageHandler = function (event) { if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) { - event.stopPropagation() + event.stopPropagation(); setImmediates.shift()() } - } - addEventListener('message', Browser_setImmediate_messageHandler, true) - setImmediate = function Browser_emulated_setImmediate (func) { - setImmediates.push(func) + }; + addEventListener("message", Browser_setImmediate_messageHandler, true); + setImmediate = function Browser_emulated_setImmediate(func) { + setImmediates.push(func); if (ENVIRONMENT_IS_WORKER) { - if (Module.setImmediates === undefined) Module.setImmediates = [] - Module.setImmediates.push(func) + if (Module["setImmediates"] === undefined) Module["setImmediates"] = []; + Module["setImmediates"].push(func); postMessage({ target: emscriptenMainLoopMessageId }) - } else postMessage(emscriptenMainLoopMessageId, '*') + } else postMessage(emscriptenMainLoopMessageId, "*") } } - Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate () { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { setImmediate(Browser.mainLoop.runner) - } - Browser.mainLoop.method = 'immediate' + }; + Browser.mainLoop.method = "immediate" } return 0 } -let _emscripten_get_now +var _emscripten_get_now; _emscripten_get_now = function () { return performance.now() -} +}; -function _emscripten_set_main_loop (func, fps, simulateInfiniteLoop, arg, noSetTiming) { - noExitRuntime = true - assert(!Browser.mainLoop.func, 'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.') - Browser.mainLoop.func = func - Browser.mainLoop.arg = arg - let browserIterationFunc - if (typeof arg !== 'undefined') { +function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) { + noExitRuntime = true; + assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."); + Browser.mainLoop.func = func; + Browser.mainLoop.arg = arg; + var browserIterationFunc; + if (typeof arg !== "undefined") { browserIterationFunc = function () { - Module.dynCall_vi(func, arg) + Module["dynCall_vi"](func, arg) } } else { browserIterationFunc = function () { - Module.dynCall_v(func) + Module["dynCall_v"](func) } } - const thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop - Browser.mainLoop.runner = function Browser_mainLoop_runner () { - if (ABORT) return + var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; if (Browser.mainLoop.queue.length > 0) { - const start = Date.now() - const blocker = Browser.mainLoop.queue.shift() - blocker.func(blocker.arg) + var start = Date.now(); + var blocker = Browser.mainLoop.queue.shift(); + blocker.func(blocker.arg); if (Browser.mainLoop.remainingBlockers) { - const remaining = Browser.mainLoop.remainingBlockers - let next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining) + var remaining = Browser.mainLoop.remainingBlockers; + var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining); if (blocker.counted) { Browser.mainLoop.remainingBlockers = next } else { - next = next + 0.5 + next = next + .5; Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9 } } - console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms') - Browser.mainLoop.updateStatus() - if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return - setTimeout(Browser.mainLoop.runner, 0) + console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms"); + Browser.mainLoop.updateStatus(); + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + setTimeout(Browser.mainLoop.runner, 0); return } - if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return - Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0 + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { - Browser.mainLoop.scheduler() + Browser.mainLoop.scheduler(); return } else if (Browser.mainLoop.timingMode == 0) { Browser.mainLoop.tickStartTime = _emscripten_get_now() } - Browser.mainLoop.runIter(browserIterationFunc) - if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return - if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData() + Browser.mainLoop.runIter(browserIterationFunc); + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + if (typeof SDL === "object" && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData(); Browser.mainLoop.scheduler() - } + }; if (!noSetTiming) { - if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps) - else _emscripten_set_main_loop_timing(1, 1) + if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps); + else _emscripten_set_main_loop_timing(1, 1); Browser.mainLoop.scheduler() } if (simulateInfiniteLoop) { - throw 'unwind' + throw "unwind" } } var Browser = { mainLoop: { scheduler: null, - method: '', + method: "", currentlyRunningMainloop: 0, func: null, arg: 0, @@ -2254,39 +2276,39 @@ var Browser = { currentFrameNumber: 0, queue: [], pause: function () { - Browser.mainLoop.scheduler = null + Browser.mainLoop.scheduler = null; Browser.mainLoop.currentlyRunningMainloop++ }, resume: function () { - Browser.mainLoop.currentlyRunningMainloop++ - const timingMode = Browser.mainLoop.timingMode - const timingValue = Browser.mainLoop.timingValue - const func = Browser.mainLoop.func - Browser.mainLoop.func = null - _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true) - _emscripten_set_main_loop_timing(timingMode, timingValue) + Browser.mainLoop.currentlyRunningMainloop++; + var timingMode = Browser.mainLoop.timingMode; + var timingValue = Browser.mainLoop.timingValue; + var func = Browser.mainLoop.func; + Browser.mainLoop.func = null; + _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true); + _emscripten_set_main_loop_timing(timingMode, timingValue); Browser.mainLoop.scheduler() }, updateStatus: function () { - if (Module.setStatus) { - const message = Module.statusMessage || 'Please wait...' - const remaining = Browser.mainLoop.remainingBlockers - const expected = Browser.mainLoop.expectedBlockers + if (Module["setStatus"]) { + var message = Module["statusMessage"] || "Please wait..."; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; if (remaining) { if (remaining < expected) { - Module.setStatus(message + ' (' + (expected - remaining) + '/' + expected + ')') + Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")") } else { - Module.setStatus(message) + Module["setStatus"](message) } } else { - Module.setStatus('') + Module["setStatus"]("") } } }, runIter: function (func) { - if (ABORT) return - if (Module.preMainLoop) { - const preRet = Module.preMainLoop() + if (ABORT) return; + if (Module["preMainLoop"]) { + var preRet = Module["preMainLoop"](); if (preRet === false) { return } @@ -2297,11 +2319,11 @@ var Browser = { if (e instanceof ExitStatus) { return } else { - if (e && typeof e === 'object' && e.stack) err('exception thrown: ' + [e, e.stack]) + if (e && typeof e === "object" && e.stack) err("exception thrown: " + [e, e.stack]); throw e } } - if (Module.postMainLoop) Module.postMainLoop() + if (Module["postMainLoop"]) Module["postMainLoop"]() } }, isFullscreen: false, @@ -2309,89 +2331,89 @@ var Browser = { moduleContextCreatedCallbacks: [], workers: [], init: function () { - if (!Module.preloadPlugins) Module.preloadPlugins = [] - if (Browser.initted) return - Browser.initted = true + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; + if (Browser.initted) return; + Browser.initted = true; try { - new Blob() + new Blob; Browser.hasBlobConstructor = true } catch (e) { - Browser.hasBlobConstructor = false - console.log('warning: no blob constructor, cannot create blobs with mimetypes') + Browser.hasBlobConstructor = false; + console.log("warning: no blob constructor, cannot create blobs with mimetypes") } - Browser.BlobBuilder = typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log('warning: no BlobBuilder') : null - URL = typeof window !== 'undefined' ? window.URL ? window.URL : window.webkitURL : undefined - if (!Module.noImageDecoding && !typeof URL === 'undefined') { - console.log('warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.') + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null; + Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject === "undefined") { + console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); Module.noImageDecoding = true } - const imagePlugin = {} - imagePlugin.canHandle = function imagePlugin_canHandle (name) { + var imagePlugin = {}; + imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name) - } - imagePlugin.handle = function imagePlugin_handle (byteArray, name, onload, onerror) { - let b = null + }; + imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = null; if (Browser.hasBlobConstructor) { try { b = new Blob([byteArray], { type: Browser.getMimetype(name) - }) + }); if (b.size !== byteArray.length) { b = new Blob([new Uint8Array(byteArray).buffer], { type: Browser.getMimetype(name) }) } } catch (e) { - warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder') + warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder") } } if (!b) { - const bb = new Browser.BlobBuilder() - bb.append(new Uint8Array(byteArray).buffer) + var bb = new Browser.BlobBuilder; + bb.append(new Uint8Array(byteArray).buffer); b = bb.getBlob() } - const url = URL.createObjectURL(b) - const img = new Image() - img.onload = function img_onload () { - assert(img.complete, 'Image ' + name + ' could not be decoded') - const canvas = document.createElement('canvas') - canvas.width = img.width - canvas.height = img.height - const ctx = canvas.getContext('2d') - ctx.drawImage(img, 0, 0) - Module.preloadedImages[name] = canvas - URL.revokeObjectURL(url) + var url = Browser.URLObject.createObjectURL(b); + var img = new Image; + img.onload = function img_onload() { + assert(img.complete, "Image " + name + " could not be decoded"); + var canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + Module["preloadedImages"][name] = canvas; + Browser.URLObject.revokeObjectURL(url); if (onload) onload(byteArray) - } - img.onerror = function img_onerror (event) { - console.log('Image ' + url + ' could not be decoded') + }; + img.onerror = function img_onerror(event) { + console.log("Image " + url + " could not be decoded"); if (onerror) onerror() - } + }; img.src = url - } - Module.preloadPlugins.push(imagePlugin) - const audioPlugin = {} - audioPlugin.canHandle = function audioPlugin_canHandle (name) { + }; + Module["preloadPlugins"].push(imagePlugin); + var audioPlugin = {}; + audioPlugin["canHandle"] = function audioPlugin_canHandle(name) { return !Module.noAudioDecoding && name.substr(-4) in { - '.ogg': 1, - '.wav': 1, - '.mp3': 1 + ".ogg": 1, + ".wav": 1, + ".mp3": 1 } - } - audioPlugin.handle = function audioPlugin_handle (byteArray, name, onload, onerror) { - let done = false + }; + audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) { + var done = false; - function finish (audio) { - if (done) return - done = true - Module.preloadedAudios[name] = audio + function finish(audio) { + if (done) return; + done = true; + Module["preloadedAudios"][name] = audio; if (onload) onload(byteArray) } - function fail () { - if (done) return - done = true - Module.preloadedAudios[name] = new Audio() + function fail() { + if (done) return; + done = true; + Module["preloadedAudios"][name] = new Audio; if (onerror) onerror() } if (Browser.hasBlobConstructor) { @@ -2402,68 +2424,68 @@ var Browser = { } catch (e) { return fail() } - const url = URL.createObjectURL(b) - const audio = new Audio() - audio.addEventListener('canplaythrough', function () { + var url = Browser.URLObject.createObjectURL(b); + var audio = new Audio; + audio.addEventListener("canplaythrough", function () { finish(audio) - }, false) - audio.onerror = function audio_onerror (event) { - if (done) return - console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach') + }, false); + audio.onerror = function audio_onerror(event) { + if (done) return; + console.log("warning: browser could not fully decode audio " + name + ", trying slower base64 approach"); - function encode64 (data) { - const BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - const PAD = '=' - let ret = '' - let leftchar = 0 - let leftbits = 0 - for (let i = 0; i < data.length; i++) { - leftchar = leftchar << 8 | data[i] - leftbits += 8 + function encode64(data) { + var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var PAD = "="; + var ret = ""; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = leftchar << 8 | data[i]; + leftbits += 8; while (leftbits >= 6) { - const curr = leftchar >> leftbits - 6 & 63 - leftbits -= 6 + var curr = leftchar >> leftbits - 6 & 63; + leftbits -= 6; ret += BASE[curr] } } if (leftbits == 2) { - ret += BASE[(leftchar & 3) << 4] + ret += BASE[(leftchar & 3) << 4]; ret += PAD + PAD } else if (leftbits == 4) { - ret += BASE[(leftchar & 15) << 2] + ret += BASE[(leftchar & 15) << 2]; ret += PAD } return ret } - audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray) + audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray); finish(audio) - } - audio.src = url + }; + audio.src = url; Browser.safeSetTimeout(function () { finish(audio) }, 1e4) } else { return fail() } - } - Module.preloadPlugins.push(audioPlugin) + }; + Module["preloadPlugins"].push(audioPlugin); - function pointerLockChange () { - Browser.pointerLock = document.pointerLockElement === Module.canvas || document.mozPointerLockElement === Module.canvas || document.webkitPointerLockElement === Module.canvas || document.msPointerLockElement === Module.canvas + function pointerLockChange() { + Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"] } - const canvas = Module.canvas + var canvas = Module["canvas"]; if (canvas) { - canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock || canvas.webkitRequestPointerLock || canvas.msRequestPointerLock || function () { } - canvas.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || document.msExitPointerLock || function () { } - canvas.exitPointerLock = canvas.exitPointerLock.bind(document) - document.addEventListener('pointerlockchange', pointerLockChange, false) - document.addEventListener('mozpointerlockchange', pointerLockChange, false) - document.addEventListener('webkitpointerlockchange', pointerLockChange, false) - document.addEventListener('mspointerlockchange', pointerLockChange, false) - if (Module.elementPointerLock) { - canvas.addEventListener('click', function (ev) { - if (!Browser.pointerLock && Module.canvas.requestPointerLock) { - Module.canvas.requestPointerLock() + canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || function () {}; + canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || function () {}; + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + document.addEventListener("pointerlockchange", pointerLockChange, false); + document.addEventListener("mozpointerlockchange", pointerLockChange, false); + document.addEventListener("webkitpointerlockchange", pointerLockChange, false); + document.addEventListener("mspointerlockchange", pointerLockChange, false); + if (Module["elementPointerLock"]) { + canvas.addEventListener("click", function (ev) { + if (!Browser.pointerLock && Module["canvas"].requestPointerLock) { + Module["canvas"].requestPointerLock(); ev.preventDefault() } }, false) @@ -2471,105 +2493,105 @@ var Browser = { } }, createContext: function (canvas, useWebGL, setInModule, webGLContextAttributes) { - if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx - let ctx - let contextHandle + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; + var ctx; + var contextHandle; if (useWebGL) { - const contextAttributes = { + var contextAttributes = { antialias: false, alpha: false, majorVersion: 1 - } + }; if (webGLContextAttributes) { - for (const attribute in webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { contextAttributes[attribute] = webGLContextAttributes[attribute] } } - if (typeof GL !== 'undefined') { - contextHandle = GL.createContext(canvas, contextAttributes) + if (typeof GL !== "undefined") { + contextHandle = GL.createContext(canvas, contextAttributes); if (contextHandle) { ctx = GL.getContext(contextHandle).GLctx } } } else { - ctx = canvas.getContext('2d') + ctx = canvas.getContext("2d") } - if (!ctx) return null + if (!ctx) return null; if (setInModule) { - if (!useWebGL) assert(typeof GLctx === 'undefined', 'cannot set in module if GLctx is used, but we are a non-GL context that would replace it') - Module.ctx = ctx - if (useWebGL) GL.makeContextCurrent(contextHandle) - Module.useWebGL = useWebGL + if (!useWebGL) assert(typeof GLctx === "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it"); + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; Browser.moduleContextCreatedCallbacks.forEach(function (callback) { callback() - }) + }); Browser.init() } return ctx }, - destroyContext: function (canvas, useWebGL, setInModule) { }, + destroyContext: function (canvas, useWebGL, setInModule) {}, fullscreenHandlersInstalled: false, lockPointer: undefined, resizeCanvas: undefined, requestFullscreen: function (lockPointer, resizeCanvas) { - Browser.lockPointer = lockPointer - Browser.resizeCanvas = resizeCanvas - if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true - if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false - const canvas = Module.canvas + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer === "undefined") Browser.lockPointer = true; + if (typeof Browser.resizeCanvas === "undefined") Browser.resizeCanvas = false; + var canvas = Module["canvas"]; - function fullscreenChange () { - Browser.isFullscreen = false - const canvasContainer = canvas.parentNode - if ((document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === canvasContainer) { - canvas.exitFullscreen = Browser.exitFullscreen - if (Browser.lockPointer) canvas.requestPointerLock() - Browser.isFullscreen = true + function fullscreenChange() { + Browser.isFullscreen = false; + var canvasContainer = canvas.parentNode; + if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) { + canvas.exitFullscreen = Browser.exitFullscreen; + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullscreen = true; if (Browser.resizeCanvas) { Browser.setFullscreenCanvasSize() } else { Browser.updateCanvasDimensions(canvas) } } else { - canvasContainer.parentNode.insertBefore(canvas, canvasContainer) - canvasContainer.parentNode.removeChild(canvasContainer) + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); if (Browser.resizeCanvas) { Browser.setWindowedCanvasSize() } else { Browser.updateCanvasDimensions(canvas) } } - if (Module.onFullScreen) Module.onFullScreen(Browser.isFullscreen) - if (Module.onFullscreen) Module.onFullscreen(Browser.isFullscreen) + if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullscreen); + if (Module["onFullscreen"]) Module["onFullscreen"](Browser.isFullscreen) } if (!Browser.fullscreenHandlersInstalled) { - Browser.fullscreenHandlersInstalled = true - document.addEventListener('fullscreenchange', fullscreenChange, false) - document.addEventListener('mozfullscreenchange', fullscreenChange, false) - document.addEventListener('webkitfullscreenchange', fullscreenChange, false) - document.addEventListener('MSFullscreenChange', fullscreenChange, false) + Browser.fullscreenHandlersInstalled = true; + document.addEventListener("fullscreenchange", fullscreenChange, false); + document.addEventListener("mozfullscreenchange", fullscreenChange, false); + document.addEventListener("webkitfullscreenchange", fullscreenChange, false); + document.addEventListener("MSFullscreenChange", fullscreenChange, false) } - const canvasContainer = document.createElement('div') - canvas.parentNode.insertBefore(canvasContainer, canvas) - canvasContainer.appendChild(canvas) - canvasContainer.requestFullscreen = canvasContainer.requestFullscreen || canvasContainer.mozRequestFullScreen || canvasContainer.msRequestFullscreen || (canvasContainer.webkitRequestFullscreen ? function () { - canvasContainer.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) - } : null) || (canvasContainer.webkitRequestFullScreen ? function () { - canvasContainer.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT) - } : null) + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? function () { + canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) + } : null) || (canvasContainer["webkitRequestFullScreen"] ? function () { + canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) + } : null); canvasContainer.requestFullscreen() }, exitFullscreen: function () { if (!Browser.isFullscreen) { return false } - const CFS = document.exitFullscreen || document.cancelFullScreen || document.mozCancelFullScreen || document.msExitFullscreen || document.webkitCancelFullScreen || function () { } - CFS.apply(document, []) + var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || function () {}; + CFS.apply(document, []); return true }, nextRAF: 0, fakeRequestAnimationFrame: function (func) { - const now = Date.now() + var now = Date.now(); if (Browser.nextRAF === 0) { Browser.nextRAF = now + 1e3 / 60 } else { @@ -2577,15 +2599,15 @@ var Browser = { Browser.nextRAF += 1e3 / 60 } } - const delay = Math.max(Browser.nextRAF - now, 0) + var delay = Math.max(Browser.nextRAF - now, 0); setTimeout(func, delay) }, requestAnimationFrame: function (func) { - if (typeof requestAnimationFrame === 'function') { - requestAnimationFrame(func) + if (typeof requestAnimationFrame === "function") { + requestAnimationFrame(func); return } - const RAF = Browser.fakeRequestAnimationFrame + var RAF = Browser.fakeRequestAnimationFrame; RAF(func) }, safeCallback: function (func) { @@ -2599,10 +2621,10 @@ var Browser = { Browser.allowAsyncCallbacks = false }, resumeAsyncCallbacks: function () { - Browser.allowAsyncCallbacks = true + Browser.allowAsyncCallbacks = true; if (Browser.queuedAsyncCallbacks.length > 0) { - const callbacks = Browser.queuedAsyncCallbacks - Browser.queuedAsyncCallbacks = [] + var callbacks = Browser.queuedAsyncCallbacks; + Browser.queuedAsyncCallbacks = []; callbacks.forEach(function (func) { func() }) @@ -2610,7 +2632,7 @@ var Browser = { }, safeRequestAnimationFrame: function (func) { return Browser.requestAnimationFrame(function () { - if (ABORT) return + if (ABORT) return; if (Browser.allowAsyncCallbacks) { func() } else { @@ -2619,9 +2641,9 @@ var Browser = { }) }, safeSetTimeout: function (func, timeout) { - noExitRuntime = true + noExitRuntime = true; return setTimeout(function () { - if (ABORT) return + if (ABORT) return; if (Browser.allowAsyncCallbacks) { func() } else { @@ -2630,9 +2652,9 @@ var Browser = { }, timeout) }, safeSetInterval: function (func, timeout) { - noExitRuntime = true + noExitRuntime = true; return setInterval(function () { - if (ABORT) return + if (ABORT) return; if (Browser.allowAsyncCallbacks) { func() } @@ -2640,54 +2662,54 @@ var Browser = { }, getMimetype: function (name) { return { - jpg: 'image/jpeg', - jpeg: 'image/jpeg', - png: 'image/png', - bmp: 'image/bmp', - ogg: 'audio/ogg', - wav: 'audio/wav', - mp3: 'audio/mpeg' - }[name.substr(name.lastIndexOf('.') + 1)] + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "png": "image/png", + "bmp": "image/bmp", + "ogg": "audio/ogg", + "wav": "audio/wav", + "mp3": "audio/mpeg" + } [name.substr(name.lastIndexOf(".") + 1)] }, getUserMedia: function (func) { if (!window.getUserMedia) { - window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia + window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"] } window.getUserMedia(func) }, getMovementX: function (event) { - return event.movementX || event.mozMovementX || event.webkitMovementX || 0 + return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0 }, getMovementY: function (event) { - return event.movementY || event.mozMovementY || event.webkitMovementY || 0 + return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0 }, getMouseWheelDelta: function (event) { - let delta = 0 + var delta = 0; switch (event.type) { - case 'DOMMouseScroll': - delta = event.detail / 3 - break - case 'mousewheel': - delta = event.wheelDelta / 120 - break - case 'wheel': - delta = event.deltaY + case "DOMMouseScroll": + delta = event.detail / 3; + break; + case "mousewheel": + delta = event.wheelDelta / 120; + break; + case "wheel": + delta = event.deltaY; switch (event.deltaMode) { case 0: - delta /= 100 - break + delta /= 100; + break; case 1: - delta /= 3 - break + delta /= 3; + break; case 2: - delta *= 80 - break + delta *= 80; + break; default: - throw 'unrecognized mouse wheel delta mode: ' + event.deltaMode + throw "unrecognized mouse wheel delta mode: " + event.deltaMode } - break + break; default: - throw 'unrecognized mouse wheel event: ' + event.type + throw "unrecognized mouse wheel event: " + event.type } return delta }, @@ -2699,64 +2721,64 @@ var Browser = { lastTouches: {}, calculateMouseEvent: function (event) { if (Browser.pointerLock) { - if (event.type != 'mousemove' && 'mozMovementX' in event) { + if (event.type != "mousemove" && "mozMovementX" in event) { Browser.mouseMovementX = Browser.mouseMovementY = 0 } else { - Browser.mouseMovementX = Browser.getMovementX(event) + Browser.mouseMovementX = Browser.getMovementX(event); Browser.mouseMovementY = Browser.getMovementY(event) } - if (typeof SDL !== 'undefined') { - Browser.mouseX = SDL.mouseX + Browser.mouseMovementX + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; Browser.mouseY = SDL.mouseY + Browser.mouseMovementY } else { - Browser.mouseX += Browser.mouseMovementX + Browser.mouseX += Browser.mouseMovementX; Browser.mouseY += Browser.mouseMovementY } } else { - const rect = Module.canvas.getBoundingClientRect() - const cw = Module.canvas.width - const ch = Module.canvas.height - const scrollX = typeof window.scrollX !== 'undefined' ? window.scrollX : window.pageXOffset - const scrollY = typeof window.scrollY !== 'undefined' ? window.scrollY : window.pageYOffset - if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') { - const touch = event.touch + var rect = Module["canvas"].getBoundingClientRect(); + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + var scrollX = typeof window.scrollX !== "undefined" ? window.scrollX : window.pageXOffset; + var scrollY = typeof window.scrollY !== "undefined" ? window.scrollY : window.pageYOffset; + if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") { + var touch = event.touch; if (touch === undefined) { return } - let adjustedX = touch.pageX - (scrollX + rect.left) - let adjustedY = touch.pageY - (scrollY + rect.top) - adjustedX = adjustedX * (cw / rect.width) - adjustedY = adjustedY * (ch / rect.height) - const coords = { + var adjustedX = touch.pageX - (scrollX + rect.left); + var adjustedY = touch.pageY - (scrollY + rect.top); + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + var coords = { x: adjustedX, y: adjustedY - } - if (event.type === 'touchstart') { - Browser.lastTouches[touch.identifier] = coords + }; + if (event.type === "touchstart") { + Browser.lastTouches[touch.identifier] = coords; Browser.touches[touch.identifier] = coords - } else if (event.type === 'touchend' || event.type === 'touchmove') { - let last = Browser.touches[touch.identifier] - if (!last) last = coords - Browser.lastTouches[touch.identifier] = last + } else if (event.type === "touchend" || event.type === "touchmove") { + var last = Browser.touches[touch.identifier]; + if (!last) last = coords; + Browser.lastTouches[touch.identifier] = last; Browser.touches[touch.identifier] = coords } return } - let x = event.pageX - (scrollX + rect.left) - let y = event.pageY - (scrollY + rect.top) - x = x * (cw / rect.width) - y = y * (ch / rect.height) - Browser.mouseMovementX = x - Browser.mouseX - Browser.mouseMovementY = y - Browser.mouseY - Browser.mouseX = x + var x = event.pageX - (scrollX + rect.left); + var y = event.pageY - (scrollY + rect.top); + x = x * (cw / rect.width); + y = y * (ch / rect.height); + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; Browser.mouseY = y } }, asyncLoad: function (url, onload, onerror, noRunDep) { - const dep = !noRunDep ? getUniqueRunDependency('al ' + url) : '' + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; readAsync(url, function (arrayBuffer) { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).') - onload(new Uint8Array(arrayBuffer)) + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); if (dep) removeRunDependency(dep) }, function (event) { if (onerror) { @@ -2764,80 +2786,80 @@ var Browser = { } else { throw 'Loading data file "' + url + '" failed.' } - }) + }); if (dep) addRunDependency(dep) }, resizeListeners: [], updateResizeListeners: function () { - const canvas = Module.canvas + var canvas = Module["canvas"]; Browser.resizeListeners.forEach(function (listener) { listener(canvas.width, canvas.height) }) }, setCanvasSize: function (width, height, noUpdates) { - const canvas = Module.canvas - Browser.updateCanvasDimensions(canvas, width, height) + var canvas = Module["canvas"]; + Browser.updateCanvasDimensions(canvas, width, height); if (!noUpdates) Browser.updateResizeListeners() }, windowedWidth: 0, windowedHeight: 0, setFullscreenCanvasSize: function () { - if (typeof SDL !== 'undefined') { - let flags = HEAPU32[SDL.screen >> 2] - flags = flags | 8388608 + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags | 8388608; HEAP32[SDL.screen >> 2] = flags } - Browser.updateCanvasDimensions(Module.canvas) + Browser.updateCanvasDimensions(Module["canvas"]); Browser.updateResizeListeners() }, setWindowedCanvasSize: function () { - if (typeof SDL !== 'undefined') { - let flags = HEAPU32[SDL.screen >> 2] - flags = flags & ~8388608 + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags & ~8388608; HEAP32[SDL.screen >> 2] = flags } - Browser.updateCanvasDimensions(Module.canvas) + Browser.updateCanvasDimensions(Module["canvas"]); Browser.updateResizeListeners() }, updateCanvasDimensions: function (canvas, wNative, hNative) { if (wNative && hNative) { - canvas.widthNative = wNative + canvas.widthNative = wNative; canvas.heightNative = hNative } else { - wNative = canvas.widthNative + wNative = canvas.widthNative; hNative = canvas.heightNative } - let w = wNative - let h = hNative - if (Module.forcedAspectRatio && Module.forcedAspectRatio > 0) { - if (w / h < Module.forcedAspectRatio) { - w = Math.round(h * Module.forcedAspectRatio) + var w = wNative; + var h = hNative; + if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { + if (w / h < Module["forcedAspectRatio"]) { + w = Math.round(h * Module["forcedAspectRatio"]) } else { - h = Math.round(w / Module.forcedAspectRatio) + h = Math.round(w / Module["forcedAspectRatio"]) } } - if ((document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement) === canvas.parentNode && typeof screen !== 'undefined') { - const factor = Math.min(screen.width / w, screen.height / h) - w = Math.round(w * factor) + if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); h = Math.round(h * factor) } if (Browser.resizeCanvas) { - if (canvas.width != w) canvas.width = w - if (canvas.height != h) canvas.height = h - if (typeof canvas.style !== 'undefined') { - canvas.style.removeProperty('width') - canvas.style.removeProperty('height') + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != "undefined") { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height") } } else { - if (canvas.width != wNative) canvas.width = wNative - if (canvas.height != hNative) canvas.height = hNative - if (typeof canvas.style !== 'undefined') { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != "undefined") { if (w != wNative || h != hNative) { - canvas.style.setProperty('width', w + 'px', 'important') - canvas.style.setProperty('height', h + 'px', 'important') + canvas.style.setProperty("width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important") } else { - canvas.style.removeProperty('width') - canvas.style.removeProperty('height') + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height") } } } @@ -2845,124 +2867,124 @@ var Browser = { wgetRequests: {}, nextWgetRequestHandle: 0, getNextWgetRequestHandle: function () { - const handle = Browser.nextWgetRequestHandle - Browser.nextWgetRequestHandle++ + var handle = Browser.nextWgetRequestHandle; + Browser.nextWgetRequestHandle++; return handle } -} +}; -function demangle (func) { +function demangle(func) { return func } -function demangleAll (text) { - const regex = /\b_Z[\w\d_]+/g +function demangleAll(text) { + var regex = /\b_Z[\w\d_]+/g; return text.replace(regex, function (x) { - const y = demangle(x) - return x === y ? x : y + ' [' + x + ']' + var y = demangle(x); + return x === y ? x : y + " [" + x + "]" }) } -function jsStackTrace () { - let err = new Error() +function jsStackTrace() { + var err = new Error; if (!err.stack) { try { - throw new Error() + throw new Error } catch (e) { err = e } if (!err.stack) { - return '(no stack trace available)' + return "(no stack trace available)" } } return err.stack.toString() } -function stackTrace () { - let js = jsStackTrace() - if (Module.extraStackTrace) js += '\n' + Module.extraStackTrace() +function stackTrace() { + var js = jsStackTrace(); + if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); return demangleAll(js) } -function ___assert_fail (condition, filename, line, func) { - abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']) +function ___assert_fail(condition, filename, line, func) { + abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]) } -const _emscripten_get_now_is_monotonic = true +var _emscripten_get_now_is_monotonic = true; -function setErrNo (value) { - HEAP32[___errno_location() >> 2] = value +function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; return value } -function _clock_gettime (clk_id, tp) { - let now +function _clock_gettime(clk_id, tp) { + var now; if (clk_id === 0) { now = Date.now() } else if ((clk_id === 1 || clk_id === 4) && _emscripten_get_now_is_monotonic) { now = _emscripten_get_now() } else { - setErrNo(28) + setErrNo(28); return -1 } - HEAP32[tp >> 2] = now / 1e3 | 0 - HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0 + HEAP32[tp >> 2] = now / 1e3 | 0; + HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0; return 0 } -function ___clock_gettime (a0, a1) { +function ___clock_gettime(a0, a1) { return _clock_gettime(a0, a1) } -function ___map_file (pathname, size) { - setErrNo(63) +function ___map_file(pathname, size) { + setErrNo(63); return -1 } var PATH = { splitPath: function (filename) { - const splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; return splitPathRe.exec(filename).slice(1) }, normalizeArray: function (parts, allowAboveRoot) { - let up = 0 - for (let i = parts.length - 1; i >= 0; i--) { - const last = parts[i] - if (last === '.') { - parts.splice(i, 1) - } else if (last === '..') { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { parts.splice(i, 1) + } else if (last === "..") { + parts.splice(i, 1); up++ } else if (up) { - parts.splice(i, 1) + parts.splice(i, 1); up-- } } if (allowAboveRoot) { for (; up; up--) { - parts.unshift('..') + parts.unshift("..") } } return parts }, normalize: function (path) { - const isAbsolute = path.charAt(0) === '/' - const trailingSlash = path.substr(-1) === '/' - path = PATH.normalizeArray(path.split('/').filter(function (p) { + var isAbsolute = path.charAt(0) === "/", + trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray(path.split("/").filter(function (p) { return !!p - }), !isAbsolute).join('/') + }), !isAbsolute).join("/"); if (!path && !isAbsolute) { - path = '.' + path = "." } if (path && trailingSlash) { - path += '/' + path += "/" } - return (isAbsolute ? '/' : '') + path + return (isAbsolute ? "/" : "") + path }, dirname: function (path) { - const result = PATH.splitPath(path) - const root = result[0] - let dir = result[1] + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; if (!root && !dir) { - return '.' + return "." } if (dir) { dir = dir.substr(0, dir.length - 1) @@ -2970,94 +2992,94 @@ var PATH = { return root + dir }, basename: function (path) { - if (path === '/') return '/' - const lastSlash = path.lastIndexOf('/') - if (lastSlash === -1) return path + if (path === "/") return "/"; + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; return path.substr(lastSlash + 1) }, extname: function (path) { return PATH.splitPath(path)[3] }, join: function () { - const paths = Array.prototype.slice.call(arguments, 0) - return PATH.normalize(paths.join('/')) + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join("/")) }, join2: function (l, r) { - return PATH.normalize(l + '/' + r) + return PATH.normalize(l + "/" + r) } -} +}; var PATH_FS = { resolve: function () { - let resolvedPath = '' - let resolvedAbsolute = false - for (let i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - const path = i >= 0 ? arguments[i] : FS.cwd() - if (typeof path !== 'string') { - throw new TypeError('Arguments to path.resolve must be strings') + var resolvedPath = "", + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path !== "string") { + throw new TypeError("Arguments to path.resolve must be strings") } else if (!path) { - return '' + return "" } - resolvedPath = path + '/' + resolvedPath - resolvedAbsolute = path.charAt(0) === '/' + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = path.charAt(0) === "/" } - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function (p) { + resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function (p) { return !!p - }), !resolvedAbsolute).join('/') - return (resolvedAbsolute ? '/' : '') + resolvedPath || '.' + }), !resolvedAbsolute).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "." }, relative: function (from, to) { - from = PATH_FS.resolve(from).substr(1) - to = PATH_FS.resolve(to).substr(1) + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); - function trim (arr) { - let start = 0 + function trim(arr) { + var start = 0; for (; start < arr.length; start++) { - if (arr[start] !== '') break + if (arr[start] !== "") break } - let end = arr.length - 1 + var end = arr.length - 1; for (; end >= 0; end--) { - if (arr[end] !== '') break + if (arr[end] !== "") break } - if (start > end) return [] + if (start > end) return []; return arr.slice(start, end - start + 1) } - const fromParts = trim(from.split('/')) - const toParts = trim(to.split('/')) - const length = Math.min(fromParts.length, toParts.length) - let samePartsLength = length + var fromParts = trim(from.split("/")); + var toParts = trim(to.split("/")); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; for (var i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { - samePartsLength = i + samePartsLength = i; break } } - let outputParts = [] + var outputParts = []; for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..') + outputParts.push("..") } - outputParts = outputParts.concat(toParts.slice(samePartsLength)) - return outputParts.join('/') + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/") } -} +}; var TTY = { ttys: [], - init: function () { }, - shutdown: function () { }, + init: function () {}, + shutdown: function () {}, register: function (dev, ops) { TTY.ttys[dev] = { input: [], output: [], ops: ops - } + }; FS.registerDevice(dev, TTY.stream_ops) }, stream_ops: { open: function (stream) { - const tty = TTY.ttys[stream.node.rdev] + var tty = TTY.ttys[stream.node.rdev]; if (!tty) { throw new FS.ErrnoError(43) } - stream.tty = tty + stream.tty = tty; stream.seekable = false }, close: function (stream) { @@ -3070,9 +3092,9 @@ var TTY = { if (!stream.tty || !stream.tty.ops.get_char) { throw new FS.ErrnoError(60) } - let bytesRead = 0 - for (let i = 0; i < length; i++) { - var result + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; try { result = stream.tty.ops.get_char(stream.tty) } catch (e) { @@ -3081,8 +3103,8 @@ var TTY = { if (result === undefined && bytesRead === 0) { throw new FS.ErrnoError(6) } - if (result === null || result === undefined) break - bytesRead++ + if (result === null || result === undefined) break; + bytesRead++; buffer[offset + i] = result } if (bytesRead) { @@ -3110,16 +3132,16 @@ var TTY = { default_tty_ops: { get_char: function (tty) { if (!tty.input.length) { - let result = null - if (typeof window !== 'undefined' && typeof window.prompt === 'function') { - result = window.prompt('Input: ') + var result = null; + if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); if (result !== null) { - result += '\n' + result += "\n" } - } else if (typeof readline === 'function') { - result = readline() + } else if (typeof readline == "function") { + result = readline(); if (result !== null) { - result += '\n' + result += "\n" } } if (!result) { @@ -3131,7 +3153,7 @@ var TTY = { }, put_char: function (tty, val) { if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)) + out(UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) @@ -3139,7 +3161,7 @@ var TTY = { }, flush: function (tty) { if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)) + out(UTF8ArrayToString(tty.output, 0)); tty.output = [] } } @@ -3147,7 +3169,7 @@ var TTY = { default_tty1_ops: { put_char: function (tty, val) { if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)) + err(UTF8ArrayToString(tty.output, 0)); tty.output = [] } else { if (val != 0) tty.output.push(val) @@ -3155,16 +3177,16 @@ var TTY = { }, flush: function (tty) { if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)) + err(UTF8ArrayToString(tty.output, 0)); tty.output = [] } } } -} +}; var MEMFS = { ops_table: null, mount: function (mount) { - return MEMFS.createNode(null, '/', 16384 | 511, 0) + return MEMFS.createNode(null, "/", 16384 | 511, 0) }, createNode: function (parent, name, mode, dev) { if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { @@ -3219,24 +3241,24 @@ var MEMFS = { } } } - const node = FS.createNode(parent, name, mode, dev) + var node = FS.createNode(parent, name, mode, dev); if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node - node.stream_ops = MEMFS.ops_table.dir.stream + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; node.contents = {} } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node - node.stream_ops = MEMFS.ops_table.file.stream - node.usedBytes = 0 + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; node.contents = null } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node + node.node_ops = MEMFS.ops_table.link.node; node.stream_ops = MEMFS.ops_table.link.stream } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node + node.node_ops = MEMFS.ops_table.chrdev.node; node.stream_ops = MEMFS.ops_table.chrdev.stream } - node.timestamp = Date.now() + node.timestamp = Date.now(); if (parent) { parent.contents[name] = node } @@ -3244,58 +3266,60 @@ var MEMFS = { }, getFileDataAsRegularArray: function (node) { if (node.contents && node.contents.subarray) { - const arr = [] - for (let i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]) + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); return arr } return node.contents }, getFileDataAsTypedArray: function (node) { - if (!node.contents) return new Uint8Array(0) - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes) + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); return new Uint8Array(node.contents) }, expandFileStorage: function (node, newCapacity) { - const prevCapacity = node.contents ? node.contents.length : 0 - if (prevCapacity >= newCapacity) return - const CAPACITY_DOUBLING_MAX = 1024 * 1024 - newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0) - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256) - const oldContents = node.contents - node.contents = new Uint8Array(newCapacity) - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0) + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + return }, resizeFileStorage: function (node, newSize) { - if (node.usedBytes == newSize) return + if (node.usedBytes == newSize) return; if (newSize == 0) { - node.contents = null - node.usedBytes = 0 + node.contents = null; + node.usedBytes = 0; return } if (!node.contents || node.contents.subarray) { - const oldContents = node.contents - node.contents = new Uint8Array(newSize) + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); if (oldContents) { node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))) } - node.usedBytes = newSize + node.usedBytes = newSize; return } - if (!node.contents) node.contents = [] - if (node.contents.length > newSize) node.contents.length = newSize - else { while (node.contents.length < newSize) node.contents.push(0) } + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else + while (node.contents.length < newSize) node.contents.push(0); node.usedBytes = newSize }, node_ops: { getattr: function (node) { - const attr = {} - attr.dev = FS.isChrdev(node.mode) ? node.id : 1 - attr.ino = node.id - attr.mode = node.mode - attr.nlink = 1 - attr.uid = 0 - attr.gid = 0 - attr.rdev = node.rdev + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; if (FS.isDir(node.mode)) { attr.size = 4096 } else if (FS.isFile(node.mode)) { @@ -3305,11 +3329,11 @@ var MEMFS = { } else { attr.size = 0 } - attr.atime = new Date(node.timestamp) - attr.mtime = new Date(node.timestamp) - attr.ctime = new Date(node.timestamp) - attr.blksize = 4096 - attr.blocks = Math.ceil(attr.size / attr.blksize) + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); return attr }, setattr: function (node, attr) { @@ -3331,34 +3355,34 @@ var MEMFS = { }, rename: function (old_node, new_dir, new_name) { if (FS.isDir(old_node.mode)) { - let new_node + var new_node; try { new_node = FS.lookupNode(new_dir, new_name) - } catch (e) { } + } catch (e) {} if (new_node) { - for (const i in new_node.contents) { + for (var i in new_node.contents) { throw new FS.ErrnoError(55) } } } - delete old_node.parent.contents[old_node.name] - old_node.name = new_name - new_dir.contents[new_name] = old_node + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; old_node.parent = new_dir }, unlink: function (parent, name) { delete parent.contents[name] }, rmdir: function (parent, name) { - const node = FS.lookupNode(parent, name) - for (const i in node.contents) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { throw new FS.ErrnoError(55) } delete parent.contents[name] }, readdir: function (node) { - const entries = ['.', '..'] - for (const key in node.contents) { + var entries = [".", ".."]; + for (var key in node.contents) { if (!node.contents.hasOwnProperty(key)) { continue } @@ -3367,8 +3391,8 @@ var MEMFS = { return entries }, symlink: function (parent, newname, oldpath) { - const node = MEMFS.createNode(parent, newname, 511 | 40960, 0) - node.link = oldpath + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; return node }, readlink: function (node) { @@ -3380,13 +3404,13 @@ var MEMFS = { }, stream_ops: { read: function (stream, buffer, offset, length, position) { - const contents = stream.node.contents - if (position >= stream.node.usedBytes) return 0 - const size = Math.min(stream.node.usedBytes - position, length) + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); if (size > 8 && contents.subarray) { buffer.set(contents.subarray(position, position + size), offset) } else { - for (let i = 0; i < size; i++) buffer[offset + i] = contents[position + i] + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i] } return size }, @@ -3394,35 +3418,35 @@ var MEMFS = { if (buffer.buffer === HEAP8.buffer) { canOwn = false } - if (!length) return 0 - const node = stream.node - node.timestamp = Date.now() + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); if (buffer.subarray && (!node.contents || node.contents.subarray)) { if (canOwn) { - node.contents = buffer.subarray(offset, offset + length) - node.usedBytes = length + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; return length } else if (node.usedBytes === 0 && position === 0) { - node.contents = buffer.slice(offset, offset + length) - node.usedBytes = length + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; return length } else if (position + length <= node.usedBytes) { - node.contents.set(buffer.subarray(offset, offset + length), position) + node.contents.set(buffer.subarray(offset, offset + length), position); return length } } - MEMFS.expandFileStorage(node, position + length) - if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position) + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); else { - for (let i = 0; i < length; i++) { + for (var i = 0; i < length; i++) { node.contents[position + i] = buffer[offset + i] } } - node.usedBytes = Math.max(node.usedBytes, position + length) + node.usedBytes = Math.max(node.usedBytes, position + length); return length }, llseek: function (stream, offset, whence) { - let position = offset + var position = offset; if (whence === 1) { position += stream.position } else if (whence === 2) { @@ -3436,18 +3460,18 @@ var MEMFS = { return position }, allocate: function (stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length) + MEMFS.expandFileStorage(stream.node, offset + length); stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length) }, mmap: function (stream, buffer, offset, length, position, prot, flags) { if (!FS.isFile(stream.node.mode)) { throw new FS.ErrnoError(43) } - let ptr - let allocated - let contents = stream.node.contents + var ptr; + var allocated; + var contents = stream.node.contents; if (!(flags & 2) && contents.buffer === buffer.buffer) { - allocated = false + allocated = false; ptr = contents.byteOffset } else { if (position > 0 || position + length < contents.length) { @@ -3457,12 +3481,12 @@ var MEMFS = { contents = Array.prototype.slice.call(contents, position, position + length) } } - allocated = true - const fromHeap = buffer.buffer == HEAP8.buffer - ptr = _malloc(length) + allocated = true; + var fromHeap = buffer.buffer == HEAP8.buffer; + ptr = _malloc(length); if (!ptr) { throw new FS.ErrnoError(48) - } (fromHeap ? HEAP8 : buffer).set(contents, ptr) + }(fromHeap ? HEAP8 : buffer).set(contents, ptr) } return { ptr: ptr, @@ -3476,11 +3500,11 @@ var MEMFS = { if (mmapFlags & 2) { return 0 } - const bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false) + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); return 0 } } -} +}; var FS = { root: null, mounts: [], @@ -3488,7 +3512,7 @@ var FS = { streams: [], nextInode: 1, nameTable: null, - currentPath: '/', + currentPath: "/", initialized: false, ignorePermissions: true, trackingDelegate: {}, @@ -3503,23 +3527,21 @@ var FS = { filesystems: null, syncFSRequests: 0, handleFSError: function (e) { - if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace() + if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); return setErrNo(e.errno) }, lookupPath: function (path, opts) { - path = PATH_FS.resolve(FS.cwd(), path) - opts = opts || {} - if (!path) { - return { - path: '', - node: null - } - } - const defaults = { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + if (!path) return { + path: "", + node: null + }; + var defaults = { follow_mount: true, recurse_count: 0 - } - for (const key in defaults) { + }; + for (var key in defaults) { if (opts[key] === undefined) { opts[key] = defaults[key] } @@ -3527,32 +3549,32 @@ var FS = { if (opts.recurse_count > 8) { throw new FS.ErrnoError(32) } - const parts = PATH.normalizeArray(path.split('/').filter(function (p) { + var parts = PATH.normalizeArray(path.split("/").filter(function (p) { return !!p - }), false) - let current = FS.root - let current_path = '/' - for (let i = 0; i < parts.length; i++) { - const islast = i === parts.length - 1 + }), false); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; if (islast && opts.parent) { break } - current = FS.lookupNode(current, parts[i]) - current_path = PATH.join2(current_path, parts[i]) + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); if (FS.isMountpoint(current)) { if (!islast || islast && opts.follow_mount) { current = current.mounted.root } } if (!islast || opts.follow) { - let count = 0 + var count = 0; while (FS.isLink(current.mode)) { - const link = FS.readlink(current_path) - current_path = PATH_FS.resolve(PATH.dirname(current_path), link) - const lookup = FS.lookupPath(current_path, { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count - }) - current = lookup.node + }); + current = lookup.node; if (count++ > 40) { throw new FS.ErrnoError(32) } @@ -3565,38 +3587,38 @@ var FS = { } }, getPath: function (node) { - let path + var path; while (true) { if (FS.isRoot(node)) { - const mount = node.mount.mountpoint - if (!path) return mount - return mount[mount.length - 1] !== '/' ? mount + '/' + path : mount + path + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path } - path = path ? node.name + '/' + path : node.name + path = path ? node.name + "/" + path : node.name; node = node.parent } }, hashName: function (parentid, name) { - let hash = 0 - for (let i = 0; i < name.length; i++) { + var hash = 0; + for (var i = 0; i < name.length; i++) { hash = (hash << 5) - hash + name.charCodeAt(i) | 0 } return (parentid + hash >>> 0) % FS.nameTable.length }, hashAddNode: function (node) { - const hash = FS.hashName(node.parent.id, node.name) - node.name_next = FS.nameTable[hash] + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; FS.nameTable[hash] = node }, hashRemoveNode: function (node) { - const hash = FS.hashName(node.parent.id, node.name) + var hash = FS.hashName(node.parent.id, node.name); if (FS.nameTable[hash] === node) { FS.nameTable[hash] = node.name_next } else { - let current = FS.nameTable[hash] + var current = FS.nameTable[hash]; while (current) { if (current.name_next === node) { - current.name_next = node.name_next + current.name_next = node.name_next; break } current = current.name_next @@ -3604,13 +3626,13 @@ var FS = { } }, lookupNode: function (parent, name) { - const errCode = FS.mayLookup(parent) + var errCode = FS.mayLookup(parent); if (errCode) { throw new FS.ErrnoError(errCode, parent) } - const hash = FS.hashName(parent.id, name) - for (let node = FS.nameTable[hash]; node; node = node.name_next) { - const nodeName = node.name + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; if (node.parent.id === parent.id && nodeName === name) { return node } @@ -3618,8 +3640,8 @@ var FS = { return FS.lookup(parent, name) }, createNode: function (parent, name, mode, rdev) { - const node = new FS.FSNode(parent, name, mode, rdev) - FS.hashAddNode(node) + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); return node }, destroyNode: function (node) { @@ -3653,33 +3675,33 @@ var FS = { return (mode & 49152) === 49152 }, flagModes: { - r: 0, - rs: 1052672, - 'r+': 2, - w: 577, - wx: 705, - xw: 705, - 'w+': 578, - 'wx+': 706, - 'xw+': 706, - a: 1089, - ax: 1217, - xa: 1217, - 'a+': 1090, - 'ax+': 1218, - 'xa+': 1218 + "r": 0, + "rs": 1052672, + "r+": 2, + "w": 577, + "wx": 705, + "xw": 705, + "w+": 578, + "wx+": 706, + "xw+": 706, + "a": 1089, + "ax": 1217, + "xa": 1217, + "a+": 1090, + "ax+": 1218, + "xa+": 1218 }, modeStringToFlags: function (str) { - const flags = FS.flagModes[str] - if (typeof flags === 'undefined') { - throw new Error('Unknown file open mode: ' + str) + var flags = FS.flagModes[str]; + if (typeof flags === "undefined") { + throw new Error("Unknown file open mode: " + str) } return flags }, flagsToPermissionString: function (flag) { - let perms = ['r', 'w', 'rw'][flag & 3] + var perms = ["r", "w", "rw"][flag & 3]; if (flag & 512) { - perms += 'w' + perms += "w" } return perms }, @@ -3687,36 +3709,36 @@ var FS = { if (FS.ignorePermissions) { return 0 } - if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { return 2 - } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { return 2 - } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { return 2 } return 0 }, mayLookup: function (dir) { - const errCode = FS.nodePermissions(dir, 'x') - if (errCode) return errCode - if (!dir.node_ops.lookup) return 2 + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; return 0 }, mayCreate: function (dir, name) { try { - const node = FS.lookupNode(dir, name) + var node = FS.lookupNode(dir, name); return 20 - } catch (e) { } - return FS.nodePermissions(dir, 'wx') + } catch (e) {} + return FS.nodePermissions(dir, "wx") }, mayDelete: function (dir, name, isdir) { - let node + var node; try { node = FS.lookupNode(dir, name) } catch (e) { return e.errno } - const errCode = FS.nodePermissions(dir, 'wx') + var errCode = FS.nodePermissions(dir, "wx"); if (errCode) { return errCode } @@ -3741,7 +3763,7 @@ var FS = { if (FS.isLink(node.mode)) { return 32 } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== 'r' || flags & 512) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { return 31 } } @@ -3749,9 +3771,9 @@ var FS = { }, MAX_OPEN_FDS: 4096, nextfd: function (fd_start, fd_end) { - fd_start = fd_start || 0 - fd_end = fd_end || FS.MAX_OPEN_FDS - for (let fd = fd_start; fd <= fd_end; fd++) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { if (!FS.streams[fd]) { return fd } @@ -3763,7 +3785,7 @@ var FS = { }, createStream: function (stream, fd_start, fd_end) { if (!FS.FSStream) { - FS.FSStream = function () { } + FS.FSStream = function () {}; FS.FSStream.prototype = { object: { get: function () { @@ -3790,14 +3812,14 @@ var FS = { } } } - const newStream = new FS.FSStream() - for (const p in stream) { + var newStream = new FS.FSStream; + for (var p in stream) { newStream[p] = stream[p] } - stream = newStream - const fd = FS.nextfd(fd_start, fd_end) - stream.fd = fd - FS.streams[fd] = stream + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; return stream }, closeStream: function (fd) { @@ -3805,8 +3827,8 @@ var FS = { }, chrdev_stream_ops: { open: function (stream) { - const device = FS.getDevice(stream.node.rdev) - stream.stream_ops = device.stream_ops + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; if (stream.stream_ops.open) { stream.stream_ops.open(stream) } @@ -3833,36 +3855,36 @@ var FS = { return FS.devices[dev] }, getMounts: function (mount) { - const mounts = [] - const check = [mount] + var mounts = []; + var check = [mount]; while (check.length) { - const m = check.pop() - mounts.push(m) + var m = check.pop(); + mounts.push(m); check.push.apply(check, m.mounts) } return mounts }, syncfs: function (populate, callback) { - if (typeof populate === 'function') { - callback = populate + if (typeof populate === "function") { + callback = populate; populate = false } - FS.syncFSRequests++ + FS.syncFSRequests++; if (FS.syncFSRequests > 1) { - err('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work') + err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work") } - const mounts = FS.getMounts(FS.root.mount) - let completed = 0 + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; - function doCallback (errCode) { - FS.syncFSRequests-- + function doCallback(errCode) { + FS.syncFSRequests--; return callback(errCode) } - function done (errCode) { + function done(errCode) { if (errCode) { if (!done.errored) { - done.errored = true + done.errored = true; return doCallback(errCode) } return @@ -3879,17 +3901,17 @@ var FS = { }) }, mount: function (type, opts, mountpoint) { - const root = mountpoint === '/' - const pseudo = !mountpoint - let node + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; if (root && FS.root) { throw new FS.ErrnoError(10) } else if (!root && !pseudo) { - const lookup = FS.lookupPath(mountpoint, { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false - }) - mountpoint = lookup.path - node = lookup.node + }); + mountpoint = lookup.path; + node = lookup.node; if (FS.isMountpoint(node)) { throw new FS.ErrnoError(10) } @@ -3897,19 +3919,19 @@ var FS = { throw new FS.ErrnoError(54) } } - const mount = { + var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: [] - } - const mountRoot = type.mount(mount) - mountRoot.mount = mount - mount.root = mountRoot + }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; if (root) { FS.root = mountRoot } else if (node) { - node.mounted = mount + node.mounted = mount; if (node.mount) { node.mount.mounts.push(mount) } @@ -3917,42 +3939,42 @@ var FS = { return mountRoot }, unmount: function (mountpoint) { - const lookup = FS.lookupPath(mountpoint, { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false - }) + }); if (!FS.isMountpoint(lookup.node)) { throw new FS.ErrnoError(28) } - const node = lookup.node - const mount = node.mounted - const mounts = FS.getMounts(mount) + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); Object.keys(FS.nameTable).forEach(function (hash) { - let current = FS.nameTable[hash] + var current = FS.nameTable[hash]; while (current) { - const next = current.name_next + var next = current.name_next; if (mounts.indexOf(current.mount) !== -1) { FS.destroyNode(current) } current = next } - }) - node.mounted = null - const idx = node.mount.mounts.indexOf(mount) + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); node.mount.mounts.splice(idx, 1) }, lookup: function (parent, name) { return parent.node_ops.lookup(parent, name) }, mknod: function (path, mode, dev) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { parent: true - }) - const parent = lookup.node - const name = PATH.basename(path) - if (!name || name === '.' || name === '..') { + }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { throw new FS.ErrnoError(28) } - const errCode = FS.mayCreate(parent, name) + var errCode = FS.mayCreate(parent, name); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -3962,23 +3984,23 @@ var FS = { return parent.node_ops.mknod(parent, name, mode, dev) }, create: function (path, mode) { - mode = mode !== undefined ? mode : 438 - mode &= 4095 - mode |= 32768 + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; return FS.mknod(path, mode, 0) }, mkdir: function (path, mode) { - mode = mode !== undefined ? mode : 511 - mode &= 511 | 512 - mode |= 16384 + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; return FS.mknod(path, mode, 0) }, mkdirTree: function (path, mode) { - const dirs = path.split('/') - let d = '' - for (let i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue - d += '/' + dirs[i] + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; try { FS.mkdir(d, mode) } catch (e) { @@ -3987,26 +4009,26 @@ var FS = { } }, mkdev: function (path, mode, dev) { - if (typeof dev === 'undefined') { - dev = mode + if (typeof dev === "undefined") { + dev = mode; mode = 438 } - mode |= 8192 + mode |= 8192; return FS.mknod(path, mode, dev) }, symlink: function (oldpath, newpath) { if (!PATH_FS.resolve(oldpath)) { throw new FS.ErrnoError(44) } - const lookup = FS.lookupPath(newpath, { + var lookup = FS.lookupPath(newpath, { parent: true - }) - const parent = lookup.node + }); + var parent = lookup.node; if (!parent) { throw new FS.ErrnoError(44) } - const newname = PATH.basename(newpath) - const errCode = FS.mayCreate(parent, newname) + var newname = PATH.basename(newpath); + var errCode = FS.mayCreate(parent, newname); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4016,49 +4038,49 @@ var FS = { return parent.node_ops.symlink(parent, newname, oldpath) }, rename: function (old_path, new_path) { - const old_dirname = PATH.dirname(old_path) - const new_dirname = PATH.dirname(new_path) - const old_name = PATH.basename(old_path) - const new_name = PATH.basename(new_path) - let lookup, old_dir, new_dir + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + var lookup, old_dir, new_dir; try { lookup = FS.lookupPath(old_path, { parent: true - }) - old_dir = lookup.node + }); + old_dir = lookup.node; lookup = FS.lookupPath(new_path, { parent: true - }) + }); new_dir = lookup.node } catch (e) { throw new FS.ErrnoError(10) } - if (!old_dir || !new_dir) throw new FS.ErrnoError(44) + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); if (old_dir.mount !== new_dir.mount) { throw new FS.ErrnoError(75) } - const old_node = FS.lookupNode(old_dir, old_name) - let relative = PATH_FS.relative(old_path, new_dirname) - if (relative.charAt(0) !== '.') { + var old_node = FS.lookupNode(old_dir, old_name); + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== ".") { throw new FS.ErrnoError(28) } - relative = PATH_FS.relative(new_path, old_dirname) - if (relative.charAt(0) !== '.') { + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== ".") { throw new FS.ErrnoError(55) } - let new_node + var new_node; try { new_node = FS.lookupNode(new_dir, new_name) - } catch (e) { } + } catch (e) {} if (old_node === new_node) { return } - const isdir = FS.isDir(old_node.mode) - let errCode = FS.mayDelete(old_dir, old_name, isdir) + var isdir = FS.isDir(old_node.mode); + var errCode = FS.mayDelete(old_dir, old_name, isdir); if (errCode) { throw new FS.ErrnoError(errCode) } - errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name) + errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4069,19 +4091,19 @@ var FS = { throw new FS.ErrnoError(10) } if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w') + errCode = FS.nodePermissions(old_dir, "w"); if (errCode) { throw new FS.ErrnoError(errCode) } } try { - if (FS.trackingDelegate.willMovePath) { - FS.trackingDelegate.willMovePath(old_path, new_path) + if (FS.trackingDelegate["willMovePath"]) { + FS.trackingDelegate["willMovePath"](old_path, new_path) } } catch (e) { err("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) } - FS.hashRemoveNode(old_node) + FS.hashRemoveNode(old_node); try { old_dir.node_ops.rename(old_node, new_dir, new_name) } catch (e) { @@ -4090,19 +4112,19 @@ var FS = { FS.hashAddNode(old_node) } try { - if (FS.trackingDelegate.onMovePath) FS.trackingDelegate.onMovePath(old_path, new_path) + if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path) } catch (e) { err("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message) } }, rmdir: function (path) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { parent: true - }) - const parent = lookup.node - const name = PATH.basename(path) - const node = FS.lookupNode(parent, name) - const errCode = FS.mayDelete(parent, name, true) + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4113,38 +4135,38 @@ var FS = { throw new FS.ErrnoError(10) } try { - if (FS.trackingDelegate.willDeletePath) { - FS.trackingDelegate.willDeletePath(path) + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path) } } catch (e) { err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) } - parent.node_ops.rmdir(parent, name) - FS.destroyNode(node) + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); try { - if (FS.trackingDelegate.onDeletePath) FS.trackingDelegate.onDeletePath(path) + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) } catch (e) { err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) } }, readdir: function (path) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { follow: true - }) - const node = lookup.node + }); + var node = lookup.node; if (!node.node_ops.readdir) { throw new FS.ErrnoError(54) } return node.node_ops.readdir(node) }, unlink: function (path) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { parent: true - }) - const parent = lookup.node - const name = PATH.basename(path) - const node = FS.lookupNode(parent, name) - const errCode = FS.mayDelete(parent, name, false) + }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4155,23 +4177,23 @@ var FS = { throw new FS.ErrnoError(10) } try { - if (FS.trackingDelegate.willDeletePath) { - FS.trackingDelegate.willDeletePath(path) + if (FS.trackingDelegate["willDeletePath"]) { + FS.trackingDelegate["willDeletePath"](path) } } catch (e) { err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message) } - parent.node_ops.unlink(parent, name) - FS.destroyNode(node) + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); try { - if (FS.trackingDelegate.onDeletePath) FS.trackingDelegate.onDeletePath(path) + if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path) } catch (e) { err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message) } }, readlink: function (path) { - const lookup = FS.lookupPath(path) - const link = lookup.node + var lookup = FS.lookupPath(path); + var link = lookup.node; if (!link) { throw new FS.ErrnoError(44) } @@ -4181,10 +4203,10 @@ var FS = { return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)) }, stat: function (path, dontFollow) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { follow: !dontFollow - }) - const node = lookup.node + }); + var node = lookup.node; if (!node) { throw new FS.ErrnoError(44) } @@ -4197,11 +4219,11 @@ var FS = { return FS.stat(path, true) }, chmod: function (path, mode, dontFollow) { - let node - if (typeof path === 'string') { - const lookup = FS.lookupPath(path, { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow - }) + }); node = lookup.node } else { node = path @@ -4218,18 +4240,18 @@ var FS = { FS.chmod(path, mode, true) }, fchmod: function (fd, mode) { - const stream = FS.getStream(fd) + var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(8) } FS.chmod(stream.node, mode) }, chown: function (path, uid, gid, dontFollow) { - let node - if (typeof path === 'string') { - const lookup = FS.lookupPath(path, { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow - }) + }); node = lookup.node } else { node = path @@ -4245,7 +4267,7 @@ var FS = { FS.chown(path, uid, gid, true) }, fchown: function (fd, uid, gid) { - const stream = FS.getStream(fd) + var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(8) } @@ -4255,11 +4277,11 @@ var FS = { if (len < 0) { throw new FS.ErrnoError(28) } - let node - if (typeof path === 'string') { - const lookup = FS.lookupPath(path, { + var node; + if (typeof path === "string") { + var lookup = FS.lookupPath(path, { follow: true - }) + }); node = lookup.node } else { node = path @@ -4273,7 +4295,7 @@ var FS = { if (!FS.isFile(node.mode)) { throw new FS.ErrnoError(28) } - const errCode = FS.nodePermissions(node, 'w') + var errCode = FS.nodePermissions(node, "w"); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4283,7 +4305,7 @@ var FS = { }) }, ftruncate: function (fd, len) { - const stream = FS.getStream(fd) + var stream = FS.getStream(fd); if (!stream) { throw new FS.ErrnoError(8) } @@ -4293,45 +4315,45 @@ var FS = { FS.truncate(stream.node, len) }, utime: function (path, atime, mtime) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { follow: true - }) - const node = lookup.node + }); + var node = lookup.node; node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }) }, open: function (path, flags, mode, fd_start, fd_end) { - if (path === '') { + if (path === "") { throw new FS.ErrnoError(44) } - flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags - mode = typeof mode === 'undefined' ? 438 : mode + flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === "undefined" ? 438 : mode; if (flags & 64) { mode = mode & 4095 | 32768 } else { mode = 0 } - let node - if (typeof path === 'object') { + var node; + if (typeof path === "object") { node = path } else { - path = PATH.normalize(path) + path = PATH.normalize(path); try { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { follow: !(flags & 131072) - }) + }); node = lookup.node - } catch (e) { } + } catch (e) {} } - let created = false + var created = false; if (flags & 64) { if (node) { if (flags & 128) { throw new FS.ErrnoError(20) } } else { - node = FS.mknod(path, mode, 0) + node = FS.mknod(path, mode, 0); created = true } } @@ -4345,7 +4367,7 @@ var FS = { throw new FS.ErrnoError(54) } if (!created) { - const errCode = FS.mayOpen(node, flags) + var errCode = FS.mayOpen(node, flags); if (errCode) { throw new FS.ErrnoError(errCode) } @@ -4353,8 +4375,8 @@ var FS = { if (flags & 512) { FS.truncate(node, 0) } - flags &= ~(128 | 512 | 131072) - const stream = FS.createStream({ + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ node: node, path: FS.getPath(node), flags: flags, @@ -4363,27 +4385,27 @@ var FS = { stream_ops: node.stream_ops, ungotten: [], error: false - }, fd_start, fd_end) + }, fd_start, fd_end); if (stream.stream_ops.open) { stream.stream_ops.open(stream) } - if (Module.logReadFiles && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {} + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1 - err('FS.trackingDelegate error on read file: ' + path) + FS.readFiles[path] = 1; + err("FS.trackingDelegate error on read file: " + path) } } try { - if (FS.trackingDelegate.onOpenFile) { - let trackingFlags = 0 + if (FS.trackingDelegate["onOpenFile"]) { + var trackingFlags = 0; if ((flags & 2097155) !== 1) { trackingFlags |= FS.tracking.openFlags.READ } if ((flags & 2097155) !== 0) { trackingFlags |= FS.tracking.openFlags.WRITE } - FS.trackingDelegate.onOpenFile(path, trackingFlags) + FS.trackingDelegate["onOpenFile"](path, trackingFlags) } } catch (e) { err("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message) @@ -4394,7 +4416,7 @@ var FS = { if (FS.isClosed(stream)) { throw new FS.ErrnoError(8) } - if (stream.getdents) stream.getdents = null + if (stream.getdents) stream.getdents = null; try { if (stream.stream_ops.close) { stream.stream_ops.close(stream) @@ -4419,8 +4441,8 @@ var FS = { if (whence != 0 && whence != 1 && whence != 2) { throw new FS.ErrnoError(28) } - stream.position = stream.stream_ops.llseek(stream, offset, whence) - stream.ungotten = [] + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; return stream.position }, read: function (stream, buffer, offset, length, position) { @@ -4439,14 +4461,14 @@ var FS = { if (!stream.stream_ops.read) { throw new FS.ErrnoError(28) } - const seeking = typeof position !== 'undefined' + var seeking = typeof position !== "undefined"; if (!seeking) { position = stream.position } else if (!stream.seekable) { throw new FS.ErrnoError(70) } - const bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position) - if (!seeking) stream.position += bytesRead + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; return bytesRead }, write: function (stream, buffer, offset, length, position, canOwn) { @@ -4468,16 +4490,16 @@ var FS = { if (stream.seekable && stream.flags & 1024) { FS.llseek(stream, 0, 2) } - const seeking = typeof position !== 'undefined' + var seeking = typeof position !== "undefined"; if (!seeking) { position = stream.position } else if (!stream.seekable) { throw new FS.ErrnoError(70) } - const bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn) - if (!seeking) stream.position += bytesWritten + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; try { - if (stream.path && FS.trackingDelegate.onWriteToFile) FS.trackingDelegate.onWriteToFile(stream.path) + if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path) } catch (e) { err("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message) } @@ -4529,38 +4551,38 @@ var FS = { return stream.stream_ops.ioctl(stream, cmd, arg) }, readFile: function (path, opts) { - opts = opts || {} - opts.flags = opts.flags || 'r' - opts.encoding = opts.encoding || 'binary' - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + opts = opts || {}; + opts.flags = opts.flags || "r"; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { throw new Error('Invalid encoding type "' + opts.encoding + '"') } - let ret - const stream = FS.open(path, opts.flags) - const stat = FS.stat(path) - const length = stat.size - const buf = new Uint8Array(length) - FS.read(stream, buf, 0, length, 0) - if (opts.encoding === 'utf8') { + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { ret = UTF8ArrayToString(buf, 0) - } else if (opts.encoding === 'binary') { + } else if (opts.encoding === "binary") { ret = buf } - FS.close(stream) + FS.close(stream); return ret }, writeFile: function (path, data, opts) { - opts = opts || {} - opts.flags = opts.flags || 'w' - const stream = FS.open(path, opts.flags, opts.mode) - if (typeof data === 'string') { - const buf = new Uint8Array(lengthBytesUTF8(data) + 1) - const actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length) + opts = opts || {}; + opts.flags = opts.flags || "w"; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn) } else if (ArrayBuffer.isView(data)) { FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn) } else { - throw new Error('Unsupported data type') + throw new Error("Unsupported data type") } FS.close(stream) }, @@ -4568,28 +4590,28 @@ var FS = { return FS.currentPath }, chdir: function (path) { - const lookup = FS.lookupPath(path, { + var lookup = FS.lookupPath(path, { follow: true - }) + }); if (lookup.node === null) { throw new FS.ErrnoError(44) } if (!FS.isDir(lookup.node.mode)) { throw new FS.ErrnoError(54) } - const errCode = FS.nodePermissions(lookup.node, 'x') + var errCode = FS.nodePermissions(lookup.node, "x"); if (errCode) { throw new FS.ErrnoError(errCode) } FS.currentPath = lookup.path }, createDefaultDirectories: function () { - FS.mkdir('/tmp') - FS.mkdir('/home') - FS.mkdir('/home/web_user') + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user") }, createDefaultDevices: function () { - FS.mkdir('/dev') + FS.mkdir("/dev"); FS.registerDevice(FS.makedev(1, 3), { read: function () { return 0 @@ -4597,123 +4619,123 @@ var FS = { write: function (stream, buffer, offset, length, pos) { return length } - }) - FS.mkdev('/dev/null', FS.makedev(1, 3)) - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops) - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) - FS.mkdev('/dev/tty', FS.makedev(5, 0)) - FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - let random_device - if (typeof crypto === 'object' && typeof crypto.getRandomValues === 'function') { - const randomBuffer = new Uint8Array(1) + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device; + if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") { + var randomBuffer = new Uint8Array(1); random_device = function () { - crypto.getRandomValues(randomBuffer) + crypto.getRandomValues(randomBuffer); return randomBuffer[0] } - } else { } + } else {} if (!random_device) { random_device = function () { - abort('random_device') + abort("random_device") } } - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) - FS.mkdir('/dev/shm') - FS.mkdir('/dev/shm/tmp') + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp") }, createSpecialDirectories: function () { - FS.mkdir('/proc') - FS.mkdir('/proc/self') - FS.mkdir('/proc/self/fd') + FS.mkdir("/proc"); + FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); FS.mount({ mount: function () { - const node = FS.createNode('/proc/self', 'fd', 16384 | 511, 73) + var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73); node.node_ops = { lookup: function (parent, name) { - const fd = +name - const stream = FS.getStream(fd) - if (!stream) throw new FS.ErrnoError(8) - const ret = { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { parent: null, mount: { - mountpoint: 'fake' + mountpoint: "fake" }, node_ops: { readlink: function () { return stream.path } } - } - ret.parent = ret + }; + ret.parent = ret; return ret } - } + }; return node } - }, {}, '/proc/self/fd') + }, {}, "/proc/self/fd") }, createStandardStreams: function () { - if (Module.stdin) { - FS.createDevice('/dev', 'stdin', Module.stdin) + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]) } else { - FS.symlink('/dev/tty', '/dev/stdin') + FS.symlink("/dev/tty", "/dev/stdin") } - if (Module.stdout) { - FS.createDevice('/dev', 'stdout', null, Module.stdout) + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]) } else { - FS.symlink('/dev/tty', '/dev/stdout') + FS.symlink("/dev/tty", "/dev/stdout") } - if (Module.stderr) { - FS.createDevice('/dev', 'stderr', null, Module.stderr) + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]) } else { - FS.symlink('/dev/tty1', '/dev/stderr') + FS.symlink("/dev/tty1", "/dev/stderr") } - const stdin = FS.open('/dev/stdin', 'r') - const stdout = FS.open('/dev/stdout', 'w') - const stderr = FS.open('/dev/stderr', 'w') + var stdin = FS.open("/dev/stdin", "r"); + var stdout = FS.open("/dev/stdout", "w"); + var stderr = FS.open("/dev/stderr", "w") }, ensureErrnoError: function () { - if (FS.ErrnoError) return - FS.ErrnoError = function ErrnoError (errno, node) { - this.node = node + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; this.setErrno = function (errno) { this.errno = errno - } - this.setErrno(errno) - this.message = 'FS error' - } - FS.ErrnoError.prototype = new Error() + }; + this.setErrno(errno); + this.message = "FS error" + }; + FS.ErrnoError.prototype = new Error; FS.ErrnoError.prototype.constructor = FS.ErrnoError; [44].forEach(function (code) { - FS.genericErrors[code] = new FS.ErrnoError(code) - FS.genericErrors[code].stack = '' + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = "" }) }, staticInit: function () { - FS.ensureErrnoError() - FS.nameTable = new Array(4096) - FS.mount(MEMFS, {}, '/') - FS.createDefaultDirectories() - FS.createDefaultDevices() - FS.createSpecialDirectories() + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); FS.filesystems = { - MEMFS: MEMFS + "MEMFS": MEMFS } }, init: function (input, output, error) { - FS.init.initialized = true - FS.ensureErrnoError() - Module.stdin = input || Module.stdin - Module.stdout = output || Module.stdout - Module.stderr = error || Module.stderr + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; FS.createStandardStreams() }, quit: function () { - FS.init.initialized = false - const fflush = Module._fflush - if (fflush) fflush(0) - for (let i = 0; i < FS.streams.length; i++) { - const stream = FS.streams[i] + FS.init.initialized = false; + var fflush = Module["_fflush"]; + if (fflush) fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; if (!stream) { continue } @@ -4721,14 +4743,14 @@ var FS = { } }, getMode: function (canRead, canWrite) { - let mode = 0 - if (canRead) mode |= 292 | 73 - if (canWrite) mode |= 146 + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; return mode }, joinPath: function (parts, forceRelative) { - let path = PATH.join.apply(null, parts) - if (forceRelative && path[0] == '/') path = path.substr(1) + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == "/") path = path.substr(1); return path }, absolutePath: function (relative, base) { @@ -4738,11 +4760,11 @@ var FS = { return PATH.normalize(path) }, findObject: function (path, dontResolveLastLink) { - const ret = FS.analyzePath(path, dontResolveLastLink) + var ret = FS.analyzePath(path, dontResolveLastLink); if (ret.exists) { return ret.object } else { - setErrNo(ret.error) + setErrNo(ret.error); return null } }, @@ -4750,10 +4772,10 @@ var FS = { try { var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink - }) + }); path = lookup.path - } catch (e) { } - const ret = { + } catch (e) {} + var ret = { isRoot: false, exists: false, error: 0, @@ -4763,75 +4785,75 @@ var FS = { parentExists: false, parentPath: null, parentObject: null - } + }; try { var lookup = FS.lookupPath(path, { parent: true - }) - ret.parentExists = true - ret.parentPath = lookup.path - ret.parentObject = lookup.node - ret.name = PATH.basename(path) + }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); lookup = FS.lookupPath(path, { follow: !dontResolveLastLink - }) - ret.exists = true - ret.path = lookup.path - ret.object = lookup.node - ret.name = lookup.node.name - ret.isRoot = lookup.path === '/' + }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === "/" } catch (e) { ret.error = e.errno } return ret }, createFolder: function (parent, name, canRead, canWrite) { - const path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) - const mode = FS.getMode(canRead, canWrite) + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); return FS.mkdir(path, mode) }, createPath: function (parent, path, canRead, canWrite) { - parent = typeof parent === 'string' ? parent : FS.getPath(parent) - const parts = path.split('/').reverse() + parent = typeof parent === "string" ? parent : FS.getPath(parent); + var parts = path.split("/").reverse(); while (parts.length) { - const part = parts.pop() - if (!part) continue - var current = PATH.join2(parent, part) + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); try { FS.mkdir(current) - } catch (e) { } + } catch (e) {} parent = current } return current }, createFile: function (parent, name, properties, canRead, canWrite) { - const path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) - const mode = FS.getMode(canRead, canWrite) + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); return FS.create(path, mode) }, createDataFile: function (parent, name, data, canRead, canWrite, canOwn) { - const path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent - const mode = FS.getMode(canRead, canWrite) - const node = FS.create(path, mode) + var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); if (data) { - if (typeof data === 'string') { - const arr = new Array(data.length) - for (let i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i) + if (typeof data === "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); data = arr } - FS.chmod(node, mode | 146) - const stream = FS.open(node, 'w') - FS.write(stream, data, 0, data.length, 0, canOwn) - FS.close(stream) + FS.chmod(node, mode | 146); + var stream = FS.open(node, "w"); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); FS.chmod(node, mode) } return node }, createDevice: function (parent, name, input, output) { - const path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) - const mode = FS.getMode(!!input, !!output) - if (!FS.createDevice.major) FS.createDevice.major = 64 - const dev = FS.makedev(FS.createDevice.major++, 0) + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); FS.registerDevice(dev, { open: function (stream) { stream.seekable = false @@ -4842,9 +4864,9 @@ var FS = { } }, read: function (stream, buffer, offset, length, pos) { - let bytesRead = 0 - for (let i = 0; i < length; i++) { - var result + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; try { result = input() } catch (e) { @@ -4853,8 +4875,8 @@ var FS = { if (result === undefined && bytesRead === 0) { throw new FS.ErrnoError(6) } - if (result === null || result === undefined) break - bytesRead++ + if (result === null || result === undefined) break; + bytesRead++; buffer[offset + i] = result } if (bytesRead) { @@ -4875,100 +4897,100 @@ var FS = { } return i } - }) + }); return FS.mkdev(path, mode, dev) }, createLink: function (parent, name, target, canRead, canWrite) { - const path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) + var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); return FS.symlink(target, path) }, forceLoadFile: function (obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true - let success = true - if (typeof XMLHttpRequest !== 'undefined') { - throw new Error('Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.') + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== "undefined") { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.") } else if (read_) { try { - obj.contents = intArrayFromString(read_(obj.url), true) + obj.contents = intArrayFromString(read_(obj.url), true); obj.usedBytes = obj.contents.length } catch (e) { success = false } } else { - throw new Error('Cannot load without read() or XMLHttpRequest.') + throw new Error("Cannot load without read() or XMLHttpRequest.") } - if (!success) setErrNo(29) + if (!success) setErrNo(29); return success }, createLazyFile: function (parent, name, url, canRead, canWrite) { - function LazyUint8Array () { - this.lengthKnown = false + function LazyUint8Array() { + this.lengthKnown = false; this.chunks = [] } - LazyUint8Array.prototype.get = function LazyUint8Array_get (idx) { + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { if (idx > this.length - 1 || idx < 0) { return undefined } - const chunkOffset = idx % this.chunkSize - const chunkNum = idx / this.chunkSize | 0 + var chunkOffset = idx % this.chunkSize; + var chunkNum = idx / this.chunkSize | 0; return this.getter(chunkNum)[chunkOffset] - } - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter (getter) { + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { this.getter = getter - } - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength () { - const xhr = new XMLHttpRequest() - xhr.open('HEAD', url, false) - xhr.send(null) - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + '. Status: ' + xhr.status) - let datalength = Number(xhr.getResponseHeader('Content-length')) - let header - const hasByteServing = (header = xhr.getResponseHeader('Accept-Ranges')) && header === 'bytes' - const usesGzip = (header = xhr.getResponseHeader('Content-Encoding')) && header === 'gzip' - let chunkSize = 1024 * 1024 - if (!hasByteServing) chunkSize = datalength - const doXHR = function (from, to) { - if (from > to) throw new Error('invalid range (' + from + ', ' + to + ') or no bytes requested!') - if (to > datalength - 1) throw new Error('only ' + datalength + ' bytes available! programmer error!') - const xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - if (datalength !== chunkSize) xhr.setRequestHeader('Range', 'bytes=' + from + '-' + to) - if (typeof Uint8Array !== 'undefined') xhr.responseType = 'arraybuffer' + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest; + xhr.open("HEAD", url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = function (from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest; + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer"; if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined') + xhr.overrideMimeType("text/plain; charset=x-user-defined") } - xhr.send(null) - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + '. Status: ' + xhr.status) + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); if (xhr.response !== undefined) { return new Uint8Array(xhr.response || []) } else { - return intArrayFromString(xhr.responseText || '', true) + return intArrayFromString(xhr.responseText || "", true) } - } - const lazyArray = this + }; + var lazyArray = this; lazyArray.setDataGetter(function (chunkNum) { - const start = chunkNum * chunkSize - let end = (chunkNum + 1) * chunkSize - 1 - end = Math.min(end, datalength - 1) - if (typeof lazyArray.chunks[chunkNum] === 'undefined') { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof lazyArray.chunks[chunkNum] === "undefined") { lazyArray.chunks[chunkNum] = doXHR(start, end) } - if (typeof lazyArray.chunks[chunkNum] === 'undefined') throw new Error('doXHR failed!') + if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!"); return lazyArray.chunks[chunkNum] - }) + }); if (usesGzip || !datalength) { - chunkSize = datalength = 1 - datalength = this.getter(0).length - chunkSize = datalength - out('LazyFiles on gzip forces download of the whole file when length is accessed') + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed") } - this._length = datalength - this._chunkSize = chunkSize + this._length = datalength; + this._chunkSize = chunkSize; this.lengthKnown = true - } - if (typeof XMLHttpRequest !== 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc' - const lazyArray = new LazyUint8Array() + }; + if (typeof XMLHttpRequest !== "undefined") { + if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array; Object.defineProperties(lazyArray, { length: { get: function () { @@ -4986,7 +5008,7 @@ var FS = { return this._chunkSize } } - }) + }); var properties = { isDevice: false, contents: lazyArray @@ -4997,11 +5019,11 @@ var FS = { url: url } } - const node = FS.createFile(parent, name, properties, canRead, canWrite) + var node = FS.createFile(parent, name, properties, canRead, canWrite); if (properties.contents) { node.contents = properties.contents } else if (properties.url) { - node.contents = null + node.contents = null; node.url = properties.url } Object.defineProperties(node, { @@ -5010,25 +5032,25 @@ var FS = { return this.contents.length } } - }) - const stream_ops = {} - const keys = Object.keys(node.stream_ops) + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); keys.forEach(function (key) { - const fn = node.stream_ops[key] - stream_ops[key] = function forceLoadLazyFile () { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { if (!FS.forceLoadFile(node)) { throw new FS.ErrnoError(29) } return fn.apply(null, arguments) } - }) - stream_ops.read = function stream_ops_read (stream, buffer, offset, length, position) { + }); + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { if (!FS.forceLoadFile(node)) { throw new FS.ErrnoError(29) } - const contents = stream.node.contents - if (position >= contents.length) return 0 - const size = Math.min(contents.length - position, length) + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); if (contents.slice) { for (var i = 0; i < size; i++) { buffer[offset + i] = contents[position + i] @@ -5039,39 +5061,39 @@ var FS = { } } return size - } - node.stream_ops = stream_ops + }; + node.stream_ops = stream_ops; return node }, createPreloadedFile: function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { - Browser.init() - const fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent - const dep = getUniqueRunDependency('cp ' + fullname) + Browser.init(); + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); - function processData (byteArray) { - function finish (byteArray) { - if (preFinish) preFinish() + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); if (!dontCreateFile) { FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn) } - if (onload) onload() + if (onload) onload(); removeRunDependency(dep) } - let handled = false - Module.preloadPlugins.forEach(function (plugin) { - if (handled) return - if (plugin.canHandle(fullname)) { - plugin.handle(byteArray, fullname, finish, function () { - if (onerror) onerror() + var handled = false; + Module["preloadPlugins"].forEach(function (plugin) { + if (handled) return; + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, function () { + if (onerror) onerror(); removeRunDependency(dep) - }) + }); handled = true } - }) + }); if (!handled) finish(byteArray) } - addRunDependency(dep) - if (typeof url === 'string') { + addRunDependency(dep); + if (typeof url == "string") { Browser.asyncLoad(url, function (byteArray) { processData(byteArray) }, onerror) @@ -5083,110 +5105,110 @@ var FS = { return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB }, DB_NAME: function () { - return 'EM_FS_' + window.location.pathname + return "EM_FS_" + window.location.pathname }, DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', + DB_STORE_NAME: "FILE_DATA", saveFilesToDB: function (paths, onload, onerror) { - onload = onload || function () { } - onerror = onerror || function () { } - const indexedDB = FS.indexedDB() + onload = onload || function () {}; + onerror = onerror || function () {}; + var indexedDB = FS.indexedDB(); try { var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded () { - out('creating db') - const db = openRequest.result + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + out("creating db"); + var db = openRequest.result; db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = function openRequest_onsuccess () { - const db = openRequest.result - const transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - const files = transaction.objectStore(FS.DB_STORE_NAME) - let ok = 0 - let fail = 0 - const total = paths.length + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; - function finish () { - if (fail == 0) onload() + function finish() { + if (fail == 0) onload(); else onerror() } paths.forEach(function (path) { - const putRequest = files.put(FS.analyzePath(path).object.contents, path) - putRequest.onsuccess = function putRequest_onsuccess () { - ok++ + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { + ok++; + if (ok + fail == total) finish() + }; + putRequest.onerror = function putRequest_onerror() { + fail++; if (ok + fail == total) finish() } - putRequest.onerror = function putRequest_onerror () { - fail++ - if (ok + fail == total) finish() - } - }) + }); transaction.onerror = onerror - } + }; openRequest.onerror = onerror }, loadFilesFromDB: function (paths, onload, onerror) { - onload = onload || function () { } - onerror = onerror || function () { } - const indexedDB = FS.indexedDB() + onload = onload || function () {}; + onerror = onerror || function () {}; + var indexedDB = FS.indexedDB(); try { var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) } catch (e) { return onerror(e) } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = function openRequest_onsuccess () { - const db = openRequest.result + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') + var transaction = db.transaction([FS.DB_STORE_NAME], "readonly") } catch (e) { - onerror(e) + onerror(e); return } - const files = transaction.objectStore(FS.DB_STORE_NAME) - let ok = 0 - let fail = 0 - const total = paths.length + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; - function finish () { - if (fail == 0) onload() + function finish() { + if (fail == 0) onload(); else onerror() } paths.forEach(function (path) { - const getRequest = files.get(path) - getRequest.onsuccess = function getRequest_onsuccess () { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { if (FS.analyzePath(path).exists) { FS.unlink(path) } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true) - ok++ + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish() + }; + getRequest.onerror = function getRequest_onerror() { + fail++; if (ok + fail == total) finish() } - getRequest.onerror = function getRequest_onerror () { - fail++ - if (ok + fail == total) finish() - } - }) + }); transaction.onerror = onerror - } + }; openRequest.onerror = onerror } -} +}; var SYSCALLS = { mappings: {}, DEFAULT_POLLMASK: 5, umask: 511, calculateAt: function (dirfd, path) { - if (path[0] !== '/') { - let dir + if (path[0] !== "/") { + var dir; if (dirfd === -100) { dir = FS.cwd() } else { - const dirstream = FS.getStream(dirfd) - if (!dirstream) throw new FS.ErrnoError(8) + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); dir = dirstream.path } path = PATH.join2(dir, path) @@ -5202,35 +5224,35 @@ var SYSCALLS = { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[buf + 4 >> 2] = 0 - HEAP32[buf + 8 >> 2] = stat.ino - HEAP32[buf + 12 >> 2] = stat.mode - HEAP32[buf + 16 >> 2] = stat.nlink - HEAP32[buf + 20 >> 2] = stat.uid - HEAP32[buf + 24 >> 2] = stat.gid - HEAP32[buf + 28 >> 2] = stat.rdev - HEAP32[buf + 32 >> 2] = 0 - tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1] - HEAP32[buf + 48 >> 2] = 4096 - HEAP32[buf + 52 >> 2] = stat.blocks - HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0 - HEAP32[buf + 60 >> 2] = 0 - HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0 - HEAP32[buf + 68 >> 2] = 0 - HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0 - HEAP32[buf + 76 >> 2] = 0 - tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1] + HEAP32[buf >> 2] = stat.dev; + HEAP32[buf + 4 >> 2] = 0; + HEAP32[buf + 8 >> 2] = stat.ino; + HEAP32[buf + 12 >> 2] = stat.mode; + HEAP32[buf + 16 >> 2] = stat.nlink; + HEAP32[buf + 20 >> 2] = stat.uid; + HEAP32[buf + 24 >> 2] = stat.gid; + HEAP32[buf + 28 >> 2] = stat.rdev; + HEAP32[buf + 32 >> 2] = 0; + tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; + HEAP32[buf + 48 >> 2] = 4096; + HEAP32[buf + 52 >> 2] = stat.blocks; + HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0; + HEAP32[buf + 60 >> 2] = 0; + HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0; + HEAP32[buf + 68 >> 2] = 0; + HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0; + HEAP32[buf + 76 >> 2] = 0; + tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1]; return 0 }, doMsync: function (addr, stream, len, flags, offset) { - const buffer = HEAPU8.slice(addr, addr + len) + var buffer = HEAPU8.slice(addr, addr + len); FS.msync(stream, buffer, offset, len, flags) }, doMkdir: function (path, mode) { - path = PATH.normalize(path) - if (path[path.length - 1] === '/') path = path.substr(0, path.length - 1) - FS.mkdir(path, mode, 0) + path = PATH.normalize(path); + if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); + FS.mkdir(path, mode, 0); return 0 }, doMknod: function (path, mode, dev) { @@ -5240,235 +5262,235 @@ var SYSCALLS = { case 24576: case 4096: case 49152: - break + break; default: return -28 } - FS.mknod(path, mode, dev) + FS.mknod(path, mode, dev); return 0 }, doReadlink: function (path, buf, bufsize) { - if (bufsize <= 0) return -28 - const ret = FS.readlink(path) - const len = Math.min(bufsize, lengthBytesUTF8(ret)) - const endChar = HEAP8[buf + len] - stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf + len]; + stringToUTF8(ret, buf, bufsize + 1); + HEAP8[buf + len] = endChar; return len }, doAccess: function (path, amode) { if (amode & ~7) { return -28 } - let node - const lookup = FS.lookupPath(path, { + var node; + var lookup = FS.lookupPath(path, { follow: true - }) - node = lookup.node + }); + node = lookup.node; if (!node) { return -44 } - let perms = '' - if (amode & 4) perms += 'r' - if (amode & 2) perms += 'w' - if (amode & 1) perms += 'x' + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; if (perms && FS.nodePermissions(node, perms)) { return -2 } return 0 }, doDup: function (path, flags, suggestFD) { - const suggest = FS.getStream(suggestFD) - if (suggest) FS.close(suggest) + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); return FS.open(path, flags, 0, suggestFD, suggestFD).fd }, doReadv: function (stream, iov, iovcnt, offset) { - let ret = 0 - for (let i = 0; i < iovcnt; i++) { - const ptr = HEAP32[iov + i * 8 >> 2] - const len = HEAP32[iov + (i * 8 + 4) >> 2] - const curr = FS.read(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 - ret += curr + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; if (curr < len) break } return ret }, doWritev: function (stream, iov, iovcnt, offset) { - let ret = 0 - for (let i = 0; i < iovcnt; i++) { - const ptr = HEAP32[iov + i * 8 >> 2] - const len = HEAP32[iov + (i * 8 + 4) >> 2] - const curr = FS.write(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[iov + i * 8 >> 2]; + var len = HEAP32[iov + (i * 8 + 4) >> 2]; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; ret += curr } return ret }, varargs: undefined, get: function () { - SYSCALLS.varargs += 4 - const ret = HEAP32[SYSCALLS.varargs - 4 >> 2] + SYSCALLS.varargs += 4; + var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; return ret }, getStr: function (ptr) { - const ret = UTF8ToString(ptr) + var ret = UTF8ToString(ptr); return ret }, getStreamFromFD: function (fd) { - const stream = FS.getStream(fd) - if (!stream) throw new FS.ErrnoError(8) + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); return stream }, get64: function (low, high) { return low } -} +}; -function ___sys_access (path, amode) { +function ___sys_access(path, amode) { try { - path = SYSCALLS.getStr(path) + path = SYSCALLS.getStr(path); return SYSCALLS.doAccess(path, amode) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_chmod (path, mode) { +function ___sys_chmod(path, mode) { try { - path = SYSCALLS.getStr(path) - FS.chmod(path, mode) + path = SYSCALLS.getStr(path); + FS.chmod(path, mode); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_fcntl64 (fd, cmd, varargs) { - SYSCALLS.varargs = varargs +function ___sys_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; try { - const stream = SYSCALLS.getStreamFromFD(fd) + var stream = SYSCALLS.getStreamFromFD(fd); switch (cmd) { case 0: { - var arg = SYSCALLS.get() + var arg = SYSCALLS.get(); if (arg < 0) { return -28 } - let newStream - newStream = FS.open(stream.path, stream.flags, 0, arg) + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); return newStream.fd } case 1: case 2: - return 0 + return 0; case 3: - return stream.flags + return stream.flags; case 4: { - var arg = SYSCALLS.get() - stream.flags |= arg + var arg = SYSCALLS.get(); + stream.flags |= arg; return 0 } case 12: { - var arg = SYSCALLS.get() - const offset = 0 - HEAP16[arg + offset >> 1] = 2 + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[arg + offset >> 1] = 2; return 0 } case 13: case 14: - return 0 + return 0; case 16: case 8: - return -28 + return -28; case 9: - setErrNo(28) - return -1 + setErrNo(28); + return -1; default: { return -28 } } } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_fstat64 (fd, buf) { +function ___sys_fstat64(fd, buf) { try { - const stream = SYSCALLS.getStreamFromFD(fd) + var stream = SYSCALLS.getStreamFromFD(fd); return SYSCALLS.doStat(FS.stat, stream.path, buf) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_getcwd (buf, size) { +function ___sys_getcwd(buf, size) { try { - if (size === 0) return -28 - const cwd = FS.cwd() - const cwdLengthInBytes = lengthBytesUTF8(cwd) - if (size < cwdLengthInBytes + 1) return -68 - stringToUTF8(cwd, buf, size) + if (size === 0) return -28; + var cwd = FS.cwd(); + var cwdLengthInBytes = lengthBytesUTF8(cwd); + if (size < cwdLengthInBytes + 1) return -68; + stringToUTF8(cwd, buf, size); return buf } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_getdents64 (fd, dirp, count) { +function ___sys_getdents64(fd, dirp, count) { try { - const stream = SYSCALLS.getStreamFromFD(fd) + var stream = SYSCALLS.getStreamFromFD(fd); if (!stream.getdents) { stream.getdents = FS.readdir(stream.path) } - const struct_size = 280 - let pos = 0 - const off = FS.llseek(stream, 0, 1) - let idx = Math.floor(off / struct_size) + var struct_size = 280; + var pos = 0; + var off = FS.llseek(stream, 0, 1); + var idx = Math.floor(off / struct_size); while (idx < stream.getdents.length && pos + struct_size <= count) { - var id - var type - const name = stream.getdents[idx] - if (name[0] === '.') { - id = 1 + var id; + var type; + var name = stream.getdents[idx]; + if (name[0] === ".") { + id = 1; type = 4 } else { - const child = FS.lookupNode(stream.node, name) - id = child.id + var child = FS.lookupNode(stream.node, name); + id = child.id; type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8 } - tempI64 = [id >>> 0, (tempDouble = id, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1] - tempI64 = [(idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1] - HEAP16[dirp + pos + 16 >> 1] = 280 - HEAP8[dirp + pos + 18 >> 0] = type - stringToUTF8(name, dirp + pos + 19, 256) - pos += struct_size + tempI64 = [id >>> 0, (tempDouble = id, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1]; + tempI64 = [(idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1]; + HEAP16[dirp + pos + 16 >> 1] = 280; + HEAP8[dirp + pos + 18 >> 0] = type; + stringToUTF8(name, dirp + pos + 19, 256); + pos += struct_size; idx += 1 } - FS.llseek(stream, idx * struct_size, 0) + FS.llseek(stream, idx * struct_size, 0); return pos } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_getpid () { +function ___sys_getpid() { return 42 } -function ___sys_ioctl (fd, op, varargs) { - SYSCALLS.varargs = varargs +function ___sys_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; try { - const stream = SYSCALLS.getStreamFromFD(fd) + var stream = SYSCALLS.getStreamFromFD(fd); switch (op) { case 21509: case 21505: { - if (!stream.tty) return -59 + if (!stream.tty) return -59; return 0 } case 21510: @@ -5477,81 +5499,81 @@ function ___sys_ioctl (fd, op, varargs) { case 21506: case 21507: case 21508: { - if (!stream.tty) return -59 + if (!stream.tty) return -59; return 0 } case 21519: { - if (!stream.tty) return -59 - var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; return 0 } case 21520: { - if (!stream.tty) return -59 + if (!stream.tty) return -59; return -28 } case 21531: { - var argp = SYSCALLS.get() + var argp = SYSCALLS.get(); return FS.ioctl(stream, op, argp) } case 21523: { - if (!stream.tty) return -59 + if (!stream.tty) return -59; return 0 } case 21524: { - if (!stream.tty) return -59 + if (!stream.tty) return -59; return 0 } default: - abort('bad ioctl syscall ' + op) + abort("bad ioctl syscall " + op) } } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_link (oldpath, newpath) { +function ___sys_link(oldpath, newpath) { return -34 } -function ___sys_lstat64 (path, buf) { +function ___sys_lstat64(path, buf) { try { - path = SYSCALLS.getStr(path) + path = SYSCALLS.getStr(path); return SYSCALLS.doStat(FS.lstat, path, buf) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_mkdir (path, mode) { +function ___sys_mkdir(path, mode) { try { - path = SYSCALLS.getStr(path) + path = SYSCALLS.getStr(path); return SYSCALLS.doMkdir(path, mode) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_mprotect (addr, len, size) { +function ___sys_mprotect(addr, len, size) { return 0 } -function syscallMunmap (addr, len) { +function syscallMunmap(addr, len) { if ((addr | 0) === -1 || len === 0) { return -28 } - const info = SYSCALLS.mappings[addr] - if (!info) return 0 + var info = SYSCALLS.mappings[addr]; + if (!info) return 0; if (len === info.len) { - const stream = FS.getStream(info.fd) + var stream = FS.getStream(info.fd); if (info.prot & 2) { SYSCALLS.doMsync(addr, stream, len, info.flags, info.offset) } - FS.munmap(stream) - SYSCALLS.mappings[addr] = null + FS.munmap(stream); + SYSCALLS.mappings[addr] = null; if (info.allocated) { _free(info.malloc) } @@ -5559,143 +5581,143 @@ function syscallMunmap (addr, len) { return 0 } -function ___sys_munmap (addr, len) { +function ___sys_munmap(addr, len) { try { return syscallMunmap(addr, len) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_open (path, flags, varargs) { - SYSCALLS.varargs = varargs +function ___sys_open(path, flags, varargs) { + SYSCALLS.varargs = varargs; try { - const pathname = SYSCALLS.getStr(path) - const mode = SYSCALLS.get() - const stream = FS.open(pathname, flags, mode) + var pathname = SYSCALLS.getStr(path); + var mode = SYSCALLS.get(); + var stream = FS.open(pathname, flags, mode); return stream.fd } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_read (fd, buf, count) { +function ___sys_read(fd, buf, count) { try { - const stream = SYSCALLS.getStreamFromFD(fd) + var stream = SYSCALLS.getStreamFromFD(fd); return FS.read(stream, HEAP8, buf, count) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_readlink (path, buf, bufsize) { +function ___sys_readlink(path, buf, bufsize) { try { - path = SYSCALLS.getStr(path) + path = SYSCALLS.getStr(path); return SYSCALLS.doReadlink(path, buf, bufsize) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_rename (old_path, new_path) { +function ___sys_rename(old_path, new_path) { try { - old_path = SYSCALLS.getStr(old_path) - new_path = SYSCALLS.getStr(new_path) - FS.rename(old_path, new_path) + old_path = SYSCALLS.getStr(old_path); + new_path = SYSCALLS.getStr(new_path); + FS.rename(old_path, new_path); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_rmdir (path) { +function ___sys_rmdir(path) { try { - path = SYSCALLS.getStr(path) - FS.rmdir(path) + path = SYSCALLS.getStr(path); + FS.rmdir(path); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_stat64 (path, buf) { +function ___sys_stat64(path, buf) { try { - path = SYSCALLS.getStr(path) + path = SYSCALLS.getStr(path); return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_symlink (target, linkpath) { +function ___sys_symlink(target, linkpath) { try { - target = SYSCALLS.getStr(target) - linkpath = SYSCALLS.getStr(linkpath) - FS.symlink(target, linkpath) + target = SYSCALLS.getStr(target); + linkpath = SYSCALLS.getStr(linkpath); + FS.symlink(target, linkpath); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function ___sys_unlink (path) { +function ___sys_unlink(path) { try { - path = SYSCALLS.getStr(path) - FS.unlink(path) + path = SYSCALLS.getStr(path); + FS.unlink(path); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return -e.errno } } -function _abort () { +function _abort() { abort() } -let setjmpId = 0 +var setjmpId = 0; -function _saveSetjmp (env, label, table, size) { - env = env | 0 - label = label | 0 - table = table | 0 - size = size | 0 - let i = 0 - setjmpId = setjmpId + 1 | 0 - HEAP32[env >> 2] = setjmpId +function _saveSetjmp(env, label, table, size) { + env = env | 0; + label = label | 0; + table = table | 0; + size = size | 0; + var i = 0; + setjmpId = setjmpId + 1 | 0; + HEAP32[env >> 2] = setjmpId; while ((i | 0) < (size | 0)) { if ((HEAP32[table + (i << 3) >> 2] | 0) == 0) { - HEAP32[table + (i << 3) >> 2] = setjmpId - HEAP32[table + ((i << 3) + 4) >> 2] = label - HEAP32[table + ((i << 3) + 8) >> 2] = 0 - setTempRet0(size | 0) + HEAP32[table + (i << 3) >> 2] = setjmpId; + HEAP32[table + ((i << 3) + 4) >> 2] = label; + HEAP32[table + ((i << 3) + 8) >> 2] = 0; + setTempRet0(size | 0); return table | 0 } i = i + 1 | 0 } - size = size * 2 | 0 - table = _realloc(table | 0, 8 * (size + 1 | 0) | 0) | 0 - table = _saveSetjmp(env | 0, label | 0, table | 0, size | 0) | 0 - setTempRet0(size | 0) + size = size * 2 | 0; + table = _realloc(table | 0, 8 * (size + 1 | 0) | 0) | 0; + table = _saveSetjmp(env | 0, label | 0, table | 0, size | 0) | 0; + setTempRet0(size | 0); return table | 0 } -function _testSetjmp (id, table, size) { - id = id | 0 - table = table | 0 - size = size | 0 - let i = 0 - let curr = 0 +function _testSetjmp(id, table, size) { + id = id | 0; + table = table | 0; + size = size | 0; + var i = 0, + curr = 0; while ((i | 0) < (size | 0)) { - curr = HEAP32[table + (i << 3) >> 2] | 0 - if ((curr | 0) == 0) break + curr = HEAP32[table + (i << 3) >> 2] | 0; + if ((curr | 0) == 0) break; if ((curr | 0) == (id | 0)) { return HEAP32[table + ((i << 3) + 4) >> 2] | 0 } @@ -5704,198 +5726,199 @@ function _testSetjmp (id, table, size) { return 0 } -function _longjmp (env, value) { - _setThrew(env, value || 1) - throw 'longjmp' +function _longjmp(env, value) { + _setThrew(env, value || 1); + throw "longjmp" } -function _emscripten_longjmp (env, value) { +function _emscripten_longjmp(env, value) { _longjmp(env, value) } -function _emscripten_memcpy_big (dest, src, num) { +function _emscripten_memcpy_big(dest, src, num) { HEAPU8.copyWithin(dest, src, src + num) } -function _emscripten_get_heap_size () { +function _emscripten_get_heap_size() { return HEAPU8.length } -function emscripten_realloc_buffer (size) { +function emscripten_realloc_buffer(size) { try { - wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); return 1 - } catch (e) { } + } catch (e) {} } -function _emscripten_resize_heap (requestedSize) { - const oldSize = _emscripten_get_heap_size() - const PAGE_MULTIPLE = 65536 - const maxHeapSize = 2147483648 +function _emscripten_resize_heap(requestedSize) { + requestedSize = requestedSize >>> 0; + var oldSize = _emscripten_get_heap_size(); + var PAGE_MULTIPLE = 65536; + var maxHeapSize = 2147483648; if (requestedSize > maxHeapSize) { return false } - const minHeapSize = 16777216 - for (let cutDown = 1; cutDown <= 4; cutDown *= 2) { - let overGrownHeapSize = oldSize * (1 + 0.2 / cutDown) - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296) - const newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), PAGE_MULTIPLE)) - const replacement = emscripten_realloc_buffer(newSize) + var minHeapSize = 16777216; + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), PAGE_MULTIPLE)); + var replacement = emscripten_realloc_buffer(newSize); if (replacement) { return true } } return false } -const ENV = {} +var ENV = {}; -function __getExecutableName () { - return thisProgram || './this.program' +function __getExecutableName() { + return thisProgram || "./this.program" } -function getEnvStrings () { +function getEnvStrings() { if (!getEnvStrings.strings) { - const env = { - USER: 'web_user', - LOGNAME: 'web_user', - PATH: '/', - PWD: '/', - HOME: '/home/web_user', - LANG: (typeof navigator === 'object' && navigator.languages && navigator.languages[0] || 'C').replace('-', '_') + '.UTF-8', - _: __getExecutableName() - } + var env = { + "USER": "web_user", + "LOGNAME": "web_user", + "PATH": "/", + "PWD": "/", + "HOME": "/home/web_user", + "LANG": (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + "_": __getExecutableName() + }; for (var x in ENV) { env[x] = ENV[x] } - const strings = [] + var strings = []; for (var x in env) { - strings.push(x + '=' + env[x]) + strings.push(x + "=" + env[x]) } getEnvStrings.strings = strings } return getEnvStrings.strings } -function _environ_get (__environ, environ_buf) { - let bufSize = 0 +function _environ_get(__environ, environ_buf) { + var bufSize = 0; getEnvStrings().forEach(function (string, i) { - const ptr = environ_buf + bufSize - HEAP32[__environ + i * 4 >> 2] = ptr - writeAsciiToMemory(string, ptr) + var ptr = environ_buf + bufSize; + HEAP32[__environ + i * 4 >> 2] = ptr; + writeAsciiToMemory(string, ptr); bufSize += string.length + 1 - }) + }); return 0 } -function _environ_sizes_get (penviron_count, penviron_buf_size) { - const strings = getEnvStrings() - HEAP32[penviron_count >> 2] = strings.length - let bufSize = 0 +function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAP32[penviron_count >> 2] = strings.length; + var bufSize = 0; strings.forEach(function (string) { bufSize += string.length + 1 - }) - HEAP32[penviron_buf_size >> 2] = bufSize + }); + HEAP32[penviron_buf_size >> 2] = bufSize; return 0 } -function _exit (status) { +function _exit(status) { exit(status) } -function _fd_close (fd) { +function _fd_close(fd) { try { - const stream = SYSCALLS.getStreamFromFD(fd) - FS.close(stream) + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return e.errno } } -function _fd_fdstat_get (fd, pbuf) { +function _fd_fdstat_get(fd, pbuf) { try { - const stream = SYSCALLS.getStreamFromFD(fd) - const type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4 - HEAP8[pbuf >> 0] = type + var stream = SYSCALLS.getStreamFromFD(fd); + var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4; + HEAP8[pbuf >> 0] = type; return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return e.errno } } -function _fd_read (fd, iov, iovcnt, pnum) { +function _fd_read(fd, iov, iovcnt, pnum) { try { - const stream = SYSCALLS.getStreamFromFD(fd) - const num = SYSCALLS.doReadv(stream, iov, iovcnt) - HEAP32[pnum >> 2] = num + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doReadv(stream, iov, iovcnt); + HEAP32[pnum >> 2] = num; return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return e.errno } } -function _fd_seek (fd, offset_low, offset_high, whence, newOffset) { +function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { try { - const stream = SYSCALLS.getStreamFromFD(fd) - const HIGH_OFFSET = 4294967296 - const offset = offset_high * HIGH_OFFSET + (offset_low >>> 0) - const DOUBLE_LIMIT = 9007199254740992 + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 4294967296; + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + var DOUBLE_LIMIT = 9007199254740992; if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { return -61 } - FS.llseek(stream, offset, whence) - tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1] - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null + FS.llseek(stream, offset, whence); + tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return e.errno } } -function _fd_write (fd, iov, iovcnt, pnum) { +function _fd_write(fd, iov, iovcnt, pnum) { try { - const stream = SYSCALLS.getStreamFromFD(fd) - const num = SYSCALLS.doWritev(stream, iov, iovcnt) - HEAP32[pnum >> 2] = num + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + HEAP32[pnum >> 2] = num; return 0 } catch (e) { - if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e) + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); return e.errno } } -function _getTempRet0 () { +function _getTempRet0() { return getTempRet0() | 0 } -function _gettimeofday (ptr) { - const now = Date.now() - HEAP32[ptr >> 2] = now / 1e3 | 0 - HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0 +function _gettimeofday(ptr) { + var now = Date.now(); + HEAP32[ptr >> 2] = now / 1e3 | 0; + HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0; return 0 } -function _roundf (d) { - d = +d - return d >= +0 ? +Math_floor(d + +0.5) : +Math_ceil(d - +0.5) +function _roundf(d) { + d = +d; + return d >= +0 ? +Math_floor(d + +.5) : +Math_ceil(d - +.5) } -function _setTempRet0 ($i) { +function _setTempRet0($i) { setTempRet0($i | 0) } -function _sysconf (name) { +function _sysconf(name) { switch (name) { case 30: - return 16384 + return 16384; case 85: - var maxHeapSize = 2147483648 - return maxHeapSize / 16384 + var maxHeapSize = 2147483648; + return maxHeapSize / 16384; case 132: case 133: case 12: @@ -5937,7 +5960,7 @@ function _sysconf (name) { case 51: case 46: case 79: - return 200809 + return 200809; case 27: case 246: case 127: @@ -5970,7 +5993,7 @@ function _sysconf (name) { case 32: case 173: case 35: - return -1 + return -1; case 176: case 177: case 7: @@ -5986,113 +6009,113 @@ function _sysconf (name) { case 131: case 94: case 91: - return 1 + return 1; case 74: case 60: case 69: case 70: case 4: - return 1024 + return 1024; case 31: case 42: case 72: - return 32 + return 32; case 87: case 26: case 33: - return 2147483647 + return 2147483647; case 34: case 1: - return 47839 + return 47839; case 38: case 36: - return 99 + return 99; case 43: case 37: - return 2048 + return 2048; case 0: - return 2097152 + return 2097152; case 3: - return 65536 + return 65536; case 28: - return 32768 + return 32768; case 44: - return 32767 + return 32767; case 75: - return 16384 + return 16384; case 39: - return 1e3 + return 1e3; case 89: - return 700 + return 700; case 71: - return 256 + return 256; case 40: - return 255 + return 255; case 2: - return 100 + return 100; case 180: - return 64 + return 64; case 25: - return 20 + return 20; case 5: - return 16 + return 16; case 6: - return 6 + return 6; case 73: - return 4 + return 4; case 84: { - if (typeof navigator === 'object') return navigator.hardwareConcurrency || 1 + if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1; return 1 } } - setErrNo(28) + setErrNo(28); return -1 } -function _time (ptr) { - const ret = Date.now() / 1e3 | 0 +function _time(ptr) { + var ret = Date.now() / 1e3 | 0; if (ptr) { HEAP32[ptr >> 2] = ret } return ret } -Module.requestFullscreen = function Module_requestFullscreen (lockPointer, resizeCanvas) { +Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas) { Browser.requestFullscreen(lockPointer, resizeCanvas) -} -Module.requestAnimationFrame = function Module_requestAnimationFrame (func) { +}; +Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) -} -Module.setCanvasSize = function Module_setCanvasSize (width, height, noUpdates) { +}; +Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) -} -Module.pauseMainLoop = function Module_pauseMainLoop () { +}; +Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() -} -Module.resumeMainLoop = function Module_resumeMainLoop () { +}; +Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() -} -Module.getUserMedia = function Module_getUserMedia () { +}; +Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() -} -Module.createContext = function Module_createContext (canvas, useWebGL, setInModule, webGLContextAttributes) { +}; +Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) -} -const FSNode = function (parent, name, mode, rdev) { +}; +var FSNode = function (parent, name, mode, rdev) { if (!parent) { parent = this } - this.parent = parent - this.mount = parent.mount - this.mounted = null - this.id = FS.nextInode++ - this.name = name - this.mode = mode - this.node_ops = {} - this.stream_ops = {} + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; this.rdev = rdev -} -const readMode = 292 | 73 -const writeMode = 146 +}; +var readMode = 292 | 73; +var writeMode = 146; Object.defineProperties(FSNode.prototype, { read: { get: function () { @@ -6120,942 +6143,942 @@ Object.defineProperties(FSNode.prototype, { return FS.isChrdev(this.mode) } } -}) -FS.FSNode = FSNode -FS.staticInit() -Module.FS_createFolder = FS.createFolder -Module.FS_createPath = FS.createPath -Module.FS_createDataFile = FS.createDataFile -Module.FS_createPreloadedFile = FS.createPreloadedFile -Module.FS_createLazyFile = FS.createLazyFile -Module.FS_createLink = FS.createLink -Module.FS_createDevice = FS.createDevice -Module.FS_unlink = FS.unlink +}); +FS.FSNode = FSNode; +FS.staticInit(); +Module["FS_createFolder"] = FS.createFolder; +Module["FS_createPath"] = FS.createPath; +Module["FS_createDataFile"] = FS.createDataFile; +Module["FS_createPreloadedFile"] = FS.createPreloadedFile; +Module["FS_createLazyFile"] = FS.createLazyFile; +Module["FS_createLink"] = FS.createLink; +Module["FS_createDevice"] = FS.createDevice; +Module["FS_unlink"] = FS.unlink; -function intArrayFromString (stringy, dontAddNull, length) { - const len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 - const u8array = new Array(len) - const numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length) - if (dontAddNull) u8array.length = numBytesWritten +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; return u8array } var asmLibraryArg = { - a: ___assert_fail, - P: ___clock_gettime, - A: ___map_file, - K: ___sys_access, - S: ___sys_chmod, - d: ___sys_fcntl64, - Q: ___sys_fstat64, - H: ___sys_getcwd, - O: ___sys_getdents64, - j: ___sys_getpid, - D: ___sys_ioctl, - M: ___sys_link, - R: ___sys_lstat64, - T: ___sys_mkdir, - F: ___sys_mprotect, - E: ___sys_munmap, - l: ___sys_open, - J: ___sys_read, - L: ___sys_readlink, - B: ___sys_rename, - N: ___sys_rmdir, - o: ___sys_stat64, - I: ___sys_symlink, - G: ___sys_unlink, - p: _abort, - r: _emscripten_get_now, - h: _emscripten_longjmp, - v: _emscripten_memcpy_big, - w: _emscripten_resize_heap, - y: _environ_get, - z: _environ_sizes_get, - i: _exit, - g: _fd_close, - x: _fd_fdstat_get, - C: _fd_read, - u: _fd_seek, - k: _fd_write, - e: _getTempRet0, - U: _gettimeofday, - t: invoke_iii, - q: invoke_iiii, - s: invoke_iiiii, - V: invoke_vii, - memory: wasmMemory, - b: _roundf, - n: _saveSetjmp, - c: _setTempRet0, - W: _sysconf, - table: wasmTable, - f: _testSetjmp, - m: _time -} -const asm = createWasm() -Module.asm = asm -var ___wasm_call_ctors = Module.___wasm_call_ctors = function () { - return (___wasm_call_ctors = Module.___wasm_call_ctors = Module.asm.X).apply(null, arguments) -} -var _main = Module._main = function () { - return (_main = Module._main = Module.asm.Y).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Start_0 = Module._emscripten_bind_ASS_Event_get_Start_0 = function () { - return (_emscripten_bind_ASS_Event_get_Start_0 = Module._emscripten_bind_ASS_Event_get_Start_0 = Module.asm.Z).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Start_1 = Module._emscripten_bind_ASS_Event_set_Start_1 = function () { - return (_emscripten_bind_ASS_Event_set_Start_1 = Module._emscripten_bind_ASS_Event_set_Start_1 = Module.asm._).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Duration_0 = Module._emscripten_bind_ASS_Event_get_Duration_0 = function () { - return (_emscripten_bind_ASS_Event_get_Duration_0 = Module._emscripten_bind_ASS_Event_get_Duration_0 = Module.asm.$).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Duration_1 = Module._emscripten_bind_ASS_Event_set_Duration_1 = function () { - return (_emscripten_bind_ASS_Event_set_Duration_1 = Module._emscripten_bind_ASS_Event_set_Duration_1 = Module.asm.aa).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_ReadOrder_0 = Module._emscripten_bind_ASS_Event_get_ReadOrder_0 = function () { - return (_emscripten_bind_ASS_Event_get_ReadOrder_0 = Module._emscripten_bind_ASS_Event_get_ReadOrder_0 = Module.asm.ba).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_ReadOrder_1 = Module._emscripten_bind_ASS_Event_set_ReadOrder_1 = function () { - return (_emscripten_bind_ASS_Event_set_ReadOrder_1 = Module._emscripten_bind_ASS_Event_set_ReadOrder_1 = Module.asm.ca).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Layer_0 = Module._emscripten_bind_ASS_Event_get_Layer_0 = function () { - return (_emscripten_bind_ASS_Event_get_Layer_0 = Module._emscripten_bind_ASS_Event_get_Layer_0 = Module.asm.da).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Layer_1 = Module._emscripten_bind_ASS_Event_set_Layer_1 = function () { - return (_emscripten_bind_ASS_Event_set_Layer_1 = Module._emscripten_bind_ASS_Event_set_Layer_1 = Module.asm.ea).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Style_0 = Module._emscripten_bind_ASS_Event_get_Style_0 = function () { - return (_emscripten_bind_ASS_Event_get_Style_0 = Module._emscripten_bind_ASS_Event_get_Style_0 = Module.asm.fa).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Style_1 = Module._emscripten_bind_ASS_Event_set_Style_1 = function () { - return (_emscripten_bind_ASS_Event_set_Style_1 = Module._emscripten_bind_ASS_Event_set_Style_1 = Module.asm.ga).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Name_0 = Module._emscripten_bind_ASS_Event_get_Name_0 = function () { - return (_emscripten_bind_ASS_Event_get_Name_0 = Module._emscripten_bind_ASS_Event_get_Name_0 = Module.asm.ha).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Name_1 = Module._emscripten_bind_ASS_Event_set_Name_1 = function () { - return (_emscripten_bind_ASS_Event_set_Name_1 = Module._emscripten_bind_ASS_Event_set_Name_1 = Module.asm.ia).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_MarginL_0 = Module._emscripten_bind_ASS_Event_get_MarginL_0 = function () { - return (_emscripten_bind_ASS_Event_get_MarginL_0 = Module._emscripten_bind_ASS_Event_get_MarginL_0 = Module.asm.ja).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_MarginL_1 = Module._emscripten_bind_ASS_Event_set_MarginL_1 = function () { - return (_emscripten_bind_ASS_Event_set_MarginL_1 = Module._emscripten_bind_ASS_Event_set_MarginL_1 = Module.asm.ka).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_MarginR_0 = Module._emscripten_bind_ASS_Event_get_MarginR_0 = function () { - return (_emscripten_bind_ASS_Event_get_MarginR_0 = Module._emscripten_bind_ASS_Event_get_MarginR_0 = Module.asm.la).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_MarginR_1 = Module._emscripten_bind_ASS_Event_set_MarginR_1 = function () { - return (_emscripten_bind_ASS_Event_set_MarginR_1 = Module._emscripten_bind_ASS_Event_set_MarginR_1 = Module.asm.ma).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_MarginV_0 = Module._emscripten_bind_ASS_Event_get_MarginV_0 = function () { - return (_emscripten_bind_ASS_Event_get_MarginV_0 = Module._emscripten_bind_ASS_Event_get_MarginV_0 = Module.asm.na).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_MarginV_1 = Module._emscripten_bind_ASS_Event_set_MarginV_1 = function () { - return (_emscripten_bind_ASS_Event_set_MarginV_1 = Module._emscripten_bind_ASS_Event_set_MarginV_1 = Module.asm.oa).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Effect_0 = Module._emscripten_bind_ASS_Event_get_Effect_0 = function () { - return (_emscripten_bind_ASS_Event_get_Effect_0 = Module._emscripten_bind_ASS_Event_get_Effect_0 = Module.asm.pa).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Effect_1 = Module._emscripten_bind_ASS_Event_set_Effect_1 = function () { - return (_emscripten_bind_ASS_Event_set_Effect_1 = Module._emscripten_bind_ASS_Event_set_Effect_1 = Module.asm.qa).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_get_Text_0 = Module._emscripten_bind_ASS_Event_get_Text_0 = function () { - return (_emscripten_bind_ASS_Event_get_Text_0 = Module._emscripten_bind_ASS_Event_get_Text_0 = Module.asm.ra).apply(null, arguments) -} -var _emscripten_bind_ASS_Event_set_Text_1 = Module._emscripten_bind_ASS_Event_set_Text_1 = function () { - return (_emscripten_bind_ASS_Event_set_Text_1 = Module._emscripten_bind_ASS_Event_set_Text_1 = Module.asm.sa).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_get_changed_0 = Module._emscripten_bind_RenderBlendResult_get_changed_0 = function () { - return (_emscripten_bind_RenderBlendResult_get_changed_0 = Module._emscripten_bind_RenderBlendResult_get_changed_0 = Module.asm.ta).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_set_changed_1 = Module._emscripten_bind_RenderBlendResult_set_changed_1 = function () { - return (_emscripten_bind_RenderBlendResult_set_changed_1 = Module._emscripten_bind_RenderBlendResult_set_changed_1 = Module.asm.ua).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_get_blend_time_0 = Module._emscripten_bind_RenderBlendResult_get_blend_time_0 = function () { - return (_emscripten_bind_RenderBlendResult_get_blend_time_0 = Module._emscripten_bind_RenderBlendResult_get_blend_time_0 = Module.asm.va).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_set_blend_time_1 = Module._emscripten_bind_RenderBlendResult_set_blend_time_1 = function () { - return (_emscripten_bind_RenderBlendResult_set_blend_time_1 = Module._emscripten_bind_RenderBlendResult_set_blend_time_1 = Module.asm.wa).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_get_part_0 = Module._emscripten_bind_RenderBlendResult_get_part_0 = function () { - return (_emscripten_bind_RenderBlendResult_get_part_0 = Module._emscripten_bind_RenderBlendResult_get_part_0 = Module.asm.xa).apply(null, arguments) -} -var _emscripten_bind_RenderBlendResult_set_part_1 = Module._emscripten_bind_RenderBlendResult_set_part_1 = function () { - return (_emscripten_bind_RenderBlendResult_set_part_1 = Module._emscripten_bind_RenderBlendResult_set_part_1 = Module.asm.ya).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = Module._emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = function () { - return (_emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = Module._emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = Module.asm.za).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_setLogLevel_1 = Module._emscripten_bind_SubtitleOctopus_setLogLevel_1 = function () { - return (_emscripten_bind_SubtitleOctopus_setLogLevel_1 = Module._emscripten_bind_SubtitleOctopus_setLogLevel_1 = Module.asm.Aa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_setDropAnimations_1 = Module._emscripten_bind_SubtitleOctopus_setDropAnimations_1 = function () { - return (_emscripten_bind_SubtitleOctopus_setDropAnimations_1 = Module._emscripten_bind_SubtitleOctopus_setDropAnimations_1 = Module.asm.Ba).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_getDropAnimations_0 = Module._emscripten_bind_SubtitleOctopus_getDropAnimations_0 = function () { - return (_emscripten_bind_SubtitleOctopus_getDropAnimations_0 = Module._emscripten_bind_SubtitleOctopus_getDropAnimations_0 = Module.asm.Ca).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_initLibrary_2 = Module._emscripten_bind_SubtitleOctopus_initLibrary_2 = function () { - return (_emscripten_bind_SubtitleOctopus_initLibrary_2 = Module._emscripten_bind_SubtitleOctopus_initLibrary_2 = Module.asm.Da).apply(null, arguments) -} -var _free = Module._free = function () { - return (_free = Module._free = Module.asm.Ea).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_createTrack_1 = Module._emscripten_bind_SubtitleOctopus_createTrack_1 = function () { - return (_emscripten_bind_SubtitleOctopus_createTrack_1 = Module._emscripten_bind_SubtitleOctopus_createTrack_1 = Module.asm.Fa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_createTrackMem_2 = Module._emscripten_bind_SubtitleOctopus_createTrackMem_2 = function () { - return (_emscripten_bind_SubtitleOctopus_createTrackMem_2 = Module._emscripten_bind_SubtitleOctopus_createTrackMem_2 = Module.asm.Ga).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_removeTrack_0 = Module._emscripten_bind_SubtitleOctopus_removeTrack_0 = function () { - return (_emscripten_bind_SubtitleOctopus_removeTrack_0 = Module._emscripten_bind_SubtitleOctopus_removeTrack_0 = Module.asm.Ha).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_resizeCanvas_2 = Module._emscripten_bind_SubtitleOctopus_resizeCanvas_2 = function () { - return (_emscripten_bind_SubtitleOctopus_resizeCanvas_2 = Module._emscripten_bind_SubtitleOctopus_resizeCanvas_2 = Module.asm.Ia).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_renderImage_2 = Module._emscripten_bind_SubtitleOctopus_renderImage_2 = function () { - return (_emscripten_bind_SubtitleOctopus_renderImage_2 = Module._emscripten_bind_SubtitleOctopus_renderImage_2 = Module.asm.Ja).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_quitLibrary_0 = Module._emscripten_bind_SubtitleOctopus_quitLibrary_0 = function () { - return (_emscripten_bind_SubtitleOctopus_quitLibrary_0 = Module._emscripten_bind_SubtitleOctopus_quitLibrary_0 = Module.asm.Ka).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_reloadLibrary_0 = Module._emscripten_bind_SubtitleOctopus_reloadLibrary_0 = function () { - return (_emscripten_bind_SubtitleOctopus_reloadLibrary_0 = Module._emscripten_bind_SubtitleOctopus_reloadLibrary_0 = Module.asm.La).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_reloadFonts_0 = Module._emscripten_bind_SubtitleOctopus_reloadFonts_0 = function () { - return (_emscripten_bind_SubtitleOctopus_reloadFonts_0 = Module._emscripten_bind_SubtitleOctopus_reloadFonts_0 = Module.asm.Ma).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_setMargin_4 = Module._emscripten_bind_SubtitleOctopus_setMargin_4 = function () { - return (_emscripten_bind_SubtitleOctopus_setMargin_4 = Module._emscripten_bind_SubtitleOctopus_setMargin_4 = Module.asm.Na).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_getEventCount_0 = Module._emscripten_bind_SubtitleOctopus_getEventCount_0 = function () { - return (_emscripten_bind_SubtitleOctopus_getEventCount_0 = Module._emscripten_bind_SubtitleOctopus_getEventCount_0 = Module.asm.Oa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_allocEvent_0 = Module._emscripten_bind_SubtitleOctopus_allocEvent_0 = function () { - return (_emscripten_bind_SubtitleOctopus_allocEvent_0 = Module._emscripten_bind_SubtitleOctopus_allocEvent_0 = Module.asm.Pa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_allocStyle_0 = Module._emscripten_bind_SubtitleOctopus_allocStyle_0 = function () { - return (_emscripten_bind_SubtitleOctopus_allocStyle_0 = Module._emscripten_bind_SubtitleOctopus_allocStyle_0 = Module.asm.Qa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_removeEvent_1 = Module._emscripten_bind_SubtitleOctopus_removeEvent_1 = function () { - return (_emscripten_bind_SubtitleOctopus_removeEvent_1 = Module._emscripten_bind_SubtitleOctopus_removeEvent_1 = Module.asm.Ra).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_getStyleCount_0 = Module._emscripten_bind_SubtitleOctopus_getStyleCount_0 = function () { - return (_emscripten_bind_SubtitleOctopus_getStyleCount_0 = Module._emscripten_bind_SubtitleOctopus_getStyleCount_0 = Module.asm.Sa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_getStyleByName_1 = Module._emscripten_bind_SubtitleOctopus_getStyleByName_1 = function () { - return (_emscripten_bind_SubtitleOctopus_getStyleByName_1 = Module._emscripten_bind_SubtitleOctopus_getStyleByName_1 = Module.asm.Ta).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_removeStyle_1 = Module._emscripten_bind_SubtitleOctopus_removeStyle_1 = function () { - return (_emscripten_bind_SubtitleOctopus_removeStyle_1 = Module._emscripten_bind_SubtitleOctopus_removeStyle_1 = Module.asm.Ua).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_removeAllEvents_0 = Module._emscripten_bind_SubtitleOctopus_removeAllEvents_0 = function () { - return (_emscripten_bind_SubtitleOctopus_removeAllEvents_0 = Module._emscripten_bind_SubtitleOctopus_removeAllEvents_0 = Module.asm.Va).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = Module._emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = function () { - return (_emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = Module._emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = Module.asm.Wa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_renderBlend_2 = Module._emscripten_bind_SubtitleOctopus_renderBlend_2 = function () { - return (_emscripten_bind_SubtitleOctopus_renderBlend_2 = Module._emscripten_bind_SubtitleOctopus_renderBlend_2 = Module.asm.Xa).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_findNextEventStart_1 = Module._emscripten_bind_SubtitleOctopus_findNextEventStart_1 = function () { - return (_emscripten_bind_SubtitleOctopus_findNextEventStart_1 = Module._emscripten_bind_SubtitleOctopus_findNextEventStart_1 = Module.asm.Ya).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = Module._emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = function () { - return (_emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = Module._emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = Module.asm.Za).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = Module._emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = function () { - return (_emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = Module._emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = Module.asm._a).apply(null, arguments) -} -var _malloc = Module._malloc = function () { - return (_malloc = Module._malloc = Module.asm.$a).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_get_track_0 = Module._emscripten_bind_SubtitleOctopus_get_track_0 = function () { - return (_emscripten_bind_SubtitleOctopus_get_track_0 = Module._emscripten_bind_SubtitleOctopus_get_track_0 = Module.asm.ab).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_set_track_1 = Module._emscripten_bind_SubtitleOctopus_set_track_1 = function () { - return (_emscripten_bind_SubtitleOctopus_set_track_1 = Module._emscripten_bind_SubtitleOctopus_set_track_1 = Module.asm.bb).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = Module._emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = function () { - return (_emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = Module._emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = Module.asm.cb).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = Module._emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = function () { - return (_emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = Module._emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = Module.asm.db).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_get_ass_library_0 = Module._emscripten_bind_SubtitleOctopus_get_ass_library_0 = function () { - return (_emscripten_bind_SubtitleOctopus_get_ass_library_0 = Module._emscripten_bind_SubtitleOctopus_get_ass_library_0 = Module.asm.eb).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus_set_ass_library_1 = Module._emscripten_bind_SubtitleOctopus_set_ass_library_1 = function () { - return (_emscripten_bind_SubtitleOctopus_set_ass_library_1 = Module._emscripten_bind_SubtitleOctopus_set_ass_library_1 = Module.asm.fb).apply(null, arguments) -} -var _emscripten_bind_SubtitleOctopus___destroy___0 = Module._emscripten_bind_SubtitleOctopus___destroy___0 = function () { - return (_emscripten_bind_SubtitleOctopus___destroy___0 = Module._emscripten_bind_SubtitleOctopus___destroy___0 = Module.asm.gb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_n_styles_0 = Module._emscripten_bind_ASS_Track_get_n_styles_0 = function () { - return (_emscripten_bind_ASS_Track_get_n_styles_0 = Module._emscripten_bind_ASS_Track_get_n_styles_0 = Module.asm.hb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_n_styles_1 = Module._emscripten_bind_ASS_Track_set_n_styles_1 = function () { - return (_emscripten_bind_ASS_Track_set_n_styles_1 = Module._emscripten_bind_ASS_Track_set_n_styles_1 = Module.asm.ib).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_max_styles_0 = Module._emscripten_bind_ASS_Track_get_max_styles_0 = function () { - return (_emscripten_bind_ASS_Track_get_max_styles_0 = Module._emscripten_bind_ASS_Track_get_max_styles_0 = Module.asm.jb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_max_styles_1 = Module._emscripten_bind_ASS_Track_set_max_styles_1 = function () { - return (_emscripten_bind_ASS_Track_set_max_styles_1 = Module._emscripten_bind_ASS_Track_set_max_styles_1 = Module.asm.kb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_n_events_0 = Module._emscripten_bind_ASS_Track_get_n_events_0 = function () { - return (_emscripten_bind_ASS_Track_get_n_events_0 = Module._emscripten_bind_ASS_Track_get_n_events_0 = Module.asm.lb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_n_events_1 = Module._emscripten_bind_ASS_Track_set_n_events_1 = function () { - return (_emscripten_bind_ASS_Track_set_n_events_1 = Module._emscripten_bind_ASS_Track_set_n_events_1 = Module.asm.mb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_max_events_0 = Module._emscripten_bind_ASS_Track_get_max_events_0 = function () { - return (_emscripten_bind_ASS_Track_get_max_events_0 = Module._emscripten_bind_ASS_Track_get_max_events_0 = Module.asm.nb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_max_events_1 = Module._emscripten_bind_ASS_Track_set_max_events_1 = function () { - return (_emscripten_bind_ASS_Track_set_max_events_1 = Module._emscripten_bind_ASS_Track_set_max_events_1 = Module.asm.ob).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_styles_1 = Module._emscripten_bind_ASS_Track_get_styles_1 = function () { - return (_emscripten_bind_ASS_Track_get_styles_1 = Module._emscripten_bind_ASS_Track_get_styles_1 = Module.asm.pb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_styles_2 = Module._emscripten_bind_ASS_Track_set_styles_2 = function () { - return (_emscripten_bind_ASS_Track_set_styles_2 = Module._emscripten_bind_ASS_Track_set_styles_2 = Module.asm.qb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_events_1 = Module._emscripten_bind_ASS_Track_get_events_1 = function () { - return (_emscripten_bind_ASS_Track_get_events_1 = Module._emscripten_bind_ASS_Track_get_events_1 = Module.asm.rb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_events_2 = Module._emscripten_bind_ASS_Track_set_events_2 = function () { - return (_emscripten_bind_ASS_Track_set_events_2 = Module._emscripten_bind_ASS_Track_set_events_2 = Module.asm.sb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_style_format_0 = Module._emscripten_bind_ASS_Track_get_style_format_0 = function () { - return (_emscripten_bind_ASS_Track_get_style_format_0 = Module._emscripten_bind_ASS_Track_get_style_format_0 = Module.asm.tb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_style_format_1 = Module._emscripten_bind_ASS_Track_set_style_format_1 = function () { - return (_emscripten_bind_ASS_Track_set_style_format_1 = Module._emscripten_bind_ASS_Track_set_style_format_1 = Module.asm.ub).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_event_format_0 = Module._emscripten_bind_ASS_Track_get_event_format_0 = function () { - return (_emscripten_bind_ASS_Track_get_event_format_0 = Module._emscripten_bind_ASS_Track_get_event_format_0 = Module.asm.vb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_event_format_1 = Module._emscripten_bind_ASS_Track_set_event_format_1 = function () { - return (_emscripten_bind_ASS_Track_set_event_format_1 = Module._emscripten_bind_ASS_Track_set_event_format_1 = Module.asm.wb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_PlayResX_0 = Module._emscripten_bind_ASS_Track_get_PlayResX_0 = function () { - return (_emscripten_bind_ASS_Track_get_PlayResX_0 = Module._emscripten_bind_ASS_Track_get_PlayResX_0 = Module.asm.xb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_PlayResX_1 = Module._emscripten_bind_ASS_Track_set_PlayResX_1 = function () { - return (_emscripten_bind_ASS_Track_set_PlayResX_1 = Module._emscripten_bind_ASS_Track_set_PlayResX_1 = Module.asm.yb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_PlayResY_0 = Module._emscripten_bind_ASS_Track_get_PlayResY_0 = function () { - return (_emscripten_bind_ASS_Track_get_PlayResY_0 = Module._emscripten_bind_ASS_Track_get_PlayResY_0 = Module.asm.zb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_PlayResY_1 = Module._emscripten_bind_ASS_Track_set_PlayResY_1 = function () { - return (_emscripten_bind_ASS_Track_set_PlayResY_1 = Module._emscripten_bind_ASS_Track_set_PlayResY_1 = Module.asm.Ab).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_Timer_0 = Module._emscripten_bind_ASS_Track_get_Timer_0 = function () { - return (_emscripten_bind_ASS_Track_get_Timer_0 = Module._emscripten_bind_ASS_Track_get_Timer_0 = Module.asm.Bb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_Timer_1 = Module._emscripten_bind_ASS_Track_set_Timer_1 = function () { - return (_emscripten_bind_ASS_Track_set_Timer_1 = Module._emscripten_bind_ASS_Track_set_Timer_1 = Module.asm.Cb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_WrapStyle_0 = Module._emscripten_bind_ASS_Track_get_WrapStyle_0 = function () { - return (_emscripten_bind_ASS_Track_get_WrapStyle_0 = Module._emscripten_bind_ASS_Track_get_WrapStyle_0 = Module.asm.Db).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_WrapStyle_1 = Module._emscripten_bind_ASS_Track_set_WrapStyle_1 = function () { - return (_emscripten_bind_ASS_Track_set_WrapStyle_1 = Module._emscripten_bind_ASS_Track_set_WrapStyle_1 = Module.asm.Eb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = Module._emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = function () { - return (_emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = Module._emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = Module.asm.Fb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = Module._emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = function () { - return (_emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = Module._emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = Module.asm.Gb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_Kerning_0 = Module._emscripten_bind_ASS_Track_get_Kerning_0 = function () { - return (_emscripten_bind_ASS_Track_get_Kerning_0 = Module._emscripten_bind_ASS_Track_get_Kerning_0 = Module.asm.Hb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_Kerning_1 = Module._emscripten_bind_ASS_Track_set_Kerning_1 = function () { - return (_emscripten_bind_ASS_Track_set_Kerning_1 = Module._emscripten_bind_ASS_Track_set_Kerning_1 = Module.asm.Ib).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_Language_0 = Module._emscripten_bind_ASS_Track_get_Language_0 = function () { - return (_emscripten_bind_ASS_Track_get_Language_0 = Module._emscripten_bind_ASS_Track_get_Language_0 = Module.asm.Jb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_Language_1 = Module._emscripten_bind_ASS_Track_set_Language_1 = function () { - return (_emscripten_bind_ASS_Track_set_Language_1 = Module._emscripten_bind_ASS_Track_set_Language_1 = Module.asm.Kb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_default_style_0 = Module._emscripten_bind_ASS_Track_get_default_style_0 = function () { - return (_emscripten_bind_ASS_Track_get_default_style_0 = Module._emscripten_bind_ASS_Track_get_default_style_0 = Module.asm.Lb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_default_style_1 = Module._emscripten_bind_ASS_Track_set_default_style_1 = function () { - return (_emscripten_bind_ASS_Track_set_default_style_1 = Module._emscripten_bind_ASS_Track_set_default_style_1 = Module.asm.Mb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_get_name_0 = Module._emscripten_bind_ASS_Track_get_name_0 = function () { - return (_emscripten_bind_ASS_Track_get_name_0 = Module._emscripten_bind_ASS_Track_get_name_0 = Module.asm.Nb).apply(null, arguments) -} -var _emscripten_bind_ASS_Track_set_name_1 = Module._emscripten_bind_ASS_Track_set_name_1 = function () { - return (_emscripten_bind_ASS_Track_set_name_1 = Module._emscripten_bind_ASS_Track_set_name_1 = Module.asm.Ob).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Name_0 = Module._emscripten_bind_ASS_Style_get_Name_0 = function () { - return (_emscripten_bind_ASS_Style_get_Name_0 = Module._emscripten_bind_ASS_Style_get_Name_0 = Module.asm.Pb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Name_1 = Module._emscripten_bind_ASS_Style_set_Name_1 = function () { - return (_emscripten_bind_ASS_Style_set_Name_1 = Module._emscripten_bind_ASS_Style_set_Name_1 = Module.asm.Qb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_FontName_0 = Module._emscripten_bind_ASS_Style_get_FontName_0 = function () { - return (_emscripten_bind_ASS_Style_get_FontName_0 = Module._emscripten_bind_ASS_Style_get_FontName_0 = Module.asm.Rb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_FontName_1 = Module._emscripten_bind_ASS_Style_set_FontName_1 = function () { - return (_emscripten_bind_ASS_Style_set_FontName_1 = Module._emscripten_bind_ASS_Style_set_FontName_1 = Module.asm.Sb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_FontSize_0 = Module._emscripten_bind_ASS_Style_get_FontSize_0 = function () { - return (_emscripten_bind_ASS_Style_get_FontSize_0 = Module._emscripten_bind_ASS_Style_get_FontSize_0 = Module.asm.Tb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_FontSize_1 = Module._emscripten_bind_ASS_Style_set_FontSize_1 = function () { - return (_emscripten_bind_ASS_Style_set_FontSize_1 = Module._emscripten_bind_ASS_Style_set_FontSize_1 = Module.asm.Ub).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_PrimaryColour_0 = Module._emscripten_bind_ASS_Style_get_PrimaryColour_0 = function () { - return (_emscripten_bind_ASS_Style_get_PrimaryColour_0 = Module._emscripten_bind_ASS_Style_get_PrimaryColour_0 = Module.asm.Vb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_PrimaryColour_1 = Module._emscripten_bind_ASS_Style_set_PrimaryColour_1 = function () { - return (_emscripten_bind_ASS_Style_set_PrimaryColour_1 = Module._emscripten_bind_ASS_Style_set_PrimaryColour_1 = Module.asm.Wb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_SecondaryColour_0 = Module._emscripten_bind_ASS_Style_get_SecondaryColour_0 = function () { - return (_emscripten_bind_ASS_Style_get_SecondaryColour_0 = Module._emscripten_bind_ASS_Style_get_SecondaryColour_0 = Module.asm.Xb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_SecondaryColour_1 = Module._emscripten_bind_ASS_Style_set_SecondaryColour_1 = function () { - return (_emscripten_bind_ASS_Style_set_SecondaryColour_1 = Module._emscripten_bind_ASS_Style_set_SecondaryColour_1 = Module.asm.Yb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_OutlineColour_0 = Module._emscripten_bind_ASS_Style_get_OutlineColour_0 = function () { - return (_emscripten_bind_ASS_Style_get_OutlineColour_0 = Module._emscripten_bind_ASS_Style_get_OutlineColour_0 = Module.asm.Zb).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_OutlineColour_1 = Module._emscripten_bind_ASS_Style_set_OutlineColour_1 = function () { - return (_emscripten_bind_ASS_Style_set_OutlineColour_1 = Module._emscripten_bind_ASS_Style_set_OutlineColour_1 = Module.asm._b).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_BackColour_0 = Module._emscripten_bind_ASS_Style_get_BackColour_0 = function () { - return (_emscripten_bind_ASS_Style_get_BackColour_0 = Module._emscripten_bind_ASS_Style_get_BackColour_0 = Module.asm.$b).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_BackColour_1 = Module._emscripten_bind_ASS_Style_set_BackColour_1 = function () { - return (_emscripten_bind_ASS_Style_set_BackColour_1 = Module._emscripten_bind_ASS_Style_set_BackColour_1 = Module.asm.ac).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Bold_0 = Module._emscripten_bind_ASS_Style_get_Bold_0 = function () { - return (_emscripten_bind_ASS_Style_get_Bold_0 = Module._emscripten_bind_ASS_Style_get_Bold_0 = Module.asm.bc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Bold_1 = Module._emscripten_bind_ASS_Style_set_Bold_1 = function () { - return (_emscripten_bind_ASS_Style_set_Bold_1 = Module._emscripten_bind_ASS_Style_set_Bold_1 = Module.asm.cc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Italic_0 = Module._emscripten_bind_ASS_Style_get_Italic_0 = function () { - return (_emscripten_bind_ASS_Style_get_Italic_0 = Module._emscripten_bind_ASS_Style_get_Italic_0 = Module.asm.dc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Italic_1 = Module._emscripten_bind_ASS_Style_set_Italic_1 = function () { - return (_emscripten_bind_ASS_Style_set_Italic_1 = Module._emscripten_bind_ASS_Style_set_Italic_1 = Module.asm.ec).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Underline_0 = Module._emscripten_bind_ASS_Style_get_Underline_0 = function () { - return (_emscripten_bind_ASS_Style_get_Underline_0 = Module._emscripten_bind_ASS_Style_get_Underline_0 = Module.asm.fc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Underline_1 = Module._emscripten_bind_ASS_Style_set_Underline_1 = function () { - return (_emscripten_bind_ASS_Style_set_Underline_1 = Module._emscripten_bind_ASS_Style_set_Underline_1 = Module.asm.gc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_StrikeOut_0 = Module._emscripten_bind_ASS_Style_get_StrikeOut_0 = function () { - return (_emscripten_bind_ASS_Style_get_StrikeOut_0 = Module._emscripten_bind_ASS_Style_get_StrikeOut_0 = Module.asm.hc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_StrikeOut_1 = Module._emscripten_bind_ASS_Style_set_StrikeOut_1 = function () { - return (_emscripten_bind_ASS_Style_set_StrikeOut_1 = Module._emscripten_bind_ASS_Style_set_StrikeOut_1 = Module.asm.ic).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_ScaleX_0 = Module._emscripten_bind_ASS_Style_get_ScaleX_0 = function () { - return (_emscripten_bind_ASS_Style_get_ScaleX_0 = Module._emscripten_bind_ASS_Style_get_ScaleX_0 = Module.asm.jc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_ScaleX_1 = Module._emscripten_bind_ASS_Style_set_ScaleX_1 = function () { - return (_emscripten_bind_ASS_Style_set_ScaleX_1 = Module._emscripten_bind_ASS_Style_set_ScaleX_1 = Module.asm.kc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_ScaleY_0 = Module._emscripten_bind_ASS_Style_get_ScaleY_0 = function () { - return (_emscripten_bind_ASS_Style_get_ScaleY_0 = Module._emscripten_bind_ASS_Style_get_ScaleY_0 = Module.asm.lc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_ScaleY_1 = Module._emscripten_bind_ASS_Style_set_ScaleY_1 = function () { - return (_emscripten_bind_ASS_Style_set_ScaleY_1 = Module._emscripten_bind_ASS_Style_set_ScaleY_1 = Module.asm.mc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Spacing_0 = Module._emscripten_bind_ASS_Style_get_Spacing_0 = function () { - return (_emscripten_bind_ASS_Style_get_Spacing_0 = Module._emscripten_bind_ASS_Style_get_Spacing_0 = Module.asm.nc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Spacing_1 = Module._emscripten_bind_ASS_Style_set_Spacing_1 = function () { - return (_emscripten_bind_ASS_Style_set_Spacing_1 = Module._emscripten_bind_ASS_Style_set_Spacing_1 = Module.asm.oc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Angle_0 = Module._emscripten_bind_ASS_Style_get_Angle_0 = function () { - return (_emscripten_bind_ASS_Style_get_Angle_0 = Module._emscripten_bind_ASS_Style_get_Angle_0 = Module.asm.pc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Angle_1 = Module._emscripten_bind_ASS_Style_set_Angle_1 = function () { - return (_emscripten_bind_ASS_Style_set_Angle_1 = Module._emscripten_bind_ASS_Style_set_Angle_1 = Module.asm.qc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_BorderStyle_0 = Module._emscripten_bind_ASS_Style_get_BorderStyle_0 = function () { - return (_emscripten_bind_ASS_Style_get_BorderStyle_0 = Module._emscripten_bind_ASS_Style_get_BorderStyle_0 = Module.asm.rc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_BorderStyle_1 = Module._emscripten_bind_ASS_Style_set_BorderStyle_1 = function () { - return (_emscripten_bind_ASS_Style_set_BorderStyle_1 = Module._emscripten_bind_ASS_Style_set_BorderStyle_1 = Module.asm.sc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Outline_0 = Module._emscripten_bind_ASS_Style_get_Outline_0 = function () { - return (_emscripten_bind_ASS_Style_get_Outline_0 = Module._emscripten_bind_ASS_Style_get_Outline_0 = Module.asm.tc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Outline_1 = Module._emscripten_bind_ASS_Style_set_Outline_1 = function () { - return (_emscripten_bind_ASS_Style_set_Outline_1 = Module._emscripten_bind_ASS_Style_set_Outline_1 = Module.asm.uc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Shadow_0 = Module._emscripten_bind_ASS_Style_get_Shadow_0 = function () { - return (_emscripten_bind_ASS_Style_get_Shadow_0 = Module._emscripten_bind_ASS_Style_get_Shadow_0 = Module.asm.vc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Shadow_1 = Module._emscripten_bind_ASS_Style_set_Shadow_1 = function () { - return (_emscripten_bind_ASS_Style_set_Shadow_1 = Module._emscripten_bind_ASS_Style_set_Shadow_1 = Module.asm.wc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Alignment_0 = Module._emscripten_bind_ASS_Style_get_Alignment_0 = function () { - return (_emscripten_bind_ASS_Style_get_Alignment_0 = Module._emscripten_bind_ASS_Style_get_Alignment_0 = Module.asm.xc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Alignment_1 = Module._emscripten_bind_ASS_Style_set_Alignment_1 = function () { - return (_emscripten_bind_ASS_Style_set_Alignment_1 = Module._emscripten_bind_ASS_Style_set_Alignment_1 = Module.asm.yc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_MarginL_0 = Module._emscripten_bind_ASS_Style_get_MarginL_0 = function () { - return (_emscripten_bind_ASS_Style_get_MarginL_0 = Module._emscripten_bind_ASS_Style_get_MarginL_0 = Module.asm.zc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_MarginL_1 = Module._emscripten_bind_ASS_Style_set_MarginL_1 = function () { - return (_emscripten_bind_ASS_Style_set_MarginL_1 = Module._emscripten_bind_ASS_Style_set_MarginL_1 = Module.asm.Ac).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_MarginR_0 = Module._emscripten_bind_ASS_Style_get_MarginR_0 = function () { - return (_emscripten_bind_ASS_Style_get_MarginR_0 = Module._emscripten_bind_ASS_Style_get_MarginR_0 = Module.asm.Bc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_MarginR_1 = Module._emscripten_bind_ASS_Style_set_MarginR_1 = function () { - return (_emscripten_bind_ASS_Style_set_MarginR_1 = Module._emscripten_bind_ASS_Style_set_MarginR_1 = Module.asm.Cc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_MarginV_0 = Module._emscripten_bind_ASS_Style_get_MarginV_0 = function () { - return (_emscripten_bind_ASS_Style_get_MarginV_0 = Module._emscripten_bind_ASS_Style_get_MarginV_0 = Module.asm.Dc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_MarginV_1 = Module._emscripten_bind_ASS_Style_set_MarginV_1 = function () { - return (_emscripten_bind_ASS_Style_set_MarginV_1 = Module._emscripten_bind_ASS_Style_set_MarginV_1 = Module.asm.Ec).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Encoding_0 = Module._emscripten_bind_ASS_Style_get_Encoding_0 = function () { - return (_emscripten_bind_ASS_Style_get_Encoding_0 = Module._emscripten_bind_ASS_Style_get_Encoding_0 = Module.asm.Fc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Encoding_1 = Module._emscripten_bind_ASS_Style_set_Encoding_1 = function () { - return (_emscripten_bind_ASS_Style_set_Encoding_1 = Module._emscripten_bind_ASS_Style_set_Encoding_1 = Module.asm.Gc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = Module._emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = function () { - return (_emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = Module._emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = Module.asm.Hc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = Module._emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = function () { - return (_emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = Module._emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = Module.asm.Ic).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Blur_0 = Module._emscripten_bind_ASS_Style_get_Blur_0 = function () { - return (_emscripten_bind_ASS_Style_get_Blur_0 = Module._emscripten_bind_ASS_Style_get_Blur_0 = Module.asm.Jc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Blur_1 = Module._emscripten_bind_ASS_Style_set_Blur_1 = function () { - return (_emscripten_bind_ASS_Style_set_Blur_1 = Module._emscripten_bind_ASS_Style_set_Blur_1 = Module.asm.Kc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_get_Justify_0 = Module._emscripten_bind_ASS_Style_get_Justify_0 = function () { - return (_emscripten_bind_ASS_Style_get_Justify_0 = Module._emscripten_bind_ASS_Style_get_Justify_0 = Module.asm.Lc).apply(null, arguments) -} -var _emscripten_bind_ASS_Style_set_Justify_1 = Module._emscripten_bind_ASS_Style_set_Justify_1 = function () { - return (_emscripten_bind_ASS_Style_set_Justify_1 = Module._emscripten_bind_ASS_Style_set_Justify_1 = Module.asm.Mc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_get_eventFinish_0 = Module._emscripten_bind_EventStopTimesResult_get_eventFinish_0 = function () { - return (_emscripten_bind_EventStopTimesResult_get_eventFinish_0 = Module._emscripten_bind_EventStopTimesResult_get_eventFinish_0 = Module.asm.Nc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_set_eventFinish_1 = Module._emscripten_bind_EventStopTimesResult_set_eventFinish_1 = function () { - return (_emscripten_bind_EventStopTimesResult_set_eventFinish_1 = Module._emscripten_bind_EventStopTimesResult_set_eventFinish_1 = Module.asm.Oc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = Module._emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = function () { - return (_emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = Module._emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = Module.asm.Pc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = Module._emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = function () { - return (_emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = Module._emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = Module.asm.Qc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_get_is_animated_0 = Module._emscripten_bind_EventStopTimesResult_get_is_animated_0 = function () { - return (_emscripten_bind_EventStopTimesResult_get_is_animated_0 = Module._emscripten_bind_EventStopTimesResult_get_is_animated_0 = Module.asm.Rc).apply(null, arguments) -} -var _emscripten_bind_EventStopTimesResult_set_is_animated_1 = Module._emscripten_bind_EventStopTimesResult_set_is_animated_1 = function () { - return (_emscripten_bind_EventStopTimesResult_set_is_animated_1 = Module._emscripten_bind_EventStopTimesResult_set_is_animated_1 = Module.asm.Sc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_w_0 = Module._emscripten_bind_ASS_Image_get_w_0 = function () { - return (_emscripten_bind_ASS_Image_get_w_0 = Module._emscripten_bind_ASS_Image_get_w_0 = Module.asm.Tc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_w_1 = Module._emscripten_bind_ASS_Image_set_w_1 = function () { - return (_emscripten_bind_ASS_Image_set_w_1 = Module._emscripten_bind_ASS_Image_set_w_1 = Module.asm.Uc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_h_0 = Module._emscripten_bind_ASS_Image_get_h_0 = function () { - return (_emscripten_bind_ASS_Image_get_h_0 = Module._emscripten_bind_ASS_Image_get_h_0 = Module.asm.Vc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_h_1 = Module._emscripten_bind_ASS_Image_set_h_1 = function () { - return (_emscripten_bind_ASS_Image_set_h_1 = Module._emscripten_bind_ASS_Image_set_h_1 = Module.asm.Wc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_stride_0 = Module._emscripten_bind_ASS_Image_get_stride_0 = function () { - return (_emscripten_bind_ASS_Image_get_stride_0 = Module._emscripten_bind_ASS_Image_get_stride_0 = Module.asm.Xc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_stride_1 = Module._emscripten_bind_ASS_Image_set_stride_1 = function () { - return (_emscripten_bind_ASS_Image_set_stride_1 = Module._emscripten_bind_ASS_Image_set_stride_1 = Module.asm.Yc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_bitmap_0 = Module._emscripten_bind_ASS_Image_get_bitmap_0 = function () { - return (_emscripten_bind_ASS_Image_get_bitmap_0 = Module._emscripten_bind_ASS_Image_get_bitmap_0 = Module.asm.Zc).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_bitmap_1 = Module._emscripten_bind_ASS_Image_set_bitmap_1 = function () { - return (_emscripten_bind_ASS_Image_set_bitmap_1 = Module._emscripten_bind_ASS_Image_set_bitmap_1 = Module.asm._c).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_color_0 = Module._emscripten_bind_ASS_Image_get_color_0 = function () { - return (_emscripten_bind_ASS_Image_get_color_0 = Module._emscripten_bind_ASS_Image_get_color_0 = Module.asm.$c).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_color_1 = Module._emscripten_bind_ASS_Image_set_color_1 = function () { - return (_emscripten_bind_ASS_Image_set_color_1 = Module._emscripten_bind_ASS_Image_set_color_1 = Module.asm.ad).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_dst_x_0 = Module._emscripten_bind_ASS_Image_get_dst_x_0 = function () { - return (_emscripten_bind_ASS_Image_get_dst_x_0 = Module._emscripten_bind_ASS_Image_get_dst_x_0 = Module.asm.bd).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_dst_x_1 = Module._emscripten_bind_ASS_Image_set_dst_x_1 = function () { - return (_emscripten_bind_ASS_Image_set_dst_x_1 = Module._emscripten_bind_ASS_Image_set_dst_x_1 = Module.asm.cd).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_dst_y_0 = Module._emscripten_bind_ASS_Image_get_dst_y_0 = function () { - return (_emscripten_bind_ASS_Image_get_dst_y_0 = Module._emscripten_bind_ASS_Image_get_dst_y_0 = Module.asm.dd).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_dst_y_1 = Module._emscripten_bind_ASS_Image_set_dst_y_1 = function () { - return (_emscripten_bind_ASS_Image_set_dst_y_1 = Module._emscripten_bind_ASS_Image_set_dst_y_1 = Module.asm.ed).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_get_next_0 = Module._emscripten_bind_ASS_Image_get_next_0 = function () { - return (_emscripten_bind_ASS_Image_get_next_0 = Module._emscripten_bind_ASS_Image_get_next_0 = Module.asm.fd).apply(null, arguments) -} -var _emscripten_bind_ASS_Image_set_next_1 = Module._emscripten_bind_ASS_Image_set_next_1 = function () { - return (_emscripten_bind_ASS_Image_set_next_1 = Module._emscripten_bind_ASS_Image_set_next_1 = Module.asm.gd).apply(null, arguments) -} -var _emscripten_bind_VoidPtr___destroy___0 = Module._emscripten_bind_VoidPtr___destroy___0 = function () { - return (_emscripten_bind_VoidPtr___destroy___0 = Module._emscripten_bind_VoidPtr___destroy___0 = Module.asm.hd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_dest_x_0 = Module._emscripten_bind_RenderBlendPart_get_dest_x_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_dest_x_0 = Module._emscripten_bind_RenderBlendPart_get_dest_x_0 = Module.asm.id).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_dest_x_1 = Module._emscripten_bind_RenderBlendPart_set_dest_x_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_dest_x_1 = Module._emscripten_bind_RenderBlendPart_set_dest_x_1 = Module.asm.jd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_dest_y_0 = Module._emscripten_bind_RenderBlendPart_get_dest_y_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_dest_y_0 = Module._emscripten_bind_RenderBlendPart_get_dest_y_0 = Module.asm.kd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_dest_y_1 = Module._emscripten_bind_RenderBlendPart_set_dest_y_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_dest_y_1 = Module._emscripten_bind_RenderBlendPart_set_dest_y_1 = Module.asm.ld).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_dest_width_0 = Module._emscripten_bind_RenderBlendPart_get_dest_width_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_dest_width_0 = Module._emscripten_bind_RenderBlendPart_get_dest_width_0 = Module.asm.md).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_dest_width_1 = Module._emscripten_bind_RenderBlendPart_set_dest_width_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_dest_width_1 = Module._emscripten_bind_RenderBlendPart_set_dest_width_1 = Module.asm.nd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_dest_height_0 = Module._emscripten_bind_RenderBlendPart_get_dest_height_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_dest_height_0 = Module._emscripten_bind_RenderBlendPart_get_dest_height_0 = Module.asm.od).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_dest_height_1 = Module._emscripten_bind_RenderBlendPart_set_dest_height_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_dest_height_1 = Module._emscripten_bind_RenderBlendPart_set_dest_height_1 = Module.asm.pd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_image_0 = Module._emscripten_bind_RenderBlendPart_get_image_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_image_0 = Module._emscripten_bind_RenderBlendPart_get_image_0 = Module.asm.qd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_image_1 = Module._emscripten_bind_RenderBlendPart_set_image_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_image_1 = Module._emscripten_bind_RenderBlendPart_set_image_1 = Module.asm.rd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_get_next_0 = Module._emscripten_bind_RenderBlendPart_get_next_0 = function () { - return (_emscripten_bind_RenderBlendPart_get_next_0 = Module._emscripten_bind_RenderBlendPart_get_next_0 = Module.asm.sd).apply(null, arguments) -} -var _emscripten_bind_RenderBlendPart_set_next_1 = Module._emscripten_bind_RenderBlendPart_set_next_1 = function () { - return (_emscripten_bind_RenderBlendPart_set_next_1 = Module._emscripten_bind_RenderBlendPart_set_next_1 = Module.asm.td).apply(null, arguments) -} -var _emscripten_bind_libass_libass_0 = Module._emscripten_bind_libass_libass_0 = function () { - return (_emscripten_bind_libass_libass_0 = Module._emscripten_bind_libass_libass_0 = Module.asm.ud).apply(null, arguments) -} -var _emscripten_bind_libass_oct_library_version_0 = Module._emscripten_bind_libass_oct_library_version_0 = function () { - return (_emscripten_bind_libass_oct_library_version_0 = Module._emscripten_bind_libass_oct_library_version_0 = Module.asm.vd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_library_init_0 = Module._emscripten_bind_libass_oct_library_init_0 = function () { - return (_emscripten_bind_libass_oct_library_init_0 = Module._emscripten_bind_libass_oct_library_init_0 = Module.asm.wd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_library_done_1 = Module._emscripten_bind_libass_oct_library_done_1 = function () { - return (_emscripten_bind_libass_oct_library_done_1 = Module._emscripten_bind_libass_oct_library_done_1 = Module.asm.xd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_fonts_dir_2 = Module._emscripten_bind_libass_oct_set_fonts_dir_2 = function () { - return (_emscripten_bind_libass_oct_set_fonts_dir_2 = Module._emscripten_bind_libass_oct_set_fonts_dir_2 = Module.asm.yd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_extract_fonts_2 = Module._emscripten_bind_libass_oct_set_extract_fonts_2 = function () { - return (_emscripten_bind_libass_oct_set_extract_fonts_2 = Module._emscripten_bind_libass_oct_set_extract_fonts_2 = Module.asm.zd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_style_overrides_2 = Module._emscripten_bind_libass_oct_set_style_overrides_2 = function () { - return (_emscripten_bind_libass_oct_set_style_overrides_2 = Module._emscripten_bind_libass_oct_set_style_overrides_2 = Module.asm.Ad).apply(null, arguments) -} -var _emscripten_bind_libass_oct_process_force_style_1 = Module._emscripten_bind_libass_oct_process_force_style_1 = function () { - return (_emscripten_bind_libass_oct_process_force_style_1 = Module._emscripten_bind_libass_oct_process_force_style_1 = Module.asm.Bd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_renderer_init_1 = Module._emscripten_bind_libass_oct_renderer_init_1 = function () { - return (_emscripten_bind_libass_oct_renderer_init_1 = Module._emscripten_bind_libass_oct_renderer_init_1 = Module.asm.Cd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_renderer_done_1 = Module._emscripten_bind_libass_oct_renderer_done_1 = function () { - return (_emscripten_bind_libass_oct_renderer_done_1 = Module._emscripten_bind_libass_oct_renderer_done_1 = Module.asm.Dd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_frame_size_3 = Module._emscripten_bind_libass_oct_set_frame_size_3 = function () { - return (_emscripten_bind_libass_oct_set_frame_size_3 = Module._emscripten_bind_libass_oct_set_frame_size_3 = Module.asm.Ed).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_storage_size_3 = Module._emscripten_bind_libass_oct_set_storage_size_3 = function () { - return (_emscripten_bind_libass_oct_set_storage_size_3 = Module._emscripten_bind_libass_oct_set_storage_size_3 = Module.asm.Fd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_shaper_2 = Module._emscripten_bind_libass_oct_set_shaper_2 = function () { - return (_emscripten_bind_libass_oct_set_shaper_2 = Module._emscripten_bind_libass_oct_set_shaper_2 = Module.asm.Gd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_margins_5 = Module._emscripten_bind_libass_oct_set_margins_5 = function () { - return (_emscripten_bind_libass_oct_set_margins_5 = Module._emscripten_bind_libass_oct_set_margins_5 = Module.asm.Hd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_use_margins_2 = Module._emscripten_bind_libass_oct_set_use_margins_2 = function () { - return (_emscripten_bind_libass_oct_set_use_margins_2 = Module._emscripten_bind_libass_oct_set_use_margins_2 = Module.asm.Id).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_pixel_aspect_2 = Module._emscripten_bind_libass_oct_set_pixel_aspect_2 = function () { - return (_emscripten_bind_libass_oct_set_pixel_aspect_2 = Module._emscripten_bind_libass_oct_set_pixel_aspect_2 = Module.asm.Jd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_aspect_ratio_3 = Module._emscripten_bind_libass_oct_set_aspect_ratio_3 = function () { - return (_emscripten_bind_libass_oct_set_aspect_ratio_3 = Module._emscripten_bind_libass_oct_set_aspect_ratio_3 = Module.asm.Kd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_font_scale_2 = Module._emscripten_bind_libass_oct_set_font_scale_2 = function () { - return (_emscripten_bind_libass_oct_set_font_scale_2 = Module._emscripten_bind_libass_oct_set_font_scale_2 = Module.asm.Ld).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_hinting_2 = Module._emscripten_bind_libass_oct_set_hinting_2 = function () { - return (_emscripten_bind_libass_oct_set_hinting_2 = Module._emscripten_bind_libass_oct_set_hinting_2 = Module.asm.Md).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_line_spacing_2 = Module._emscripten_bind_libass_oct_set_line_spacing_2 = function () { - return (_emscripten_bind_libass_oct_set_line_spacing_2 = Module._emscripten_bind_libass_oct_set_line_spacing_2 = Module.asm.Nd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_line_position_2 = Module._emscripten_bind_libass_oct_set_line_position_2 = function () { - return (_emscripten_bind_libass_oct_set_line_position_2 = Module._emscripten_bind_libass_oct_set_line_position_2 = Module.asm.Od).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_fonts_6 = Module._emscripten_bind_libass_oct_set_fonts_6 = function () { - return (_emscripten_bind_libass_oct_set_fonts_6 = Module._emscripten_bind_libass_oct_set_fonts_6 = Module.asm.Pd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = Module._emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = function () { - return (_emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = Module._emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = Module.asm.Qd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_selective_style_override_2 = Module._emscripten_bind_libass_oct_set_selective_style_override_2 = function () { - return (_emscripten_bind_libass_oct_set_selective_style_override_2 = Module._emscripten_bind_libass_oct_set_selective_style_override_2 = Module.asm.Rd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_set_cache_limits_3 = Module._emscripten_bind_libass_oct_set_cache_limits_3 = function () { - return (_emscripten_bind_libass_oct_set_cache_limits_3 = Module._emscripten_bind_libass_oct_set_cache_limits_3 = Module.asm.Sd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_render_frame_4 = Module._emscripten_bind_libass_oct_render_frame_4 = function () { - return (_emscripten_bind_libass_oct_render_frame_4 = Module._emscripten_bind_libass_oct_render_frame_4 = Module.asm.Td).apply(null, arguments) -} -var _emscripten_bind_libass_oct_new_track_1 = Module._emscripten_bind_libass_oct_new_track_1 = function () { - return (_emscripten_bind_libass_oct_new_track_1 = Module._emscripten_bind_libass_oct_new_track_1 = Module.asm.Ud).apply(null, arguments) -} -var _emscripten_bind_libass_oct_free_track_1 = Module._emscripten_bind_libass_oct_free_track_1 = function () { - return (_emscripten_bind_libass_oct_free_track_1 = Module._emscripten_bind_libass_oct_free_track_1 = Module.asm.Vd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_alloc_style_1 = Module._emscripten_bind_libass_oct_alloc_style_1 = function () { - return (_emscripten_bind_libass_oct_alloc_style_1 = Module._emscripten_bind_libass_oct_alloc_style_1 = Module.asm.Wd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_alloc_event_1 = Module._emscripten_bind_libass_oct_alloc_event_1 = function () { - return (_emscripten_bind_libass_oct_alloc_event_1 = Module._emscripten_bind_libass_oct_alloc_event_1 = Module.asm.Xd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_free_style_2 = Module._emscripten_bind_libass_oct_free_style_2 = function () { - return (_emscripten_bind_libass_oct_free_style_2 = Module._emscripten_bind_libass_oct_free_style_2 = Module.asm.Yd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_free_event_2 = Module._emscripten_bind_libass_oct_free_event_2 = function () { - return (_emscripten_bind_libass_oct_free_event_2 = Module._emscripten_bind_libass_oct_free_event_2 = Module.asm.Zd).apply(null, arguments) -} -var _emscripten_bind_libass_oct_flush_events_1 = Module._emscripten_bind_libass_oct_flush_events_1 = function () { - return (_emscripten_bind_libass_oct_flush_events_1 = Module._emscripten_bind_libass_oct_flush_events_1 = Module.asm._d).apply(null, arguments) -} -var _emscripten_bind_libass_oct_read_file_3 = Module._emscripten_bind_libass_oct_read_file_3 = function () { - return (_emscripten_bind_libass_oct_read_file_3 = Module._emscripten_bind_libass_oct_read_file_3 = Module.asm.$d).apply(null, arguments) -} -var _emscripten_bind_libass_oct_add_font_4 = Module._emscripten_bind_libass_oct_add_font_4 = function () { - return (_emscripten_bind_libass_oct_add_font_4 = Module._emscripten_bind_libass_oct_add_font_4 = Module.asm.ae).apply(null, arguments) -} -var _emscripten_bind_libass_oct_clear_fonts_1 = Module._emscripten_bind_libass_oct_clear_fonts_1 = function () { - return (_emscripten_bind_libass_oct_clear_fonts_1 = Module._emscripten_bind_libass_oct_clear_fonts_1 = Module.asm.be).apply(null, arguments) -} -var _emscripten_bind_libass_oct_step_sub_3 = Module._emscripten_bind_libass_oct_step_sub_3 = function () { - return (_emscripten_bind_libass_oct_step_sub_3 = Module._emscripten_bind_libass_oct_step_sub_3 = Module.asm.ce).apply(null, arguments) -} -var _emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = function () { - return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = Module.asm.de).apply(null, arguments) -} -var _emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = function () { - return (_emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = Module.asm.ee).apply(null, arguments) -} -var _emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = function () { - return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = Module.asm.fe).apply(null, arguments) -} -var _emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = function () { - return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = Module._emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = Module.asm.ge).apply(null, arguments) -} -var _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = Module._emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = function () { - return (_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = Module._emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = Module.asm.he).apply(null, arguments) -} -var _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = Module._emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = function () { - return (_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = Module._emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = Module.asm.ie).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = Module.asm.je).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = Module.asm.ke).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = Module.asm.le).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = Module.asm.me).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = Module.asm.ne).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = Module.asm.oe).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = Module.asm.pe).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = Module.asm.qe).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = Module.asm.re).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = Module.asm.se).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = Module.asm.te).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = Module.asm.ue).apply(null, arguments) -} -var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = function () { - return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = Module._emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = Module.asm.ve).apply(null, arguments) -} -var _realloc = Module._realloc = function () { - return (_realloc = Module._realloc = Module.asm.we).apply(null, arguments) -} -var ___errno_location = Module.___errno_location = function () { - return (___errno_location = Module.___errno_location = Module.asm.xe).apply(null, arguments) -} -var _setThrew = Module._setThrew = function () { - return (_setThrew = Module._setThrew = Module.asm.ye).apply(null, arguments) -} -var dynCall_v = Module.dynCall_v = function () { - return (dynCall_v = Module.dynCall_v = Module.asm.ze).apply(null, arguments) -} -var dynCall_vii = Module.dynCall_vii = function () { - return (dynCall_vii = Module.dynCall_vii = Module.asm.Ae).apply(null, arguments) -} -var dynCall_iii = Module.dynCall_iii = function () { - return (dynCall_iii = Module.dynCall_iii = Module.asm.Be).apply(null, arguments) -} -var dynCall_iiii = Module.dynCall_iiii = function () { - return (dynCall_iiii = Module.dynCall_iiii = Module.asm.Ce).apply(null, arguments) -} -var dynCall_iiiii = Module.dynCall_iiiii = function () { - return (dynCall_iiiii = Module.dynCall_iiiii = Module.asm.De).apply(null, arguments) -} -var stackSave = Module.stackSave = function () { - return (stackSave = Module.stackSave = Module.asm.Ee).apply(null, arguments) -} -var stackAlloc = Module.stackAlloc = function () { - return (stackAlloc = Module.stackAlloc = Module.asm.Fe).apply(null, arguments) -} -var stackRestore = Module.stackRestore = function () { - return (stackRestore = Module.stackRestore = Module.asm.Ge).apply(null, arguments) -} -var dynCall_vi = Module.dynCall_vi = function () { - return (dynCall_vi = Module.dynCall_vi = Module.asm.He).apply(null, arguments) -} + "a": ___assert_fail, + "G": ___clock_gettime, + "S": ___map_file, + "J": ___sys_access, + "F": ___sys_chmod, + "d": ___sys_fcntl64, + "D": ___sys_fstat64, + "M": ___sys_getcwd, + "T": ___sys_getdents64, + "j": ___sys_getpid, + "R": ___sys_ioctl, + "I": ___sys_link, + "C": ___sys_lstat64, + "E": ___sys_mkdir, + "B": ___sys_mprotect, + "A": ___sys_munmap, + "k": ___sys_open, + "K": ___sys_read, + "H": ___sys_readlink, + "P": ___sys_rename, + "O": ___sys_rmdir, + "p": ___sys_stat64, + "N": ___sys_symlink, + "L": ___sys_unlink, + "m": _abort, + "r": _emscripten_get_now, + "h": _emscripten_longjmp, + "v": _emscripten_memcpy_big, + "w": _emscripten_resize_heap, + "y": _environ_get, + "z": _environ_sizes_get, + "i": _exit, + "g": _fd_close, + "x": _fd_fdstat_get, + "Q": _fd_read, + "u": _fd_seek, + "l": _fd_write, + "e": _getTempRet0, + "U": _gettimeofday, + "t": invoke_iii, + "q": invoke_iiii, + "s": invoke_iiiii, + "V": invoke_vii, + "memory": wasmMemory, + "b": _roundf, + "o": _saveSetjmp, + "c": _setTempRet0, + "W": _sysconf, + "table": wasmTable, + "f": _testSetjmp, + "n": _time +}; +var asm = createWasm(); +Module["asm"] = asm; +var ___wasm_call_ctors = Module["___wasm_call_ctors"] = function () { + return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["X"]).apply(null, arguments) +}; +var _main = Module["_main"] = function () { + return (_main = Module["_main"] = Module["asm"]["Y"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Start_0 = Module["_emscripten_bind_ASS_Event_get_Start_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Start_0 = Module["_emscripten_bind_ASS_Event_get_Start_0"] = Module["asm"]["Z"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Start_1 = Module["_emscripten_bind_ASS_Event_set_Start_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Start_1 = Module["_emscripten_bind_ASS_Event_set_Start_1"] = Module["asm"]["_"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Duration_0 = Module["_emscripten_bind_ASS_Event_get_Duration_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Duration_0 = Module["_emscripten_bind_ASS_Event_get_Duration_0"] = Module["asm"]["$"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Duration_1 = Module["_emscripten_bind_ASS_Event_set_Duration_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Duration_1 = Module["_emscripten_bind_ASS_Event_set_Duration_1"] = Module["asm"]["aa"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_ReadOrder_0 = Module["_emscripten_bind_ASS_Event_get_ReadOrder_0"] = function () { + return (_emscripten_bind_ASS_Event_get_ReadOrder_0 = Module["_emscripten_bind_ASS_Event_get_ReadOrder_0"] = Module["asm"]["ba"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_ReadOrder_1 = Module["_emscripten_bind_ASS_Event_set_ReadOrder_1"] = function () { + return (_emscripten_bind_ASS_Event_set_ReadOrder_1 = Module["_emscripten_bind_ASS_Event_set_ReadOrder_1"] = Module["asm"]["ca"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Layer_0 = Module["_emscripten_bind_ASS_Event_get_Layer_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Layer_0 = Module["_emscripten_bind_ASS_Event_get_Layer_0"] = Module["asm"]["da"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Layer_1 = Module["_emscripten_bind_ASS_Event_set_Layer_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Layer_1 = Module["_emscripten_bind_ASS_Event_set_Layer_1"] = Module["asm"]["ea"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Style_0 = Module["_emscripten_bind_ASS_Event_get_Style_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Style_0 = Module["_emscripten_bind_ASS_Event_get_Style_0"] = Module["asm"]["fa"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Style_1 = Module["_emscripten_bind_ASS_Event_set_Style_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Style_1 = Module["_emscripten_bind_ASS_Event_set_Style_1"] = Module["asm"]["ga"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Name_0 = Module["_emscripten_bind_ASS_Event_get_Name_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Name_0 = Module["_emscripten_bind_ASS_Event_get_Name_0"] = Module["asm"]["ha"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Name_1 = Module["_emscripten_bind_ASS_Event_set_Name_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Name_1 = Module["_emscripten_bind_ASS_Event_set_Name_1"] = Module["asm"]["ia"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_MarginL_0 = Module["_emscripten_bind_ASS_Event_get_MarginL_0"] = function () { + return (_emscripten_bind_ASS_Event_get_MarginL_0 = Module["_emscripten_bind_ASS_Event_get_MarginL_0"] = Module["asm"]["ja"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_MarginL_1 = Module["_emscripten_bind_ASS_Event_set_MarginL_1"] = function () { + return (_emscripten_bind_ASS_Event_set_MarginL_1 = Module["_emscripten_bind_ASS_Event_set_MarginL_1"] = Module["asm"]["ka"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_MarginR_0 = Module["_emscripten_bind_ASS_Event_get_MarginR_0"] = function () { + return (_emscripten_bind_ASS_Event_get_MarginR_0 = Module["_emscripten_bind_ASS_Event_get_MarginR_0"] = Module["asm"]["la"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_MarginR_1 = Module["_emscripten_bind_ASS_Event_set_MarginR_1"] = function () { + return (_emscripten_bind_ASS_Event_set_MarginR_1 = Module["_emscripten_bind_ASS_Event_set_MarginR_1"] = Module["asm"]["ma"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_MarginV_0 = Module["_emscripten_bind_ASS_Event_get_MarginV_0"] = function () { + return (_emscripten_bind_ASS_Event_get_MarginV_0 = Module["_emscripten_bind_ASS_Event_get_MarginV_0"] = Module["asm"]["na"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_MarginV_1 = Module["_emscripten_bind_ASS_Event_set_MarginV_1"] = function () { + return (_emscripten_bind_ASS_Event_set_MarginV_1 = Module["_emscripten_bind_ASS_Event_set_MarginV_1"] = Module["asm"]["oa"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Effect_0 = Module["_emscripten_bind_ASS_Event_get_Effect_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Effect_0 = Module["_emscripten_bind_ASS_Event_get_Effect_0"] = Module["asm"]["pa"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Effect_1 = Module["_emscripten_bind_ASS_Event_set_Effect_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Effect_1 = Module["_emscripten_bind_ASS_Event_set_Effect_1"] = Module["asm"]["qa"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_get_Text_0 = Module["_emscripten_bind_ASS_Event_get_Text_0"] = function () { + return (_emscripten_bind_ASS_Event_get_Text_0 = Module["_emscripten_bind_ASS_Event_get_Text_0"] = Module["asm"]["ra"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Event_set_Text_1 = Module["_emscripten_bind_ASS_Event_set_Text_1"] = function () { + return (_emscripten_bind_ASS_Event_set_Text_1 = Module["_emscripten_bind_ASS_Event_set_Text_1"] = Module["asm"]["sa"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_get_changed_0 = Module["_emscripten_bind_RenderBlendResult_get_changed_0"] = function () { + return (_emscripten_bind_RenderBlendResult_get_changed_0 = Module["_emscripten_bind_RenderBlendResult_get_changed_0"] = Module["asm"]["ta"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_set_changed_1 = Module["_emscripten_bind_RenderBlendResult_set_changed_1"] = function () { + return (_emscripten_bind_RenderBlendResult_set_changed_1 = Module["_emscripten_bind_RenderBlendResult_set_changed_1"] = Module["asm"]["ua"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_get_blend_time_0 = Module["_emscripten_bind_RenderBlendResult_get_blend_time_0"] = function () { + return (_emscripten_bind_RenderBlendResult_get_blend_time_0 = Module["_emscripten_bind_RenderBlendResult_get_blend_time_0"] = Module["asm"]["va"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_set_blend_time_1 = Module["_emscripten_bind_RenderBlendResult_set_blend_time_1"] = function () { + return (_emscripten_bind_RenderBlendResult_set_blend_time_1 = Module["_emscripten_bind_RenderBlendResult_set_blend_time_1"] = Module["asm"]["wa"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_get_part_0 = Module["_emscripten_bind_RenderBlendResult_get_part_0"] = function () { + return (_emscripten_bind_RenderBlendResult_get_part_0 = Module["_emscripten_bind_RenderBlendResult_get_part_0"] = Module["asm"]["xa"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendResult_set_part_1 = Module["_emscripten_bind_RenderBlendResult_set_part_1"] = function () { + return (_emscripten_bind_RenderBlendResult_set_part_1 = Module["_emscripten_bind_RenderBlendResult_set_part_1"] = Module["asm"]["ya"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = Module["_emscripten_bind_SubtitleOctopus_SubtitleOctopus_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_SubtitleOctopus_0 = Module["_emscripten_bind_SubtitleOctopus_SubtitleOctopus_0"] = Module["asm"]["za"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_setLogLevel_1 = Module["_emscripten_bind_SubtitleOctopus_setLogLevel_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_setLogLevel_1 = Module["_emscripten_bind_SubtitleOctopus_setLogLevel_1"] = Module["asm"]["Aa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_setDropAnimations_1 = Module["_emscripten_bind_SubtitleOctopus_setDropAnimations_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_setDropAnimations_1 = Module["_emscripten_bind_SubtitleOctopus_setDropAnimations_1"] = Module["asm"]["Ba"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_getDropAnimations_0 = Module["_emscripten_bind_SubtitleOctopus_getDropAnimations_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_getDropAnimations_0 = Module["_emscripten_bind_SubtitleOctopus_getDropAnimations_0"] = Module["asm"]["Ca"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_initLibrary_2 = Module["_emscripten_bind_SubtitleOctopus_initLibrary_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_initLibrary_2 = Module["_emscripten_bind_SubtitleOctopus_initLibrary_2"] = Module["asm"]["Da"]).apply(null, arguments) +}; +var _free = Module["_free"] = function () { + return (_free = Module["_free"] = Module["asm"]["Ea"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_createTrack_1 = Module["_emscripten_bind_SubtitleOctopus_createTrack_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_createTrack_1 = Module["_emscripten_bind_SubtitleOctopus_createTrack_1"] = Module["asm"]["Fa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_createTrackMem_2 = Module["_emscripten_bind_SubtitleOctopus_createTrackMem_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_createTrackMem_2 = Module["_emscripten_bind_SubtitleOctopus_createTrackMem_2"] = Module["asm"]["Ga"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_removeTrack_0 = Module["_emscripten_bind_SubtitleOctopus_removeTrack_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_removeTrack_0 = Module["_emscripten_bind_SubtitleOctopus_removeTrack_0"] = Module["asm"]["Ha"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_resizeCanvas_2 = Module["_emscripten_bind_SubtitleOctopus_resizeCanvas_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_resizeCanvas_2 = Module["_emscripten_bind_SubtitleOctopus_resizeCanvas_2"] = Module["asm"]["Ia"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_renderImage_2 = Module["_emscripten_bind_SubtitleOctopus_renderImage_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_renderImage_2 = Module["_emscripten_bind_SubtitleOctopus_renderImage_2"] = Module["asm"]["Ja"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_quitLibrary_0 = Module["_emscripten_bind_SubtitleOctopus_quitLibrary_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_quitLibrary_0 = Module["_emscripten_bind_SubtitleOctopus_quitLibrary_0"] = Module["asm"]["Ka"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_reloadLibrary_0 = Module["_emscripten_bind_SubtitleOctopus_reloadLibrary_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_reloadLibrary_0 = Module["_emscripten_bind_SubtitleOctopus_reloadLibrary_0"] = Module["asm"]["La"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_reloadFonts_0 = Module["_emscripten_bind_SubtitleOctopus_reloadFonts_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_reloadFonts_0 = Module["_emscripten_bind_SubtitleOctopus_reloadFonts_0"] = Module["asm"]["Ma"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_setMargin_4 = Module["_emscripten_bind_SubtitleOctopus_setMargin_4"] = function () { + return (_emscripten_bind_SubtitleOctopus_setMargin_4 = Module["_emscripten_bind_SubtitleOctopus_setMargin_4"] = Module["asm"]["Na"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_getEventCount_0 = Module["_emscripten_bind_SubtitleOctopus_getEventCount_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_getEventCount_0 = Module["_emscripten_bind_SubtitleOctopus_getEventCount_0"] = Module["asm"]["Oa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_allocEvent_0 = Module["_emscripten_bind_SubtitleOctopus_allocEvent_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_allocEvent_0 = Module["_emscripten_bind_SubtitleOctopus_allocEvent_0"] = Module["asm"]["Pa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_allocStyle_0 = Module["_emscripten_bind_SubtitleOctopus_allocStyle_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_allocStyle_0 = Module["_emscripten_bind_SubtitleOctopus_allocStyle_0"] = Module["asm"]["Qa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_removeEvent_1 = Module["_emscripten_bind_SubtitleOctopus_removeEvent_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_removeEvent_1 = Module["_emscripten_bind_SubtitleOctopus_removeEvent_1"] = Module["asm"]["Ra"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_getStyleCount_0 = Module["_emscripten_bind_SubtitleOctopus_getStyleCount_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_getStyleCount_0 = Module["_emscripten_bind_SubtitleOctopus_getStyleCount_0"] = Module["asm"]["Sa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_getStyleByName_1 = Module["_emscripten_bind_SubtitleOctopus_getStyleByName_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_getStyleByName_1 = Module["_emscripten_bind_SubtitleOctopus_getStyleByName_1"] = Module["asm"]["Ta"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_removeStyle_1 = Module["_emscripten_bind_SubtitleOctopus_removeStyle_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_removeStyle_1 = Module["_emscripten_bind_SubtitleOctopus_removeStyle_1"] = Module["asm"]["Ua"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_removeAllEvents_0 = Module["_emscripten_bind_SubtitleOctopus_removeAllEvents_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_removeAllEvents_0 = Module["_emscripten_bind_SubtitleOctopus_removeAllEvents_0"] = Module["asm"]["Va"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = Module["_emscripten_bind_SubtitleOctopus_setMemoryLimits_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_setMemoryLimits_2 = Module["_emscripten_bind_SubtitleOctopus_setMemoryLimits_2"] = Module["asm"]["Wa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_renderBlend_2 = Module["_emscripten_bind_SubtitleOctopus_renderBlend_2"] = function () { + return (_emscripten_bind_SubtitleOctopus_renderBlend_2 = Module["_emscripten_bind_SubtitleOctopus_renderBlend_2"] = Module["asm"]["Xa"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_findNextEventStart_1 = Module["_emscripten_bind_SubtitleOctopus_findNextEventStart_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_findNextEventStart_1 = Module["_emscripten_bind_SubtitleOctopus_findNextEventStart_1"] = Module["asm"]["Ya"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = Module["_emscripten_bind_SubtitleOctopus_findEventStopTimes_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_findEventStopTimes_1 = Module["_emscripten_bind_SubtitleOctopus_findEventStopTimes_1"] = Module["asm"]["Za"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = Module["_emscripten_bind_SubtitleOctopus_rescanAllAnimations_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_rescanAllAnimations_0 = Module["_emscripten_bind_SubtitleOctopus_rescanAllAnimations_0"] = Module["asm"]["_a"]).apply(null, arguments) +}; +var _malloc = Module["_malloc"] = function () { + return (_malloc = Module["_malloc"] = Module["asm"]["$a"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_get_track_0 = Module["_emscripten_bind_SubtitleOctopus_get_track_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_get_track_0 = Module["_emscripten_bind_SubtitleOctopus_get_track_0"] = Module["asm"]["ab"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_set_track_1 = Module["_emscripten_bind_SubtitleOctopus_set_track_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_set_track_1 = Module["_emscripten_bind_SubtitleOctopus_set_track_1"] = Module["asm"]["bb"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = Module["_emscripten_bind_SubtitleOctopus_get_ass_renderer_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_get_ass_renderer_0 = Module["_emscripten_bind_SubtitleOctopus_get_ass_renderer_0"] = Module["asm"]["cb"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = Module["_emscripten_bind_SubtitleOctopus_set_ass_renderer_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_set_ass_renderer_1 = Module["_emscripten_bind_SubtitleOctopus_set_ass_renderer_1"] = Module["asm"]["db"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_get_ass_library_0 = Module["_emscripten_bind_SubtitleOctopus_get_ass_library_0"] = function () { + return (_emscripten_bind_SubtitleOctopus_get_ass_library_0 = Module["_emscripten_bind_SubtitleOctopus_get_ass_library_0"] = Module["asm"]["eb"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus_set_ass_library_1 = Module["_emscripten_bind_SubtitleOctopus_set_ass_library_1"] = function () { + return (_emscripten_bind_SubtitleOctopus_set_ass_library_1 = Module["_emscripten_bind_SubtitleOctopus_set_ass_library_1"] = Module["asm"]["fb"]).apply(null, arguments) +}; +var _emscripten_bind_SubtitleOctopus___destroy___0 = Module["_emscripten_bind_SubtitleOctopus___destroy___0"] = function () { + return (_emscripten_bind_SubtitleOctopus___destroy___0 = Module["_emscripten_bind_SubtitleOctopus___destroy___0"] = Module["asm"]["gb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_n_styles_0 = Module["_emscripten_bind_ASS_Track_get_n_styles_0"] = function () { + return (_emscripten_bind_ASS_Track_get_n_styles_0 = Module["_emscripten_bind_ASS_Track_get_n_styles_0"] = Module["asm"]["hb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_n_styles_1 = Module["_emscripten_bind_ASS_Track_set_n_styles_1"] = function () { + return (_emscripten_bind_ASS_Track_set_n_styles_1 = Module["_emscripten_bind_ASS_Track_set_n_styles_1"] = Module["asm"]["ib"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_max_styles_0 = Module["_emscripten_bind_ASS_Track_get_max_styles_0"] = function () { + return (_emscripten_bind_ASS_Track_get_max_styles_0 = Module["_emscripten_bind_ASS_Track_get_max_styles_0"] = Module["asm"]["jb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_max_styles_1 = Module["_emscripten_bind_ASS_Track_set_max_styles_1"] = function () { + return (_emscripten_bind_ASS_Track_set_max_styles_1 = Module["_emscripten_bind_ASS_Track_set_max_styles_1"] = Module["asm"]["kb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_n_events_0 = Module["_emscripten_bind_ASS_Track_get_n_events_0"] = function () { + return (_emscripten_bind_ASS_Track_get_n_events_0 = Module["_emscripten_bind_ASS_Track_get_n_events_0"] = Module["asm"]["lb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_n_events_1 = Module["_emscripten_bind_ASS_Track_set_n_events_1"] = function () { + return (_emscripten_bind_ASS_Track_set_n_events_1 = Module["_emscripten_bind_ASS_Track_set_n_events_1"] = Module["asm"]["mb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_max_events_0 = Module["_emscripten_bind_ASS_Track_get_max_events_0"] = function () { + return (_emscripten_bind_ASS_Track_get_max_events_0 = Module["_emscripten_bind_ASS_Track_get_max_events_0"] = Module["asm"]["nb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_max_events_1 = Module["_emscripten_bind_ASS_Track_set_max_events_1"] = function () { + return (_emscripten_bind_ASS_Track_set_max_events_1 = Module["_emscripten_bind_ASS_Track_set_max_events_1"] = Module["asm"]["ob"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_styles_1 = Module["_emscripten_bind_ASS_Track_get_styles_1"] = function () { + return (_emscripten_bind_ASS_Track_get_styles_1 = Module["_emscripten_bind_ASS_Track_get_styles_1"] = Module["asm"]["pb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_styles_2 = Module["_emscripten_bind_ASS_Track_set_styles_2"] = function () { + return (_emscripten_bind_ASS_Track_set_styles_2 = Module["_emscripten_bind_ASS_Track_set_styles_2"] = Module["asm"]["qb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_events_1 = Module["_emscripten_bind_ASS_Track_get_events_1"] = function () { + return (_emscripten_bind_ASS_Track_get_events_1 = Module["_emscripten_bind_ASS_Track_get_events_1"] = Module["asm"]["rb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_events_2 = Module["_emscripten_bind_ASS_Track_set_events_2"] = function () { + return (_emscripten_bind_ASS_Track_set_events_2 = Module["_emscripten_bind_ASS_Track_set_events_2"] = Module["asm"]["sb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_style_format_0 = Module["_emscripten_bind_ASS_Track_get_style_format_0"] = function () { + return (_emscripten_bind_ASS_Track_get_style_format_0 = Module["_emscripten_bind_ASS_Track_get_style_format_0"] = Module["asm"]["tb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_style_format_1 = Module["_emscripten_bind_ASS_Track_set_style_format_1"] = function () { + return (_emscripten_bind_ASS_Track_set_style_format_1 = Module["_emscripten_bind_ASS_Track_set_style_format_1"] = Module["asm"]["ub"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_event_format_0 = Module["_emscripten_bind_ASS_Track_get_event_format_0"] = function () { + return (_emscripten_bind_ASS_Track_get_event_format_0 = Module["_emscripten_bind_ASS_Track_get_event_format_0"] = Module["asm"]["vb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_event_format_1 = Module["_emscripten_bind_ASS_Track_set_event_format_1"] = function () { + return (_emscripten_bind_ASS_Track_set_event_format_1 = Module["_emscripten_bind_ASS_Track_set_event_format_1"] = Module["asm"]["wb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_PlayResX_0 = Module["_emscripten_bind_ASS_Track_get_PlayResX_0"] = function () { + return (_emscripten_bind_ASS_Track_get_PlayResX_0 = Module["_emscripten_bind_ASS_Track_get_PlayResX_0"] = Module["asm"]["xb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_PlayResX_1 = Module["_emscripten_bind_ASS_Track_set_PlayResX_1"] = function () { + return (_emscripten_bind_ASS_Track_set_PlayResX_1 = Module["_emscripten_bind_ASS_Track_set_PlayResX_1"] = Module["asm"]["yb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_PlayResY_0 = Module["_emscripten_bind_ASS_Track_get_PlayResY_0"] = function () { + return (_emscripten_bind_ASS_Track_get_PlayResY_0 = Module["_emscripten_bind_ASS_Track_get_PlayResY_0"] = Module["asm"]["zb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_PlayResY_1 = Module["_emscripten_bind_ASS_Track_set_PlayResY_1"] = function () { + return (_emscripten_bind_ASS_Track_set_PlayResY_1 = Module["_emscripten_bind_ASS_Track_set_PlayResY_1"] = Module["asm"]["Ab"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_Timer_0 = Module["_emscripten_bind_ASS_Track_get_Timer_0"] = function () { + return (_emscripten_bind_ASS_Track_get_Timer_0 = Module["_emscripten_bind_ASS_Track_get_Timer_0"] = Module["asm"]["Bb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_Timer_1 = Module["_emscripten_bind_ASS_Track_set_Timer_1"] = function () { + return (_emscripten_bind_ASS_Track_set_Timer_1 = Module["_emscripten_bind_ASS_Track_set_Timer_1"] = Module["asm"]["Cb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_WrapStyle_0 = Module["_emscripten_bind_ASS_Track_get_WrapStyle_0"] = function () { + return (_emscripten_bind_ASS_Track_get_WrapStyle_0 = Module["_emscripten_bind_ASS_Track_get_WrapStyle_0"] = Module["asm"]["Db"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_WrapStyle_1 = Module["_emscripten_bind_ASS_Track_set_WrapStyle_1"] = function () { + return (_emscripten_bind_ASS_Track_set_WrapStyle_1 = Module["_emscripten_bind_ASS_Track_set_WrapStyle_1"] = Module["asm"]["Eb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = Module["_emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0"] = function () { + return (_emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0 = Module["_emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0"] = Module["asm"]["Fb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = Module["_emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1"] = function () { + return (_emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1 = Module["_emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1"] = Module["asm"]["Gb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_Kerning_0 = Module["_emscripten_bind_ASS_Track_get_Kerning_0"] = function () { + return (_emscripten_bind_ASS_Track_get_Kerning_0 = Module["_emscripten_bind_ASS_Track_get_Kerning_0"] = Module["asm"]["Hb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_Kerning_1 = Module["_emscripten_bind_ASS_Track_set_Kerning_1"] = function () { + return (_emscripten_bind_ASS_Track_set_Kerning_1 = Module["_emscripten_bind_ASS_Track_set_Kerning_1"] = Module["asm"]["Ib"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_Language_0 = Module["_emscripten_bind_ASS_Track_get_Language_0"] = function () { + return (_emscripten_bind_ASS_Track_get_Language_0 = Module["_emscripten_bind_ASS_Track_get_Language_0"] = Module["asm"]["Jb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_Language_1 = Module["_emscripten_bind_ASS_Track_set_Language_1"] = function () { + return (_emscripten_bind_ASS_Track_set_Language_1 = Module["_emscripten_bind_ASS_Track_set_Language_1"] = Module["asm"]["Kb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_default_style_0 = Module["_emscripten_bind_ASS_Track_get_default_style_0"] = function () { + return (_emscripten_bind_ASS_Track_get_default_style_0 = Module["_emscripten_bind_ASS_Track_get_default_style_0"] = Module["asm"]["Lb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_default_style_1 = Module["_emscripten_bind_ASS_Track_set_default_style_1"] = function () { + return (_emscripten_bind_ASS_Track_set_default_style_1 = Module["_emscripten_bind_ASS_Track_set_default_style_1"] = Module["asm"]["Mb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_get_name_0 = Module["_emscripten_bind_ASS_Track_get_name_0"] = function () { + return (_emscripten_bind_ASS_Track_get_name_0 = Module["_emscripten_bind_ASS_Track_get_name_0"] = Module["asm"]["Nb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Track_set_name_1 = Module["_emscripten_bind_ASS_Track_set_name_1"] = function () { + return (_emscripten_bind_ASS_Track_set_name_1 = Module["_emscripten_bind_ASS_Track_set_name_1"] = Module["asm"]["Ob"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Name_0 = Module["_emscripten_bind_ASS_Style_get_Name_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Name_0 = Module["_emscripten_bind_ASS_Style_get_Name_0"] = Module["asm"]["Pb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Name_1 = Module["_emscripten_bind_ASS_Style_set_Name_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Name_1 = Module["_emscripten_bind_ASS_Style_set_Name_1"] = Module["asm"]["Qb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_FontName_0 = Module["_emscripten_bind_ASS_Style_get_FontName_0"] = function () { + return (_emscripten_bind_ASS_Style_get_FontName_0 = Module["_emscripten_bind_ASS_Style_get_FontName_0"] = Module["asm"]["Rb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_FontName_1 = Module["_emscripten_bind_ASS_Style_set_FontName_1"] = function () { + return (_emscripten_bind_ASS_Style_set_FontName_1 = Module["_emscripten_bind_ASS_Style_set_FontName_1"] = Module["asm"]["Sb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_FontSize_0 = Module["_emscripten_bind_ASS_Style_get_FontSize_0"] = function () { + return (_emscripten_bind_ASS_Style_get_FontSize_0 = Module["_emscripten_bind_ASS_Style_get_FontSize_0"] = Module["asm"]["Tb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_FontSize_1 = Module["_emscripten_bind_ASS_Style_set_FontSize_1"] = function () { + return (_emscripten_bind_ASS_Style_set_FontSize_1 = Module["_emscripten_bind_ASS_Style_set_FontSize_1"] = Module["asm"]["Ub"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_PrimaryColour_0 = Module["_emscripten_bind_ASS_Style_get_PrimaryColour_0"] = function () { + return (_emscripten_bind_ASS_Style_get_PrimaryColour_0 = Module["_emscripten_bind_ASS_Style_get_PrimaryColour_0"] = Module["asm"]["Vb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_PrimaryColour_1 = Module["_emscripten_bind_ASS_Style_set_PrimaryColour_1"] = function () { + return (_emscripten_bind_ASS_Style_set_PrimaryColour_1 = Module["_emscripten_bind_ASS_Style_set_PrimaryColour_1"] = Module["asm"]["Wb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_SecondaryColour_0 = Module["_emscripten_bind_ASS_Style_get_SecondaryColour_0"] = function () { + return (_emscripten_bind_ASS_Style_get_SecondaryColour_0 = Module["_emscripten_bind_ASS_Style_get_SecondaryColour_0"] = Module["asm"]["Xb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_SecondaryColour_1 = Module["_emscripten_bind_ASS_Style_set_SecondaryColour_1"] = function () { + return (_emscripten_bind_ASS_Style_set_SecondaryColour_1 = Module["_emscripten_bind_ASS_Style_set_SecondaryColour_1"] = Module["asm"]["Yb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_OutlineColour_0 = Module["_emscripten_bind_ASS_Style_get_OutlineColour_0"] = function () { + return (_emscripten_bind_ASS_Style_get_OutlineColour_0 = Module["_emscripten_bind_ASS_Style_get_OutlineColour_0"] = Module["asm"]["Zb"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_OutlineColour_1 = Module["_emscripten_bind_ASS_Style_set_OutlineColour_1"] = function () { + return (_emscripten_bind_ASS_Style_set_OutlineColour_1 = Module["_emscripten_bind_ASS_Style_set_OutlineColour_1"] = Module["asm"]["_b"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_BackColour_0 = Module["_emscripten_bind_ASS_Style_get_BackColour_0"] = function () { + return (_emscripten_bind_ASS_Style_get_BackColour_0 = Module["_emscripten_bind_ASS_Style_get_BackColour_0"] = Module["asm"]["$b"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_BackColour_1 = Module["_emscripten_bind_ASS_Style_set_BackColour_1"] = function () { + return (_emscripten_bind_ASS_Style_set_BackColour_1 = Module["_emscripten_bind_ASS_Style_set_BackColour_1"] = Module["asm"]["ac"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Bold_0 = Module["_emscripten_bind_ASS_Style_get_Bold_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Bold_0 = Module["_emscripten_bind_ASS_Style_get_Bold_0"] = Module["asm"]["bc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Bold_1 = Module["_emscripten_bind_ASS_Style_set_Bold_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Bold_1 = Module["_emscripten_bind_ASS_Style_set_Bold_1"] = Module["asm"]["cc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Italic_0 = Module["_emscripten_bind_ASS_Style_get_Italic_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Italic_0 = Module["_emscripten_bind_ASS_Style_get_Italic_0"] = Module["asm"]["dc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Italic_1 = Module["_emscripten_bind_ASS_Style_set_Italic_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Italic_1 = Module["_emscripten_bind_ASS_Style_set_Italic_1"] = Module["asm"]["ec"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Underline_0 = Module["_emscripten_bind_ASS_Style_get_Underline_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Underline_0 = Module["_emscripten_bind_ASS_Style_get_Underline_0"] = Module["asm"]["fc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Underline_1 = Module["_emscripten_bind_ASS_Style_set_Underline_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Underline_1 = Module["_emscripten_bind_ASS_Style_set_Underline_1"] = Module["asm"]["gc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_StrikeOut_0 = Module["_emscripten_bind_ASS_Style_get_StrikeOut_0"] = function () { + return (_emscripten_bind_ASS_Style_get_StrikeOut_0 = Module["_emscripten_bind_ASS_Style_get_StrikeOut_0"] = Module["asm"]["hc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_StrikeOut_1 = Module["_emscripten_bind_ASS_Style_set_StrikeOut_1"] = function () { + return (_emscripten_bind_ASS_Style_set_StrikeOut_1 = Module["_emscripten_bind_ASS_Style_set_StrikeOut_1"] = Module["asm"]["ic"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_ScaleX_0 = Module["_emscripten_bind_ASS_Style_get_ScaleX_0"] = function () { + return (_emscripten_bind_ASS_Style_get_ScaleX_0 = Module["_emscripten_bind_ASS_Style_get_ScaleX_0"] = Module["asm"]["jc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_ScaleX_1 = Module["_emscripten_bind_ASS_Style_set_ScaleX_1"] = function () { + return (_emscripten_bind_ASS_Style_set_ScaleX_1 = Module["_emscripten_bind_ASS_Style_set_ScaleX_1"] = Module["asm"]["kc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_ScaleY_0 = Module["_emscripten_bind_ASS_Style_get_ScaleY_0"] = function () { + return (_emscripten_bind_ASS_Style_get_ScaleY_0 = Module["_emscripten_bind_ASS_Style_get_ScaleY_0"] = Module["asm"]["lc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_ScaleY_1 = Module["_emscripten_bind_ASS_Style_set_ScaleY_1"] = function () { + return (_emscripten_bind_ASS_Style_set_ScaleY_1 = Module["_emscripten_bind_ASS_Style_set_ScaleY_1"] = Module["asm"]["mc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Spacing_0 = Module["_emscripten_bind_ASS_Style_get_Spacing_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Spacing_0 = Module["_emscripten_bind_ASS_Style_get_Spacing_0"] = Module["asm"]["nc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Spacing_1 = Module["_emscripten_bind_ASS_Style_set_Spacing_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Spacing_1 = Module["_emscripten_bind_ASS_Style_set_Spacing_1"] = Module["asm"]["oc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Angle_0 = Module["_emscripten_bind_ASS_Style_get_Angle_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Angle_0 = Module["_emscripten_bind_ASS_Style_get_Angle_0"] = Module["asm"]["pc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Angle_1 = Module["_emscripten_bind_ASS_Style_set_Angle_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Angle_1 = Module["_emscripten_bind_ASS_Style_set_Angle_1"] = Module["asm"]["qc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_BorderStyle_0 = Module["_emscripten_bind_ASS_Style_get_BorderStyle_0"] = function () { + return (_emscripten_bind_ASS_Style_get_BorderStyle_0 = Module["_emscripten_bind_ASS_Style_get_BorderStyle_0"] = Module["asm"]["rc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_BorderStyle_1 = Module["_emscripten_bind_ASS_Style_set_BorderStyle_1"] = function () { + return (_emscripten_bind_ASS_Style_set_BorderStyle_1 = Module["_emscripten_bind_ASS_Style_set_BorderStyle_1"] = Module["asm"]["sc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Outline_0 = Module["_emscripten_bind_ASS_Style_get_Outline_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Outline_0 = Module["_emscripten_bind_ASS_Style_get_Outline_0"] = Module["asm"]["tc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Outline_1 = Module["_emscripten_bind_ASS_Style_set_Outline_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Outline_1 = Module["_emscripten_bind_ASS_Style_set_Outline_1"] = Module["asm"]["uc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Shadow_0 = Module["_emscripten_bind_ASS_Style_get_Shadow_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Shadow_0 = Module["_emscripten_bind_ASS_Style_get_Shadow_0"] = Module["asm"]["vc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Shadow_1 = Module["_emscripten_bind_ASS_Style_set_Shadow_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Shadow_1 = Module["_emscripten_bind_ASS_Style_set_Shadow_1"] = Module["asm"]["wc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Alignment_0 = Module["_emscripten_bind_ASS_Style_get_Alignment_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Alignment_0 = Module["_emscripten_bind_ASS_Style_get_Alignment_0"] = Module["asm"]["xc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Alignment_1 = Module["_emscripten_bind_ASS_Style_set_Alignment_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Alignment_1 = Module["_emscripten_bind_ASS_Style_set_Alignment_1"] = Module["asm"]["yc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_MarginL_0 = Module["_emscripten_bind_ASS_Style_get_MarginL_0"] = function () { + return (_emscripten_bind_ASS_Style_get_MarginL_0 = Module["_emscripten_bind_ASS_Style_get_MarginL_0"] = Module["asm"]["zc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_MarginL_1 = Module["_emscripten_bind_ASS_Style_set_MarginL_1"] = function () { + return (_emscripten_bind_ASS_Style_set_MarginL_1 = Module["_emscripten_bind_ASS_Style_set_MarginL_1"] = Module["asm"]["Ac"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_MarginR_0 = Module["_emscripten_bind_ASS_Style_get_MarginR_0"] = function () { + return (_emscripten_bind_ASS_Style_get_MarginR_0 = Module["_emscripten_bind_ASS_Style_get_MarginR_0"] = Module["asm"]["Bc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_MarginR_1 = Module["_emscripten_bind_ASS_Style_set_MarginR_1"] = function () { + return (_emscripten_bind_ASS_Style_set_MarginR_1 = Module["_emscripten_bind_ASS_Style_set_MarginR_1"] = Module["asm"]["Cc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_MarginV_0 = Module["_emscripten_bind_ASS_Style_get_MarginV_0"] = function () { + return (_emscripten_bind_ASS_Style_get_MarginV_0 = Module["_emscripten_bind_ASS_Style_get_MarginV_0"] = Module["asm"]["Dc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_MarginV_1 = Module["_emscripten_bind_ASS_Style_set_MarginV_1"] = function () { + return (_emscripten_bind_ASS_Style_set_MarginV_1 = Module["_emscripten_bind_ASS_Style_set_MarginV_1"] = Module["asm"]["Ec"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Encoding_0 = Module["_emscripten_bind_ASS_Style_get_Encoding_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Encoding_0 = Module["_emscripten_bind_ASS_Style_get_Encoding_0"] = Module["asm"]["Fc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Encoding_1 = Module["_emscripten_bind_ASS_Style_set_Encoding_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Encoding_1 = Module["_emscripten_bind_ASS_Style_set_Encoding_1"] = Module["asm"]["Gc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = Module["_emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0"] = function () { + return (_emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0 = Module["_emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0"] = Module["asm"]["Hc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = Module["_emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1"] = function () { + return (_emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1 = Module["_emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1"] = Module["asm"]["Ic"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Blur_0 = Module["_emscripten_bind_ASS_Style_get_Blur_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Blur_0 = Module["_emscripten_bind_ASS_Style_get_Blur_0"] = Module["asm"]["Jc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Blur_1 = Module["_emscripten_bind_ASS_Style_set_Blur_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Blur_1 = Module["_emscripten_bind_ASS_Style_set_Blur_1"] = Module["asm"]["Kc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_get_Justify_0 = Module["_emscripten_bind_ASS_Style_get_Justify_0"] = function () { + return (_emscripten_bind_ASS_Style_get_Justify_0 = Module["_emscripten_bind_ASS_Style_get_Justify_0"] = Module["asm"]["Lc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Style_set_Justify_1 = Module["_emscripten_bind_ASS_Style_set_Justify_1"] = function () { + return (_emscripten_bind_ASS_Style_set_Justify_1 = Module["_emscripten_bind_ASS_Style_set_Justify_1"] = Module["asm"]["Mc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_get_eventFinish_0 = Module["_emscripten_bind_EventStopTimesResult_get_eventFinish_0"] = function () { + return (_emscripten_bind_EventStopTimesResult_get_eventFinish_0 = Module["_emscripten_bind_EventStopTimesResult_get_eventFinish_0"] = Module["asm"]["Nc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_set_eventFinish_1 = Module["_emscripten_bind_EventStopTimesResult_set_eventFinish_1"] = function () { + return (_emscripten_bind_EventStopTimesResult_set_eventFinish_1 = Module["_emscripten_bind_EventStopTimesResult_set_eventFinish_1"] = Module["asm"]["Oc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = Module["_emscripten_bind_EventStopTimesResult_get_emptyFinish_0"] = function () { + return (_emscripten_bind_EventStopTimesResult_get_emptyFinish_0 = Module["_emscripten_bind_EventStopTimesResult_get_emptyFinish_0"] = Module["asm"]["Pc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = Module["_emscripten_bind_EventStopTimesResult_set_emptyFinish_1"] = function () { + return (_emscripten_bind_EventStopTimesResult_set_emptyFinish_1 = Module["_emscripten_bind_EventStopTimesResult_set_emptyFinish_1"] = Module["asm"]["Qc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_get_is_animated_0 = Module["_emscripten_bind_EventStopTimesResult_get_is_animated_0"] = function () { + return (_emscripten_bind_EventStopTimesResult_get_is_animated_0 = Module["_emscripten_bind_EventStopTimesResult_get_is_animated_0"] = Module["asm"]["Rc"]).apply(null, arguments) +}; +var _emscripten_bind_EventStopTimesResult_set_is_animated_1 = Module["_emscripten_bind_EventStopTimesResult_set_is_animated_1"] = function () { + return (_emscripten_bind_EventStopTimesResult_set_is_animated_1 = Module["_emscripten_bind_EventStopTimesResult_set_is_animated_1"] = Module["asm"]["Sc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_w_0 = Module["_emscripten_bind_ASS_Image_get_w_0"] = function () { + return (_emscripten_bind_ASS_Image_get_w_0 = Module["_emscripten_bind_ASS_Image_get_w_0"] = Module["asm"]["Tc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_w_1 = Module["_emscripten_bind_ASS_Image_set_w_1"] = function () { + return (_emscripten_bind_ASS_Image_set_w_1 = Module["_emscripten_bind_ASS_Image_set_w_1"] = Module["asm"]["Uc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_h_0 = Module["_emscripten_bind_ASS_Image_get_h_0"] = function () { + return (_emscripten_bind_ASS_Image_get_h_0 = Module["_emscripten_bind_ASS_Image_get_h_0"] = Module["asm"]["Vc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_h_1 = Module["_emscripten_bind_ASS_Image_set_h_1"] = function () { + return (_emscripten_bind_ASS_Image_set_h_1 = Module["_emscripten_bind_ASS_Image_set_h_1"] = Module["asm"]["Wc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_stride_0 = Module["_emscripten_bind_ASS_Image_get_stride_0"] = function () { + return (_emscripten_bind_ASS_Image_get_stride_0 = Module["_emscripten_bind_ASS_Image_get_stride_0"] = Module["asm"]["Xc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_stride_1 = Module["_emscripten_bind_ASS_Image_set_stride_1"] = function () { + return (_emscripten_bind_ASS_Image_set_stride_1 = Module["_emscripten_bind_ASS_Image_set_stride_1"] = Module["asm"]["Yc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_bitmap_0 = Module["_emscripten_bind_ASS_Image_get_bitmap_0"] = function () { + return (_emscripten_bind_ASS_Image_get_bitmap_0 = Module["_emscripten_bind_ASS_Image_get_bitmap_0"] = Module["asm"]["Zc"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_bitmap_1 = Module["_emscripten_bind_ASS_Image_set_bitmap_1"] = function () { + return (_emscripten_bind_ASS_Image_set_bitmap_1 = Module["_emscripten_bind_ASS_Image_set_bitmap_1"] = Module["asm"]["_c"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_color_0 = Module["_emscripten_bind_ASS_Image_get_color_0"] = function () { + return (_emscripten_bind_ASS_Image_get_color_0 = Module["_emscripten_bind_ASS_Image_get_color_0"] = Module["asm"]["$c"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_color_1 = Module["_emscripten_bind_ASS_Image_set_color_1"] = function () { + return (_emscripten_bind_ASS_Image_set_color_1 = Module["_emscripten_bind_ASS_Image_set_color_1"] = Module["asm"]["ad"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_dst_x_0 = Module["_emscripten_bind_ASS_Image_get_dst_x_0"] = function () { + return (_emscripten_bind_ASS_Image_get_dst_x_0 = Module["_emscripten_bind_ASS_Image_get_dst_x_0"] = Module["asm"]["bd"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_dst_x_1 = Module["_emscripten_bind_ASS_Image_set_dst_x_1"] = function () { + return (_emscripten_bind_ASS_Image_set_dst_x_1 = Module["_emscripten_bind_ASS_Image_set_dst_x_1"] = Module["asm"]["cd"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_dst_y_0 = Module["_emscripten_bind_ASS_Image_get_dst_y_0"] = function () { + return (_emscripten_bind_ASS_Image_get_dst_y_0 = Module["_emscripten_bind_ASS_Image_get_dst_y_0"] = Module["asm"]["dd"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_dst_y_1 = Module["_emscripten_bind_ASS_Image_set_dst_y_1"] = function () { + return (_emscripten_bind_ASS_Image_set_dst_y_1 = Module["_emscripten_bind_ASS_Image_set_dst_y_1"] = Module["asm"]["ed"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_get_next_0 = Module["_emscripten_bind_ASS_Image_get_next_0"] = function () { + return (_emscripten_bind_ASS_Image_get_next_0 = Module["_emscripten_bind_ASS_Image_get_next_0"] = Module["asm"]["fd"]).apply(null, arguments) +}; +var _emscripten_bind_ASS_Image_set_next_1 = Module["_emscripten_bind_ASS_Image_set_next_1"] = function () { + return (_emscripten_bind_ASS_Image_set_next_1 = Module["_emscripten_bind_ASS_Image_set_next_1"] = Module["asm"]["gd"]).apply(null, arguments) +}; +var _emscripten_bind_VoidPtr___destroy___0 = Module["_emscripten_bind_VoidPtr___destroy___0"] = function () { + return (_emscripten_bind_VoidPtr___destroy___0 = Module["_emscripten_bind_VoidPtr___destroy___0"] = Module["asm"]["hd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_dest_x_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_x_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_dest_x_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_x_0"] = Module["asm"]["id"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_dest_x_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_x_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_dest_x_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_x_1"] = Module["asm"]["jd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_dest_y_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_y_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_dest_y_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_y_0"] = Module["asm"]["kd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_dest_y_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_y_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_dest_y_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_y_1"] = Module["asm"]["ld"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_dest_width_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_width_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_dest_width_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_width_0"] = Module["asm"]["md"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_dest_width_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_width_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_dest_width_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_width_1"] = Module["asm"]["nd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_dest_height_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_height_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_dest_height_0 = Module["_emscripten_bind_RenderBlendPart_get_dest_height_0"] = Module["asm"]["od"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_dest_height_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_height_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_dest_height_1 = Module["_emscripten_bind_RenderBlendPart_set_dest_height_1"] = Module["asm"]["pd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_image_0 = Module["_emscripten_bind_RenderBlendPart_get_image_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_image_0 = Module["_emscripten_bind_RenderBlendPart_get_image_0"] = Module["asm"]["qd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_image_1 = Module["_emscripten_bind_RenderBlendPart_set_image_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_image_1 = Module["_emscripten_bind_RenderBlendPart_set_image_1"] = Module["asm"]["rd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_get_next_0 = Module["_emscripten_bind_RenderBlendPart_get_next_0"] = function () { + return (_emscripten_bind_RenderBlendPart_get_next_0 = Module["_emscripten_bind_RenderBlendPart_get_next_0"] = Module["asm"]["sd"]).apply(null, arguments) +}; +var _emscripten_bind_RenderBlendPart_set_next_1 = Module["_emscripten_bind_RenderBlendPart_set_next_1"] = function () { + return (_emscripten_bind_RenderBlendPart_set_next_1 = Module["_emscripten_bind_RenderBlendPart_set_next_1"] = Module["asm"]["td"]).apply(null, arguments) +}; +var _emscripten_bind_libass_libass_0 = Module["_emscripten_bind_libass_libass_0"] = function () { + return (_emscripten_bind_libass_libass_0 = Module["_emscripten_bind_libass_libass_0"] = Module["asm"]["ud"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_library_version_0 = Module["_emscripten_bind_libass_oct_library_version_0"] = function () { + return (_emscripten_bind_libass_oct_library_version_0 = Module["_emscripten_bind_libass_oct_library_version_0"] = Module["asm"]["vd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_library_init_0 = Module["_emscripten_bind_libass_oct_library_init_0"] = function () { + return (_emscripten_bind_libass_oct_library_init_0 = Module["_emscripten_bind_libass_oct_library_init_0"] = Module["asm"]["wd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_library_done_1 = Module["_emscripten_bind_libass_oct_library_done_1"] = function () { + return (_emscripten_bind_libass_oct_library_done_1 = Module["_emscripten_bind_libass_oct_library_done_1"] = Module["asm"]["xd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_fonts_dir_2 = Module["_emscripten_bind_libass_oct_set_fonts_dir_2"] = function () { + return (_emscripten_bind_libass_oct_set_fonts_dir_2 = Module["_emscripten_bind_libass_oct_set_fonts_dir_2"] = Module["asm"]["yd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_extract_fonts_2 = Module["_emscripten_bind_libass_oct_set_extract_fonts_2"] = function () { + return (_emscripten_bind_libass_oct_set_extract_fonts_2 = Module["_emscripten_bind_libass_oct_set_extract_fonts_2"] = Module["asm"]["zd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_style_overrides_2 = Module["_emscripten_bind_libass_oct_set_style_overrides_2"] = function () { + return (_emscripten_bind_libass_oct_set_style_overrides_2 = Module["_emscripten_bind_libass_oct_set_style_overrides_2"] = Module["asm"]["Ad"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_process_force_style_1 = Module["_emscripten_bind_libass_oct_process_force_style_1"] = function () { + return (_emscripten_bind_libass_oct_process_force_style_1 = Module["_emscripten_bind_libass_oct_process_force_style_1"] = Module["asm"]["Bd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_renderer_init_1 = Module["_emscripten_bind_libass_oct_renderer_init_1"] = function () { + return (_emscripten_bind_libass_oct_renderer_init_1 = Module["_emscripten_bind_libass_oct_renderer_init_1"] = Module["asm"]["Cd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_renderer_done_1 = Module["_emscripten_bind_libass_oct_renderer_done_1"] = function () { + return (_emscripten_bind_libass_oct_renderer_done_1 = Module["_emscripten_bind_libass_oct_renderer_done_1"] = Module["asm"]["Dd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_frame_size_3 = Module["_emscripten_bind_libass_oct_set_frame_size_3"] = function () { + return (_emscripten_bind_libass_oct_set_frame_size_3 = Module["_emscripten_bind_libass_oct_set_frame_size_3"] = Module["asm"]["Ed"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_storage_size_3 = Module["_emscripten_bind_libass_oct_set_storage_size_3"] = function () { + return (_emscripten_bind_libass_oct_set_storage_size_3 = Module["_emscripten_bind_libass_oct_set_storage_size_3"] = Module["asm"]["Fd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_shaper_2 = Module["_emscripten_bind_libass_oct_set_shaper_2"] = function () { + return (_emscripten_bind_libass_oct_set_shaper_2 = Module["_emscripten_bind_libass_oct_set_shaper_2"] = Module["asm"]["Gd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_margins_5 = Module["_emscripten_bind_libass_oct_set_margins_5"] = function () { + return (_emscripten_bind_libass_oct_set_margins_5 = Module["_emscripten_bind_libass_oct_set_margins_5"] = Module["asm"]["Hd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_use_margins_2 = Module["_emscripten_bind_libass_oct_set_use_margins_2"] = function () { + return (_emscripten_bind_libass_oct_set_use_margins_2 = Module["_emscripten_bind_libass_oct_set_use_margins_2"] = Module["asm"]["Id"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_pixel_aspect_2 = Module["_emscripten_bind_libass_oct_set_pixel_aspect_2"] = function () { + return (_emscripten_bind_libass_oct_set_pixel_aspect_2 = Module["_emscripten_bind_libass_oct_set_pixel_aspect_2"] = Module["asm"]["Jd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_aspect_ratio_3 = Module["_emscripten_bind_libass_oct_set_aspect_ratio_3"] = function () { + return (_emscripten_bind_libass_oct_set_aspect_ratio_3 = Module["_emscripten_bind_libass_oct_set_aspect_ratio_3"] = Module["asm"]["Kd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_font_scale_2 = Module["_emscripten_bind_libass_oct_set_font_scale_2"] = function () { + return (_emscripten_bind_libass_oct_set_font_scale_2 = Module["_emscripten_bind_libass_oct_set_font_scale_2"] = Module["asm"]["Ld"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_hinting_2 = Module["_emscripten_bind_libass_oct_set_hinting_2"] = function () { + return (_emscripten_bind_libass_oct_set_hinting_2 = Module["_emscripten_bind_libass_oct_set_hinting_2"] = Module["asm"]["Md"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_line_spacing_2 = Module["_emscripten_bind_libass_oct_set_line_spacing_2"] = function () { + return (_emscripten_bind_libass_oct_set_line_spacing_2 = Module["_emscripten_bind_libass_oct_set_line_spacing_2"] = Module["asm"]["Nd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_line_position_2 = Module["_emscripten_bind_libass_oct_set_line_position_2"] = function () { + return (_emscripten_bind_libass_oct_set_line_position_2 = Module["_emscripten_bind_libass_oct_set_line_position_2"] = Module["asm"]["Od"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_fonts_6 = Module["_emscripten_bind_libass_oct_set_fonts_6"] = function () { + return (_emscripten_bind_libass_oct_set_fonts_6 = Module["_emscripten_bind_libass_oct_set_fonts_6"] = Module["asm"]["Pd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = Module["_emscripten_bind_libass_oct_set_selective_style_override_enabled_2"] = function () { + return (_emscripten_bind_libass_oct_set_selective_style_override_enabled_2 = Module["_emscripten_bind_libass_oct_set_selective_style_override_enabled_2"] = Module["asm"]["Qd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_selective_style_override_2 = Module["_emscripten_bind_libass_oct_set_selective_style_override_2"] = function () { + return (_emscripten_bind_libass_oct_set_selective_style_override_2 = Module["_emscripten_bind_libass_oct_set_selective_style_override_2"] = Module["asm"]["Rd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_set_cache_limits_3 = Module["_emscripten_bind_libass_oct_set_cache_limits_3"] = function () { + return (_emscripten_bind_libass_oct_set_cache_limits_3 = Module["_emscripten_bind_libass_oct_set_cache_limits_3"] = Module["asm"]["Sd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_render_frame_4 = Module["_emscripten_bind_libass_oct_render_frame_4"] = function () { + return (_emscripten_bind_libass_oct_render_frame_4 = Module["_emscripten_bind_libass_oct_render_frame_4"] = Module["asm"]["Td"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_new_track_1 = Module["_emscripten_bind_libass_oct_new_track_1"] = function () { + return (_emscripten_bind_libass_oct_new_track_1 = Module["_emscripten_bind_libass_oct_new_track_1"] = Module["asm"]["Ud"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_free_track_1 = Module["_emscripten_bind_libass_oct_free_track_1"] = function () { + return (_emscripten_bind_libass_oct_free_track_1 = Module["_emscripten_bind_libass_oct_free_track_1"] = Module["asm"]["Vd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_alloc_style_1 = Module["_emscripten_bind_libass_oct_alloc_style_1"] = function () { + return (_emscripten_bind_libass_oct_alloc_style_1 = Module["_emscripten_bind_libass_oct_alloc_style_1"] = Module["asm"]["Wd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_alloc_event_1 = Module["_emscripten_bind_libass_oct_alloc_event_1"] = function () { + return (_emscripten_bind_libass_oct_alloc_event_1 = Module["_emscripten_bind_libass_oct_alloc_event_1"] = Module["asm"]["Xd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_free_style_2 = Module["_emscripten_bind_libass_oct_free_style_2"] = function () { + return (_emscripten_bind_libass_oct_free_style_2 = Module["_emscripten_bind_libass_oct_free_style_2"] = Module["asm"]["Yd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_free_event_2 = Module["_emscripten_bind_libass_oct_free_event_2"] = function () { + return (_emscripten_bind_libass_oct_free_event_2 = Module["_emscripten_bind_libass_oct_free_event_2"] = Module["asm"]["Zd"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_flush_events_1 = Module["_emscripten_bind_libass_oct_flush_events_1"] = function () { + return (_emscripten_bind_libass_oct_flush_events_1 = Module["_emscripten_bind_libass_oct_flush_events_1"] = Module["asm"]["_d"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_read_file_3 = Module["_emscripten_bind_libass_oct_read_file_3"] = function () { + return (_emscripten_bind_libass_oct_read_file_3 = Module["_emscripten_bind_libass_oct_read_file_3"] = Module["asm"]["$d"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_add_font_4 = Module["_emscripten_bind_libass_oct_add_font_4"] = function () { + return (_emscripten_bind_libass_oct_add_font_4 = Module["_emscripten_bind_libass_oct_add_font_4"] = Module["asm"]["ae"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_clear_fonts_1 = Module["_emscripten_bind_libass_oct_clear_fonts_1"] = function () { + return (_emscripten_bind_libass_oct_clear_fonts_1 = Module["_emscripten_bind_libass_oct_clear_fonts_1"] = Module["asm"]["be"]).apply(null, arguments) +}; +var _emscripten_bind_libass_oct_step_sub_3 = Module["_emscripten_bind_libass_oct_step_sub_3"] = function () { + return (_emscripten_bind_libass_oct_step_sub_3 = Module["_emscripten_bind_libass_oct_step_sub_3"] = Module["asm"]["ce"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NONE"] = function () { + return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NONE = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NONE"] = Module["asm"]["de"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT"] = function () { + return (_emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT"] = Module["asm"]["ee"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL"] = function () { + return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL"] = Module["asm"]["fe"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE"] = function () { + return (_emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE = Module["_emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE"] = Module["asm"]["ge"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = Module["_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE"] = function () { + return (_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE = Module["_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE"] = Module["asm"]["he"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = Module["_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX"] = function () { + return (_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX = Module["_emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX"] = Module["asm"]["ie"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT"] = Module["asm"]["je"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE"] = Module["asm"]["ke"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE"] = Module["asm"]["le"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE"] = Module["asm"]["me"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS"] = Module["asm"]["ne"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME"] = Module["asm"]["oe"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS"] = Module["asm"]["pe"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES"] = Module["asm"]["qe"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER"] = Module["asm"]["re"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT"] = Module["asm"]["se"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS"] = Module["asm"]["te"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE"] = Module["asm"]["ue"]).apply(null, arguments) +}; +var _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY"] = function () { + return (_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY = Module["_emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY"] = Module["asm"]["ve"]).apply(null, arguments) +}; +var _realloc = Module["_realloc"] = function () { + return (_realloc = Module["_realloc"] = Module["asm"]["we"]).apply(null, arguments) +}; +var ___errno_location = Module["___errno_location"] = function () { + return (___errno_location = Module["___errno_location"] = Module["asm"]["xe"]).apply(null, arguments) +}; +var _setThrew = Module["_setThrew"] = function () { + return (_setThrew = Module["_setThrew"] = Module["asm"]["ye"]).apply(null, arguments) +}; +var dynCall_v = Module["dynCall_v"] = function () { + return (dynCall_v = Module["dynCall_v"] = Module["asm"]["ze"]).apply(null, arguments) +}; +var dynCall_vii = Module["dynCall_vii"] = function () { + return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["Ae"]).apply(null, arguments) +}; +var dynCall_iii = Module["dynCall_iii"] = function () { + return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["Be"]).apply(null, arguments) +}; +var dynCall_iiii = Module["dynCall_iiii"] = function () { + return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["Ce"]).apply(null, arguments) +}; +var dynCall_iiiii = Module["dynCall_iiiii"] = function () { + return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["De"]).apply(null, arguments) +}; +var stackSave = Module["stackSave"] = function () { + return (stackSave = Module["stackSave"] = Module["asm"]["Ee"]).apply(null, arguments) +}; +var stackAlloc = Module["stackAlloc"] = function () { + return (stackAlloc = Module["stackAlloc"] = Module["asm"]["Fe"]).apply(null, arguments) +}; +var stackRestore = Module["stackRestore"] = function () { + return (stackRestore = Module["stackRestore"] = Module["asm"]["Ge"]).apply(null, arguments) +}; +var dynCall_vi = Module["dynCall_vi"] = function () { + return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["He"]).apply(null, arguments) +}; -function invoke_iii (index, a1, a2) { - const sp = stackSave() +function invoke_iii(index, a1, a2) { + var sp = stackSave(); try { return dynCall_iii(index, a1, a2) } catch (e) { - stackRestore(sp) - if (e !== e + 0 && e !== 'longjmp') throw e + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; _setThrew(1, 0) } } -function invoke_iiiii (index, a1, a2, a3, a4) { - const sp = stackSave() +function invoke_iiiii(index, a1, a2, a3, a4) { + var sp = stackSave(); try { return dynCall_iiiii(index, a1, a2, a3, a4) } catch (e) { - stackRestore(sp) - if (e !== e + 0 && e !== 'longjmp') throw e + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; _setThrew(1, 0) } } -function invoke_iiii (index, a1, a2, a3) { - const sp = stackSave() +function invoke_iiii(index, a1, a2, a3) { + var sp = stackSave(); try { return dynCall_iiii(index, a1, a2, a3) } catch (e) { - stackRestore(sp) - if (e !== e + 0 && e !== 'longjmp') throw e + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; _setThrew(1, 0) } } -function invoke_vii (index, a1, a2) { - const sp = stackSave() +function invoke_vii(index, a1, a2) { + var sp = stackSave(); try { dynCall_vii(index, a1, a2) } catch (e) { - stackRestore(sp) - if (e !== e + 0 && e !== 'longjmp') throw e + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; _setThrew(1, 0) } } -Module.asm = asm -Module.ccall = ccall -Module.cwrap = cwrap -Module.getValue = getValue -Module.getMemory = getMemory -Module.addRunDependency = addRunDependency -Module.removeRunDependency = removeRunDependency -Module.FS_createFolder = FS.createFolder -Module.FS_createPath = FS.createPath -Module.FS_createDataFile = FS.createDataFile -Module.FS_createPreloadedFile = FS.createPreloadedFile -Module.FS_createLazyFile = FS.createLazyFile -Module.FS_createLink = FS.createLink -Module.FS_createDevice = FS.createDevice -Module.FS_unlink = FS.unlink -let calledRun +Module["asm"] = asm; +Module["ccall"] = ccall; +Module["cwrap"] = cwrap; +Module["getValue"] = getValue; +Module["getMemory"] = getMemory; +Module["addRunDependency"] = addRunDependency; +Module["removeRunDependency"] = removeRunDependency; +Module["FS_createFolder"] = FS.createFolder; +Module["FS_createPath"] = FS.createPath; +Module["FS_createDataFile"] = FS.createDataFile; +Module["FS_createPreloadedFile"] = FS.createPreloadedFile; +Module["FS_createLazyFile"] = FS.createLazyFile; +Module["FS_createLink"] = FS.createLink; +Module["FS_createDevice"] = FS.createDevice; +Module["FS_unlink"] = FS.unlink; +var calledRun; -function ExitStatus (status) { - this.name = 'ExitStatus' - this.message = 'Program terminated with exit(' + status + ')' +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; this.status = status } -let calledMain = false -dependenciesFulfilled = function runCaller () { - if (!calledRun) run() +var calledMain = false; +dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); if (!calledRun) dependenciesFulfilled = runCaller -} +}; -function callMain (args) { - const entryFunction = Module._main - args = args || [] - const argc = args.length + 1 - const argv = stackAlloc((argc + 1) * 4) - HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram) - for (let i = 1; i < argc; i++) { +function callMain(args) { + var entryFunction = Module["_main"]; + args = args || []; + var argc = args.length + 1; + var argv = stackAlloc((argc + 1) * 4); + HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram); + for (var i = 1; i < argc; i++) { HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]) } - HEAP32[(argv >> 2) + argc] = 0 + HEAP32[(argv >> 2) + argc] = 0; try { - const ret = entryFunction(argc, argv) + var ret = entryFunction(argc, argv); exit(ret, true) } catch (e) { if (e instanceof ExitStatus) { return - } else if (e == 'unwind') { - noExitRuntime = true + } else if (e == "unwind") { + noExitRuntime = true; return } else { - let toLog = e - if (e && typeof e === 'object' && e.stack) { + var toLog = e; + if (e && typeof e === "object" && e.stack) { toLog = [e, e.stack] } - err('exception thrown: ' + toLog) + err("exception thrown: " + toLog); quit_(1, e) } } finally { @@ -7063,111 +7086,111 @@ function callMain (args) { } } -function run (args) { - args = args || arguments_ +function run(args) { + args = args || arguments_; if (runDependencies > 0) { return } - preRun() - if (runDependencies > 0) return + preRun(); + if (runDependencies > 0) return; - function doRun () { - if (calledRun) return - calledRun = true - Module.calledRun = true - if (ABORT) return - initRuntime() - preMain() - if (Module.onRuntimeInitialized) Module.onRuntimeInitialized() - if (shouldRunNow) callMain(args) + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); postRun() } - if (Module.setStatus) { - Module.setStatus('Running...') + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); setTimeout(function () { setTimeout(function () { - Module.setStatus('') - }, 1) + Module["setStatus"]("") + }, 1); doRun() }, 1) } else { doRun() } } -Module.run = run +Module["run"] = run; -function exit (status, implicit) { +function exit(status, implicit) { if (implicit && noExitRuntime && status === 0) { return } - if (noExitRuntime) { } else { - ABORT = true - EXITSTATUS = status - exitRuntime() - if (Module.onExit) Module.onExit(status) + if (noExitRuntime) {} else { + ABORT = true; + EXITSTATUS = status; + exitRuntime(); + if (Module["onExit"]) Module["onExit"](status) } quit_(status, new ExitStatus(status)) } -if (Module.preInit) { - if (typeof Module.preInit === 'function') Module.preInit = [Module.preInit] - while (Module.preInit.length > 0) { - Module.preInit.pop()() +if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()() } } -var shouldRunNow = true -if (Module.noInitialRun) shouldRunNow = false -noExitRuntime = true -run() +var shouldRunNow = true; +if (Module["noInitialRun"]) shouldRunNow = false; +noExitRuntime = true; +run(); -function WrapperObject () { } -WrapperObject.prototype = Object.create(WrapperObject.prototype) -WrapperObject.prototype.constructor = WrapperObject -WrapperObject.prototype.__class__ = WrapperObject -WrapperObject.__cache__ = {} -Module.WrapperObject = WrapperObject +function WrapperObject() {} +WrapperObject.prototype = Object.create(WrapperObject.prototype); +WrapperObject.prototype.constructor = WrapperObject; +WrapperObject.prototype.__class__ = WrapperObject; +WrapperObject.__cache__ = {}; +Module["WrapperObject"] = WrapperObject; -function getCache (__class__) { +function getCache(__class__) { return (__class__ || WrapperObject).__cache__ } -Module.getCache = getCache +Module["getCache"] = getCache; -function wrapPointer (ptr, __class__) { - const cache = getCache(__class__) - let ret = cache[ptr] - if (ret) return ret - ret = Object.create((__class__ || WrapperObject).prototype) - ret.ptr = ptr +function wrapPointer(ptr, __class__) { + var cache = getCache(__class__); + var ret = cache[ptr]; + if (ret) return ret; + ret = Object.create((__class__ || WrapperObject).prototype); + ret.ptr = ptr; return cache[ptr] = ret } -Module.wrapPointer = wrapPointer +Module["wrapPointer"] = wrapPointer; -function castObject (obj, __class__) { +function castObject(obj, __class__) { return wrapPointer(obj.ptr, __class__) } -Module.castObject = castObject -Module.NULL = wrapPointer(0) +Module["castObject"] = castObject; +Module["NULL"] = wrapPointer(0); -function destroy (obj) { - if (!obj.__destroy__) throw 'Error: Cannot destroy object. (Did you create it yourself?)' - obj.__destroy__() +function destroy(obj) { + if (!obj["__destroy__"]) throw "Error: Cannot destroy object. (Did you create it yourself?)"; + obj["__destroy__"](); delete getCache(obj.__class__)[obj.ptr] } -Module.destroy = destroy +Module["destroy"] = destroy; -function compare (obj1, obj2) { +function compare(obj1, obj2) { return obj1.ptr === obj2.ptr } -Module.compare = compare +Module["compare"] = compare; -function getPointer (obj) { +function getPointer(obj) { return obj.ptr } -Module.getPointer = getPointer +Module["getPointer"] = getPointer; -function getClass (obj) { +function getClass(obj) { return obj.__class__ } -Module.getClass = getClass +Module["getClass"] = getClass; var ensureCache = { buffer: 0, size: 0, @@ -7176,1722 +7199,1766 @@ var ensureCache = { needed: 0, prepare: function () { if (ensureCache.needed) { - for (let i = 0; i < ensureCache.temps.length; i++) { - Module._free(ensureCache.temps[i]) + for (var i = 0; i < ensureCache.temps.length; i++) { + Module["_free"](ensureCache.temps[i]) } - ensureCache.temps.length = 0 - Module._free(ensureCache.buffer) - ensureCache.buffer = 0 - ensureCache.size += ensureCache.needed + ensureCache.temps.length = 0; + Module["_free"](ensureCache.buffer); + ensureCache.buffer = 0; + ensureCache.size += ensureCache.needed; ensureCache.needed = 0 } if (!ensureCache.buffer) { - ensureCache.size += 128 - ensureCache.buffer = Module._malloc(ensureCache.size) + ensureCache.size += 128; + ensureCache.buffer = Module["_malloc"](ensureCache.size); assert(ensureCache.buffer) } ensureCache.pos = 0 }, alloc: function (array, view) { - assert(ensureCache.buffer) - const bytes = view.BYTES_PER_ELEMENT - let len = array.length * bytes - len = len + 7 & -8 - let ret + assert(ensureCache.buffer); + var bytes = view.BYTES_PER_ELEMENT; + var len = array.length * bytes; + len = len + 7 & -8; + var ret; if (ensureCache.pos + len >= ensureCache.size) { - assert(len > 0) - ensureCache.needed += len - ret = Module._malloc(len) + assert(len > 0); + ensureCache.needed += len; + ret = Module["_malloc"](len); ensureCache.temps.push(ret) } else { - ret = ensureCache.buffer + ensureCache.pos + ret = ensureCache.buffer + ensureCache.pos; ensureCache.pos += len } return ret }, copy: function (array, view, offset) { - let offsetShifted = offset - const bytes = view.BYTES_PER_ELEMENT + var offsetShifted = offset; + var bytes = view.BYTES_PER_ELEMENT; switch (bytes) { case 2: - offsetShifted >>= 1 - break + offsetShifted >>= 1; + break; case 4: - offsetShifted >>= 2 - break + offsetShifted >>= 2; + break; case 8: - offsetShifted >>= 3 + offsetShifted >>= 3; break } - for (let i = 0; i < array.length; i++) { + for (var i = 0; i < array.length; i++) { view[offsetShifted + i] = array[i] } } -} +}; -function ensureString (value) { - if (typeof value === 'string') { - const intArray = intArrayFromString(value) - const offset = ensureCache.alloc(intArray, HEAP8) - ensureCache.copy(intArray, HEAP8, offset) +function ensureString(value) { + if (typeof value === "string") { + var intArray = intArrayFromString(value); + var offset = ensureCache.alloc(intArray, HEAP8); + ensureCache.copy(intArray, HEAP8, offset); return offset } return value } -function ASS_ParserPriv () { - throw 'cannot construct a ASS_ParserPriv, no constructor in IDL' +function ASS_ParserPriv() { + throw "cannot construct a ASS_ParserPriv, no constructor in IDL" } -ASS_ParserPriv.prototype = Object.create(WrapperObject.prototype) -ASS_ParserPriv.prototype.constructor = ASS_ParserPriv -ASS_ParserPriv.prototype.__class__ = ASS_ParserPriv -ASS_ParserPriv.__cache__ = {} -Module.ASS_ParserPriv = ASS_ParserPriv +ASS_ParserPriv.prototype = Object.create(WrapperObject.prototype); +ASS_ParserPriv.prototype.constructor = ASS_ParserPriv; +ASS_ParserPriv.prototype.__class__ = ASS_ParserPriv; +ASS_ParserPriv.__cache__ = {}; +Module["ASS_ParserPriv"] = ASS_ParserPriv; -function ASS_Event () { - throw 'cannot construct a ASS_Event, no constructor in IDL' +function ASS_Event() { + throw "cannot construct a ASS_Event, no constructor in IDL" } -ASS_Event.prototype = Object.create(WrapperObject.prototype) -ASS_Event.prototype.constructor = ASS_Event -ASS_Event.prototype.__class__ = ASS_Event -ASS_Event.__cache__ = {} -Module.ASS_Event = ASS_Event -ASS_Event.prototype.get_Start = ASS_Event.prototype.get_Start = function () { - const self = this.ptr +ASS_Event.prototype = Object.create(WrapperObject.prototype); +ASS_Event.prototype.constructor = ASS_Event; +ASS_Event.prototype.__class__ = ASS_Event; +ASS_Event.__cache__ = {}; +Module["ASS_Event"] = ASS_Event; +ASS_Event.prototype["get_Start"] = ASS_Event.prototype.get_Start = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_Start_0(self) -} -ASS_Event.prototype.set_Start = ASS_Event.prototype.set_Start = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_Start"] = ASS_Event.prototype.set_Start = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_Start_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Start', { +}; +Object.defineProperty(ASS_Event.prototype, "Start", { get: ASS_Event.prototype.get_Start, set: ASS_Event.prototype.set_Start -}) -ASS_Event.prototype.get_Duration = ASS_Event.prototype.get_Duration = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Duration"] = ASS_Event.prototype.get_Duration = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_Duration_0(self) -} -ASS_Event.prototype.set_Duration = ASS_Event.prototype.set_Duration = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_Duration"] = ASS_Event.prototype.set_Duration = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_Duration_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Duration', { +}; +Object.defineProperty(ASS_Event.prototype, "Duration", { get: ASS_Event.prototype.get_Duration, set: ASS_Event.prototype.set_Duration -}) -ASS_Event.prototype.get_ReadOrder = ASS_Event.prototype.get_ReadOrder = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_ReadOrder"] = ASS_Event.prototype.get_ReadOrder = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_ReadOrder_0(self) -} -ASS_Event.prototype.set_ReadOrder = ASS_Event.prototype.set_ReadOrder = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_ReadOrder"] = ASS_Event.prototype.set_ReadOrder = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_ReadOrder_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'ReadOrder', { +}; +Object.defineProperty(ASS_Event.prototype, "ReadOrder", { get: ASS_Event.prototype.get_ReadOrder, set: ASS_Event.prototype.set_ReadOrder -}) -ASS_Event.prototype.get_Layer = ASS_Event.prototype.get_Layer = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Layer"] = ASS_Event.prototype.get_Layer = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_Layer_0(self) -} -ASS_Event.prototype.set_Layer = ASS_Event.prototype.set_Layer = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_Layer"] = ASS_Event.prototype.set_Layer = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_Layer_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Layer', { +}; +Object.defineProperty(ASS_Event.prototype, "Layer", { get: ASS_Event.prototype.get_Layer, set: ASS_Event.prototype.set_Layer -}) -ASS_Event.prototype.get_Style = ASS_Event.prototype.get_Style = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Style"] = ASS_Event.prototype.get_Style = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_Style_0(self) -} -ASS_Event.prototype.set_Style = ASS_Event.prototype.set_Style = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_Style"] = ASS_Event.prototype.set_Style = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_Style_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Style', { +}; +Object.defineProperty(ASS_Event.prototype, "Style", { get: ASS_Event.prototype.get_Style, set: ASS_Event.prototype.set_Style -}) -ASS_Event.prototype.get_Name = ASS_Event.prototype.get_Name = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Name"] = ASS_Event.prototype.get_Name = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Event_get_Name_0(self)) -} -ASS_Event.prototype.set_Name = ASS_Event.prototype.set_Name = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Event.prototype["set_Name"] = ASS_Event.prototype.set_Name = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Event_set_Name_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Name', { +}; +Object.defineProperty(ASS_Event.prototype, "Name", { get: ASS_Event.prototype.get_Name, set: ASS_Event.prototype.set_Name -}) -ASS_Event.prototype.get_MarginL = ASS_Event.prototype.get_MarginL = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_MarginL"] = ASS_Event.prototype.get_MarginL = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_MarginL_0(self) -} -ASS_Event.prototype.set_MarginL = ASS_Event.prototype.set_MarginL = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_MarginL"] = ASS_Event.prototype.set_MarginL = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_MarginL_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'MarginL', { +}; +Object.defineProperty(ASS_Event.prototype, "MarginL", { get: ASS_Event.prototype.get_MarginL, set: ASS_Event.prototype.set_MarginL -}) -ASS_Event.prototype.get_MarginR = ASS_Event.prototype.get_MarginR = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_MarginR"] = ASS_Event.prototype.get_MarginR = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_MarginR_0(self) -} -ASS_Event.prototype.set_MarginR = ASS_Event.prototype.set_MarginR = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_MarginR"] = ASS_Event.prototype.set_MarginR = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_MarginR_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'MarginR', { +}; +Object.defineProperty(ASS_Event.prototype, "MarginR", { get: ASS_Event.prototype.get_MarginR, set: ASS_Event.prototype.set_MarginR -}) -ASS_Event.prototype.get_MarginV = ASS_Event.prototype.get_MarginV = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_MarginV"] = ASS_Event.prototype.get_MarginV = function () { + var self = this.ptr; return _emscripten_bind_ASS_Event_get_MarginV_0(self) -} -ASS_Event.prototype.set_MarginV = ASS_Event.prototype.set_MarginV = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Event.prototype["set_MarginV"] = ASS_Event.prototype.set_MarginV = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Event_set_MarginV_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'MarginV', { +}; +Object.defineProperty(ASS_Event.prototype, "MarginV", { get: ASS_Event.prototype.get_MarginV, set: ASS_Event.prototype.set_MarginV -}) -ASS_Event.prototype.get_Effect = ASS_Event.prototype.get_Effect = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Effect"] = ASS_Event.prototype.get_Effect = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Event_get_Effect_0(self)) -} -ASS_Event.prototype.set_Effect = ASS_Event.prototype.set_Effect = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Event.prototype["set_Effect"] = ASS_Event.prototype.set_Effect = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Event_set_Effect_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Effect', { +}; +Object.defineProperty(ASS_Event.prototype, "Effect", { get: ASS_Event.prototype.get_Effect, set: ASS_Event.prototype.set_Effect -}) -ASS_Event.prototype.get_Text = ASS_Event.prototype.get_Text = function () { - const self = this.ptr +}); +ASS_Event.prototype["get_Text"] = ASS_Event.prototype.get_Text = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Event_get_Text_0(self)) -} -ASS_Event.prototype.set_Text = ASS_Event.prototype.set_Text = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Event.prototype["set_Text"] = ASS_Event.prototype.set_Text = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Event_set_Text_1(self, arg0) -} -Object.defineProperty(ASS_Event.prototype, 'Text', { +}; +Object.defineProperty(ASS_Event.prototype, "Text", { get: ASS_Event.prototype.get_Text, set: ASS_Event.prototype.set_Text -}) +}); -function ASS_Renderer () { - throw 'cannot construct a ASS_Renderer, no constructor in IDL' +function ASS_Renderer() { + throw "cannot construct a ASS_Renderer, no constructor in IDL" } -ASS_Renderer.prototype = Object.create(WrapperObject.prototype) -ASS_Renderer.prototype.constructor = ASS_Renderer -ASS_Renderer.prototype.__class__ = ASS_Renderer -ASS_Renderer.__cache__ = {} -Module.ASS_Renderer = ASS_Renderer +ASS_Renderer.prototype = Object.create(WrapperObject.prototype); +ASS_Renderer.prototype.constructor = ASS_Renderer; +ASS_Renderer.prototype.__class__ = ASS_Renderer; +ASS_Renderer.__cache__ = {}; +Module["ASS_Renderer"] = ASS_Renderer; -function RenderBlendResult () { - throw 'cannot construct a RenderBlendResult, no constructor in IDL' +function RenderBlendResult() { + throw "cannot construct a RenderBlendResult, no constructor in IDL" } -RenderBlendResult.prototype = Object.create(WrapperObject.prototype) -RenderBlendResult.prototype.constructor = RenderBlendResult -RenderBlendResult.prototype.__class__ = RenderBlendResult -RenderBlendResult.__cache__ = {} -Module.RenderBlendResult = RenderBlendResult -RenderBlendResult.prototype.get_changed = RenderBlendResult.prototype.get_changed = function () { - const self = this.ptr +RenderBlendResult.prototype = Object.create(WrapperObject.prototype); +RenderBlendResult.prototype.constructor = RenderBlendResult; +RenderBlendResult.prototype.__class__ = RenderBlendResult; +RenderBlendResult.__cache__ = {}; +Module["RenderBlendResult"] = RenderBlendResult; +RenderBlendResult.prototype["get_changed"] = RenderBlendResult.prototype.get_changed = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendResult_get_changed_0(self) -} -RenderBlendResult.prototype.set_changed = RenderBlendResult.prototype.set_changed = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendResult.prototype["set_changed"] = RenderBlendResult.prototype.set_changed = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendResult_set_changed_1(self, arg0) -} -Object.defineProperty(RenderBlendResult.prototype, 'changed', { +}; +Object.defineProperty(RenderBlendResult.prototype, "changed", { get: RenderBlendResult.prototype.get_changed, set: RenderBlendResult.prototype.set_changed -}) -RenderBlendResult.prototype.get_blend_time = RenderBlendResult.prototype.get_blend_time = function () { - const self = this.ptr +}); +RenderBlendResult.prototype["get_blend_time"] = RenderBlendResult.prototype.get_blend_time = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendResult_get_blend_time_0(self) -} -RenderBlendResult.prototype.set_blend_time = RenderBlendResult.prototype.set_blend_time = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendResult.prototype["set_blend_time"] = RenderBlendResult.prototype.set_blend_time = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendResult_set_blend_time_1(self, arg0) -} -Object.defineProperty(RenderBlendResult.prototype, 'blend_time', { +}; +Object.defineProperty(RenderBlendResult.prototype, "blend_time", { get: RenderBlendResult.prototype.get_blend_time, set: RenderBlendResult.prototype.set_blend_time -}) -RenderBlendResult.prototype.get_part = RenderBlendResult.prototype.get_part = function () { - const self = this.ptr +}); +RenderBlendResult.prototype["get_part"] = RenderBlendResult.prototype.get_part = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_RenderBlendResult_get_part_0(self), RenderBlendPart) -} -RenderBlendResult.prototype.set_part = RenderBlendResult.prototype.set_part = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendResult.prototype["set_part"] = RenderBlendResult.prototype.set_part = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendResult_set_part_1(self, arg0) -} -Object.defineProperty(RenderBlendResult.prototype, 'part', { +}; +Object.defineProperty(RenderBlendResult.prototype, "part", { get: RenderBlendResult.prototype.get_part, set: RenderBlendResult.prototype.set_part -}) +}); -function SubtitleOctopus () { - this.ptr = _emscripten_bind_SubtitleOctopus_SubtitleOctopus_0() +function SubtitleOctopus() { + this.ptr = _emscripten_bind_SubtitleOctopus_SubtitleOctopus_0(); getCache(SubtitleOctopus)[this.ptr] = this } -SubtitleOctopus.prototype = Object.create(WrapperObject.prototype) -SubtitleOctopus.prototype.constructor = SubtitleOctopus -SubtitleOctopus.prototype.__class__ = SubtitleOctopus -SubtitleOctopus.__cache__ = {} -Module.SubtitleOctopus = SubtitleOctopus -SubtitleOctopus.prototype.setLogLevel = SubtitleOctopus.prototype.setLogLevel = function (level) { - const self = this.ptr - if (level && typeof level === 'object') level = level.ptr +SubtitleOctopus.prototype = Object.create(WrapperObject.prototype); +SubtitleOctopus.prototype.constructor = SubtitleOctopus; +SubtitleOctopus.prototype.__class__ = SubtitleOctopus; +SubtitleOctopus.__cache__ = {}; +Module["SubtitleOctopus"] = SubtitleOctopus; +SubtitleOctopus.prototype["setLogLevel"] = SubtitleOctopus.prototype.setLogLevel = function (level) { + var self = this.ptr; + if (level && typeof level === "object") level = level.ptr; _emscripten_bind_SubtitleOctopus_setLogLevel_1(self, level) -} -SubtitleOctopus.prototype.setDropAnimations = SubtitleOctopus.prototype.setDropAnimations = function (value) { - const self = this.ptr - if (value && typeof value === 'object') value = value.ptr +}; +SubtitleOctopus.prototype["setDropAnimations"] = SubtitleOctopus.prototype.setDropAnimations = function (value) { + var self = this.ptr; + if (value && typeof value === "object") value = value.ptr; _emscripten_bind_SubtitleOctopus_setDropAnimations_1(self, value) -} -SubtitleOctopus.prototype.getDropAnimations = SubtitleOctopus.prototype.getDropAnimations = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["getDropAnimations"] = SubtitleOctopus.prototype.getDropAnimations = function () { + var self = this.ptr; return _emscripten_bind_SubtitleOctopus_getDropAnimations_0(self) -} -SubtitleOctopus.prototype.initLibrary = SubtitleOctopus.prototype.initLibrary = function (frame_w, frame_h) { - const self = this.ptr - if (frame_w && typeof frame_w === 'object') frame_w = frame_w.ptr - if (frame_h && typeof frame_h === 'object') frame_h = frame_h.ptr +}; +SubtitleOctopus.prototype["initLibrary"] = SubtitleOctopus.prototype.initLibrary = function (frame_w, frame_h) { + var self = this.ptr; + if (frame_w && typeof frame_w === "object") frame_w = frame_w.ptr; + if (frame_h && typeof frame_h === "object") frame_h = frame_h.ptr; _emscripten_bind_SubtitleOctopus_initLibrary_2(self, frame_w, frame_h) -} -SubtitleOctopus.prototype.createTrack = SubtitleOctopus.prototype.createTrack = function (subfile) { - const self = this.ptr - ensureCache.prepare() - if (subfile && typeof subfile === 'object') subfile = subfile.ptr - else subfile = ensureString(subfile) +}; +SubtitleOctopus.prototype["createTrack"] = SubtitleOctopus.prototype.createTrack = function (subfile) { + var self = this.ptr; + ensureCache.prepare(); + if (subfile && typeof subfile === "object") subfile = subfile.ptr; + else subfile = ensureString(subfile); _emscripten_bind_SubtitleOctopus_createTrack_1(self, subfile) -} -SubtitleOctopus.prototype.createTrackMem = SubtitleOctopus.prototype.createTrackMem = function (buf, bufsize) { - const self = this.ptr - ensureCache.prepare() - if (buf && typeof buf === 'object') buf = buf.ptr - else buf = ensureString(buf) - if (bufsize && typeof bufsize === 'object') bufsize = bufsize.ptr +}; +SubtitleOctopus.prototype["createTrackMem"] = SubtitleOctopus.prototype.createTrackMem = function (buf, bufsize) { + var self = this.ptr; + ensureCache.prepare(); + if (buf && typeof buf === "object") buf = buf.ptr; + else buf = ensureString(buf); + if (bufsize && typeof bufsize === "object") bufsize = bufsize.ptr; _emscripten_bind_SubtitleOctopus_createTrackMem_2(self, buf, bufsize) -} -SubtitleOctopus.prototype.removeTrack = SubtitleOctopus.prototype.removeTrack = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["removeTrack"] = SubtitleOctopus.prototype.removeTrack = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_removeTrack_0(self) -} -SubtitleOctopus.prototype.resizeCanvas = SubtitleOctopus.prototype.resizeCanvas = function (frame_w, frame_h) { - const self = this.ptr - if (frame_w && typeof frame_w === 'object') frame_w = frame_w.ptr - if (frame_h && typeof frame_h === 'object') frame_h = frame_h.ptr +}; +SubtitleOctopus.prototype["resizeCanvas"] = SubtitleOctopus.prototype.resizeCanvas = function (frame_w, frame_h) { + var self = this.ptr; + if (frame_w && typeof frame_w === "object") frame_w = frame_w.ptr; + if (frame_h && typeof frame_h === "object") frame_h = frame_h.ptr; _emscripten_bind_SubtitleOctopus_resizeCanvas_2(self, frame_w, frame_h) -} -SubtitleOctopus.prototype.renderImage = SubtitleOctopus.prototype.renderImage = function (time, changed) { - const self = this.ptr - if (time && typeof time === 'object') time = time.ptr - if (changed && typeof changed === 'object') changed = changed.ptr +}; +SubtitleOctopus.prototype["renderImage"] = SubtitleOctopus.prototype.renderImage = function (time, changed) { + var self = this.ptr; + if (time && typeof time === "object") time = time.ptr; + if (changed && typeof changed === "object") changed = changed.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_renderImage_2(self, time, changed), ASS_Image) -} -SubtitleOctopus.prototype.quitLibrary = SubtitleOctopus.prototype.quitLibrary = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["quitLibrary"] = SubtitleOctopus.prototype.quitLibrary = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_quitLibrary_0(self) -} -SubtitleOctopus.prototype.reloadLibrary = SubtitleOctopus.prototype.reloadLibrary = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["reloadLibrary"] = SubtitleOctopus.prototype.reloadLibrary = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_reloadLibrary_0(self) -} -SubtitleOctopus.prototype.reloadFonts = SubtitleOctopus.prototype.reloadFonts = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["reloadFonts"] = SubtitleOctopus.prototype.reloadFonts = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_reloadFonts_0(self) -} -SubtitleOctopus.prototype.setMargin = SubtitleOctopus.prototype.setMargin = function (top, bottom, left, right) { - const self = this.ptr - if (top && typeof top === 'object') top = top.ptr - if (bottom && typeof bottom === 'object') bottom = bottom.ptr - if (left && typeof left === 'object') left = left.ptr - if (right && typeof right === 'object') right = right.ptr +}; +SubtitleOctopus.prototype["setMargin"] = SubtitleOctopus.prototype.setMargin = function (top, bottom, left, right) { + var self = this.ptr; + if (top && typeof top === "object") top = top.ptr; + if (bottom && typeof bottom === "object") bottom = bottom.ptr; + if (left && typeof left === "object") left = left.ptr; + if (right && typeof right === "object") right = right.ptr; _emscripten_bind_SubtitleOctopus_setMargin_4(self, top, bottom, left, right) -} -SubtitleOctopus.prototype.getEventCount = SubtitleOctopus.prototype.getEventCount = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["getEventCount"] = SubtitleOctopus.prototype.getEventCount = function () { + var self = this.ptr; return _emscripten_bind_SubtitleOctopus_getEventCount_0(self) -} -SubtitleOctopus.prototype.allocEvent = SubtitleOctopus.prototype.allocEvent = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["allocEvent"] = SubtitleOctopus.prototype.allocEvent = function () { + var self = this.ptr; return _emscripten_bind_SubtitleOctopus_allocEvent_0(self) -} -SubtitleOctopus.prototype.allocStyle = SubtitleOctopus.prototype.allocStyle = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["allocStyle"] = SubtitleOctopus.prototype.allocStyle = function () { + var self = this.ptr; return _emscripten_bind_SubtitleOctopus_allocStyle_0(self) -} -SubtitleOctopus.prototype.removeEvent = SubtitleOctopus.prototype.removeEvent = function (eid) { - const self = this.ptr - if (eid && typeof eid === 'object') eid = eid.ptr +}; +SubtitleOctopus.prototype["removeEvent"] = SubtitleOctopus.prototype.removeEvent = function (eid) { + var self = this.ptr; + if (eid && typeof eid === "object") eid = eid.ptr; _emscripten_bind_SubtitleOctopus_removeEvent_1(self, eid) -} -SubtitleOctopus.prototype.getStyleCount = SubtitleOctopus.prototype.getStyleCount = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["getStyleCount"] = SubtitleOctopus.prototype.getStyleCount = function () { + var self = this.ptr; return _emscripten_bind_SubtitleOctopus_getStyleCount_0(self) -} -SubtitleOctopus.prototype.getStyleByName = SubtitleOctopus.prototype.getStyleByName = function (name) { - const self = this.ptr - ensureCache.prepare() - if (name && typeof name === 'object') name = name.ptr - else name = ensureString(name) +}; +SubtitleOctopus.prototype["getStyleByName"] = SubtitleOctopus.prototype.getStyleByName = function (name) { + var self = this.ptr; + ensureCache.prepare(); + if (name && typeof name === "object") name = name.ptr; + else name = ensureString(name); return _emscripten_bind_SubtitleOctopus_getStyleByName_1(self, name) -} -SubtitleOctopus.prototype.removeStyle = SubtitleOctopus.prototype.removeStyle = function (eid) { - const self = this.ptr - if (eid && typeof eid === 'object') eid = eid.ptr +}; +SubtitleOctopus.prototype["removeStyle"] = SubtitleOctopus.prototype.removeStyle = function (eid) { + var self = this.ptr; + if (eid && typeof eid === "object") eid = eid.ptr; _emscripten_bind_SubtitleOctopus_removeStyle_1(self, eid) -} -SubtitleOctopus.prototype.removeAllEvents = SubtitleOctopus.prototype.removeAllEvents = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["removeAllEvents"] = SubtitleOctopus.prototype.removeAllEvents = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_removeAllEvents_0(self) -} -SubtitleOctopus.prototype.setMemoryLimits = SubtitleOctopus.prototype.setMemoryLimits = function (glyph_limit, bitmap_cache_limit) { - const self = this.ptr - if (glyph_limit && typeof glyph_limit === 'object') glyph_limit = glyph_limit.ptr - if (bitmap_cache_limit && typeof bitmap_cache_limit === 'object') bitmap_cache_limit = bitmap_cache_limit.ptr +}; +SubtitleOctopus.prototype["setMemoryLimits"] = SubtitleOctopus.prototype.setMemoryLimits = function (glyph_limit, bitmap_cache_limit) { + var self = this.ptr; + if (glyph_limit && typeof glyph_limit === "object") glyph_limit = glyph_limit.ptr; + if (bitmap_cache_limit && typeof bitmap_cache_limit === "object") bitmap_cache_limit = bitmap_cache_limit.ptr; _emscripten_bind_SubtitleOctopus_setMemoryLimits_2(self, glyph_limit, bitmap_cache_limit) -} -SubtitleOctopus.prototype.renderBlend = SubtitleOctopus.prototype.renderBlend = function (tm, force) { - const self = this.ptr - if (tm && typeof tm === 'object') tm = tm.ptr - if (force && typeof force === 'object') force = force.ptr +}; +SubtitleOctopus.prototype["renderBlend"] = SubtitleOctopus.prototype.renderBlend = function (tm, force) { + var self = this.ptr; + if (tm && typeof tm === "object") tm = tm.ptr; + if (force && typeof force === "object") force = force.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_renderBlend_2(self, tm, force), RenderBlendResult) -} -SubtitleOctopus.prototype.findNextEventStart = SubtitleOctopus.prototype.findNextEventStart = function (tm) { - const self = this.ptr - if (tm && typeof tm === 'object') tm = tm.ptr +}; +SubtitleOctopus.prototype["findNextEventStart"] = SubtitleOctopus.prototype.findNextEventStart = function (tm) { + var self = this.ptr; + if (tm && typeof tm === "object") tm = tm.ptr; return _emscripten_bind_SubtitleOctopus_findNextEventStart_1(self, tm) -} -SubtitleOctopus.prototype.findEventStopTimes = SubtitleOctopus.prototype.findEventStopTimes = function (tm) { - const self = this.ptr - if (tm && typeof tm === 'object') tm = tm.ptr +}; +SubtitleOctopus.prototype["findEventStopTimes"] = SubtitleOctopus.prototype.findEventStopTimes = function (tm) { + var self = this.ptr; + if (tm && typeof tm === "object") tm = tm.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_findEventStopTimes_1(self, tm), EventStopTimesResult) -} -SubtitleOctopus.prototype.rescanAllAnimations = SubtitleOctopus.prototype.rescanAllAnimations = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["rescanAllAnimations"] = SubtitleOctopus.prototype.rescanAllAnimations = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus_rescanAllAnimations_0(self) -} -SubtitleOctopus.prototype.get_track = SubtitleOctopus.prototype.get_track = function () { - const self = this.ptr +}; +SubtitleOctopus.prototype["get_track"] = SubtitleOctopus.prototype.get_track = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_get_track_0(self), ASS_Track) -} -SubtitleOctopus.prototype.set_track = SubtitleOctopus.prototype.set_track = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +SubtitleOctopus.prototype["set_track"] = SubtitleOctopus.prototype.set_track = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_SubtitleOctopus_set_track_1(self, arg0) -} -Object.defineProperty(SubtitleOctopus.prototype, 'track', { +}; +Object.defineProperty(SubtitleOctopus.prototype, "track", { get: SubtitleOctopus.prototype.get_track, set: SubtitleOctopus.prototype.set_track -}) -SubtitleOctopus.prototype.get_ass_renderer = SubtitleOctopus.prototype.get_ass_renderer = function () { - const self = this.ptr +}); +SubtitleOctopus.prototype["get_ass_renderer"] = SubtitleOctopus.prototype.get_ass_renderer = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_get_ass_renderer_0(self), ASS_Renderer) -} -SubtitleOctopus.prototype.set_ass_renderer = SubtitleOctopus.prototype.set_ass_renderer = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +SubtitleOctopus.prototype["set_ass_renderer"] = SubtitleOctopus.prototype.set_ass_renderer = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_SubtitleOctopus_set_ass_renderer_1(self, arg0) -} -Object.defineProperty(SubtitleOctopus.prototype, 'ass_renderer', { +}; +Object.defineProperty(SubtitleOctopus.prototype, "ass_renderer", { get: SubtitleOctopus.prototype.get_ass_renderer, set: SubtitleOctopus.prototype.set_ass_renderer -}) -SubtitleOctopus.prototype.get_ass_library = SubtitleOctopus.prototype.get_ass_library = function () { - const self = this.ptr +}); +SubtitleOctopus.prototype["get_ass_library"] = SubtitleOctopus.prototype.get_ass_library = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_SubtitleOctopus_get_ass_library_0(self), ASS_Library) -} -SubtitleOctopus.prototype.set_ass_library = SubtitleOctopus.prototype.set_ass_library = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +SubtitleOctopus.prototype["set_ass_library"] = SubtitleOctopus.prototype.set_ass_library = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_SubtitleOctopus_set_ass_library_1(self, arg0) -} -Object.defineProperty(SubtitleOctopus.prototype, 'ass_library', { +}; +Object.defineProperty(SubtitleOctopus.prototype, "ass_library", { get: SubtitleOctopus.prototype.get_ass_library, set: SubtitleOctopus.prototype.set_ass_library -}) -SubtitleOctopus.prototype.__destroy__ = SubtitleOctopus.prototype.__destroy__ = function () { - const self = this.ptr +}); +SubtitleOctopus.prototype["__destroy__"] = SubtitleOctopus.prototype.__destroy__ = function () { + var self = this.ptr; _emscripten_bind_SubtitleOctopus___destroy___0(self) -} +}; -function ASS_Track () { - throw 'cannot construct a ASS_Track, no constructor in IDL' +function ASS_Track() { + throw "cannot construct a ASS_Track, no constructor in IDL" } -ASS_Track.prototype = Object.create(WrapperObject.prototype) -ASS_Track.prototype.constructor = ASS_Track -ASS_Track.prototype.__class__ = ASS_Track -ASS_Track.__cache__ = {} -Module.ASS_Track = ASS_Track -ASS_Track.prototype.get_n_styles = ASS_Track.prototype.get_n_styles = function () { - const self = this.ptr +ASS_Track.prototype = Object.create(WrapperObject.prototype); +ASS_Track.prototype.constructor = ASS_Track; +ASS_Track.prototype.__class__ = ASS_Track; +ASS_Track.__cache__ = {}; +Module["ASS_Track"] = ASS_Track; +ASS_Track.prototype["get_n_styles"] = ASS_Track.prototype.get_n_styles = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_n_styles_0(self) -} -ASS_Track.prototype.set_n_styles = ASS_Track.prototype.set_n_styles = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_n_styles"] = ASS_Track.prototype.set_n_styles = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_n_styles_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'n_styles', { +}; +Object.defineProperty(ASS_Track.prototype, "n_styles", { get: ASS_Track.prototype.get_n_styles, set: ASS_Track.prototype.set_n_styles -}) -ASS_Track.prototype.get_max_styles = ASS_Track.prototype.get_max_styles = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_max_styles"] = ASS_Track.prototype.get_max_styles = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_max_styles_0(self) -} -ASS_Track.prototype.set_max_styles = ASS_Track.prototype.set_max_styles = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_max_styles"] = ASS_Track.prototype.set_max_styles = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_max_styles_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'max_styles', { +}; +Object.defineProperty(ASS_Track.prototype, "max_styles", { get: ASS_Track.prototype.get_max_styles, set: ASS_Track.prototype.set_max_styles -}) -ASS_Track.prototype.get_n_events = ASS_Track.prototype.get_n_events = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_n_events"] = ASS_Track.prototype.get_n_events = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_n_events_0(self) -} -ASS_Track.prototype.set_n_events = ASS_Track.prototype.set_n_events = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_n_events"] = ASS_Track.prototype.set_n_events = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_n_events_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'n_events', { +}; +Object.defineProperty(ASS_Track.prototype, "n_events", { get: ASS_Track.prototype.get_n_events, set: ASS_Track.prototype.set_n_events -}) -ASS_Track.prototype.get_max_events = ASS_Track.prototype.get_max_events = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_max_events"] = ASS_Track.prototype.get_max_events = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_max_events_0(self) -} -ASS_Track.prototype.set_max_events = ASS_Track.prototype.set_max_events = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_max_events"] = ASS_Track.prototype.set_max_events = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_max_events_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'max_events', { +}; +Object.defineProperty(ASS_Track.prototype, "max_events", { get: ASS_Track.prototype.get_max_events, set: ASS_Track.prototype.set_max_events -}) -ASS_Track.prototype.get_styles = ASS_Track.prototype.get_styles = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}); +ASS_Track.prototype["get_styles"] = ASS_Track.prototype.get_styles = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; return wrapPointer(_emscripten_bind_ASS_Track_get_styles_1(self, arg0), ASS_Style) -} -ASS_Track.prototype.set_styles = ASS_Track.prototype.set_styles = function (arg0, arg1) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - if (arg1 && typeof arg1 === 'object') arg1 = arg1.ptr +}; +ASS_Track.prototype["set_styles"] = ASS_Track.prototype.set_styles = function (arg0, arg1) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + if (arg1 && typeof arg1 === "object") arg1 = arg1.ptr; _emscripten_bind_ASS_Track_set_styles_2(self, arg0, arg1) -} -Object.defineProperty(ASS_Track.prototype, 'styles', { +}; +Object.defineProperty(ASS_Track.prototype, "styles", { get: ASS_Track.prototype.get_styles, set: ASS_Track.prototype.set_styles -}) -ASS_Track.prototype.get_events = ASS_Track.prototype.get_events = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}); +ASS_Track.prototype["get_events"] = ASS_Track.prototype.get_events = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; return wrapPointer(_emscripten_bind_ASS_Track_get_events_1(self, arg0), ASS_Event) -} -ASS_Track.prototype.set_events = ASS_Track.prototype.set_events = function (arg0, arg1) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - if (arg1 && typeof arg1 === 'object') arg1 = arg1.ptr +}; +ASS_Track.prototype["set_events"] = ASS_Track.prototype.set_events = function (arg0, arg1) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + if (arg1 && typeof arg1 === "object") arg1 = arg1.ptr; _emscripten_bind_ASS_Track_set_events_2(self, arg0, arg1) -} -Object.defineProperty(ASS_Track.prototype, 'events', { +}; +Object.defineProperty(ASS_Track.prototype, "events", { get: ASS_Track.prototype.get_events, set: ASS_Track.prototype.set_events -}) -ASS_Track.prototype.get_style_format = ASS_Track.prototype.get_style_format = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_style_format"] = ASS_Track.prototype.get_style_format = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Track_get_style_format_0(self)) -} -ASS_Track.prototype.set_style_format = ASS_Track.prototype.set_style_format = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Track.prototype["set_style_format"] = ASS_Track.prototype.set_style_format = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Track_set_style_format_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'style_format', { +}; +Object.defineProperty(ASS_Track.prototype, "style_format", { get: ASS_Track.prototype.get_style_format, set: ASS_Track.prototype.set_style_format -}) -ASS_Track.prototype.get_event_format = ASS_Track.prototype.get_event_format = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_event_format"] = ASS_Track.prototype.get_event_format = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Track_get_event_format_0(self)) -} -ASS_Track.prototype.set_event_format = ASS_Track.prototype.set_event_format = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Track.prototype["set_event_format"] = ASS_Track.prototype.set_event_format = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Track_set_event_format_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'event_format', { +}; +Object.defineProperty(ASS_Track.prototype, "event_format", { get: ASS_Track.prototype.get_event_format, set: ASS_Track.prototype.set_event_format -}) -ASS_Track.prototype.get_PlayResX = ASS_Track.prototype.get_PlayResX = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_PlayResX"] = ASS_Track.prototype.get_PlayResX = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_PlayResX_0(self) -} -ASS_Track.prototype.set_PlayResX = ASS_Track.prototype.set_PlayResX = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_PlayResX"] = ASS_Track.prototype.set_PlayResX = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_PlayResX_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'PlayResX', { +}; +Object.defineProperty(ASS_Track.prototype, "PlayResX", { get: ASS_Track.prototype.get_PlayResX, set: ASS_Track.prototype.set_PlayResX -}) -ASS_Track.prototype.get_PlayResY = ASS_Track.prototype.get_PlayResY = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_PlayResY"] = ASS_Track.prototype.get_PlayResY = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_PlayResY_0(self) -} -ASS_Track.prototype.set_PlayResY = ASS_Track.prototype.set_PlayResY = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_PlayResY"] = ASS_Track.prototype.set_PlayResY = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_PlayResY_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'PlayResY', { +}; +Object.defineProperty(ASS_Track.prototype, "PlayResY", { get: ASS_Track.prototype.get_PlayResY, set: ASS_Track.prototype.set_PlayResY -}) -ASS_Track.prototype.get_Timer = ASS_Track.prototype.get_Timer = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_Timer"] = ASS_Track.prototype.get_Timer = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_Timer_0(self) -} -ASS_Track.prototype.set_Timer = ASS_Track.prototype.set_Timer = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_Timer"] = ASS_Track.prototype.set_Timer = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_Timer_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'Timer', { +}; +Object.defineProperty(ASS_Track.prototype, "Timer", { get: ASS_Track.prototype.get_Timer, set: ASS_Track.prototype.set_Timer -}) -ASS_Track.prototype.get_WrapStyle = ASS_Track.prototype.get_WrapStyle = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_WrapStyle"] = ASS_Track.prototype.get_WrapStyle = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_WrapStyle_0(self) -} -ASS_Track.prototype.set_WrapStyle = ASS_Track.prototype.set_WrapStyle = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_WrapStyle"] = ASS_Track.prototype.set_WrapStyle = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_WrapStyle_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'WrapStyle', { +}; +Object.defineProperty(ASS_Track.prototype, "WrapStyle", { get: ASS_Track.prototype.get_WrapStyle, set: ASS_Track.prototype.set_WrapStyle -}) -ASS_Track.prototype.get_ScaledBorderAndShadow = ASS_Track.prototype.get_ScaledBorderAndShadow = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_ScaledBorderAndShadow"] = ASS_Track.prototype.get_ScaledBorderAndShadow = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_ScaledBorderAndShadow_0(self) -} -ASS_Track.prototype.set_ScaledBorderAndShadow = ASS_Track.prototype.set_ScaledBorderAndShadow = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_ScaledBorderAndShadow"] = ASS_Track.prototype.set_ScaledBorderAndShadow = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_ScaledBorderAndShadow_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'ScaledBorderAndShadow', { +}; +Object.defineProperty(ASS_Track.prototype, "ScaledBorderAndShadow", { get: ASS_Track.prototype.get_ScaledBorderAndShadow, set: ASS_Track.prototype.set_ScaledBorderAndShadow -}) -ASS_Track.prototype.get_Kerning = ASS_Track.prototype.get_Kerning = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_Kerning"] = ASS_Track.prototype.get_Kerning = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_Kerning_0(self) -} -ASS_Track.prototype.set_Kerning = ASS_Track.prototype.set_Kerning = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_Kerning"] = ASS_Track.prototype.set_Kerning = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_Kerning_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'Kerning', { +}; +Object.defineProperty(ASS_Track.prototype, "Kerning", { get: ASS_Track.prototype.get_Kerning, set: ASS_Track.prototype.set_Kerning -}) -ASS_Track.prototype.get_Language = ASS_Track.prototype.get_Language = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_Language"] = ASS_Track.prototype.get_Language = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Track_get_Language_0(self)) -} -ASS_Track.prototype.set_Language = ASS_Track.prototype.set_Language = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Track.prototype["set_Language"] = ASS_Track.prototype.set_Language = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Track_set_Language_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'Language', { +}; +Object.defineProperty(ASS_Track.prototype, "Language", { get: ASS_Track.prototype.get_Language, set: ASS_Track.prototype.set_Language -}) -ASS_Track.prototype.get_default_style = ASS_Track.prototype.get_default_style = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_default_style"] = ASS_Track.prototype.get_default_style = function () { + var self = this.ptr; return _emscripten_bind_ASS_Track_get_default_style_0(self) -} -ASS_Track.prototype.set_default_style = ASS_Track.prototype.set_default_style = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Track.prototype["set_default_style"] = ASS_Track.prototype.set_default_style = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Track_set_default_style_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'default_style', { +}; +Object.defineProperty(ASS_Track.prototype, "default_style", { get: ASS_Track.prototype.get_default_style, set: ASS_Track.prototype.set_default_style -}) -ASS_Track.prototype.get_name = ASS_Track.prototype.get_name = function () { - const self = this.ptr +}); +ASS_Track.prototype["get_name"] = ASS_Track.prototype.get_name = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Track_get_name_0(self)) -} -ASS_Track.prototype.set_name = ASS_Track.prototype.set_name = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Track.prototype["set_name"] = ASS_Track.prototype.set_name = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Track_set_name_1(self, arg0) -} -Object.defineProperty(ASS_Track.prototype, 'name', { +}; +Object.defineProperty(ASS_Track.prototype, "name", { get: ASS_Track.prototype.get_name, set: ASS_Track.prototype.set_name -}) +}); -function ASS_RenderPriv () { - throw 'cannot construct a ASS_RenderPriv, no constructor in IDL' +function ASS_RenderPriv() { + throw "cannot construct a ASS_RenderPriv, no constructor in IDL" } -ASS_RenderPriv.prototype = Object.create(WrapperObject.prototype) -ASS_RenderPriv.prototype.constructor = ASS_RenderPriv -ASS_RenderPriv.prototype.__class__ = ASS_RenderPriv -ASS_RenderPriv.__cache__ = {} -Module.ASS_RenderPriv = ASS_RenderPriv +ASS_RenderPriv.prototype = Object.create(WrapperObject.prototype); +ASS_RenderPriv.prototype.constructor = ASS_RenderPriv; +ASS_RenderPriv.prototype.__class__ = ASS_RenderPriv; +ASS_RenderPriv.__cache__ = {}; +Module["ASS_RenderPriv"] = ASS_RenderPriv; -function ASS_Style () { - throw 'cannot construct a ASS_Style, no constructor in IDL' +function ASS_Style() { + throw "cannot construct a ASS_Style, no constructor in IDL" } -ASS_Style.prototype = Object.create(WrapperObject.prototype) -ASS_Style.prototype.constructor = ASS_Style -ASS_Style.prototype.__class__ = ASS_Style -ASS_Style.__cache__ = {} -Module.ASS_Style = ASS_Style -ASS_Style.prototype.get_Name = ASS_Style.prototype.get_Name = function () { - const self = this.ptr +ASS_Style.prototype = Object.create(WrapperObject.prototype); +ASS_Style.prototype.constructor = ASS_Style; +ASS_Style.prototype.__class__ = ASS_Style; +ASS_Style.__cache__ = {}; +Module["ASS_Style"] = ASS_Style; +ASS_Style.prototype["get_Name"] = ASS_Style.prototype.get_Name = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Style_get_Name_0(self)) -} -ASS_Style.prototype.set_Name = ASS_Style.prototype.set_Name = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Style.prototype["set_Name"] = ASS_Style.prototype.set_Name = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Style_set_Name_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Name', { +}; +Object.defineProperty(ASS_Style.prototype, "Name", { get: ASS_Style.prototype.get_Name, set: ASS_Style.prototype.set_Name -}) -ASS_Style.prototype.get_FontName = ASS_Style.prototype.get_FontName = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_FontName"] = ASS_Style.prototype.get_FontName = function () { + var self = this.ptr; return UTF8ToString(_emscripten_bind_ASS_Style_get_FontName_0(self)) -} -ASS_Style.prototype.set_FontName = ASS_Style.prototype.set_FontName = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Style.prototype["set_FontName"] = ASS_Style.prototype.set_FontName = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Style_set_FontName_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'FontName', { +}; +Object.defineProperty(ASS_Style.prototype, "FontName", { get: ASS_Style.prototype.get_FontName, set: ASS_Style.prototype.set_FontName -}) -ASS_Style.prototype.get_FontSize = ASS_Style.prototype.get_FontSize = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_FontSize"] = ASS_Style.prototype.get_FontSize = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_FontSize_0(self) -} -ASS_Style.prototype.set_FontSize = ASS_Style.prototype.set_FontSize = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_FontSize"] = ASS_Style.prototype.set_FontSize = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_FontSize_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'FontSize', { +}; +Object.defineProperty(ASS_Style.prototype, "FontSize", { get: ASS_Style.prototype.get_FontSize, set: ASS_Style.prototype.set_FontSize -}) -ASS_Style.prototype.get_PrimaryColour = ASS_Style.prototype.get_PrimaryColour = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_PrimaryColour"] = ASS_Style.prototype.get_PrimaryColour = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_PrimaryColour_0(self) -} -ASS_Style.prototype.set_PrimaryColour = ASS_Style.prototype.set_PrimaryColour = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_PrimaryColour"] = ASS_Style.prototype.set_PrimaryColour = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_PrimaryColour_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'PrimaryColour', { +}; +Object.defineProperty(ASS_Style.prototype, "PrimaryColour", { get: ASS_Style.prototype.get_PrimaryColour, set: ASS_Style.prototype.set_PrimaryColour -}) -ASS_Style.prototype.get_SecondaryColour = ASS_Style.prototype.get_SecondaryColour = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_SecondaryColour"] = ASS_Style.prototype.get_SecondaryColour = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_SecondaryColour_0(self) -} -ASS_Style.prototype.set_SecondaryColour = ASS_Style.prototype.set_SecondaryColour = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_SecondaryColour"] = ASS_Style.prototype.set_SecondaryColour = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_SecondaryColour_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'SecondaryColour', { +}; +Object.defineProperty(ASS_Style.prototype, "SecondaryColour", { get: ASS_Style.prototype.get_SecondaryColour, set: ASS_Style.prototype.set_SecondaryColour -}) -ASS_Style.prototype.get_OutlineColour = ASS_Style.prototype.get_OutlineColour = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_OutlineColour"] = ASS_Style.prototype.get_OutlineColour = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_OutlineColour_0(self) -} -ASS_Style.prototype.set_OutlineColour = ASS_Style.prototype.set_OutlineColour = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_OutlineColour"] = ASS_Style.prototype.set_OutlineColour = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_OutlineColour_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'OutlineColour', { +}; +Object.defineProperty(ASS_Style.prototype, "OutlineColour", { get: ASS_Style.prototype.get_OutlineColour, set: ASS_Style.prototype.set_OutlineColour -}) -ASS_Style.prototype.get_BackColour = ASS_Style.prototype.get_BackColour = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_BackColour"] = ASS_Style.prototype.get_BackColour = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_BackColour_0(self) -} -ASS_Style.prototype.set_BackColour = ASS_Style.prototype.set_BackColour = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_BackColour"] = ASS_Style.prototype.set_BackColour = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_BackColour_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'BackColour', { +}; +Object.defineProperty(ASS_Style.prototype, "BackColour", { get: ASS_Style.prototype.get_BackColour, set: ASS_Style.prototype.set_BackColour -}) -ASS_Style.prototype.get_Bold = ASS_Style.prototype.get_Bold = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Bold"] = ASS_Style.prototype.get_Bold = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Bold_0(self) -} -ASS_Style.prototype.set_Bold = ASS_Style.prototype.set_Bold = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Bold"] = ASS_Style.prototype.set_Bold = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Bold_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Bold', { +}; +Object.defineProperty(ASS_Style.prototype, "Bold", { get: ASS_Style.prototype.get_Bold, set: ASS_Style.prototype.set_Bold -}) -ASS_Style.prototype.get_Italic = ASS_Style.prototype.get_Italic = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Italic"] = ASS_Style.prototype.get_Italic = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Italic_0(self) -} -ASS_Style.prototype.set_Italic = ASS_Style.prototype.set_Italic = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Italic"] = ASS_Style.prototype.set_Italic = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Italic_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Italic', { +}; +Object.defineProperty(ASS_Style.prototype, "Italic", { get: ASS_Style.prototype.get_Italic, set: ASS_Style.prototype.set_Italic -}) -ASS_Style.prototype.get_Underline = ASS_Style.prototype.get_Underline = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Underline"] = ASS_Style.prototype.get_Underline = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Underline_0(self) -} -ASS_Style.prototype.set_Underline = ASS_Style.prototype.set_Underline = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Underline"] = ASS_Style.prototype.set_Underline = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Underline_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Underline', { +}; +Object.defineProperty(ASS_Style.prototype, "Underline", { get: ASS_Style.prototype.get_Underline, set: ASS_Style.prototype.set_Underline -}) -ASS_Style.prototype.get_StrikeOut = ASS_Style.prototype.get_StrikeOut = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_StrikeOut"] = ASS_Style.prototype.get_StrikeOut = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_StrikeOut_0(self) -} -ASS_Style.prototype.set_StrikeOut = ASS_Style.prototype.set_StrikeOut = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_StrikeOut"] = ASS_Style.prototype.set_StrikeOut = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_StrikeOut_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'StrikeOut', { +}; +Object.defineProperty(ASS_Style.prototype, "StrikeOut", { get: ASS_Style.prototype.get_StrikeOut, set: ASS_Style.prototype.set_StrikeOut -}) -ASS_Style.prototype.get_ScaleX = ASS_Style.prototype.get_ScaleX = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_ScaleX"] = ASS_Style.prototype.get_ScaleX = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_ScaleX_0(self) -} -ASS_Style.prototype.set_ScaleX = ASS_Style.prototype.set_ScaleX = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_ScaleX"] = ASS_Style.prototype.set_ScaleX = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_ScaleX_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'ScaleX', { +}; +Object.defineProperty(ASS_Style.prototype, "ScaleX", { get: ASS_Style.prototype.get_ScaleX, set: ASS_Style.prototype.set_ScaleX -}) -ASS_Style.prototype.get_ScaleY = ASS_Style.prototype.get_ScaleY = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_ScaleY"] = ASS_Style.prototype.get_ScaleY = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_ScaleY_0(self) -} -ASS_Style.prototype.set_ScaleY = ASS_Style.prototype.set_ScaleY = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_ScaleY"] = ASS_Style.prototype.set_ScaleY = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_ScaleY_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'ScaleY', { +}; +Object.defineProperty(ASS_Style.prototype, "ScaleY", { get: ASS_Style.prototype.get_ScaleY, set: ASS_Style.prototype.set_ScaleY -}) -ASS_Style.prototype.get_Spacing = ASS_Style.prototype.get_Spacing = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Spacing"] = ASS_Style.prototype.get_Spacing = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Spacing_0(self) -} -ASS_Style.prototype.set_Spacing = ASS_Style.prototype.set_Spacing = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Spacing"] = ASS_Style.prototype.set_Spacing = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Spacing_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Spacing', { +}; +Object.defineProperty(ASS_Style.prototype, "Spacing", { get: ASS_Style.prototype.get_Spacing, set: ASS_Style.prototype.set_Spacing -}) -ASS_Style.prototype.get_Angle = ASS_Style.prototype.get_Angle = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Angle"] = ASS_Style.prototype.get_Angle = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Angle_0(self) -} -ASS_Style.prototype.set_Angle = ASS_Style.prototype.set_Angle = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Angle"] = ASS_Style.prototype.set_Angle = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Angle_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Angle', { +}; +Object.defineProperty(ASS_Style.prototype, "Angle", { get: ASS_Style.prototype.get_Angle, set: ASS_Style.prototype.set_Angle -}) -ASS_Style.prototype.get_BorderStyle = ASS_Style.prototype.get_BorderStyle = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_BorderStyle"] = ASS_Style.prototype.get_BorderStyle = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_BorderStyle_0(self) -} -ASS_Style.prototype.set_BorderStyle = ASS_Style.prototype.set_BorderStyle = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_BorderStyle"] = ASS_Style.prototype.set_BorderStyle = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_BorderStyle_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'BorderStyle', { +}; +Object.defineProperty(ASS_Style.prototype, "BorderStyle", { get: ASS_Style.prototype.get_BorderStyle, set: ASS_Style.prototype.set_BorderStyle -}) -ASS_Style.prototype.get_Outline = ASS_Style.prototype.get_Outline = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Outline"] = ASS_Style.prototype.get_Outline = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Outline_0(self) -} -ASS_Style.prototype.set_Outline = ASS_Style.prototype.set_Outline = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Outline"] = ASS_Style.prototype.set_Outline = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Outline_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Outline', { +}; +Object.defineProperty(ASS_Style.prototype, "Outline", { get: ASS_Style.prototype.get_Outline, set: ASS_Style.prototype.set_Outline -}) -ASS_Style.prototype.get_Shadow = ASS_Style.prototype.get_Shadow = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Shadow"] = ASS_Style.prototype.get_Shadow = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Shadow_0(self) -} -ASS_Style.prototype.set_Shadow = ASS_Style.prototype.set_Shadow = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Shadow"] = ASS_Style.prototype.set_Shadow = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Shadow_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Shadow', { +}; +Object.defineProperty(ASS_Style.prototype, "Shadow", { get: ASS_Style.prototype.get_Shadow, set: ASS_Style.prototype.set_Shadow -}) -ASS_Style.prototype.get_Alignment = ASS_Style.prototype.get_Alignment = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Alignment"] = ASS_Style.prototype.get_Alignment = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Alignment_0(self) -} -ASS_Style.prototype.set_Alignment = ASS_Style.prototype.set_Alignment = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Alignment"] = ASS_Style.prototype.set_Alignment = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Alignment_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Alignment', { +}; +Object.defineProperty(ASS_Style.prototype, "Alignment", { get: ASS_Style.prototype.get_Alignment, set: ASS_Style.prototype.set_Alignment -}) -ASS_Style.prototype.get_MarginL = ASS_Style.prototype.get_MarginL = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_MarginL"] = ASS_Style.prototype.get_MarginL = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_MarginL_0(self) -} -ASS_Style.prototype.set_MarginL = ASS_Style.prototype.set_MarginL = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_MarginL"] = ASS_Style.prototype.set_MarginL = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_MarginL_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'MarginL', { +}; +Object.defineProperty(ASS_Style.prototype, "MarginL", { get: ASS_Style.prototype.get_MarginL, set: ASS_Style.prototype.set_MarginL -}) -ASS_Style.prototype.get_MarginR = ASS_Style.prototype.get_MarginR = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_MarginR"] = ASS_Style.prototype.get_MarginR = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_MarginR_0(self) -} -ASS_Style.prototype.set_MarginR = ASS_Style.prototype.set_MarginR = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_MarginR"] = ASS_Style.prototype.set_MarginR = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_MarginR_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'MarginR', { +}; +Object.defineProperty(ASS_Style.prototype, "MarginR", { get: ASS_Style.prototype.get_MarginR, set: ASS_Style.prototype.set_MarginR -}) -ASS_Style.prototype.get_MarginV = ASS_Style.prototype.get_MarginV = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_MarginV"] = ASS_Style.prototype.get_MarginV = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_MarginV_0(self) -} -ASS_Style.prototype.set_MarginV = ASS_Style.prototype.set_MarginV = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_MarginV"] = ASS_Style.prototype.set_MarginV = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_MarginV_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'MarginV', { +}; +Object.defineProperty(ASS_Style.prototype, "MarginV", { get: ASS_Style.prototype.get_MarginV, set: ASS_Style.prototype.set_MarginV -}) -ASS_Style.prototype.get_Encoding = ASS_Style.prototype.get_Encoding = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Encoding"] = ASS_Style.prototype.get_Encoding = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Encoding_0(self) -} -ASS_Style.prototype.set_Encoding = ASS_Style.prototype.set_Encoding = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Encoding"] = ASS_Style.prototype.set_Encoding = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Encoding_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Encoding', { +}; +Object.defineProperty(ASS_Style.prototype, "Encoding", { get: ASS_Style.prototype.get_Encoding, set: ASS_Style.prototype.set_Encoding -}) -ASS_Style.prototype.get_treat_fontname_as_pattern = ASS_Style.prototype.get_treat_fontname_as_pattern = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_treat_fontname_as_pattern"] = ASS_Style.prototype.get_treat_fontname_as_pattern = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_treat_fontname_as_pattern_0(self) -} -ASS_Style.prototype.set_treat_fontname_as_pattern = ASS_Style.prototype.set_treat_fontname_as_pattern = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_treat_fontname_as_pattern"] = ASS_Style.prototype.set_treat_fontname_as_pattern = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_treat_fontname_as_pattern_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'treat_fontname_as_pattern', { +}; +Object.defineProperty(ASS_Style.prototype, "treat_fontname_as_pattern", { get: ASS_Style.prototype.get_treat_fontname_as_pattern, set: ASS_Style.prototype.set_treat_fontname_as_pattern -}) -ASS_Style.prototype.get_Blur = ASS_Style.prototype.get_Blur = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Blur"] = ASS_Style.prototype.get_Blur = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Blur_0(self) -} -ASS_Style.prototype.set_Blur = ASS_Style.prototype.set_Blur = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Blur"] = ASS_Style.prototype.set_Blur = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Blur_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Blur', { +}; +Object.defineProperty(ASS_Style.prototype, "Blur", { get: ASS_Style.prototype.get_Blur, set: ASS_Style.prototype.set_Blur -}) -ASS_Style.prototype.get_Justify = ASS_Style.prototype.get_Justify = function () { - const self = this.ptr +}); +ASS_Style.prototype["get_Justify"] = ASS_Style.prototype.get_Justify = function () { + var self = this.ptr; return _emscripten_bind_ASS_Style_get_Justify_0(self) -} -ASS_Style.prototype.set_Justify = ASS_Style.prototype.set_Justify = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Style.prototype["set_Justify"] = ASS_Style.prototype.set_Justify = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Style_set_Justify_1(self, arg0) -} -Object.defineProperty(ASS_Style.prototype, 'Justify', { +}; +Object.defineProperty(ASS_Style.prototype, "Justify", { get: ASS_Style.prototype.get_Justify, set: ASS_Style.prototype.set_Justify -}) +}); -function EventStopTimesResult () { - throw 'cannot construct a EventStopTimesResult, no constructor in IDL' +function EventStopTimesResult() { + throw "cannot construct a EventStopTimesResult, no constructor in IDL" } -EventStopTimesResult.prototype = Object.create(WrapperObject.prototype) -EventStopTimesResult.prototype.constructor = EventStopTimesResult -EventStopTimesResult.prototype.__class__ = EventStopTimesResult -EventStopTimesResult.__cache__ = {} -Module.EventStopTimesResult = EventStopTimesResult -EventStopTimesResult.prototype.get_eventFinish = EventStopTimesResult.prototype.get_eventFinish = function () { - const self = this.ptr +EventStopTimesResult.prototype = Object.create(WrapperObject.prototype); +EventStopTimesResult.prototype.constructor = EventStopTimesResult; +EventStopTimesResult.prototype.__class__ = EventStopTimesResult; +EventStopTimesResult.__cache__ = {}; +Module["EventStopTimesResult"] = EventStopTimesResult; +EventStopTimesResult.prototype["get_eventFinish"] = EventStopTimesResult.prototype.get_eventFinish = function () { + var self = this.ptr; return _emscripten_bind_EventStopTimesResult_get_eventFinish_0(self) -} -EventStopTimesResult.prototype.set_eventFinish = EventStopTimesResult.prototype.set_eventFinish = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +EventStopTimesResult.prototype["set_eventFinish"] = EventStopTimesResult.prototype.set_eventFinish = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_EventStopTimesResult_set_eventFinish_1(self, arg0) -} -Object.defineProperty(EventStopTimesResult.prototype, 'eventFinish', { +}; +Object.defineProperty(EventStopTimesResult.prototype, "eventFinish", { get: EventStopTimesResult.prototype.get_eventFinish, set: EventStopTimesResult.prototype.set_eventFinish -}) -EventStopTimesResult.prototype.get_emptyFinish = EventStopTimesResult.prototype.get_emptyFinish = function () { - const self = this.ptr +}); +EventStopTimesResult.prototype["get_emptyFinish"] = EventStopTimesResult.prototype.get_emptyFinish = function () { + var self = this.ptr; return _emscripten_bind_EventStopTimesResult_get_emptyFinish_0(self) -} -EventStopTimesResult.prototype.set_emptyFinish = EventStopTimesResult.prototype.set_emptyFinish = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +EventStopTimesResult.prototype["set_emptyFinish"] = EventStopTimesResult.prototype.set_emptyFinish = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_EventStopTimesResult_set_emptyFinish_1(self, arg0) -} -Object.defineProperty(EventStopTimesResult.prototype, 'emptyFinish', { +}; +Object.defineProperty(EventStopTimesResult.prototype, "emptyFinish", { get: EventStopTimesResult.prototype.get_emptyFinish, set: EventStopTimesResult.prototype.set_emptyFinish -}) -EventStopTimesResult.prototype.get_is_animated = EventStopTimesResult.prototype.get_is_animated = function () { - const self = this.ptr +}); +EventStopTimesResult.prototype["get_is_animated"] = EventStopTimesResult.prototype.get_is_animated = function () { + var self = this.ptr; return _emscripten_bind_EventStopTimesResult_get_is_animated_0(self) -} -EventStopTimesResult.prototype.set_is_animated = EventStopTimesResult.prototype.set_is_animated = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +EventStopTimesResult.prototype["set_is_animated"] = EventStopTimesResult.prototype.set_is_animated = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_EventStopTimesResult_set_is_animated_1(self, arg0) -} -Object.defineProperty(EventStopTimesResult.prototype, 'is_animated', { +}; +Object.defineProperty(EventStopTimesResult.prototype, "is_animated", { get: EventStopTimesResult.prototype.get_is_animated, set: EventStopTimesResult.prototype.set_is_animated -}) +}); -function ASS_Image () { - throw 'cannot construct a ASS_Image, no constructor in IDL' +function ASS_Image() { + throw "cannot construct a ASS_Image, no constructor in IDL" } -ASS_Image.prototype = Object.create(WrapperObject.prototype) -ASS_Image.prototype.constructor = ASS_Image -ASS_Image.prototype.__class__ = ASS_Image -ASS_Image.__cache__ = {} -Module.ASS_Image = ASS_Image -ASS_Image.prototype.get_w = ASS_Image.prototype.get_w = function () { - const self = this.ptr +ASS_Image.prototype = Object.create(WrapperObject.prototype); +ASS_Image.prototype.constructor = ASS_Image; +ASS_Image.prototype.__class__ = ASS_Image; +ASS_Image.__cache__ = {}; +Module["ASS_Image"] = ASS_Image; +ASS_Image.prototype["get_w"] = ASS_Image.prototype.get_w = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_w_0(self) -} -ASS_Image.prototype.set_w = ASS_Image.prototype.set_w = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_w"] = ASS_Image.prototype.set_w = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_w_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'w', { +}; +Object.defineProperty(ASS_Image.prototype, "w", { get: ASS_Image.prototype.get_w, set: ASS_Image.prototype.set_w -}) -ASS_Image.prototype.get_h = ASS_Image.prototype.get_h = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_h"] = ASS_Image.prototype.get_h = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_h_0(self) -} -ASS_Image.prototype.set_h = ASS_Image.prototype.set_h = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_h"] = ASS_Image.prototype.set_h = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_h_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'h', { +}; +Object.defineProperty(ASS_Image.prototype, "h", { get: ASS_Image.prototype.get_h, set: ASS_Image.prototype.set_h -}) -ASS_Image.prototype.get_stride = ASS_Image.prototype.get_stride = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_stride"] = ASS_Image.prototype.get_stride = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_stride_0(self) -} -ASS_Image.prototype.set_stride = ASS_Image.prototype.set_stride = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_stride"] = ASS_Image.prototype.set_stride = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_stride_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'stride', { +}; +Object.defineProperty(ASS_Image.prototype, "stride", { get: ASS_Image.prototype.get_stride, set: ASS_Image.prototype.set_stride -}) -ASS_Image.prototype.get_bitmap = ASS_Image.prototype.get_bitmap = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_bitmap"] = ASS_Image.prototype.get_bitmap = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_bitmap_0(self) -} -ASS_Image.prototype.set_bitmap = ASS_Image.prototype.set_bitmap = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +ASS_Image.prototype["set_bitmap"] = ASS_Image.prototype.set_bitmap = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_ASS_Image_set_bitmap_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'bitmap', { +}; +Object.defineProperty(ASS_Image.prototype, "bitmap", { get: ASS_Image.prototype.get_bitmap, set: ASS_Image.prototype.set_bitmap -}) -ASS_Image.prototype.get_color = ASS_Image.prototype.get_color = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_color"] = ASS_Image.prototype.get_color = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_color_0(self) -} -ASS_Image.prototype.set_color = ASS_Image.prototype.set_color = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_color"] = ASS_Image.prototype.set_color = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_color_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'color', { +}; +Object.defineProperty(ASS_Image.prototype, "color", { get: ASS_Image.prototype.get_color, set: ASS_Image.prototype.set_color -}) -ASS_Image.prototype.get_dst_x = ASS_Image.prototype.get_dst_x = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_dst_x"] = ASS_Image.prototype.get_dst_x = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_dst_x_0(self) -} -ASS_Image.prototype.set_dst_x = ASS_Image.prototype.set_dst_x = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_dst_x"] = ASS_Image.prototype.set_dst_x = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_dst_x_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'dst_x', { +}; +Object.defineProperty(ASS_Image.prototype, "dst_x", { get: ASS_Image.prototype.get_dst_x, set: ASS_Image.prototype.set_dst_x -}) -ASS_Image.prototype.get_dst_y = ASS_Image.prototype.get_dst_y = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_dst_y"] = ASS_Image.prototype.get_dst_y = function () { + var self = this.ptr; return _emscripten_bind_ASS_Image_get_dst_y_0(self) -} -ASS_Image.prototype.set_dst_y = ASS_Image.prototype.set_dst_y = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_dst_y"] = ASS_Image.prototype.set_dst_y = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_dst_y_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'dst_y', { +}; +Object.defineProperty(ASS_Image.prototype, "dst_y", { get: ASS_Image.prototype.get_dst_y, set: ASS_Image.prototype.set_dst_y -}) -ASS_Image.prototype.get_next = ASS_Image.prototype.get_next = function () { - const self = this.ptr +}); +ASS_Image.prototype["get_next"] = ASS_Image.prototype.get_next = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_ASS_Image_get_next_0(self), ASS_Image) -} -ASS_Image.prototype.set_next = ASS_Image.prototype.set_next = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +ASS_Image.prototype["set_next"] = ASS_Image.prototype.set_next = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_ASS_Image_set_next_1(self, arg0) -} -Object.defineProperty(ASS_Image.prototype, 'next', { +}; +Object.defineProperty(ASS_Image.prototype, "next", { get: ASS_Image.prototype.get_next, set: ASS_Image.prototype.set_next -}) +}); -function VoidPtr () { - throw 'cannot construct a VoidPtr, no constructor in IDL' +function VoidPtr() { + throw "cannot construct a VoidPtr, no constructor in IDL" } -VoidPtr.prototype = Object.create(WrapperObject.prototype) -VoidPtr.prototype.constructor = VoidPtr -VoidPtr.prototype.__class__ = VoidPtr -VoidPtr.__cache__ = {} -Module.VoidPtr = VoidPtr -VoidPtr.prototype.__destroy__ = VoidPtr.prototype.__destroy__ = function () { - const self = this.ptr +VoidPtr.prototype = Object.create(WrapperObject.prototype); +VoidPtr.prototype.constructor = VoidPtr; +VoidPtr.prototype.__class__ = VoidPtr; +VoidPtr.__cache__ = {}; +Module["VoidPtr"] = VoidPtr; +VoidPtr.prototype["__destroy__"] = VoidPtr.prototype.__destroy__ = function () { + var self = this.ptr; _emscripten_bind_VoidPtr___destroy___0(self) -} +}; -function ASS_Library () { - throw 'cannot construct a ASS_Library, no constructor in IDL' +function ASS_Library() { + throw "cannot construct a ASS_Library, no constructor in IDL" } -ASS_Library.prototype = Object.create(WrapperObject.prototype) -ASS_Library.prototype.constructor = ASS_Library -ASS_Library.prototype.__class__ = ASS_Library -ASS_Library.__cache__ = {} -Module.ASS_Library = ASS_Library +ASS_Library.prototype = Object.create(WrapperObject.prototype); +ASS_Library.prototype.constructor = ASS_Library; +ASS_Library.prototype.__class__ = ASS_Library; +ASS_Library.__cache__ = {}; +Module["ASS_Library"] = ASS_Library; -function RenderBlendPart () { - throw 'cannot construct a RenderBlendPart, no constructor in IDL' +function RenderBlendPart() { + throw "cannot construct a RenderBlendPart, no constructor in IDL" } -RenderBlendPart.prototype = Object.create(WrapperObject.prototype) -RenderBlendPart.prototype.constructor = RenderBlendPart -RenderBlendPart.prototype.__class__ = RenderBlendPart -RenderBlendPart.__cache__ = {} -Module.RenderBlendPart = RenderBlendPart -RenderBlendPart.prototype.get_dest_x = RenderBlendPart.prototype.get_dest_x = function () { - const self = this.ptr +RenderBlendPart.prototype = Object.create(WrapperObject.prototype); +RenderBlendPart.prototype.constructor = RenderBlendPart; +RenderBlendPart.prototype.__class__ = RenderBlendPart; +RenderBlendPart.__cache__ = {}; +Module["RenderBlendPart"] = RenderBlendPart; +RenderBlendPart.prototype["get_dest_x"] = RenderBlendPart.prototype.get_dest_x = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendPart_get_dest_x_0(self) -} -RenderBlendPart.prototype.set_dest_x = RenderBlendPart.prototype.set_dest_x = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendPart.prototype["set_dest_x"] = RenderBlendPart.prototype.set_dest_x = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendPart_set_dest_x_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'dest_x', { +}; +Object.defineProperty(RenderBlendPart.prototype, "dest_x", { get: RenderBlendPart.prototype.get_dest_x, set: RenderBlendPart.prototype.set_dest_x -}) -RenderBlendPart.prototype.get_dest_y = RenderBlendPart.prototype.get_dest_y = function () { - const self = this.ptr +}); +RenderBlendPart.prototype["get_dest_y"] = RenderBlendPart.prototype.get_dest_y = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendPart_get_dest_y_0(self) -} -RenderBlendPart.prototype.set_dest_y = RenderBlendPart.prototype.set_dest_y = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendPart.prototype["set_dest_y"] = RenderBlendPart.prototype.set_dest_y = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendPart_set_dest_y_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'dest_y', { +}; +Object.defineProperty(RenderBlendPart.prototype, "dest_y", { get: RenderBlendPart.prototype.get_dest_y, set: RenderBlendPart.prototype.set_dest_y -}) -RenderBlendPart.prototype.get_dest_width = RenderBlendPart.prototype.get_dest_width = function () { - const self = this.ptr +}); +RenderBlendPart.prototype["get_dest_width"] = RenderBlendPart.prototype.get_dest_width = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendPart_get_dest_width_0(self) -} -RenderBlendPart.prototype.set_dest_width = RenderBlendPart.prototype.set_dest_width = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendPart.prototype["set_dest_width"] = RenderBlendPart.prototype.set_dest_width = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendPart_set_dest_width_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'dest_width', { +}; +Object.defineProperty(RenderBlendPart.prototype, "dest_width", { get: RenderBlendPart.prototype.get_dest_width, set: RenderBlendPart.prototype.set_dest_width -}) -RenderBlendPart.prototype.get_dest_height = RenderBlendPart.prototype.get_dest_height = function () { - const self = this.ptr +}); +RenderBlendPart.prototype["get_dest_height"] = RenderBlendPart.prototype.get_dest_height = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendPart_get_dest_height_0(self) -} -RenderBlendPart.prototype.set_dest_height = RenderBlendPart.prototype.set_dest_height = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendPart.prototype["set_dest_height"] = RenderBlendPart.prototype.set_dest_height = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendPart_set_dest_height_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'dest_height', { +}; +Object.defineProperty(RenderBlendPart.prototype, "dest_height", { get: RenderBlendPart.prototype.get_dest_height, set: RenderBlendPart.prototype.set_dest_height -}) -RenderBlendPart.prototype.get_image = RenderBlendPart.prototype.get_image = function () { - const self = this.ptr +}); +RenderBlendPart.prototype["get_image"] = RenderBlendPart.prototype.get_image = function () { + var self = this.ptr; return _emscripten_bind_RenderBlendPart_get_image_0(self) -} -RenderBlendPart.prototype.set_image = RenderBlendPart.prototype.set_image = function (arg0) { - const self = this.ptr - ensureCache.prepare() - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr - else arg0 = ensureString(arg0) +}; +RenderBlendPart.prototype["set_image"] = RenderBlendPart.prototype.set_image = function (arg0) { + var self = this.ptr; + ensureCache.prepare(); + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; + else arg0 = ensureString(arg0); _emscripten_bind_RenderBlendPart_set_image_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'image', { +}; +Object.defineProperty(RenderBlendPart.prototype, "image", { get: RenderBlendPart.prototype.get_image, set: RenderBlendPart.prototype.set_image -}) -RenderBlendPart.prototype.get_next = RenderBlendPart.prototype.get_next = function () { - const self = this.ptr +}); +RenderBlendPart.prototype["get_next"] = RenderBlendPart.prototype.get_next = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_RenderBlendPart_get_next_0(self), RenderBlendPart) -} -RenderBlendPart.prototype.set_next = RenderBlendPart.prototype.set_next = function (arg0) { - const self = this.ptr - if (arg0 && typeof arg0 === 'object') arg0 = arg0.ptr +}; +RenderBlendPart.prototype["set_next"] = RenderBlendPart.prototype.set_next = function (arg0) { + var self = this.ptr; + if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; _emscripten_bind_RenderBlendPart_set_next_1(self, arg0) -} -Object.defineProperty(RenderBlendPart.prototype, 'next', { +}; +Object.defineProperty(RenderBlendPart.prototype, "next", { get: RenderBlendPart.prototype.get_next, set: RenderBlendPart.prototype.set_next -}) +}); -function libass () { - this.ptr = _emscripten_bind_libass_libass_0() +function libass() { + this.ptr = _emscripten_bind_libass_libass_0(); getCache(libass)[this.ptr] = this } -libass.prototype = Object.create(WrapperObject.prototype) -libass.prototype.constructor = libass -libass.prototype.__class__ = libass -libass.__cache__ = {} -Module.libass = libass -libass.prototype.oct_library_version = libass.prototype.oct_library_version = function () { - const self = this.ptr +libass.prototype = Object.create(WrapperObject.prototype); +libass.prototype.constructor = libass; +libass.prototype.__class__ = libass; +libass.__cache__ = {}; +Module["libass"] = libass; +libass.prototype["oct_library_version"] = libass.prototype.oct_library_version = function () { + var self = this.ptr; return _emscripten_bind_libass_oct_library_version_0(self) -} -libass.prototype.oct_library_init = libass.prototype.oct_library_init = function () { - const self = this.ptr +}; +libass.prototype["oct_library_init"] = libass.prototype.oct_library_init = function () { + var self = this.ptr; return wrapPointer(_emscripten_bind_libass_oct_library_init_0(self), ASS_Library) -} -libass.prototype.oct_library_done = libass.prototype.oct_library_done = function (priv) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr +}; +libass.prototype["oct_library_done"] = libass.prototype.oct_library_done = function (priv) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; _emscripten_bind_libass_oct_library_done_1(self, priv) -} -libass.prototype.oct_set_fonts_dir = libass.prototype.oct_set_fonts_dir = function (priv, fonts_dir) { - const self = this.ptr - ensureCache.prepare() - if (priv && typeof priv === 'object') priv = priv.ptr - if (fonts_dir && typeof fonts_dir === 'object') fonts_dir = fonts_dir.ptr - else fonts_dir = ensureString(fonts_dir) +}; +libass.prototype["oct_set_fonts_dir"] = libass.prototype.oct_set_fonts_dir = function (priv, fonts_dir) { + var self = this.ptr; + ensureCache.prepare(); + if (priv && typeof priv === "object") priv = priv.ptr; + if (fonts_dir && typeof fonts_dir === "object") fonts_dir = fonts_dir.ptr; + else fonts_dir = ensureString(fonts_dir); _emscripten_bind_libass_oct_set_fonts_dir_2(self, priv, fonts_dir) -} -libass.prototype.oct_set_extract_fonts = libass.prototype.oct_set_extract_fonts = function (priv, extract) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (extract && typeof extract === 'object') extract = extract.ptr +}; +libass.prototype["oct_set_extract_fonts"] = libass.prototype.oct_set_extract_fonts = function (priv, extract) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (extract && typeof extract === "object") extract = extract.ptr; _emscripten_bind_libass_oct_set_extract_fonts_2(self, priv, extract) -} -libass.prototype.oct_set_style_overrides = libass.prototype.oct_set_style_overrides = function (priv, list) { - const self = this.ptr - ensureCache.prepare() - if (priv && typeof priv === 'object') priv = priv.ptr +}; +libass.prototype["oct_set_style_overrides"] = libass.prototype.oct_set_style_overrides = function (priv, list) { + var self = this.ptr; + ensureCache.prepare(); + if (priv && typeof priv === "object") priv = priv.ptr; _emscripten_bind_libass_oct_set_style_overrides_2(self, priv, list) -} -libass.prototype.oct_process_force_style = libass.prototype.oct_process_force_style = function (track) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr +}; +libass.prototype["oct_process_force_style"] = libass.prototype.oct_process_force_style = function (track) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; _emscripten_bind_libass_oct_process_force_style_1(self, track) -} -libass.prototype.oct_renderer_init = libass.prototype.oct_renderer_init = function (priv) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr +}; +libass.prototype["oct_renderer_init"] = libass.prototype.oct_renderer_init = function (priv) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; return wrapPointer(_emscripten_bind_libass_oct_renderer_init_1(self, priv), ASS_Renderer) -} -libass.prototype.oct_renderer_done = libass.prototype.oct_renderer_done = function (priv) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr +}; +libass.prototype["oct_renderer_done"] = libass.prototype.oct_renderer_done = function (priv) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; _emscripten_bind_libass_oct_renderer_done_1(self, priv) -} -libass.prototype.oct_set_frame_size = libass.prototype.oct_set_frame_size = function (priv, w, h) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (w && typeof w === 'object') w = w.ptr - if (h && typeof h === 'object') h = h.ptr +}; +libass.prototype["oct_set_frame_size"] = libass.prototype.oct_set_frame_size = function (priv, w, h) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (w && typeof w === "object") w = w.ptr; + if (h && typeof h === "object") h = h.ptr; _emscripten_bind_libass_oct_set_frame_size_3(self, priv, w, h) -} -libass.prototype.oct_set_storage_size = libass.prototype.oct_set_storage_size = function (priv, w, h) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (w && typeof w === 'object') w = w.ptr - if (h && typeof h === 'object') h = h.ptr +}; +libass.prototype["oct_set_storage_size"] = libass.prototype.oct_set_storage_size = function (priv, w, h) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (w && typeof w === "object") w = w.ptr; + if (h && typeof h === "object") h = h.ptr; _emscripten_bind_libass_oct_set_storage_size_3(self, priv, w, h) -} -libass.prototype.oct_set_shaper = libass.prototype.oct_set_shaper = function (priv, level) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (level && typeof level === 'object') level = level.ptr +}; +libass.prototype["oct_set_shaper"] = libass.prototype.oct_set_shaper = function (priv, level) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (level && typeof level === "object") level = level.ptr; _emscripten_bind_libass_oct_set_shaper_2(self, priv, level) -} -libass.prototype.oct_set_margins = libass.prototype.oct_set_margins = function (priv, t, b, l, r) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (t && typeof t === 'object') t = t.ptr - if (b && typeof b === 'object') b = b.ptr - if (l && typeof l === 'object') l = l.ptr - if (r && typeof r === 'object') r = r.ptr +}; +libass.prototype["oct_set_margins"] = libass.prototype.oct_set_margins = function (priv, t, b, l, r) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (t && typeof t === "object") t = t.ptr; + if (b && typeof b === "object") b = b.ptr; + if (l && typeof l === "object") l = l.ptr; + if (r && typeof r === "object") r = r.ptr; _emscripten_bind_libass_oct_set_margins_5(self, priv, t, b, l, r) -} -libass.prototype.oct_set_use_margins = libass.prototype.oct_set_use_margins = function (priv, use) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (use && typeof use === 'object') use = use.ptr +}; +libass.prototype["oct_set_use_margins"] = libass.prototype.oct_set_use_margins = function (priv, use) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (use && typeof use === "object") use = use.ptr; _emscripten_bind_libass_oct_set_use_margins_2(self, priv, use) -} -libass.prototype.oct_set_pixel_aspect = libass.prototype.oct_set_pixel_aspect = function (priv, par) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (par && typeof par === 'object') par = par.ptr +}; +libass.prototype["oct_set_pixel_aspect"] = libass.prototype.oct_set_pixel_aspect = function (priv, par) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (par && typeof par === "object") par = par.ptr; _emscripten_bind_libass_oct_set_pixel_aspect_2(self, priv, par) -} -libass.prototype.oct_set_aspect_ratio = libass.prototype.oct_set_aspect_ratio = function (priv, dar, sar) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (dar && typeof dar === 'object') dar = dar.ptr - if (sar && typeof sar === 'object') sar = sar.ptr +}; +libass.prototype["oct_set_aspect_ratio"] = libass.prototype.oct_set_aspect_ratio = function (priv, dar, sar) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (dar && typeof dar === "object") dar = dar.ptr; + if (sar && typeof sar === "object") sar = sar.ptr; _emscripten_bind_libass_oct_set_aspect_ratio_3(self, priv, dar, sar) -} -libass.prototype.oct_set_font_scale = libass.prototype.oct_set_font_scale = function (priv, font_scale) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (font_scale && typeof font_scale === 'object') font_scale = font_scale.ptr +}; +libass.prototype["oct_set_font_scale"] = libass.prototype.oct_set_font_scale = function (priv, font_scale) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (font_scale && typeof font_scale === "object") font_scale = font_scale.ptr; _emscripten_bind_libass_oct_set_font_scale_2(self, priv, font_scale) -} -libass.prototype.oct_set_hinting = libass.prototype.oct_set_hinting = function (priv, ht) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (ht && typeof ht === 'object') ht = ht.ptr +}; +libass.prototype["oct_set_hinting"] = libass.prototype.oct_set_hinting = function (priv, ht) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (ht && typeof ht === "object") ht = ht.ptr; _emscripten_bind_libass_oct_set_hinting_2(self, priv, ht) -} -libass.prototype.oct_set_line_spacing = libass.prototype.oct_set_line_spacing = function (priv, line_spacing) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (line_spacing && typeof line_spacing === 'object') line_spacing = line_spacing.ptr +}; +libass.prototype["oct_set_line_spacing"] = libass.prototype.oct_set_line_spacing = function (priv, line_spacing) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (line_spacing && typeof line_spacing === "object") line_spacing = line_spacing.ptr; _emscripten_bind_libass_oct_set_line_spacing_2(self, priv, line_spacing) -} -libass.prototype.oct_set_line_position = libass.prototype.oct_set_line_position = function (priv, line_position) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (line_position && typeof line_position === 'object') line_position = line_position.ptr +}; +libass.prototype["oct_set_line_position"] = libass.prototype.oct_set_line_position = function (priv, line_position) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (line_position && typeof line_position === "object") line_position = line_position.ptr; _emscripten_bind_libass_oct_set_line_position_2(self, priv, line_position) -} -libass.prototype.oct_set_fonts = libass.prototype.oct_set_fonts = function (priv, default_font, default_family, dfp, config, update) { - const self = this.ptr - ensureCache.prepare() - if (priv && typeof priv === 'object') priv = priv.ptr - if (default_font && typeof default_font === 'object') default_font = default_font.ptr - else default_font = ensureString(default_font) - if (default_family && typeof default_family === 'object') default_family = default_family.ptr - else default_family = ensureString(default_family) - if (dfp && typeof dfp === 'object') dfp = dfp.ptr - if (config && typeof config === 'object') config = config.ptr - else config = ensureString(config) - if (update && typeof update === 'object') update = update.ptr +}; +libass.prototype["oct_set_fonts"] = libass.prototype.oct_set_fonts = function (priv, default_font, default_family, dfp, config, update) { + var self = this.ptr; + ensureCache.prepare(); + if (priv && typeof priv === "object") priv = priv.ptr; + if (default_font && typeof default_font === "object") default_font = default_font.ptr; + else default_font = ensureString(default_font); + if (default_family && typeof default_family === "object") default_family = default_family.ptr; + else default_family = ensureString(default_family); + if (dfp && typeof dfp === "object") dfp = dfp.ptr; + if (config && typeof config === "object") config = config.ptr; + else config = ensureString(config); + if (update && typeof update === "object") update = update.ptr; _emscripten_bind_libass_oct_set_fonts_6(self, priv, default_font, default_family, dfp, config, update) -} -libass.prototype.oct_set_selective_style_override_enabled = libass.prototype.oct_set_selective_style_override_enabled = function (priv, bits) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (bits && typeof bits === 'object') bits = bits.ptr +}; +libass.prototype["oct_set_selective_style_override_enabled"] = libass.prototype.oct_set_selective_style_override_enabled = function (priv, bits) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (bits && typeof bits === "object") bits = bits.ptr; _emscripten_bind_libass_oct_set_selective_style_override_enabled_2(self, priv, bits) -} -libass.prototype.oct_set_selective_style_override = libass.prototype.oct_set_selective_style_override = function (priv, style) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (style && typeof style === 'object') style = style.ptr +}; +libass.prototype["oct_set_selective_style_override"] = libass.prototype.oct_set_selective_style_override = function (priv, style) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (style && typeof style === "object") style = style.ptr; _emscripten_bind_libass_oct_set_selective_style_override_2(self, priv, style) -} -libass.prototype.oct_set_cache_limits = libass.prototype.oct_set_cache_limits = function (priv, glyph_max, bitmap_max_size) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (glyph_max && typeof glyph_max === 'object') glyph_max = glyph_max.ptr - if (bitmap_max_size && typeof bitmap_max_size === 'object') bitmap_max_size = bitmap_max_size.ptr +}; +libass.prototype["oct_set_cache_limits"] = libass.prototype.oct_set_cache_limits = function (priv, glyph_max, bitmap_max_size) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (glyph_max && typeof glyph_max === "object") glyph_max = glyph_max.ptr; + if (bitmap_max_size && typeof bitmap_max_size === "object") bitmap_max_size = bitmap_max_size.ptr; _emscripten_bind_libass_oct_set_cache_limits_3(self, priv, glyph_max, bitmap_max_size) -} -libass.prototype.oct_render_frame = libass.prototype.oct_render_frame = function (priv, track, now, detect_change) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr - if (track && typeof track === 'object') track = track.ptr - if (now && typeof now === 'object') now = now.ptr - if (detect_change && typeof detect_change === 'object') detect_change = detect_change.ptr +}; +libass.prototype["oct_render_frame"] = libass.prototype.oct_render_frame = function (priv, track, now, detect_change) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; + if (track && typeof track === "object") track = track.ptr; + if (now && typeof now === "object") now = now.ptr; + if (detect_change && typeof detect_change === "object") detect_change = detect_change.ptr; return wrapPointer(_emscripten_bind_libass_oct_render_frame_4(self, priv, track, now, detect_change), ASS_Image) -} -libass.prototype.oct_new_track = libass.prototype.oct_new_track = function (priv) { - const self = this.ptr - if (priv && typeof priv === 'object') priv = priv.ptr +}; +libass.prototype["oct_new_track"] = libass.prototype.oct_new_track = function (priv) { + var self = this.ptr; + if (priv && typeof priv === "object") priv = priv.ptr; return wrapPointer(_emscripten_bind_libass_oct_new_track_1(self, priv), ASS_Track) -} -libass.prototype.oct_free_track = libass.prototype.oct_free_track = function (track) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr +}; +libass.prototype["oct_free_track"] = libass.prototype.oct_free_track = function (track) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; _emscripten_bind_libass_oct_free_track_1(self, track) -} -libass.prototype.oct_alloc_style = libass.prototype.oct_alloc_style = function (track) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr +}; +libass.prototype["oct_alloc_style"] = libass.prototype.oct_alloc_style = function (track) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; return _emscripten_bind_libass_oct_alloc_style_1(self, track) -} -libass.prototype.oct_alloc_event = libass.prototype.oct_alloc_event = function (track) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr +}; +libass.prototype["oct_alloc_event"] = libass.prototype.oct_alloc_event = function (track) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; return _emscripten_bind_libass_oct_alloc_event_1(self, track) -} -libass.prototype.oct_free_style = libass.prototype.oct_free_style = function (track, sid) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr - if (sid && typeof sid === 'object') sid = sid.ptr +}; +libass.prototype["oct_free_style"] = libass.prototype.oct_free_style = function (track, sid) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; + if (sid && typeof sid === "object") sid = sid.ptr; _emscripten_bind_libass_oct_free_style_2(self, track, sid) -} -libass.prototype.oct_free_event = libass.prototype.oct_free_event = function (track, eid) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr - if (eid && typeof eid === 'object') eid = eid.ptr +}; +libass.prototype["oct_free_event"] = libass.prototype.oct_free_event = function (track, eid) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; + if (eid && typeof eid === "object") eid = eid.ptr; _emscripten_bind_libass_oct_free_event_2(self, track, eid) -} -libass.prototype.oct_flush_events = libass.prototype.oct_flush_events = function (track) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr +}; +libass.prototype["oct_flush_events"] = libass.prototype.oct_flush_events = function (track) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; _emscripten_bind_libass_oct_flush_events_1(self, track) -} -libass.prototype.oct_read_file = libass.prototype.oct_read_file = function (library, fname, codepage) { - const self = this.ptr - ensureCache.prepare() - if (library && typeof library === 'object') library = library.ptr - if (fname && typeof fname === 'object') fname = fname.ptr - else fname = ensureString(fname) - if (codepage && typeof codepage === 'object') codepage = codepage.ptr - else codepage = ensureString(codepage) +}; +libass.prototype["oct_read_file"] = libass.prototype.oct_read_file = function (library, fname, codepage) { + var self = this.ptr; + ensureCache.prepare(); + if (library && typeof library === "object") library = library.ptr; + if (fname && typeof fname === "object") fname = fname.ptr; + else fname = ensureString(fname); + if (codepage && typeof codepage === "object") codepage = codepage.ptr; + else codepage = ensureString(codepage); return wrapPointer(_emscripten_bind_libass_oct_read_file_3(self, library, fname, codepage), ASS_Track) -} -libass.prototype.oct_add_font = libass.prototype.oct_add_font = function (library, name, data, data_size) { - const self = this.ptr - ensureCache.prepare() - if (library && typeof library === 'object') library = library.ptr - if (name && typeof name === 'object') name = name.ptr - else name = ensureString(name) - if (data && typeof data === 'object') data = data.ptr - else data = ensureString(data) - if (data_size && typeof data_size === 'object') data_size = data_size.ptr +}; +libass.prototype["oct_add_font"] = libass.prototype.oct_add_font = function (library, name, data, data_size) { + var self = this.ptr; + ensureCache.prepare(); + if (library && typeof library === "object") library = library.ptr; + if (name && typeof name === "object") name = name.ptr; + else name = ensureString(name); + if (data && typeof data === "object") data = data.ptr; + else data = ensureString(data); + if (data_size && typeof data_size === "object") data_size = data_size.ptr; _emscripten_bind_libass_oct_add_font_4(self, library, name, data, data_size) -} -libass.prototype.oct_clear_fonts = libass.prototype.oct_clear_fonts = function (library) { - const self = this.ptr - if (library && typeof library === 'object') library = library.ptr +}; +libass.prototype["oct_clear_fonts"] = libass.prototype.oct_clear_fonts = function (library) { + var self = this.ptr; + if (library && typeof library === "object") library = library.ptr; _emscripten_bind_libass_oct_clear_fonts_1(self, library) -} -libass.prototype.oct_step_sub = libass.prototype.oct_step_sub = function (track, now, movement) { - const self = this.ptr - if (track && typeof track === 'object') track = track.ptr - if (now && typeof now === 'object') now = now.ptr - if (movement && typeof movement === 'object') movement = movement.ptr +}; +libass.prototype["oct_step_sub"] = libass.prototype.oct_step_sub = function (track, now, movement) { + var self = this.ptr; + if (track && typeof track === "object") track = track.ptr; + if (now && typeof now === "object") now = now.ptr; + if (movement && typeof movement === "object") movement = movement.ptr; return _emscripten_bind_libass_oct_step_sub_3(self, track, now, movement) }; (function () { - function setupEnums () { - Module.ASS_HINTING_NONE = _emscripten_enum_ASS_Hinting_ASS_HINTING_NONE() - Module.ASS_HINTING_LIGHT = _emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT() - Module.ASS_HINTING_NORMAL = _emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL() - Module.ASS_HINTING_NATIVE = _emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE() - Module.ASS_SHAPING_SIMPLE = _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE() - Module.ASS_SHAPING_COMPLEX = _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX() - Module.ASS_OVERRIDE_DEFAULT = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT() - Module.ASS_OVERRIDE_BIT_STYLE = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE() - Module.ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE() - Module.ASS_OVERRIDE_BIT_FONT_SIZE = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE() - Module.ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS() - Module.ASS_OVERRIDE_BIT_FONT_NAME = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME() - Module.ASS_OVERRIDE_BIT_COLORS = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS() - Module.ASS_OVERRIDE_BIT_ATTRIBUTES = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES() - Module.ASS_OVERRIDE_BIT_BORDER = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER() - Module.ASS_OVERRIDE_BIT_ALIGNMENT = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT() - Module.ASS_OVERRIDE_BIT_MARGINS = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS() - Module.ASS_OVERRIDE_FULL_STYLE = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE() - Module.ASS_OVERRIDE_BIT_JUSTIFY = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY() + function setupEnums() { + Module["ASS_HINTING_NONE"] = _emscripten_enum_ASS_Hinting_ASS_HINTING_NONE(); + Module["ASS_HINTING_LIGHT"] = _emscripten_enum_ASS_Hinting_ASS_HINTING_LIGHT(); + Module["ASS_HINTING_NORMAL"] = _emscripten_enum_ASS_Hinting_ASS_HINTING_NORMAL(); + Module["ASS_HINTING_NATIVE"] = _emscripten_enum_ASS_Hinting_ASS_HINTING_NATIVE(); + Module["ASS_SHAPING_SIMPLE"] = _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_SIMPLE(); + Module["ASS_SHAPING_COMPLEX"] = _emscripten_enum_ASS_ShapingLevel_ASS_SHAPING_COMPLEX(); + Module["ASS_OVERRIDE_DEFAULT"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_DEFAULT(); + Module["ASS_OVERRIDE_BIT_STYLE"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_STYLE(); + Module["ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_SELECTIVE_FONT_SCALE(); + Module["ASS_OVERRIDE_BIT_FONT_SIZE"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE(); + Module["ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_SIZE_FIELDS(); + Module["ASS_OVERRIDE_BIT_FONT_NAME"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_FONT_NAME(); + Module["ASS_OVERRIDE_BIT_COLORS"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_COLORS(); + Module["ASS_OVERRIDE_BIT_ATTRIBUTES"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ATTRIBUTES(); + Module["ASS_OVERRIDE_BIT_BORDER"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_BORDER(); + Module["ASS_OVERRIDE_BIT_ALIGNMENT"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_ALIGNMENT(); + Module["ASS_OVERRIDE_BIT_MARGINS"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_MARGINS(); + Module["ASS_OVERRIDE_FULL_STYLE"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_FULL_STYLE(); + Module["ASS_OVERRIDE_BIT_JUSTIFY"] = _emscripten_enum_ASS_OverrideBits_ASS_OVERRIDE_BIT_JUSTIFY() } - if (runtimeInitialized) setupEnums() + if (runtimeInitialized) setupEnums(); else addOnPreMain(setupEnums) -})() -Module.FS = FS -self.delay = 0 -self.lastCurrentTime = 0 -self.rate = 1 -self.rafId = null -self.nextIsRaf = false -self.lastCurrentTimeReceivedAt = Date.now() -self.targetFps = 30 -self.libassMemoryLimit = 0 -self.renderOnDemand = false -self.dropAllAnimations = false -self.width = 0 -self.height = 0 -self.fontMap_ = {} -self.fontId = 0 -self.writeFontToFS = function (font) { - font = font.trim().toLowerCase() - if (font.startsWith('@')) { - font = font.substr(1) +})(); +Module["FS"] = FS; +self.delay = 0; +self.lastCurrentTime = 0; +self.rate = 1; +self.rafId = null; +self.nextIsRaf = false; +self.lastCurrentTimeReceivedAt = Date.now(); +self.targetFps = 30; +self.libassMemoryLimit = 0; +self.renderOnDemand = false; +self.dropAllAnimations = false; +self.width = 0; +self.height = 0; +self.fontMap_ = {}; +self.fontId = 0; +self.readDataUri = function (dataURI) { + if (typeof dataURI !== "string") { + throw new Error("Invalid argument: dataURI must be a string") } - if (self.fontMap_.hasOwnProperty(font)) return - self.fontMap_[font] = true - if (!self.availableFonts.hasOwnProperty(font)) return - const content = readBinary(self.availableFonts[font]) - Module.FS.writeFile('/fonts/font' + self.fontId++ + '-' + self.availableFonts[font].split('/').pop(), content, { - encoding: 'binary' - }) -} -self.writeAvailableFontsToFS = function (content) { - if (!self.availableFonts) return - const sections = parseAss(content) - for (let i = 0; i < sections.length; i++) { - for (let j = 0; j < sections[i].body.length; j++) { - if (sections[i].body[j].key === 'Style') { - self.writeFontToFS(sections[i].body[j].value.Fontname) + dataURI = dataURI.split(","); + var type = dataURI[0].split(":")[1].split(";")[0], + byteString = atob(dataURI[1]), + byteStringLength = byteString.length, + arrayBuffer = new ArrayBuffer(byteStringLength), + intArray = new Uint8Array(arrayBuffer); + for (var i = 0; i < byteStringLength; i++) { + intArray[i] = byteString.charCodeAt(i) + } + return intArray +}; +self.decodeASSFontEncoding = function (input) { + let output = new Uint8Array(input.length); + let grouping = new Uint8Array(4); + let offset = 0; + let arrayOffset = 0; + let writeOffset = 0; + let charCode; + while (offset < input.length) { + charCode = input.charCodeAt(offset++); + if (charCode >= 33 && charCode <= 96) { + grouping[arrayOffset++] = charCode - 33; + if (arrayOffset === 4) { + output[writeOffset++] = grouping[0] << 2 | grouping[1] >> 4; + output[writeOffset++] = (grouping[1] & 15) << 4 | grouping[2] >> 2; + output[writeOffset++] = (grouping[2] & 3) << 6 | grouping[3]; + arrayOffset = 0 } } } - const regex = /\\fn([^\\}]*?)[\\}]/g - let matches + if (arrayOffset > 0) { + if (arrayOffset === 2) { + output[writeOffset++] = (grouping[0] << 6 | grouping[1]) >> 4 + } else if (arrayOffset === 3) { + let ix = (grouping[0] << 12 | grouping[1] << 6 | grouping[2]) >> 2; + output[writeOffset++] = ix >> 8; + output[writeOffset++] = ix & 255 + } + } + return output.slice(0, writeOffset) +}; +self.writeFontToFS = function (font) { + font = font.trim().toLowerCase(); + if (font.startsWith("@")) { + font = font.substr(1) + } + if (self.fontMap_.hasOwnProperty(font)) return; + self.fontMap_[font] = true; + var content; + var name; + if (self.availableFonts.hasOwnProperty(font)) { + content = readBinary(self.availableFonts[font]); + name = self.availableFonts[font].split("/").pop() + } else { + return + } + Module["FS"].writeFile("/fonts/font" + self.fontId++ + "-" + name, content, { + encoding: "binary" + }) +}; +self.writeAvailableFontsToFS = function (content) { + if (!self.availableFonts) return; + var sections = parseAss(content); + for (var i = 0; i < sections.length; i++) { + for (var j = 0; j < sections[i].body.length; j++) { + if (sections[i].body[j].key === "Style") { + self.writeFontToFS(sections[i].body[j].value["Fontname"]) + } + } + } + var regex = /\\fn([^\\}]*?)[\\}]/g; + var matches; while (matches = regex.exec(self.subContent)) { self.writeFontToFS(matches[1]) } -} +}; self.getRenderMethod = function () { - if (self.renderMode == 'fast') { - return self.fastRender - } else if (self.renderMode == 'blend') { - return self.blendRender - } else if (self.renderMode === 'offscreenCanvas') { - return self.offscreenRender - } else { - return self.render - } + return offscreenRender } + self.setTrack = function (content) { - self.writeAvailableFontsToFS(content) - Module.FS.writeFile('/sub.ass', content) - self.octObj.createTrack('/sub.ass') - self.ass_track = self.octObj.track + self.writeAvailableFontsToFS(content); + Module["FS"].writeFile("/sub.ass", content); + self.octObj.createTrack("/sub.ass"); + self.ass_track = self.octObj.track; if (!self.renderOnDemand) { self.getRenderMethod()() } -} +}; self.freeTrack = function () { - self.octObj.removeTrack() + self.octObj.removeTrack(); if (!self.renderOnDemand) { self.getRenderMethod()() } -} +}; self.setTrackByUrl = function (url) { - let content = '' - if (url.endsWith('.br')) { - content = Module.BrotliDecode(readBinary(url)) + var content = ""; + if (url.endsWith(".br")) { + content = Module["BrotliDecode"](readBinary(url)) } else { content = read_(url) } self.setTrack(content) -} +}; self.resize = function (width, height) { - self.width = width - self.height = height + self.width = width; + self.height = height; self.octObj.resizeCanvas(width, height) -} +}; self.getCurrentTime = function () { - const diff = (Date.now() - self.lastCurrentTimeReceivedAt) / 1e3 + var diff = (Date.now() - self.lastCurrentTimeReceivedAt) / 1e3; if (self._isPaused) { return self.lastCurrentTime } else { if (diff > 5) { - console.error("Didn't received currentTime > 5 seconds. Assuming video was paused.") + console.error("Didn't received currentTime > 5 seconds. Assuming video was paused."); self.setIsPaused(true) } return self.lastCurrentTime + diff * self.rate } -} +}; self.setCurrentTime = function (currentTime) { - self.lastCurrentTime = currentTime - self.lastCurrentTimeReceivedAt = Date.now() + self.lastCurrentTime = currentTime; + self.lastCurrentTimeReceivedAt = Date.now(); if (!self.rafId) { if (self.nextIsRaf) { if (!self.renderOnDemand) { @@ -8906,186 +8973,52 @@ self.setCurrentTime = function (currentTime) { }, 20) } } -} -self._isPaused = true +}; +self._isPaused = true; self.getIsPaused = function () { return self._isPaused -} +}; self.setIsPaused = function (isPaused) { if (isPaused != self._isPaused) { - self._isPaused = isPaused + self._isPaused = isPaused; if (isPaused) { if (self.rafId) { - clearTimeout(self.rafId) + clearTimeout(self.rafId); self.rafId = null } } else { - self.lastCurrentTimeReceivedAt = Date.now() + self.lastCurrentTimeReceivedAt = Date.now(); if (!self.renderOnDemand) { self.rafId = self.requestAnimationFrame(self.getRenderMethod()) } } } } -self.render = function (force) { - self.rafId = 0 - self.renderPending = false - const startTime = performance.now() - const renderResult = self.octObj.renderImage(self.getCurrentTime() + self.delay, self.changed) - const changed = Module.getValue(self.changed, 'i32') - if (changed != 0 || force) { - const result = self.buildResult(renderResult) - const spentTime = performance.now() - startTime - postMessage({ - target: 'canvas', - op: 'renderCanvas', - time: Date.now(), - spentTime: spentTime, - canvases: result[0] - }, result[1]) - } - if (!self._isPaused) { - self.rafId = self.requestAnimationFrame(self.render) - } -} -self.blendRenderTiming = function (timing, force) { - const startTime = performance.now() - const renderResult = self.octObj.renderBlend(timing, force) - const blendTime = renderResult.blend_time - const canvases = [] - const buffers = [] - if (renderResult.ptr != 0 && (renderResult.changed != 0 || force)) { - for (let part = renderResult.part; part.ptr != 0; part = part.next) { - const result = new Uint8Array(HEAPU8.subarray(part.image, part.image + part.dest_width * part.dest_height * 4)) - canvases.push({ - w: part.dest_width, - h: part.dest_height, - x: part.dest_x, - y: part.dest_y, - buffer: result.buffer - }) - buffers.push(result.buffer) - } - } - return { - time: Date.now(), - spentTime: performance.now() - startTime, - blendTime: blendTime, - canvases: canvases, - buffers: buffers - } -} -self.blendRender = function (force) { - self.rafId = 0 - self.renderPending = false - const rendered = self.blendRenderTiming(self.getCurrentTime() + self.delay, force) - if (rendered.canvases.length > 0) { - postMessage({ - target: 'canvas', - op: 'renderCanvas', - time: rendered.time, - spentTime: rendered.spentTime, - blendTime: rendered.blendTime, - canvases: rendered.canvases - }, rendered.buffers) - } - if (!self._isPaused) { - self.rafId = self.requestAnimationFrame(self.blendRender) - } -} -self.oneshotRender = function (lastRenderedTime, renderNow, iteration) { - const eventStart = renderNow ? lastRenderedTime : self.octObj.findNextEventStart(lastRenderedTime) - let eventFinish = -1 - let emptyFinish = -1 - let animated = false - let rendered = {} - if (eventStart >= 0) { - eventTimes = self.octObj.findEventStopTimes(eventStart) - eventFinish = eventTimes.eventFinish - emptyFinish = eventTimes.emptyFinish - animated = eventTimes.is_animated - rendered = self.blendRenderTiming(eventStart, true) - } - postMessage({ - target: 'canvas', - op: 'oneshot-result', - iteration: iteration, - lastRenderedTime: lastRenderedTime, - eventStart: eventStart, - eventFinish: eventFinish, - emptyFinish: emptyFinish, - animated: animated, - viewport: { - width: self.width, - height: self.height - }, - spentTime: rendered.spentTime || 0, - blendTime: rendered.blendTime || 0, - canvases: rendered.canvases || [] - }, rendered.buffers || []) -} -self.fastRender = function (force) { - self.rafId = 0 - self.renderPending = false - const startTime = performance.now() - const renderResult = self.octObj.renderImage(self.getCurrentTime() + self.delay, self.changed) - const changed = Module.getValue(self.changed, 'i32') - if (changed != 0 || force) { - const result = self.buildResult(renderResult) - const newTime = performance.now() - const libassTime = newTime - startTime - const promises = [] - for (let i = 0; i < result[0].length; i++) { - promises[i] = createImageBitmap(new ImageData(new Uint8ClampedArray(result[0][i].buffer), result[0][i].w, result[0][i].h), 0, 0, result[0][i].w, result[0][i].h) - } - Promise.all(promises).then(function (imgs) { - const decodeTime = performance.now() - newTime - const bitmaps = [] - for (let i = 0; i < imgs.length; i++) { - bitmaps[i] = { - x: result[0][i].x, - y: result[0][i].y, - bitmap: imgs[i] - } - } - postMessage({ - target: 'canvas', - op: 'renderFastCanvas', - time: Date.now(), - libassTime: libassTime, - decodeTime: decodeTime, - bitmaps: bitmaps - }, imgs) - }) - } - if (!self._isPaused) { - self.rafId = self.requestAnimationFrame(self.fastRender) - } -} + self.offscreenRender = function (force) { self.rafId = 0 self.renderPending = false - // let startTime = performance.now(); + let startTime = performance.now(); const result = self.octObj.renderImage(self.getCurrentTime() + self.delay, self.changed) const changed = Module.getValue(self.changed, 'i32') - if ((changed != 0 || force) && self.offscreenCanvas) { + if ((Number(changed) !== 0 || force) && self.offscreenCanvas) { const images = self.buildResultImage(result) - // let newTime = performance.now(), - // libassTime = newTime - startTime; + let newTime = performance.now(), + libassTime = newTime - startTime; const promises = [] for (let i = 0; i < images.length; i++) { promises[i] = createImageBitmap(images[i].image) } Promise.all(promises).then(function (bitmaps) { - // let decodeTime = performance.now() - newTime; - function renderFastFrames () { - // let beforeDrawTime = performance.now(); + let decodeTime = performance.now() - newTime; + function renderFastFrames() { + let beforeDrawTime = performance.now(); self.offscreenCanvasCtx.clearRect(0, 0, self.offscreenCanvas.width, self.offscreenCanvas.height) for (let i = 0; i < bitmaps.length; i++) { self.offscreenCanvasCtx.drawImage(bitmaps[i], images[i].x, images[i].y) } - // let drawTime = performance.now() - beforeDrawTime; - // console.log(bitmaps.length + ' bitmaps, libass: ' + libassTime + 'ms, decode: ' + decodeTime + 'ms, draw: ' + drawTime + 'ms'); + let drawTime = performance.now() - beforeDrawTime; + console.log(bitmaps.length + ' bitmaps, libass: ' + libassTime + 'ms, decode: ' + decodeTime + 'ms, draw: ' + drawTime + 'ms'); } self.requestAnimationFrame(renderFastFrames) }) @@ -9094,10 +9027,11 @@ self.offscreenRender = function (force) { self.rafId = self.requestAnimationFrame(self.offscreenRender) } } + self.buildResultImage = function (ptr) { const items = [] let item - while (ptr.ptr != 0) { + while (Number(ptr.ptr) !== 0) { item = self.buildResultImageItem(ptr) if (item !== null) { items.push(item) @@ -9119,10 +9053,10 @@ self.buildResultImageItem = function (ptr) { if (a === 0) { return null } - const c = (color << 8 & 0xFF0000) | (color >> 8 & 0xFF00) | (color >> 24 & 0xFF) + const c = (color << 8 & 0xFF0000) | (color >> 8 & 0xFF00) | (color >> 24 & 0xFF) // black magic const buf = new ArrayBuffer(w * h * 4) const buf8 = new Uint8ClampedArray(buf) - const data = new Uint32Array(buf) + const data = new Uint32Array(buf) // operate on a single position, instead of 4 positions at once let bitmapPosition = 0 let resultPosition = 0 for (let y = h; y--; bitmapPosition += stride) { @@ -9130,7 +9064,7 @@ self.buildResultImageItem = function (ptr) { for (let x = 0, z = w; z--; ++x, resultPosition++) { const k = Module.HEAPU8[offset + x] if (k !== 0) { - data[resultPosition] = a * k << 24 | c + data[resultPosition] = a * k << 24 | c // more black magic } } } @@ -9143,64 +9077,36 @@ self.buildResultImageItem = function (ptr) { image: image } } -self.buildResult = function (ptr) { - const items = [] - const transferable = [] - let item - while (ptr.ptr != 0) { - item = self.buildResultItem(ptr) - if (item !== null) { - items.push(item) - transferable.push(item.buffer) - } - ptr = ptr.next - } - return [items] -} -self.buildResultItem = function (ptr) { - const bitmap = ptr.bitmap - const stride = ptr.stride - const w = ptr.w - const h = ptr.h - const color = ptr.color - if (w == 0 || h == 0) { - return null - } - const r = color >> 24 & 255 - const g = color >> 16 & 255 - const b = color >> 8 & 255 - const a = (255 - (color & 255)) / 255 - const result = new Uint8ClampedArray(4 * w * h) - let bitmapPosition = 0 - let resultPosition = 0 - for (var y = 0; y < h; ++y) { - for (var x = 0; x < w; ++x) { - const k = Module.HEAPU8[bitmap + bitmapPosition + x] * a - result[resultPosition] = r - result[resultPosition + 1] = g - result[resultPosition + 2] = b - result[resultPosition + 3] = k - resultPosition += 4 - } - bitmapPosition += stride - } - x = ptr.dst_x - y = ptr.dst_y - return { - w: w, - h: h, - x: x, - y: y, - buffer: result - } -} + if (typeof SDL !== 'undefined') { SDL.defaults.copyOnLock = false SDL.defaults.discardOnLock = false SDL.defaults.opaqueFrontBuffer = false } -function parseAss (content) { +function FPSTracker(text) { + let last = 0 + let mean = 0 + let counter = 0 + this.tick = function () { + const now = Date.now() + if (last > 0) { + const diff = now - last + mean = 0.99 * mean + 0.01 * diff + if (counter++ === 60) { + counter = 0 + dump(text + ' fps: ' + (1000 / mean).toFixed(2) + '\n') + } + } + last = now + } +} + +/** + * Parse the content of an .ass file. + * @param {!string} content the content of the file + */ +function parseAss(content) { let m, format, lastPart, parts, key, value, tmp, i, j, body const sections = [] const lines = content.split(/[\r\n]+/g) @@ -9253,56 +9159,76 @@ function parseAss (content) { } } } + return sections -} +}; + self.requestAnimationFrame = (function () { + // similar to Browser.requestAnimationFrame let nextRAF = 0 return function (func) { + // try to keep target fps (30fps) between calls to here const now = Date.now() if (nextRAF === 0) { - nextRAF = now + 1e3 / self.targetFps + nextRAF = now + 1000 / self.targetFps } else { - while (now + 2 >= nextRAF) { - nextRAF += 1e3 / self.targetFps + while (now + 2 >= nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0 + nextRAF += 1000 / self.targetFps } } const delay = Math.max(nextRAF - now, 0) return setTimeout(func, delay) + // return setTimeout(func, 1); } -}()) -var screen = { +})() + +const screen = { width: 0, height: 0 } -Module.print = function Module_print (x) { + +Module.print = function Module_print(x) { + // dump('OUT: ' + x + '\n'); postMessage({ target: 'stdout', content: x }) } -Module.printErr = function Module_printErr (x) { +Module.printErr = function Module_printErr(x) { + // dump('ERR: ' + x + '\n'); postMessage({ target: 'stderr', content: x }) } + +// Frame throttling + let frameId = 0 let clientFrameId = 0 let commandBuffer = [] + const postMainLoop = Module.postMainLoop Module.postMainLoop = function () { if (postMainLoop) postMainLoop() + // frame complete, send a frame id postMessage({ target: 'tick', id: frameId++ }) commandBuffer = [] } + +// Wait to start running until we receive some info from the client +// addRunDependency('gl-prefetch'); addRunDependency('worker-init') + +// buffer messages until the program starts to run + let messageBuffer = null let messageResenderTimeout = null -function messageResender () { +function messageResender() { if (calledMain) { assert(messageBuffer && messageBuffer.length > 0) messageResenderTimeout = null @@ -9315,16 +9241,15 @@ function messageResender () { } } -function _applyKeys (input, output) { +function _applyKeys(input, output) { const vargs = Object.keys(input) + for (let i = 0; i < vargs.length; i++) { - output[vargs[i]] = input[vargs[i] || null] - console.log(output[vargs[i]], input[vargs[i]]) + output[vargs[i]] = input[vargs[i]] } - console.log(input, output) } -function onMessageFromMainEmscriptenThread (message) { +function onMessageFromMainEmscriptenThread(message) { if (!calledMain && !message.data.preMain) { if (!messageBuffer) { messageBuffer = [] @@ -9337,6 +9262,7 @@ function onMessageFromMainEmscriptenThread (message) { clearTimeout(messageResenderTimeout) messageResender() } + // console.log('worker got ' + JSON.stringify(message.data).substr(0, 150) + '\n'); switch (message.data.target) { case 'window': { self.fireEvent(message.data.event) @@ -9353,7 +9279,12 @@ function onMessageFromMainEmscriptenThread (message) { if (!self.renderOnDemand) { self.getRenderMethod()() } - } else throw 'ey?' + } else throw new Error('ey?') + break + } + case 'offscreenCanvas': { + self.offscreenCanvas = message.data.canvas + self.offscreenCanvasCtx = self.offscreenCanvas.getContext('2d') break } case 'video': { @@ -9378,13 +9309,8 @@ function onMessageFromMainEmscriptenThread (message) { self.subUrl = message.data.subUrl self.subContent = message.data.subContent self.fontFiles = message.data.fonts - self.renderMode = message.data.renderMode self.availableFonts = message.data.availableFonts self.debug = message.data.debug - if (!hasNativeConsole && self.debug) { - console = makeCustomConsole() - console.log('overridden console') - } if (Module.canvas) { Module.canvas.width_ = message.data.width Module.canvas.height_ = message.data.height @@ -9398,18 +9324,12 @@ function onMessageFromMainEmscriptenThread (message) { self.renderOnDemand = message.data.renderOnDemand || false self.dropAllAnimations = message.data.dropAllAnimations || false removeRunDependency('worker-init') - postMessage({ - target: 'ready' - }) - break - } - case 'offscreenCanvas': { - self.offscreenCanvas = message.data.canvas - self.offscreenCanvasCtx = self.offscreenCanvas.getContext('2d') break } case 'oneshot-render': - self.oneshotRender(message.data.lastRendered, message.data.renderNow || false, message.data.iteration) + self.oneshotRender(message.data.lastRendered, + message.data.renderNow || false, + message.data.iteration) break case 'destroy': self.octObj.quitLibrary() @@ -9423,30 +9343,34 @@ function onMessageFromMainEmscriptenThread (message) { case 'set-track-by-url': self.setTrackByUrl(message.data.url) break - case 'create-event': - var event = message.data.event - var i = self.octObj.allocEvent() - var evnt_ptr = self.octObj.track.get_events(i) - console.log(i, evnt_ptr) - _applyKeys(event, evnt_ptr) + case 'create-event': { + const event = message.data.event + const vargs = Object.keys(event) + const evntPtr = self.octObj.track.get_events(self.octObj.allocEvent()) + + for (const varg of vargs) { + evntPtr[varg] = event[varg] + } break - case 'get-events': - var events = [] - for (var i = 0; i < self.octObj.getEventCount(); i++) { - var evnt_ptr = self.octObj.track.get_events(i) - var event = { - Start: evnt_ptr.get_Start(), - Duration: evnt_ptr.get_Duration(), - ReadOrder: evnt_ptr.get_ReadOrder(), - Layer: evnt_ptr.get_Layer(), - Style: evnt_ptr.get_Style(), - Name: evnt_ptr.get_Name(), - MarginL: evnt_ptr.get_MarginL(), - MarginR: evnt_ptr.get_MarginR(), - MarginV: evnt_ptr.get_MarginV(), - Effect: evnt_ptr.get_Effect(), - Text: evnt_ptr.get_Text() + } + case 'get-events': { + const events = [] + for (let i = 0; i < self.octObj.getEventCount(); i++) { + const evntPtr = self.octObj.track.get_events(i) + const event = { + Start: evntPtr.get_Start(), + Duration: evntPtr.get_Duration(), + ReadOrder: evntPtr.get_ReadOrder(), + Layer: evntPtr.get_Layer(), + Style: evntPtr.get_Style(), + Name: evntPtr.get_Name(), + MarginL: evntPtr.get_MarginL(), + MarginR: evntPtr.get_MarginR(), + MarginV: evntPtr.get_MarginV(), + Effect: evntPtr.get_Effect(), + Text: evntPtr.get_Text() } + events.push(event) } postMessage({ @@ -9455,53 +9379,59 @@ function onMessageFromMainEmscriptenThread (message) { events: events }) break - case 'set-event': - var event = message.data.event - var i = message.data.index - var evnt_ptr = self.octObj.track.get_events(i) - _applyKeys(event, evnt_ptr) + } + case 'set-event': { + const event = message.data.event + const evntPtr = self.octObj.track.get_events(message.data.index) + + for (const varg of Object.keys(event)) { + evntPtr[varg] = event[varg] + } break + } case 'remove-event': - var i = message.data.index - self.octObj.removeEvent(i) + self.octObj.removeEvent(message.data.index) break - case 'create-style': - var style = message.data.style - var i = self.octObj.allocStyle() - var styl_ptr = self.octObj.track.get_styles(i) - _applyKeys(style, styl_ptr) + case 'create-style': { + const style = message.data.style + const stylPtr = self.octObj.track.get_styles(iself.octObj.allocStyle()) + + for (const varg of Object.keys(style)) { + stylPtr[varg] = style[varg] + } break - case 'get-styles': - var styles = [] - for (var i = 0; i < self.octObj.getStyleCount(); i++) { - var styl_ptr = self.octObj.track.get_styles(i) - var style = { - Name: styl_ptr.get_Name(), - FontName: styl_ptr.get_FontName(), - FontSize: styl_ptr.get_FontSize(), - PrimaryColour: styl_ptr.get_PrimaryColour(), - SecondaryColour: styl_ptr.get_SecondaryColour(), - OutlineColour: styl_ptr.get_OutlineColour(), - BackColour: styl_ptr.get_BackColour(), - Bold: styl_ptr.get_Bold(), - Italic: styl_ptr.get_Italic(), - Underline: styl_ptr.get_Underline(), - StrikeOut: styl_ptr.get_StrikeOut(), - ScaleX: styl_ptr.get_ScaleX(), - ScaleY: styl_ptr.get_ScaleY(), - Spacing: styl_ptr.get_Spacing(), - Angle: styl_ptr.get_Angle(), - BorderStyle: styl_ptr.get_BorderStyle(), - Outline: styl_ptr.get_Outline(), - Shadow: styl_ptr.get_Shadow(), - Alignment: styl_ptr.get_Alignment(), - MarginL: styl_ptr.get_MarginL(), - MarginR: styl_ptr.get_MarginR(), - MarginV: styl_ptr.get_MarginV(), - Encoding: styl_ptr.get_Encoding(), - treat_fontname_as_pattern: styl_ptr.get_treat_fontname_as_pattern(), - Blur: styl_ptr.get_Blur(), - Justify: styl_ptr.get_Justify() + } + case 'get-styles': { + const styles = [] + for (let i = 0; i < self.octObj.getStyleCount(); i++) { + const stylPtr = self.octObj.track.get_styles(i) + const style = { + Name: stylPtr.get_Name(), + FontName: stylPtr.get_FontName(), + FontSize: stylPtr.get_FontSize(), + PrimaryColour: stylPtr.get_PrimaryColour(), + SecondaryColour: stylPtr.get_SecondaryColour(), + OutlineColour: stylPtr.get_OutlineColour(), + BackColour: stylPtr.get_BackColour(), + Bold: stylPtr.get_Bold(), + Italic: stylPtr.get_Italic(), + Underline: stylPtr.get_Underline(), + StrikeOut: stylPtr.get_StrikeOut(), + ScaleX: stylPtr.get_ScaleX(), + ScaleY: stylPtr.get_ScaleY(), + Spacing: stylPtr.get_Spacing(), + Angle: stylPtr.get_Angle(), + BorderStyle: stylPtr.get_BorderStyle(), + Outline: stylPtr.get_Outline(), + Shadow: stylPtr.get_Shadow(), + Alignment: stylPtr.get_Alignment(), + MarginL: stylPtr.get_MarginL(), + MarginR: stylPtr.get_MarginR(), + MarginV: stylPtr.get_MarginV(), + Encoding: stylPtr.get_Encoding(), + treat_fontname_as_pattern: stylPtr.get_treat_fontname_as_pattern(), + Blur: stylPtr.get_Blur(), + Justify: stylPtr.get_Justify() } styles.push(style) } @@ -9511,15 +9441,19 @@ function onMessageFromMainEmscriptenThread (message) { styles: styles }) break - case 'set-style': - var style = message.data.style - var i = message.data.index - var styl_ptr = self.octObj.track.get_styles(i) - _applyKeys(style, styl_ptr) + } + case 'set-style': { + const style = message.data.style + const stylPtr = self.octObj.track.get_styles(message.data.index) + const vargs = Object.keys(style) + + for (const varg of vargs) { + stylPtr[varg] = style[varg] + } break + } case 'remove-style': - var i = message.data.index - self.octObj.removeStyle(i) + self.octObj.removeStyle(message.data.index) break case 'runBenchmark': { self.runBenchmark() @@ -9529,7 +9463,7 @@ function onMessageFromMainEmscriptenThread (message) { if (Module.onCustomMessage) { Module.onCustomMessage(message) } else { - throw 'Custom message received but worker Module.onCustomMessage not implemented.' + console.error('Custom message received but worker Module.onCustomMessage not implemented.') } break } @@ -9538,10 +9472,19 @@ function onMessageFromMainEmscriptenThread (message) { break } default: - throw 'wha? ' + message.data.target + throw new Error('wha? ' + message.data.target) } -} +}; + onmessage = onMessageFromMainEmscriptenThread + +function postCustomMessage(data) { + postMessage({ + target: 'custom', + userData: data + }) +} + self.runBenchmark = function (seconds, pos, async) { let totalTime = 0 let i = 0 @@ -9550,18 +9493,22 @@ self.runBenchmark = function (seconds, pos, async) { const count = seconds * self.targetFps const start = performance.now() let longestFrame = 0 - var run = function () { + const run = function () { const t0 = performance.now() + pos += 1 / self.targetFps self.setCurrentTime(pos) + const t1 = performance.now() const diff = t1 - t0 totalTime += diff if (diff > longestFrame) { longestFrame = diff } + if (i < count) { i++ + if (async) { self.requestAnimationFrame(run) return false @@ -9569,16 +9516,18 @@ self.runBenchmark = function (seconds, pos, async) { return true } } else { - console.log('Performance fps: ' + Math.round(1e3 / (totalTime / count)) + '') - console.log('Real fps: ' + Math.round(1e3 / ((t1 - start) / count)) + '') + console.log('Performance fps: ' + Math.round(1000 / (totalTime / count)) + '') + console.log('Real fps: ' + Math.round(1000 / ((t1 - start) / count)) + '') console.log('Total time: ' + totalTime) - console.log('Longest frame: ' + Math.ceil(longestFrame) + 'ms (' + Math.floor(1e3 / longestFrame) + ' fps)') + console.log('Longest frame: ' + Math.ceil(longestFrame) + 'ms (' + Math.floor(1000 / longestFrame) + ' fps)') + return false } } + while (true) { if (!run()) { break } } -} +} \ No newline at end of file diff --git a/app/js/subtitles-octopus-worker.wasm b/app/js/subtitles-octopus-worker.wasm index 3461054..ef2f165 100644 Binary files a/app/js/subtitles-octopus-worker.wasm and b/app/js/subtitles-octopus-worker.wasm differ diff --git a/app/js/subtitles-octopus.js b/app/js/subtitles-octopus.js index 92e1415..3dd9826 100644 --- a/app/js/subtitles-octopus.js +++ b/app/js/subtitles-octopus.js @@ -9,11 +9,11 @@ class SubtitlesOctopus { } } catch (e) { } - console.log('WebAssembly support detected: ' + (supportsWebAssembly ? 'yes' : 'no')) - + if (!supportsWebAssembly) { + throw new Error('WASM not supported!') + } const self = this self.canvas = options.canvas // HTML canvas element (optional if video specified) - self.renderMode = options.renderMode || (options.lossyRender ? 'fast' : (options.blendRender ? 'blend' : 'normal')) // play with those when you need some speed, e.g. for slow devices self.dropAllAnimations = options.dropAllAnimations || false @@ -25,18 +25,13 @@ class SubtitlesOctopus { self.hardHeightLimit = options.hardHeightLimit || 2160 // don't ever go above this limit self.resizeVariation = options.resizeVariation || 0.2 // by how many a size can vary before it would cause clearance of prerendered buffer - self.renderAhead = options.renderAhead || 0 // how many MiB to render ahead and store; 0 to disable (approximate) self.isOurCanvas = false // (internal) we created canvas and manage it self.video = options.video // HTML video element (optional if canvas specified) self.canvasParent = null // (internal) HTML canvas parent element self.fonts = options.fonts || [] // Array with links to fonts used in sub (optional) self.availableFonts = options.availableFonts || [] // Object with all available fonts (optional). Key is font name in lower case, value is link: {"arial": "/font1.ttf"} - self.onReadyEvent = options.onReady // Function called when SubtitlesOctopus is ready (optional) - if (supportsWebAssembly) { - self.workerUrl = options.workerUrl || 'subtitles-octopus-worker.js' // Link to WebAssembly worker - } else { - self.workerUrl = options.legacyWorkerUrl || 'subtitles-octopus-worker-legacy.js' // Link to legacy worker - } + self.onReadyEvent = options.onReady // Function called when SubtitleDuet is ready (optional) + self.workerUrl = options.workerUrl || 'subtitleDuetWorker.js' // Link to WebAssembly worker self.subUrl = options.subUrl // Link to sub file (optional if subContent specified) self.subContent = options.subContent || null // Sub content (optional if subUrl specified) self.onErrorEvent = options.onError // Function called in case of critical error meaning sub wouldn't be shown and you should use alternative method (for instance it occurs if browser doesn't support web workers). @@ -46,50 +41,6 @@ class SubtitlesOctopus { self.timeOffset = options.timeOffset || 0 // Time offset would be applied to currentTime from video (option) - self.renderedItems = [] // used to store items rendered ahead when renderAhead > 0 - self.renderAhead = self.renderAhead * 1024 * 1024 * 0.9 /* try to eat less than requested */ - self.oneshotState = { - eventStart: null, - eventOver: false, - iteration: 0, - renderRequested: false, - requestNextTimestamp: -1, - prevWidth: null, - prevHeight: null - } - - self.hasAlphaBug = false; - - (function () { - if (typeof ImageData.prototype.constructor === 'function') { - try { - // try actually calling ImageData, as on some browsers it's reported - // as existing but calling it errors out as "TypeError: Illegal constructor" - const test = new window.ImageData(new Uint8ClampedArray([0, 0, 0, 0]), 1, 1) - return - } catch (e) { - console.log('detected that ImageData is not constructable despite browser saying so') - } - } - - const canvas = document.createElement('canvas') - const ctx = canvas.getContext('2d') - - window.ImageData = function () { - let i = 0 - let data - if (arguments[0] instanceof Uint8ClampedArray) { - data = arguments[i++] - } - const width = arguments[i++] - const height = arguments[i] - - const imageData = ctx.createImageData(width, height) - if (data) imageData.data.set(data) - return imageData - } - })() - self.workerError = function (error) { console.error('Worker error: ', error) if (self.onErrorEvent) { @@ -124,22 +75,17 @@ class SubtitlesOctopus { URL: document.URL, currentScript: self.workerUrl, preMain: true, - renderMode: self.renderMode, subUrl: self.subUrl, subContent: self.subContent, fonts: self.fonts, availableFonts: self.availableFonts, - debug: self.debug, targetFps: self.targetFps, libassMemoryLimit: self.libassMemoryLimit, libassGlyphLimit: self.libassGlyphLimit, - renderOnDemand: self.renderAhead > 0, dropAllAnimations: self.dropAllAnimations }) - if (self.renderMode === 'offscreenCanvas') { - self.pushOffscreenCanvas() - self.initDone = true - } + self.pushOffscreenCanvas() + self.initDone = true } self.pushOffscreenCanvas = function () { const canvasControl = self.canvas.transferControlToOffscreen() @@ -171,32 +117,6 @@ class SubtitlesOctopus { self.workerError('Don\'t know where to render: you should give video or canvas in options.') } } - if (!(self.renderMode === 'offscreenCanvas')) { - self.ctx = self.canvas.getContext('2d') - } - self.bufferCanvas = document.createElement('canvas') - self.bufferCanvasCtx = self.bufferCanvas.getContext('2d') - self.bufferCanvas2 = document.createElement('canvas') - self.bufferCanvasCtx2 = self.bufferCanvas.getContext('2d') - - // test for alpha bug, where e.g. WebKit can render a transparent pixel - // (with alpha == 0) as non-black which then leads to visual artifacts - self.bufferCanvas.width = 1 - self.bufferCanvas.height = 1 - self.bufferCanvas2.width = 1 - self.bufferCanvas2.height = 1 - const testBuf = new Uint8ClampedArray([0, 255, 0, 0]) - const testImage = new ImageData(testBuf, 1, 1) - self.bufferCanvasCtx.clearRect(0, 0, 1, 1) - self.bufferCanvasCtx2.clearRect(0, 0, 1, 1) - const prePut = self.bufferCanvasCtx2.getImageData(0, 0, 1, 1).data - self.bufferCanvasCtx.putImageData(testImage, 0, 0) - self.bufferCanvasCtx2.drawImage(self.bufferCanvas, 0, 0) - const postPut = self.bufferCanvasCtx2.getImageData(0, 0, 1, 1).data - self.hasAlphaBug = prePut[1] !== postPut[1] - if (self.hasAlphaBug) { - console.log('Detected a browser having issue with transparent pixels, applying workaround') - } } self.setVideo = function (video) { @@ -276,241 +196,9 @@ class SubtitlesOctopus { self.subUrl = subUrl } - function _cleanPastRendered (currentTime, seekClean) { - let retainedItems = [] - for (const item in self.renderedItems) { - if (item.emptyFinish < 0 || item.emptyFinish >= currentTime) { - // item is not yet finished, retain it - retainedItems.push(item) - } - } - - if (seekClean && retainedItems.length > 0) { - // items are ordered by event start time when we push to self.renderedItems, - // so first item is the earliest - if (currentTime < retainedItems[0].eventStart) { - if (retainedItems[0].eventStart - currentTime > 60) { - console.info('seeked back too far, cleaning prerender buffer') - retainedItems = [] - } else { - console.info('seeked backwards, need to free up some buffer') - let size = 0; const limit = self.renderAhead * 0.3 /* try to take no more than 1/3 of buffer */ - const retain = [] - for (const item in retainedItems) { - size += item.size - if (size >= limit) { break } - retain.push(item) - } - retainedItems = retain - } - } - } - - const removed = retainedItems.length < self.renderedItems - self.renderedItems = retainedItems - return removed - } - - function tryRequestOneshot (currentTime, renderNow) { - if (!self.renderAhead || self.renderAhead <= 0) { return } - if (self.oneshotState.renderRequested && !renderNow) { return } - - if (typeof currentTime === 'undefined') { - if (!self.video) { return } - currentTime = self.video.currentTime + self.timeOffset - } - - let size = 0 - for (let i = 0, len = self.renderedItems.length; i < len; i++) { - const item = self.renderedItems[i] - if (item.emptyFinish < 0) { - console.info('oneshot already reached end-of-events') - return - } - if (currentTime >= item.eventStart && currentTime < item.emptyFinish) { - // an event for requested time already exists - console.debug('not requesting a render for ' + currentTime + - ' as event already covering it exists (start=' + - item.eventStart + ', empty=' + item.emptyFinish + ')') - return - } - size += item.size - } - - if (size <= self.renderAhead) { - lastRendered = currentTime - (renderNow ? 0 : 0.001) - if (!self.oneshotState.renderRequested) { - self.oneshotState.renderRequested = true - self.worker.postMessage({ - target: 'oneshot-render', - lastRendered: lastRendered, - renderNow: renderNow, - iteration: self.oneshotState.iteration - }) - } else { - if (self.workerActive) { - console.info('worker busy, requesting to seek') - } - self.oneshotState.requestNextTimestamp = lastRendered - } - } - } - - function _renderSubtitleEvent (event, currentTime) { - const eventOver = event.eventFinish < currentTime - if (self.oneshotState.eventStart === event.eventStart && self.oneshotState.eventOver === eventOver) { return } - self.oneshotState.eventStart = event.eventStart - self.oneshotState.eventOver = eventOver - - const beforeDrawTime = performance.now() - if (event.viewport.width !== self.canvas.width || event.viewport.height !== self.canvas.height) { - self.canvas.width = event.viewport.width - self.canvas.height = event.viewport.height - } - self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height) - if (!eventOver) { - for (let i = 0; i < event.items.length; i++) { - const image = event.items[i] - self.bufferCanvas.width = image.w - self.bufferCanvas.height = image.h - self.bufferCanvasCtx.putImageData(image.image, 0, 0) - self.ctx.drawImage(self.bufferCanvas, image.x, image.y) - } - } - if (self.debug) { - const drawTime = Math.round(performance.now() - beforeDrawTime) - console.log('render: ' + Math.round(event.spentTime - event.blendTime) + ' ms, blend: ' + Math.round(event.blendTime) + ' ms, draw: ' + drawTime + ' ms') - } - } - - function oneshotRender () { - window.requestAnimationFrame(oneshotRender) - if (!self.video) { return } - - const currentTime = self.video.currentTime + self.timeOffset - let finishTime = -1; let eventShown = false; let animated = false - for (let i = 0, len = self.renderedItems.length; i < len; i++) { - const item = self.renderedItems[i] - if (!eventShown && item.eventStart <= currentTime && (item.emptyFinish < 0 || item.emptyFinish > currentTime)) { - _renderSubtitleEvent(item, currentTime) - eventShown = true - finishTime = item.emptyFinish - } else if (finishTime >= 0) { - // we've already found a known event, now find - // the farthest point of consequent events - // NOTE: self.renderedItems may have gaps due to seeking - if (item.eventStart - finishTime < 0.01) { - finishTime = item.emptyFinish - animated = item.animated - } else { - break - } - } - } - - if (!eventShown) { - if (Math.abs(self.oneshotState.requestNextTimestamp - currentTime) > 0.01) { - _cleanPastRendered(currentTime) - tryRequestOneshot(currentTime, true) - } - } else if (_cleanPastRendered(currentTime) && finishTime >= 0) { - tryRequestOneshot(finishTime, animated) - } - } - - self.resetRenderAheadCache = function (isResizing) { - if (self.renderAhead > 0) { - const newCache = [] - if (isResizing && self.oneshotState.prevHeight && self.oneshotState.prevWidth) { - if (self.oneshotState.prevHeight === self.canvas.height && - self.oneshotState.prevWidth === self.canvas.width) { return } - let timeLimit = 10; let sizeLimit = self.renderAhead * 0.3 - if (self.canvas.height >= self.oneshotState.prevHeight * (1.0 - self.resizeVariation) && - self.canvas.height <= self.oneshotState.prevHeight * (1.0 + self.resizeVariation) && - self.canvas.width >= self.oneshotState.prevWidth * (1.0 - self.resizeVariation) && - self.canvas.width <= self.oneshotState.prevWidth * (1.0 + self.resizeVariation)) { - console.debug('viewport changes are small, leaving more of prerendered buffer') - timeLimit = 30 - sizeLimit = self.renderAhead * 0.5 - } - const stopTime = self.video.currentTime + self.timeOffset + timeLimit - let size = 0 - for (let i = 0; i < self.renderedItems.length; i++) { - const item = self.renderedItems[i] - if (item.emptyFinish < 0 || item.emptyFinish >= stopTime) { break } - size += item.size - if (size >= sizeLimit) { break } - newCache.push(item) - } - } - - console.info('resetting prerender cache') - self.renderedItems = newCache - self.oneshotState.eventStart = null - self.oneshotState.iteration++ - self.oneshotState.renderRequested = false - self.oneshotState.prevHeight = self.canvas.height - self.oneshotState.prevWidth = self.canvas.width - - window.requestAnimationFrame(oneshotRender) - tryRequestOneshot(undefined, true) - } - } - - self.renderFrameData = null - function renderFrames () { - const data = self.renderFramesData - const beforeDrawTime = performance.now() - self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height) - for (let i = 0; i < data.canvases.length; i++) { - const image = data.canvases[i] - self.bufferCanvas.width = image.w - self.bufferCanvas.height = image.h - const imageBuffer = new Uint8ClampedArray(image.buffer) - if (self.hasAlphaBug) { - for (let j = 3; j < imageBuffer.length; j = j + 4) { - imageBuffer[j] = (imageBuffer[j] >= 1) ? imageBuffer[j] : 1 - } - } - const imageData = new ImageData(imageBuffer, image.w, image.h) - self.bufferCanvasCtx.putImageData(imageData, 0, 0) - self.ctx.drawImage(self.bufferCanvas, image.x, image.y) - } - if (self.debug) { - const drawTime = Math.round(performance.now() - beforeDrawTime) - const blendTime = data.blendTime - if (typeof blendTime !== 'undefined') { - console.log('render: ' + Math.round(data.spentTime - blendTime) + ' ms, blend: ' + Math.round(blendTime) + ' ms, draw: ' + drawTime + ' ms; TOTAL=' + Math.round(data.spentTime + drawTime) + ' ms') - } else { - console.log(Math.round(data.spentTime) + ' ms (+ ' + drawTime + ' ms draw)') - } - self.renderStart = performance.now() - } - } - - /** - * Lossy Render Mode - * - */ - function renderFastFrames () { - const data = self.renderFramesData - const beforeDrawTime = performance.now() - self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height) - for (let i = 0; i < data.bitmaps.length; i++) { - const image = data.bitmaps[i] - self.ctx.drawImage(image.bitmap, image.x, image.y) - } - if (self.debug) { - const drawTime = Math.round(performance.now() - beforeDrawTime) - console.log(data.bitmaps.length + ' bitmaps, libass: ' + Math.round(data.libassTime) + 'ms, decode: ' + Math.round(data.decodeTime) + 'ms, draw: ' + drawTime + 'ms') - self.renderStart = performance.now() - } - } - self.workerActive = false self.frameId = 0 self.onWorkerMessage = function (event) { - // dump('\nclient got ' + JSON.stringify(event.data).substr(0, 150) + '\n'); if (!self.workerActive) { self.workerActive = true if (self.onReadyEvent) { @@ -556,153 +244,50 @@ class SubtitlesOctopus { } case 'canvas': { switch (data.op) { - case 'getContext': { - if (!(self.renderMode === 'offscreenCanvas')) { self.ctx = self.canvas.getContext(data.type, data.attributes) } - break - } case 'resize': { self.resize(data.width, data.height) break } - case 'renderCanvas': { - if (self.lastRenderTime < data.time) { - self.lastRenderTime = data.time - self.renderFramesData = data - window.requestAnimationFrame(renderFrames) - } - break - } - case 'renderFastCanvas': { - if (self.lastRenderTime < data.time) { - self.lastRenderTime = data.time - self.renderFramesData = data - window.requestAnimationFrame(renderFastFrames) - } - break - } case 'setObjectProperty': { self.canvas[data.object][data.property] = data.value break } - case 'oneshot-result': { - if (data.iteration !== self.oneshotState.iteration) { - console.debug('received stale prerender, ignoring') - return - } - - if (self.debug) { - console.info('oneshot received (start=' + - data.eventStart + ', empty=' + data.emptyFinish + - '), render: ' + Math.round(data.spentTime) + ' ms') - } - self.oneshotState.renderRequested = false - if (Math.abs(data.lastRenderedTime - self.oneshotState.requestNextTimestamp) < 0.01) { - self.oneshotState.requestNextTimestamp = -1 - } - if (data.eventStart - data.lastRenderedTime > 0.01) { - // generate bogus empty element, so all timeline is covered anyway - self.renderedItems.push({ - eventStart: data.lastRenderedTime, - eventFinish: data.lastRenderedTime - 0.001, - emptyFinish: data.eventStart, - viewport: data.viewport, - spentTime: 0, - blendTime: 0, - items: [], - animated: false, - size: 0 - }) - } - - const items = [] - let size = 0 - for (let i = 0, len = data.canvases.length; i < len; i++) { - const item = data.canvases[i] - items.push({ - w: item.w, - h: item.h, - x: item.x, - y: item.y, - image: new ImageData(new Uint8ClampedArray(item.buffer), item.w, item.h) - }) - size += item.buffer.byteLength - } - - let eventSplitted = false - if ((data.emptyFinish > 0 && data.emptyFinish - data.eventStart < 1.0 / self.targetFps) || data.animated) { - const newFinish = data.eventStart + 1.0 / self.targetFps - data.emptyFinish = newFinish - data.eventFinish = newFinish - eventSplitted = true - } - self.renderedItems.push({ - eventStart: data.eventStart, - eventFinish: data.eventFinish, - emptyFinish: data.emptyFinish, - spentTime: data.spentTime, - blendTime: data.blendTime, - viewport: data.viewport, - items: items, - animated: data.animated, - size: size + case 'tick': { + self.frameId = data.id + self.worker.postMessage({ + target: 'tock', + id: self.frameId }) - - self.renderedItems.sort(function (a, b) { - return a.eventStart - b.eventStart - }) - - if (self.oneshotState.requestNextTimestamp >= 0) { - // requesting an out of order event render - tryRequestOneshot(self.oneshotState.requestNextTimestamp, true) - } else if (data.eventStart < 0) { - console.info('oneshot received "end of frames" event') - } else if (data.emptyFinish >= 0) { - // there's some more event to render, try requesting next event - tryRequestOneshot(data.emptyFinish, eventSplitted) + break + } + case 'custom': { + if (self.onCustomMessage) { + self.onCustomMessage(event) } else { - console.info('there are no more events to prerender') + console.error('Custom message received but client onCustomMessage not implemented.') } break } + case 'setimmediate': { + self.worker.postMessage({ + target: 'setimmediate' + }) + break + } + case 'get-events': { + console.log(data.target) + console.log(data.events) + break + } + case 'get-styles': { + console.log(data.target) + console.log(data.styles) + break + } default: - console.error('eh?') + throw data.target } - break } - case 'tick': { - self.frameId = data.id - self.worker.postMessage({ - target: 'tock', - id: self.frameId - }) - break - } - case 'custom': { - if (self.onCustomMessage) { - self.onCustomMessage(event) - } else { - console.error('Custom message received but client onCustomMessage not implemented.') - } - break - } - case 'setimmediate': { - self.worker.postMessage({ - target: 'setimmediate' - }) - break - } - case 'get-events': { - console.log(data.target) - console.log(data.events) - break - } - case 'get-styles': { - console.log(data.target) - console.log(data.styles) - break - } - default: - throw data.target } } @@ -773,13 +358,13 @@ class SubtitlesOctopus { } if (!(self.canvas.width === width && self.canvas.height === height)) { // only re-paint if dimensions actually changed - if (self.renderMode === 'offscreenCanvas' && self.initDone) { + if (self.initDone) { self.canvasParent.remove() self.canvasParent = undefined self.createCanvas() } function rePaint () { - if (self.canvasParent && self.renderMode === 'offscreenCanvas' && self.initDone) { + if (self.canvasParent && self.initDone) { self.canvasParent.remove() self.createCanvas() } @@ -793,7 +378,7 @@ class SubtitlesOctopus { self.canvas.style.left = left + 'px' self.canvas.style.pointerEvents = 'none' } - if (self.renderMode === 'offscreenCanvas' && self.initDone) { + if (self.initDone) { self.pushOffscreenCanvas() } self.worker.postMessage({ @@ -801,7 +386,6 @@ class SubtitlesOctopus { width: self.canvas.width, height: self.canvas.height }) - self.resetRenderAheadCache(true) } // dont spam re-paints like crazy when re-sizing with animations, but still update instantly without them if (self.resizeTimeoutBuffer) { @@ -851,7 +435,6 @@ class SubtitlesOctopus { target: 'set-track-by-url', url: url }) - self.resetRenderAheadCache(false) } self.setTrack = function (content) { @@ -859,14 +442,12 @@ class SubtitlesOctopus { target: 'set-track', content: content }) - self.resetRenderAheadCache(false) } self.freeTrack = function (content) { self.worker.postMessage({ target: 'free-track' }) - self.resetRenderAheadCache(false) } self.render = self.setCurrentTime @@ -958,13 +539,3 @@ class SubtitlesOctopus { self.init() } } - -if (typeof SubtitlesOctopusOnLoad === 'function') { - SubtitlesOctopusOnLoad() -} - -if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = SubtitlesOctopus - } -}