Skip to content

Instantly share code, notes, and snippets.

@jnorthrup
Created May 24, 2013 02:54
Show Gist options
  • Save jnorthrup/5640997 to your computer and use it in GitHub Desktop.
Save jnorthrup/5640997 to your computer and use it in GitHub Desktop.
void foo() {
}
#include <stdio.h>
#include <emscripten/bind.h>
void print_some_stuff(int a, float b, const std::string& s) {
printf("print_some_stuff: %d, %f, %s\n", a, b, s.c_str());
}
EMSCRIPTEN_BINDINGS(foo) {
emscripten::function("print_some_stuff", &print_some_stuff);
}
env = Environment(
toolpath=['../../scons-tools'],
tools=['cc', 'c++', 'ar', 'emscripten', 'llvm', 'closure'],
LLVM_ROOT='/home/jim/llvm32build/bin',
CLANG='clang',
CLANGXX='clang++',
LLVM_LINK='llvm-link',
LLVM_OPT='opt',
LLVM_DIS='llvm-dis',
EMSCRIPTEN_VERSION_FILE=File('build/version_file'),
EMSCRIPTEN_SETTINGS={
'ASM_JS': 0,
})
env['BUILDERS']['WrapInModule'] = Builder(
action='cp $SOURCE $TARGET',
)
env.Append()
a1 = env.Object('build/foo.bc', 'foo.cpp')
a2 = env.Object('build/bar.bc', 'bar.cpp')
total = env.LLVMLink('build/thelibrary.bc', [a1, a2])
env.emscripten('build/thelibrary.js', total)
var thelibrary = require('./build/thelibrary.js');
thelibrary.Module.print_some_stuff(1, 2, 'hello world');
function b(c) {
throw c;
}
var i = void 0, p = !0, r = null, t = !1;
function aa() {
return function() {
}
}
var v = v || {}, ca = [{}], ja = [];
v.count_emval_handles = function() {
for(var c = 0, a = 1;a < ca.length;++a) {
ca[a] !== i && ++c
}
return c
};
v.get_first_emval = function() {
for(var c = 1;c < ca.length;++c) {
if(ca[c] !== i) {
return ca[c]
}
}
return r
};
Function("return this")();
var sa = v.Da = ra(Error, "InternalError"), ta = v.Ca = ra(Error, "BindingError"), wa = v.Fa = ra(ta, "UnboundTypeError");
function Aa(c) {
b(new ta(c))
}
function ra(c, a) {
var d = Ba(a, function(c) {
this.name = a;
this.message = c;
c = Error(c).stack;
c !== i && (this.stack = this.toString() + "\n" + c.replace(/^Error(:[^\n]*)?\n/, ""))
});
d.prototype = Object.create(c.prototype);
d.prototype.toString = function() {
return this.message === i ? this.name : this.name + ": " + this.message
};
return d
}
function Ba(c, a) {
c = La(c);
return(new Function("body", "return function " + c + '() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(a)
}
function Ma(c) {
var a = typeof c;
return"object" === a || "array" === a || "function" === a ? c.toString() : "" + c
}
var Na = {}, Oa = {}, Za = {};
function $a(c, a) {
var d = a.name;
c || Aa('type "' + d + '" must have a positive integer typeid pointer');
Na.hasOwnProperty(c) && Aa("Cannot register type '" + d + "' twice");
Na[c] = a;
delete Za[c];
Oa.hasOwnProperty(c) && (d = Oa[c], delete Oa[c], d.forEach(function(a) {
a()
}))
}
for(var Db, Eb = Array(256), Fb = 0;256 > Fb;++Fb) {
Eb[Fb] = String.fromCharCode(Fb)
}
Db = Eb;
function Gb(c) {
for(var a = "";x[c];) {
a += Db[x[c++]]
}
return a
}
function Hb(c) {
c = Ib(c);
c = Gb(c);
fc();
return c
}
function gc(c, a, d, e) {
a = Gb(a);
-1 === e && (e = 4294967295);
$a(c, {name:a, Qa:d, Pa:e, fromWireType:function(a) {
return a
}, toWireType:function(c, g) {
"number" !== typeof g && "boolean" !== typeof g && b(new TypeError('Cannot convert "' + Ma(g) + '" to ' + this.name));
(g < d || g > e) && b(new TypeError('Passing a number "' + Ma(g) + '" from JS side to C/C++ side to an argument of type "' + a + '", which is outside the valid range [' + d + ", " + e + "]!"));
return g | 0
}, d:r})
}
function hc(c, a) {
a = Gb(a);
$a(c, {name:a, fromWireType:function(a) {
return a
}, toWireType:function(a, c) {
"number" !== typeof c && "boolean" !== typeof c && b(new TypeError('Cannot convert "' + Ma(c) + '" to ' + this.name));
return c
}, d:r})
}
function ic(c) {
for(;c.length;) {
var a = c.pop();
c.pop()(a)
}
}
var jc = [];
function kc() {
for(;jc.length;) {
var c = jc.pop();
c.Ba.La = t;
c["delete"]()
}
}
v.flushPendingDeletes = kc;
var lc;
v.setDelayFunction = function(c) {
lc = c;
jc.length && lc && lc(kc)
};
var mc = 48, nc = 57;
function La(c) {
var c = c.replace(/[^a-zA-Z0-9_]/g, "$"), a = c.charCodeAt(0);
return a >= mc && a <= nc ? "_" + c : c
}
try {
this.Module = v
}catch(oc) {
this.Module = v = {}
}
var pc = "object" === typeof process && "function" === typeof require, qc = "object" === typeof window, rc = "function" === typeof importScripts, sc = !qc && !pc && !rc;
if(pc) {
v.print = function(c) {
process.stdout.write(c + "\n")
};
v.printErr = function(c) {
process.stderr.write(c + "\n")
};
var nd = require("fs"), od = require("path");
v.read = function(c, a) {
var c = od.normalize(c), d = nd.readFileSync(c);
!d && c != od.resolve(c) && (c = path.join(__dirname, "..", "src", c), d = nd.readFileSync(c));
d && !a && (d = d.toString());
return d
};
v.readBinary = function(c) {
return v.read(c, p)
};
v.load = function(c) {
pd(read(c))
};
v.arguments || (v.arguments = process.argv.slice(2))
}
sc && (v.print = print, "undefined" != typeof printErr && (v.printErr = printErr), v.read = read, v.readBinary = function(c) {
return read(c, "binary")
}, v.arguments || ("undefined" != typeof scriptArgs ? v.arguments = scriptArgs : "undefined" != typeof arguments && (v.arguments = arguments)));
qc && !rc && (v.print || (v.print = function(c) {
console.log(c)
}), v.printErr || (v.printErr = function(c) {
console.log(c)
}));
if(qc || rc) {
v.read = function(c) {
var a = new XMLHttpRequest;
a.open("GET", c, t);
a.send(r);
return a.responseText
}, v.arguments || "undefined" != typeof arguments && (v.arguments = arguments)
}
rc && (v.print || (v.print = aa()), v.load = importScripts);
!rc && (!qc && !pc && !sc) && b("Unknown runtime environment. Where are we?");
function pd(c) {
eval.call(r, c)
}
"undefined" == !v.load && v.read && (v.load = function(c) {
pd(v.read(c))
});
v.print || (v.print = aa());
v.printErr || (v.printErr = v.print);
v.arguments || (v.arguments = []);
v.print = v.print;
v.g = v.printErr;
v.preRun || (v.preRun = []);
v.postRun || (v.postRun = []);
var A = {H:function() {
return z
}, $:function(c) {
z = c
}, Ma:function(c, a) {
a = a || 4;
if(1 == a) {
return c
}
if(isNumber(c) && isNumber(a)) {
return Math.ceil(c / a) * a
}
if(isNumber(a) && isPowerOfTwo(a)) {
var d = log2(a);
return"((((" + c + ")+" + (a - 1) + ")>>" + d + ")<<" + d + ")"
}
return"Math.ceil((" + c + ")/" + a + ")*" + a
}, pa:function(c) {
return c in A.ea || c in A.ca
}, qa:function(c) {
return"*" == c[c.length - 1]
}, sa:function(c) {
return isPointerType(c) ? t : /^\[\d+\ x\ (.*)\]/.test(c) || /<?{ ?[^}]* ?}>?/.test(c) ? p : "%" == c[0]
}, ea:{i1:0, i8:0, i16:0, i32:0, i64:0}, ca:{"float":0, "double":0}, Va:function(c, a) {
return(c | 0 | a | 0) + 4294967296 * (Math.round(c / 4294967296) | Math.round(a / 4294967296))
}, Ja:function(c, a) {
return((c | 0) & (a | 0)) + 4294967296 * (Math.round(c / 4294967296) & Math.round(a / 4294967296))
}, $a:function(c, a) {
return((c | 0) ^ (a | 0)) + 4294967296 * (Math.round(c / 4294967296) ^ Math.round(a / 4294967296))
}, B:function(c) {
if(1 == A.c) {
return 1
}
var a = {"%i1":1, "%i8":1, "%i16":2, "%i32":4, "%i64":8, "%float":4, "%double":8}["%" + c];
a || ("*" == c.charAt(c.length - 1) ? a = A.c : "i" == c[0] && (c = parseInt(c.substr(1)), B(0 == c % 8), a = c / 8));
return a
}, O:function(c) {
return Math.max(A.B(c), A.c)
}, ka:function(c, a) {
var d = {};
return a ? c.filter(function(c) {
return d[c[a]] ? t : d[c[a]] = p
}) : c.filter(function(a) {
return d[a] ? t : d[a] = p
})
}, set:function() {
for(var c = "object" === typeof arguments[0] ? arguments[0] : arguments, a = {}, d = 0;d < c.length;d++) {
a[c[d]] = 0
}
return a
}, Ea:8, A:function(c, a, d) {
return"i64" == c || "double" == c || d ? 8 : !c ? Math.min(a, 8) : Math.min(a || (c ? A.O(c) : 0), A.c)
}, ha:function(c) {
c.f = 0;
c.m = 0;
var a = [], d = -1;
c.N = c.w.map(function(e) {
var f, g;
A.pa(e) || A.qa(e) ? (f = A.B(e), g = A.A(e, f)) : A.sa(e) ? (f = Types.types[e].f, g = A.A(r, Types.types[e].m)) : "b" == e[0] ? (f = e.substr(1) | 0, g = 1) : b("Unclear type in struct: " + e + ", in " + c.ua + " :: " + dump(Types.types[c.ua]));
c.Wa && (g = 1);
c.m = Math.max(c.m, g);
e = A.k(c.f, g);
c.f = e + f;
0 <= d && a.push(e - d);
return d = e
});
c.f = A.k(c.f, c.m);
0 == a.length ? c.M = c.f : 1 == A.ka(a).length && (c.M = a[0]);
c.Ra = 1 != c.M;
return c.N
}, ma:function(c, a, d) {
var e, f;
if(a) {
d = d || 0;
e = ("undefined" === typeof Types ? A.Za : Types.types)[a];
if(!e) {
return r
}
if(e.w.length != c.length) {
return printErr("Number of named fields must match the type for " + a + ": possibly duplicate struct names. Cannot return structInfo"), r
}
f = e.N
}else {
e = {w:c.map(function(a) {
return a[0]
})}, f = A.ha(e)
}
var g = {Ha:e.f};
a ? c.forEach(function(a, c) {
if("string" === typeof a) {
g[a] = f[c] + d
}else {
var j, m;
for(m in a) {
j = m
}
g[j] = A.ma(a[j], e.w[c], f[c])
}
}) : c.forEach(function(a, c) {
g[a[1]] = f[c]
});
return g
}, u:function(c, a, d) {
if(d && d.length) {
return B(d.length == c.length - 1), F[a].apply(r, d)
}
B(1 == c.length);
return F[a]()
}, Ia:function(c) {
var a = F.length;
F.push(c);
F.push(0);
return a
}, Xa:function(c) {
F[c] = r
}, j:function(c) {
A.j.F || (A.j.F = {});
A.j.F[c] || (A.j.F[c] = 1, v.g(c))
}, z:{}, Na:function(c, a) {
B(a);
A.z[c] || (A.z[c] = function() {
return A.u(a, c, arguments)
});
return A.z[c]
}, r:function() {
var c = [], a = 0;
this.X = function(d) {
d &= 255;
a && (c.push(d), a--);
if(0 == c.length) {
if(128 > d) {
return String.fromCharCode(d)
}
c.push(d);
a = 191 < d && 224 > d ? 1 : 2;
return""
}
if(0 < a) {
return""
}
var d = c[0], e = c[1], f = c[2], d = 191 < d && 224 > d ? String.fromCharCode((d & 31) << 6 | e & 63) : String.fromCharCode((d & 15) << 12 | (e & 63) << 6 | f & 63);
c.length = 0;
return d
};
this.va = function(a) {
for(var a = unescape(encodeURIComponent(a)), c = [], f = 0;f < a.length;f++) {
c.push(a.charCodeAt(f))
}
return c
}
}, G:function(c) {
var a = z;
z = z + c | 0;
z = z + 7 >> 3 << 3;
B((z | 0) < (qd | 0));
return a
}, aa:function(c) {
var a = rd;
rd = rd + (B(!sd), c) | 0;
rd = rd + 7 >> 3 << 3;
return a
}, o:function(c) {
var a = td;
td = td + (B(0 < td), c) | 0;
td = td + 7 >> 3 << 3;
td >= ud && vd("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");
return a
}, k:function(c, a) {
return Math.ceil(c / (a ? a : 8)) * (a ? a : 8)
}, ta:function(c, a, d) {
return d ? (c >>> 0) + 4294967296 * (a >>> 0) : (c >>> 0) + 4294967296 * (a | 0)
}, da:8, c:4, Ga:0}, wd, xd, yd;
function vd(c) {
v.print(c + ":\n" + Error().stack);
b("Assertion: " + c)
}
function B(c, a) {
c || vd("Assertion failed: " + a)
}
var zd = this;
v.ccall = function(c, a, d, e) {
return Ad(Bd(c), a, d, e)
};
function Bd(c) {
try {
var a = zd.Module["_" + c];
a || (a = eval("_" + c))
}catch(d) {
}
B(a, "Cannot call unknown function " + c + " (perhaps LLVM optimizations or closure removed it?)");
return a
}
function Ad(c, a, d, e) {
function f(a, c) {
if("string" == c) {
if(a === r || a === i || 0 === a) {
return 0
}
g || (g = A.H());
var d = A.G(a.length + 1);
Cd(a, d);
return d
}
return"array" == c ? (g || (g = A.H()), d = A.G(a.length), Dd(a, d), d) : a
}
var g = 0, h = 0, e = e ? e.map(function(a) {
return f(a, d[h++])
}) : [];
c = c.apply(r, e);
"string" == a ? a = Ed(c) : (B("array" != a), a = c);
g && A.$(g);
return a
}
v.cwrap = function(c, a, d) {
var e = Bd(c);
return function() {
return Ad(e, a, d, Array.prototype.slice.call(arguments))
}
};
function Fd(c, a, d) {
d = d || "i8";
"*" === d.charAt(d.length - 1) && (d = "i32");
switch(d) {
case "i1":
I[c] = a;
break;
case "i8":
I[c] = a;
break;
case "i16":
Gd[c >> 1] = a;
break;
case "i32":
J[c >> 2] = a;
break;
case "i64":
yd = [a >>> 0, Math.min(Math.floor(a / 4294967296), 4294967295) >>> 0];
J[c >> 2] = yd[0];
J[c + 4 >> 2] = yd[1];
break;
case "float":
Hd[c >> 2] = a;
break;
case "double":
Id[c >> 3] = a;
break;
default:
vd("invalid type for setValue: " + d)
}
}
v.setValue = Fd;
v.getValue = function(c, a) {
a = a || "i8";
"*" === a.charAt(a.length - 1) && (a = "i32");
switch(a) {
case "i1":
return I[c];
case "i8":
return I[c];
case "i16":
return Gd[c >> 1];
case "i32":
return J[c >> 2];
case "i64":
return J[c >> 2];
case "float":
return Hd[c >> 2];
case "double":
return Id[c >> 3];
default:
vd("invalid type for setValue: " + a)
}
return r
};
var Jd = 0, Kd = 1, M = 2, Ld = 4;
v.ALLOC_NORMAL = Jd;
v.ALLOC_STACK = Kd;
v.ALLOC_STATIC = M;
v.ALLOC_DYNAMIC = 3;
v.ALLOC_NONE = Ld;
function O(c, a, d, e) {
var f, g;
"number" === typeof c ? (f = p, g = c) : (f = t, g = c.length);
var h = "string" === typeof a ? a : r, d = d == Ld ? e : [Md, A.G, A.aa, A.o][d === i ? M : d](Math.max(g, h ? 1 : a.length));
if(f) {
e = d;
B(0 == (d & 3));
for(c = d + (g & -4);e < c;e += 4) {
J[e >> 2] = 0
}
for(c = d + g;e < c;) {
I[e++ | 0] = 0
}
return d
}
if("i8" === h) {
return x.set(new Uint8Array(c), d), d
}
for(var e = 0, k, j;e < g;) {
var m = c[e];
"function" === typeof m && (m = A.Oa(m));
f = h || a[e];
0 === f ? e++ : (B(f, "Must know what type to store in allocate!"), "i64" == f && (f = "i32"), Fd(d + e, m, f), j !== f && (k = A.B(f), j = f), e += k)
}
return d
}
v.allocate = O;
function Ed(c, a) {
for(var d = t, e, f = 0;;) {
e = x[c + f | 0];
if(128 <= e) {
d = p
}else {
if(0 == e && !a) {
break
}
}
f++;
if(a && f == a) {
break
}
}
a || (a = f);
var g = "";
if(!d) {
for(;0 < a;) {
e = String.fromCharCode.apply(String, x.subarray(c, c + Math.min(a, 1024))), g = g ? g + e : e, c += 1024, a -= 1024
}
return g
}
d = new A.r;
for(f = 0;f < a;f++) {
B(c + f < ud), e = x[c + f | 0], g += d.X(e)
}
return g
}
v.Pointer_stringify = Ed;
var Nd = 4096, I, x, Gd, Od, J, ee, Hd, Id, pe = 0, rd = 0, sd = t, qe = 0, z = 0, qd = 0, re = 0, td = 0, ud = v.TOTAL_MEMORY || 16777216;
B(!!Int32Array && !!Float64Array && !!(new Int32Array(1)).subarray && !!(new Int32Array(1)).set, "Cannot fallback to non-typed array case: Code is too specialized");
var se = new ArrayBuffer(ud);
I = new Int8Array(se);
Gd = new Int16Array(se);
J = new Int32Array(se);
x = new Uint8Array(se);
Od = new Uint16Array(se);
ee = new Uint32Array(se);
Hd = new Float32Array(se);
Id = new Float64Array(se);
J[0] = 255;
B(255 === x[0] && 0 === x[3], "Typed arrays 2 must be run on a little-endian system");
v.HEAP = i;
v.HEAP8 = I;
v.HEAP16 = Gd;
v.HEAP32 = J;
v.HEAPU8 = x;
v.HEAPU16 = Od;
v.HEAPU32 = ee;
v.HEAPF32 = Hd;
v.HEAPF64 = Id;
function te(c) {
for(;0 < c.length;) {
var a = c.shift();
if("function" == typeof a) {
a()
}else {
var d = a.l;
"number" === typeof d ? a.s === i ? A.u("v", d) : A.u("vi", d, [a.s]) : d(a.s === i ? r : a.s)
}
}
}
var ue = [], ve = [], we = [], xe = t;
function ye(c, a, d) {
c = (new A.r).va(c);
d && (c.length = d);
a || c.push(0);
return c
}
v.intArrayFromString = ye;
v.intArrayToString = function(c) {
for(var a = [], d = 0;d < c.length;d++) {
var e = c[d];
255 < e && (B(t, "Character code " + e + " (" + String.fromCharCode(e) + ") at offset " + d + " not in 0x00-0xFF."), e &= 255);
a.push(String.fromCharCode(e))
}
return a.join("")
};
function Cd(c, a, d) {
c = ye(c, d);
for(d = 0;d < c.length;) {
I[a + d | 0] = c[d], d += 1
}
}
v.writeStringToMemory = Cd;
function Dd(c, a) {
for(var d = 0;d < c.length;d++) {
I[a + d | 0] = c[d]
}
}
v.writeArrayToMemory = Dd;
function ze(c, a) {
return 0 <= c ? c : 32 >= a ? 2 * Math.abs(1 << a - 1) + c : Math.pow(2, a) + c
}
function Ae(c, a) {
if(0 >= c) {
return c
}
var d = 32 >= a ? Math.abs(1 << a - 1) : Math.pow(2, a - 1);
if(c >= d && (32 >= a || c > d)) {
c = -2 * d + c
}
return c
}
Math.P || (Math.P = function(c, a) {
var d = c & 65535, e = a & 65535;
return d * e + ((c >>> 16) * e + d * (a >>> 16) << 16) | 0
});
var Be = 0, Ce = {}, Ff = t, Gf = r;
function Hf(c) {
Be++;
v.monitorRunDependencies && v.monitorRunDependencies(Be);
c ? (B(!Ce[c]), Ce[c] = 1, Gf === r && "undefined" !== typeof setInterval && (Gf = setInterval(function() {
var a = t, c;
for(c in Ce) {
a || (a = p, v.g("still waiting on run dependencies:")), v.g("dependency: " + c)
}
a && v.g("(end of list)")
}, 6E3))) : v.g("warning: run dependency added without ID")
}
v.addRunDependency = Hf;
function If(c) {
Be--;
v.monitorRunDependencies && v.monitorRunDependencies(Be);
c ? (B(Ce[c]), delete Ce[c]) : v.g("warning: run dependency removed without ID");
0 == Be && (Gf !== r && (clearInterval(Gf), Gf = r), !Ff && Jf && Kf())
}
v.removeRunDependency = If;
v.preloadedImages = {};
v.preloadedAudios = {};
var pe = 8, rd = pe + 1776, ue = ue.concat([{l:function() {
function c(a) {
var c = [a[0], r].concat(a.slice(1)), d = a = f, e = g, h = c.length;
2 > h && Aa("argTypes array size mismatch! Must at least get return value and 'this' types!");
var k = c[1] !== r && t;
!k && !F[26] && Aa("Global function " + d + " is not defined!");
for(var j = "", m = "", l = 0;l < h - 2;++l) {
j += (0 !== l ? ", " : "") + "arg" + l, m += (0 !== l ? ", " : "") + "arg" + l + "Wired"
}
for(var j = "return function " + La(d) + "(" + j + ") {\nif (arguments.length !== " + (h - 2) + ") {\nthrowBindingError('function " + d + " called with ' + arguments.length + ' arguments, expected " + (h - 2) + " args!');\n}\n", y = t, l = 1;l < c.length;++l) {
if(c[l] !== r && c[l].d === i) {
y = p;
break
}
}
y && (j += "var destructors = [];\n");
var D = y ? "destructors" : "null", d = "throwBindingError classType invoker fn runDestructors retType classParam".split(" "), e = [Aa, r, e, 26, ic, c[0], c[1]];
k && (j += "var thisWired = classParam.toWireType(" + D + ", this);\n");
for(l = 0;l < h - 2;++l) {
j += "var arg" + l + "Wired = argType" + l + ".toWireType(" + D + ", arg" + l + "); // " + c[l + 2].name + "\n", d.push("argType" + l), e.push(c[l + 2])
}
k && (m = "thisWired" + (0 < m.length ? ", " : "") + m);
h = "void" !== c[0].name;
j += (h ? "var rv = " : "") + "invoker(fn" + (0 < m.length ? ", " : "") + m + ");\n";
if(y) {
j += "runDestructors(destructors);\n"
}else {
for(l = k ? 1 : 2;l < c.length;++l) {
k = 1 === l ? "thisWired" : "arg" + (l - 2) + "Wired", c[l].d !== r && (j += k + "_dtor(" + k + "); // " + c[l].name + "\n", d.push(k + "_dtor"), e.push(c[l].d))
}
}
h && (j += "return retType.fromWireType(rv);\n");
d.push(j + "}\n");
c = Function;
c instanceof Function || b(new TypeError("new_ called with constructor type " + typeof c + " which is not a function"));
l = Ba(c.name, aa());
l.prototype = c.prototype;
l = new l;
d = c.apply(l, d);
d = (d instanceof Object ? d : l).apply(r, e);
v.hasOwnProperty(a) || b(new sa("Replacing nonexistant public symbol"));
i !== v[a].b ? v[a].b[3] = d : v[a] = d;
a = [];
a.length !== n.length && b(new sa("Mismatched type converter count"));
for(d = 0;d < n.length;++d) {
$a(n[d], a[d])
}
}
function a() {
function a(c) {
!e[c] && !Na[c] && (Za[c] ? Za[c].forEach(a) : (d.push(c), e[c] = p))
}
var c = "Cannot call " + f + " due to unbound types", d = [], e = {};
h.forEach(a);
b(new wa(c + ": " + d.map(Hb).join([", "])))
}
var d = z;
z = z + 24 | 0;
B((z | 0) < (qd | 0));
J[(d | 0) >> 2] = 4;
var e = d + 4 | 0;
J[e >> 2] = 1600;
J[(d + 8 | 0) >> 2] = Lf;
J[(d + 12 | 0) >> 2] = Mf;
J[(d + 16 | 0) >> 2] = 1656;
for(var f = 360, g = 32, h = [], k = 0;4 > k;k++) {
h.push(J[(e >> 2) + k])
}
var f = Gb(f), g = F[g], j = f;
if(v.hasOwnProperty(j)) {
i !== v[j].b && i !== v[j].b[3] && Aa("Cannot register public name '" + j + "' twice");
var m = v;
i === m[j].b && (e = m[j], m[j] = function() {
m[j].b.hasOwnProperty(arguments.length) || Aa("Function '" + j + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + m[j].b + ")!");
return m[j].b[arguments.length].apply(this, arguments)
}, m[j].b = [], m[j].b[e.Ka] = e);
v.hasOwnProperty(3) && Aa("Cannot register multiple overloads of a function with the same number of arguments (3)!");
v[j].b[3] = a
}else {
v[j] = a, v[j].Ua = 3
}
var n = [];
n.forEach(function(a) {
Za[a] = h
});
var l = Array(h.length), y = [], D = 0;
h.forEach(function(a, d) {
Na.hasOwnProperty(a) ? l[d] = Na[a] : (y.push(a), Oa.hasOwnProperty(a) || (Oa[a] = []), Oa[a].push(function() {
l[d] = Na[a];
++D;
D === y.length && c(l)
}))
});
0 === y.length && c(l);
z = d
}}, {l:function() {
var c;
c = Gb(136);
$a(1600, {name:c, fromWireType:aa(), toWireType:aa()});
c = Gb(288);
$a(1608, {name:c, fromWireType:function(a) {
return!!a
}, toWireType:function(a, c) {
return c ? 1 : 0
}, d:r});
gc(Nf, 128, -128, 127);
gc(Of, 112, -128, 127);
gc(Pf, 96, 0, 255);
gc(Qf, 88, -32768, 32767);
gc(Rf, 72, 0, 65535);
gc(Lf, 64, -2147483648, 2147483647);
gc(Sf, 48, 0, -1);
gc(Tf, 40, -2147483648, 2147483647);
gc(Uf, 344, 0, -1);
hc(Mf, 336);
hc(Vf, 296);
c = Gb(272);
$a(1656, {name:c, fromWireType:function(a) {
for(var c = ee[a >> 2], f = Array(c), g = 0;g < c;++g) {
f[g] = String.fromCharCode(x[a + 4 + g])
}
fc();
return f.join("")
}, toWireType:function(a, c) {
function f(a, c) {
return a[c]
}
function g(a, c) {
return a.charCodeAt(c)
}
c instanceof ArrayBuffer && (c = new Uint8Array(c));
var h;
c instanceof Uint8Array ? h = f : c instanceof Int8Array ? h = f : "string" === typeof c ? h = g : Aa("Cannot pass non-string to std::string");
var k = c.length, j = Md(4 + k);
ee[j >> 2] = k;
for(var m = 0;m < k;++m) {
var n = h(c, m);
255 < n && (fc(), Aa("String has UTF-16 code units that do not fit in 8 bits"));
x[j + 4 + m] = n
}
a !== r && a.push(fc, j);
return j
}, d:function() {
fc()
}});
c = Gb(184);
$a(1632, {name:c, fromWireType:function(a) {
for(var c = ee[a >> 2], f = Array(c), a = a + 4 >> 2, g = 0;g < c;++g) {
f[g] = String.fromCharCode(ee[a + g])
}
fc();
return f.join("")
}, toWireType:function(a, c) {
var f = c.length, g = Md(4 + 4 * f);
ee[g >> 2] = f;
for(var h = g + 4 >> 2, k = 0;k < f;++k) {
ee[h + k] = c.charCodeAt(k)
}
a !== r && a.push(fc, g);
return g
}, d:function() {
fc()
}});
c = Gb(168);
$a(1680, {name:c, fromWireType:function(a) {
var c = ca[a].value;
a && 0 === --ca[a].wa && (ca[a] = i, ja.push(a));
return c
}, toWireType:function(a, c) {
var f = ja.length ? ja.pop() : ca.length;
ca[f] = {wa:1, value:c};
return f
}, d:r});
var a = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
c = Gb(144);
$a(1688, {name:c, fromWireType:function(c) {
return new a[ee[c >> 2]](I.buffer, ee[(c >> 2) + 2], ee[(c >> 2) + 1])
}})
}}]), P, Wf, Rf, Qf, Uf, Tf, Sf, Lf, Pf, Mf, Vf, Nf, Of;
P = O([0, 0, 0, 0, 192, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Wf = O([0, 0, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Rf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Qf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Uf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Tf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Sf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Lf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Pf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Mf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Vf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Nf = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
Of = O([0, 0, 0, 0, 0, 0, 0, 0], "i8", M);
O([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 108, 111, 110, 103, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 105, 110, 116, 0, 0, 0, 0, 105, 110, 116, 0, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 115, 104, 111, 114, 116, 0, 0, 115, 104, 111, 114, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 0, 0, 99, 104, 97, 114, 0,
0, 0, 0, 118, 111, 105, 100, 0, 0, 0, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 118, 97, 108, 0, 115, 116, 100, 58, 58, 119, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 47, 118, 111, 108, 47, 98, 105, 103, 50, 52, 48, 47, 115, 110, 97, 112, 47, 106, 105, 109, 47, 119, 111, 114, 107, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 115, 121, 115, 116, 101, 109,
47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 98, 111, 111, 108, 0, 0, 0, 0, 100, 111, 117, 98, 108, 101, 0, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 0, 0, 0, 102, 108, 111, 97, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 0,
0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 58, 32, 37, 100, 44, 32, 37, 102, 44, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 111, 105, 100, 32, 115, 116, 100, 58, 58, 95, 95, 49, 58, 58, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 60, 116, 114, 117, 101, 62, 58, 58, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 40, 41, 32, 99, 111, 110, 115, 116, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 6, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0,
102, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 50, 49, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 73, 76, 98, 49, 69, 69, 69, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97,
114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 119, 69, 69, 69, 69, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 51, 118, 97, 108, 69,
0, 0, 0, 0, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 49, 49, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 69, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 51, 95, 95, 102, 117, 110, 100, 97, 109, 101, 110, 116, 97, 108, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111,
69, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0,
0, 0, 0, 0, 0, 0, 0, 208, 3, 0, 0, 32, 4, 0, 0, 208, 3, 0, 0, 120, 4, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 0, 0, 0, 0, 152, 4, 0, 0, 248, 3, 0, 0, 192, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 248, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 88, 5, 0, 0, 0, 0, 0, 0, 120, 5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240,
5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 80, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", Ld, A.da);
J[P + 8 >> 2] = 24;
J[P + 12 >> 2] = 22;
J[P + 16 >> 2] = 20;
J[P + 20 >> 2] = 42;
J[P + 24 >> 2] = 38;
J[P + 28 >> 2] = 12;
J[P + 32 >> 2] = 10;
J[P + 36 >> 2] = 6;
J[Wf + 8 >> 2] = 24;
J[Wf + 12 >> 2] = 36;
J[Wf + 16 >> 2] = 20;
J[Wf + 20 >> 2] = 42;
J[Wf + 24 >> 2] = 38;
J[Wf + 28 >> 2] = 40;
J[Wf + 32 >> 2] = 30;
J[Wf + 36 >> 2] = 8;
J[Rf >> 2] = 976;
J[Rf + 4 >> 2] = 1064;
J[Qf >> 2] = 976;
J[Qf + 4 >> 2] = 1072;
J[Uf >> 2] = 976;
J[Uf + 4 >> 2] = 1080;
J[Tf >> 2] = 976;
J[Tf + 4 >> 2] = 1088;
J[Sf >> 2] = 976;
J[Sf + 4 >> 2] = 1096;
J[Lf >> 2] = 976;
J[Lf + 4 >> 2] = 1104;
J[Pf >> 2] = 976;
J[Pf + 4 >> 2] = 1112;
J[Mf >> 2] = 976;
J[Mf + 4 >> 2] = 1120;
J[Vf >> 2] = 976;
J[Vf + 4 >> 2] = 1128;
J[Nf >> 2] = 976;
J[Nf + 4 >> 2] = 1136;
J[Of >> 2] = 976;
J[Of + 4 >> 2] = 1152;
J[404] = Wf + 8 | 0;
J[406] = Wf + 8 | 0;
J[420] = Wf + 8 | 0;
J[422] = Wf + 8 | 0;
J[424] = P + 8 | 0;
J[428] = P + 8 | 0;
J[432] = P + 8 | 0;
J[436] = P + 8 | 0;
J[440] = P + 8 | 0;
var Xf = A.k(O(12, "i8", M), 8);
B(0 == Xf % 8);
var Yf = 13, Zf = 9, $f = 22, ag = 5, bg = 21, cg = 6, dg = 0;
function V(c) {
J[dg >> 2] = c
}
var eg, fg = O(1, "i32*", M), gg = O(1, "i32*", M), hg = O(1, "i32*", M), ig = O(1, "i32*", M), jg = 2, X = [r], kg = p;
function lg(c, a) {
if("string" !== typeof c) {
return r
}
a === i && (a = "/");
c && "/" == c[0] && (a = "");
for(var d = (a + "/" + c).split("/").reverse(), e = [""];d.length;) {
var f = d.pop();
"" == f || "." == f || (".." == f ? 1 < e.length && e.pop() : e.push(f))
}
return 1 == e.length ? "/" : e.join("/")
}
function mg(c, a, d) {
var e = {ra:t, v:t, error:0, name:r, path:r, object:r, U:t, W:r, V:r}, c = lg(c);
if("/" == c) {
e.ra = p, e.v = e.U = p, e.name = "/", e.path = e.W = "/", e.object = e.V = ng
}else {
if(c !== r) {
for(var d = d || 0, c = c.slice(1).split("/"), f = ng, g = [""];c.length;) {
1 == c.length && f.h && (e.U = p, e.W = 1 == g.length ? "/" : g.join("/"), e.V = f, e.name = c[0]);
var h = c.shift();
if(f.h) {
if(f.Y) {
if(!f.a.hasOwnProperty(h)) {
e.error = 2;
break
}
}else {
e.error = Yf;
break
}
}else {
e.error = 20;
break
}
f = f.a[h];
if(f.link && !(a && 0 == c.length)) {
if(40 < d) {
e.error = 40;
break
}
e = lg(f.link, g.join("/"));
e = mg([e].concat(c).join("/"), a, d + 1);
break
}
g.push(h);
0 == c.length && (e.v = p, e.path = g.join("/"), e.object = f)
}
}
}
return e
}
function og(c) {
pg();
c = mg(c, i);
if(c.v) {
return c.object
}
V(c.error);
return r
}
function qg(c, a, d, e, f) {
c || (c = "/");
"string" === typeof c && (c = og(c));
c || (V(Yf), b(Error("Parent path must exist.")));
c.h || (V(20), b(Error("Parent must be a folder.")));
!c.write && !kg && (V(Yf), b(Error("Parent folder must be writeable.")));
if(!a || "." == a || ".." == a) {
V(2), b(Error("Name must not be empty."))
}
c.a.hasOwnProperty(a) && (V(17), b(Error("Can't overwrite object.")));
c.a[a] = {Y:e === i ? p : e, write:f === i ? t : f, timestamp:Date.now(), oa:jg++};
for(var g in d) {
d.hasOwnProperty(g) && (c.a[a][g] = d[g])
}
return c.a[a]
}
function rg(c, a, d, e) {
return qg(c, a, {h:p, e:t, a:{}}, d, e)
}
function sg(c, a, d, e) {
c = og(c);
c === r && b(Error("Invalid parent."));
for(a = a.split("/").reverse();a.length;) {
var f = a.pop();
f && (c.a.hasOwnProperty(f) || rg(c, f, d, e), c = c.a[f])
}
return c
}
function tg(c, a, d, e, f) {
d.h = t;
return qg(c, a, d, e, f)
}
function ug(c, a, d, e, f) {
if("string" === typeof d) {
for(var g = Array(d.length), h = 0, k = d.length;h < k;++h) {
g[h] = d.charCodeAt(h)
}
d = g
}
d = {e:t, a:d.subarray ? d.subarray(0) : d};
return tg(c, a, d, e, f)
}
function vg(c, a, d, e) {
!d && !e && b(Error("A device must have at least one callback defined."));
return tg(c, a, {e:p, input:d, i:e}, Boolean(d), Boolean(e))
}
function pg() {
ng || (ng = {Y:p, write:p, h:p, e:t, timestamp:Date.now(), oa:1, a:{}})
}
var wg, ng;
function xg(c, a, d) {
var e = X[c];
if(e) {
if(e.p) {
if(0 > d) {
return V($f), -1
}
if(e.object.e) {
if(e.object.i) {
for(var f = 0;f < d;f++) {
try {
e.object.i(I[a + f | 0])
}catch(g) {
return V(ag), -1
}
}
e.object.timestamp = Date.now();
return f
}
V(cg);
return-1
}
f = e.position;
c = X[c];
if(!c || c.object.e) {
V(Zf), a = -1
}else {
if(c.p) {
if(c.object.h) {
V(bg), a = -1
}else {
if(0 > d || 0 > f) {
V($f), a = -1
}else {
for(var h = c.object.a;h.length < f;) {
h.push(0)
}
for(var k = 0;k < d;k++) {
h[f + k] = x[a + k | 0]
}
c.object.timestamp = Date.now();
a = k
}
}
}else {
V(Yf), a = -1
}
}
-1 != a && (e.position += a);
return a
}
V(Yf);
return-1
}
V(Zf);
return-1
}
function yg(c) {
for(var c = c | 0, a = 0, a = c;I[a];) {
a = a + 1 | 0
}
return a - c | 0
}
function zg(c) {
function a(a) {
var d;
"double" === a ? d = Id[c + g >> 3] : "i64" == a ? (d = [J[c + g >> 2], J[c + (g + 8) >> 2]], g += 8) : (a = "i32", d = J[c + g >> 2]);
g += Math.max(A.O(a), A.A(a, r, p));
return d
}
for(var d = J[gg >> 2], e, f = 384, g = 0, h = [], k, j;;) {
var m = f;
k = I[f];
if(0 === k) {
break
}
j = I[f + 1 | 0];
if(37 == k) {
var n = t, l = e = t, y = t;
a:for(;;) {
switch(j) {
case 43:
n = p;
break;
case 45:
e = p;
break;
case 35:
l = p;
break;
case 48:
if(y) {
break a
}else {
y = p;
break
}
;
default:
break a
}
f++;
j = I[f + 1 | 0]
}
var D = 0;
if(42 == j) {
D = a("i32"), f++, j = I[f + 1 | 0]
}else {
for(;48 <= j && 57 >= j;) {
D = 10 * D + (j - 48), f++, j = I[f + 1 | 0]
}
}
var K = t;
if(46 == j) {
var w = 0, K = p;
f++;
j = I[f + 1 | 0];
if(42 == j) {
w = a("i32"), f++
}else {
for(;;) {
j = I[f + 1 | 0];
if(48 > j || 57 < j) {
break
}
w = 10 * w + (j - 48);
f++
}
}
j = I[f + 1 | 0]
}else {
w = 6
}
var u;
switch(String.fromCharCode(j)) {
case "h":
j = I[f + 2 | 0];
104 == j ? (f++, u = 1) : u = 2;
break;
case "l":
j = I[f + 2 | 0];
108 == j ? (f++, u = 8) : u = 4;
break;
case "L":
;
case "q":
;
case "j":
u = 8;
break;
case "z":
;
case "t":
;
case "I":
u = 4;
break;
default:
u = r
}
u && f++;
j = I[f + 1 | 0];
switch(String.fromCharCode(j)) {
case "d":
;
case "i":
;
case "u":
;
case "o":
;
case "x":
;
case "X":
;
case "p":
m = 100 == j || 105 == j;
u = u || 4;
var s = k = a("i" + 8 * u), q;
8 == u && (k = A.ta(k[0], k[1], 117 == j));
4 >= u && (k = (m ? Ae : ze)(k & Math.pow(256, u) - 1, 8 * u));
var G = Math.abs(k), m = "";
if(100 == j || 105 == j) {
q = 8 == u && Ag ? Ag.stringify(s[0], s[1], r) : Ae(k, 8 * u).toString(10)
}else {
if(117 == j) {
q = 8 == u && Ag ? Ag.stringify(s[0], s[1], p) : ze(k, 8 * u).toString(10), k = Math.abs(k)
}else {
if(111 == j) {
q = (l ? "0" : "") + G.toString(8)
}else {
if(120 == j || 88 == j) {
m = l && 0 != k ? "0x" : "";
if(8 == u && Ag) {
if(s[1]) {
q = (s[1] >>> 0).toString(16);
for(l = (s[0] >>> 0).toString(16);8 > l.length;) {
l = "0" + l
}
q += l
}else {
q = (s[0] >>> 0).toString(16)
}
}else {
if(0 > k) {
k = -k;
q = (G - 1).toString(16);
s = [];
for(l = 0;l < q.length;l++) {
s.push((15 - parseInt(q[l], 16)).toString(16))
}
for(q = s.join("");q.length < 2 * u;) {
q = "f" + q
}
}else {
q = G.toString(16)
}
}
88 == j && (m = m.toUpperCase(), q = q.toUpperCase())
}else {
112 == j && (0 === G ? q = "(nil)" : (m = "0x", q = G.toString(16)))
}
}
}
}
if(K) {
for(;q.length < w;) {
q = "0" + q
}
}
for(n && (m = 0 > k ? "-" + m : "+" + m);m.length + q.length < D;) {
e ? q += " " : y ? q = "0" + q : m = " " + m
}
q = m + q;
q.split("").forEach(function(a) {
h.push(a.charCodeAt(0))
});
break;
case "f":
;
case "F":
;
case "e":
;
case "E":
;
case "g":
;
case "G":
k = a("double");
if(isNaN(k)) {
q = "nan", y = t
}else {
if(isFinite(k)) {
K = t;
u = Math.min(w, 20);
if(103 == j || 71 == j) {
K = p, w = w || 1, u = parseInt(k.toExponential(u).split("e")[1], 10), w > u && -4 <= u ? (j = (103 == j ? "f" : "F").charCodeAt(0), w -= u + 1) : (j = (103 == j ? "e" : "E").charCodeAt(0), w--), u = Math.min(w, 20)
}
if(101 == j || 69 == j) {
q = k.toExponential(u), /[eE][-+]\d$/.test(q) && (q = q.slice(0, -1) + "0" + q.slice(-1))
}else {
if(102 == j || 70 == j) {
q = k.toFixed(u), 0 === k && (0 > k || 0 === k && -Infinity === 1 / k) && (q = "-" + q)
}
}
m = q.split("e");
if(K && !l) {
for(;1 < m[0].length && -1 != m[0].indexOf(".") && ("0" == m[0].slice(-1) || "." == m[0].slice(-1));) {
m[0] = m[0].slice(0, -1)
}
}else {
for(l && -1 == q.indexOf(".") && (m[0] += ".");w > u++;) {
m[0] += "0"
}
}
q = m[0] + (1 < m.length ? "e" + m[1] : "");
69 == j && (q = q.toUpperCase());
n && 0 <= k && (q = "+" + q)
}else {
q = (0 > k ? "-" : "") + "inf", y = t
}
}
for(;q.length < D;) {
q = e ? q + " " : y && ("-" == q[0] || "+" == q[0]) ? q[0] + "0" + q.slice(1) : (y ? "0" : " ") + q
}
97 > j && (q = q.toUpperCase());
q.split("").forEach(function(a) {
h.push(a.charCodeAt(0))
});
break;
case "s":
y = (n = a("i8*")) ? yg(n) : 6;
K && (y = Math.min(y, w));
if(!e) {
for(;y < D--;) {
h.push(32)
}
}
if(n) {
for(l = 0;l < y;l++) {
h.push(x[n++ | 0])
}
}else {
h = h.concat(ye("(null)".substr(0, y), p))
}
if(e) {
for(;y < D--;) {
h.push(32)
}
}
break;
case "c":
for(e && h.push(a("i8"));0 < --D;) {
h.push(32)
}
e || h.push(a("i8"));
break;
case "n":
e = a("i32*");
J[e >> 2] = h.length;
break;
case "%":
h.push(k);
break;
default:
for(l = m;l < f + 2;l++) {
h.push(I[l])
}
}
f += 2
}else {
h.push(k), f += 1
}
}
e = h;
f = A.H();
q = O(e, "i8", Kd);
e = 1 * e.length;
0 != e && (-1 == xg(d, q, e) && X[d]) && (X[d].error = p);
A.$(f)
}
function Y() {
b("abort() at " + Error().stack)
}
function Bg(c, a, d) {
c |= 0;
a |= 0;
d |= 0;
if((c & 3) == (a & 3)) {
for(;c & 3;) {
if(0 == (d | 0)) {
return
}
I[c] = I[a];
c = c + 1 | 0;
a = a + 1 | 0;
d = d - 1 | 0
}
for(;4 <= (d | 0);) {
J[c >> 2] = J[a >> 2], c = c + 4 | 0, a = a + 4 | 0, d = d - 4 | 0
}
}
for(;0 < (d | 0);) {
I[c] = I[a], c = c + 1 | 0, a = a + 1 | 0, d = d - 1 | 0
}
}
function Cg() {
switch(8) {
case 8:
return Nd;
case 54:
;
case 56:
;
case 21:
;
case 61:
;
case 63:
;
case 22:
;
case 67:
;
case 23:
;
case 24:
;
case 25:
;
case 26:
;
case 27:
;
case 69:
;
case 28:
;
case 101:
;
case 70:
;
case 71:
;
case 29:
;
case 30:
;
case 199:
;
case 75:
;
case 76:
;
case 32:
;
case 43:
;
case 44:
;
case 80:
;
case 46:
;
case 47:
;
case 45:
;
case 48:
;
case 49:
;
case 42:
;
case 82:
;
case 33:
;
case 7:
;
case 108:
;
case 109:
;
case 107:
;
case 112:
;
case 119:
;
case 121:
return 200809;
case 13:
;
case 104:
;
case 94:
;
case 95:
;
case 34:
;
case 35:
;
case 77:
;
case 81:
;
case 83:
;
case 84:
;
case 85:
;
case 86:
;
case 87:
;
case 88:
;
case 89:
;
case 90:
;
case 91:
;
case 94:
;
case 95:
;
case 110:
;
case 111:
;
case 113:
;
case 114:
;
case 115:
;
case 116:
;
case 117:
;
case 118:
;
case 120:
;
case 40:
;
case 16:
;
case 79:
;
case 19:
return-1;
case 92:
;
case 93:
;
case 5:
;
case 72:
;
case 6:
;
case 74:
;
case 92:
;
case 93:
;
case 96:
;
case 97:
;
case 98:
;
case 99:
;
case 102:
;
case 103:
;
case 105:
return 1;
case 38:
;
case 66:
;
case 50:
;
case 51:
;
case 4:
return 1024;
case 15:
;
case 64:
;
case 41:
return 32;
case 55:
;
case 37:
;
case 17:
return 2147483647;
case 18:
;
case 1:
return 47839;
case 59:
;
case 57:
return 99;
case 68:
;
case 58:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 14:
return 32768;
case 73:
return 32767;
case 39:
return 16384;
case 60:
return 1E3;
case 106:
return 700;
case 52:
return 256;
case 62:
return 255;
case 2:
return 100;
case 65:
return 64;
case 36:
return 20;
case 100:
return 16;
case 20:
return 6;
case 53:
return 4;
case 10:
return 1
}
V($f);
return-1
}
function Dg(c) {
Eg || (td = td + 4095 >> 12 << 12, Eg = p, B(A.o), Mh = A.o, A.o = function() {
vd("cannot dynamically allocate, sbrk now has control")
});
var a = td;
0 != c && Mh(c);
return a
}
var Eg, Mh;
function Rj(c, a) {
var d, c = c | 0;
d = 0;
var a = a | 0, e = 0, f = 0, g = 0, h = 0, e = c + a | 0;
if(20 <= (a | 0)) {
d &= 255;
h = c & 3;
f = d | d << 8 | d << 16 | d << 24;
g = e & -4;
if(h) {
for(h = c + 4 - h | 0;(c | 0) < (h | 0);) {
I[c] = d, c = c + 1 | 0
}
}
for(;(c | 0) < (g | 0);) {
J[c >> 2] = f, c = c + 4 | 0
}
}
for(;(c | 0) < (e | 0);) {
I[c] = d, c = c + 1 | 0
}
}
function fc() {
A.j("using stub free (reference it from C to have the real one included)")
}
var Sj = t, Tj = t, Uj = t, Vj = i, Wj = i;
function Xj(c, a) {
function d() {
Tj = t;
(document.webkitFullScreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.mozFullscreenElement || document.fullScreenElement || document.fullscreenElement) === e ? (e.J = document.cancelFullScreen || document.mozCancelFullScreen || document.webkitCancelFullScreen, e.J = e.J.bind(document), Vj && e.D(), Tj = p, Wj && Yj()) : Wj && Zj();
if(v.onFullScreen) {
v.onFullScreen(Tj)
}
}
this.T = c;
this.Z = a;
"undefined" === typeof this.T && (this.T = p);
"undefined" === typeof this.Z && (this.Z = t);
var e = v.canvas;
this.la || (this.la = p, document.addEventListener("fullscreenchange", d, t), document.addEventListener("mozfullscreenchange", d, t), document.addEventListener("webkitfullscreenchange", d, t));
e.xa = e.requestFullScreen || e.mozRequestFullScreen || (e.webkitRequestFullScreen ? function() {
e.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
} : r);
e.xa()
}
var $j = [];
function ak() {
var c = v.canvas;
$j.forEach(function(a) {
a(c.width, c.height)
})
}
function Yj() {
var c = v.canvas;
this.Aa = c.width;
this.za = c.height;
c.width = screen.width;
c.height = screen.height;
c = ee[SDL.screen + 0 * A.c >> 2];
J[SDL.screen + 0 * A.c >> 2] = c | 8388608;
ak()
}
function Zj() {
var c = v.canvas;
c.width = this.Aa;
c.height = this.za;
c = ee[SDL.screen + 0 * A.c >> 2];
J[SDL.screen + 0 * A.c >> 2] = c & -8388609;
ak()
}
var bk, ck, dk, ek;
ue.unshift({l:function() {
if(!v.noFSInit && !wg) {
var c, a, d, e = function(c) {
c === r || 10 === c ? (a.q(a.buffer.join("")), a.buffer = []) : a.buffer.push(k.X(c))
};
B(!wg, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
wg = p;
pg();
c = c || v.stdin;
a = a || v.stdout;
d = d || v.stderr;
var f = p, g = p, h = p;
c || (f = t, c = function() {
if(!c.t || !c.t.length) {
var a;
"undefined" != typeof window && "function" == typeof window.prompt ? (a = window.prompt("Input: "), a === r && (a = String.fromCharCode(0))) : "function" == typeof readline && (a = readline());
a || (a = "");
c.t = ye(a + "\n", p)
}
return c.t.shift()
});
var k = new A.r;
a || (g = t, a = e);
a.q || (a.q = v.print);
a.buffer || (a.buffer = []);
d || (h = t, d = e);
d.q || (d.q = v.print);
d.buffer || (d.buffer = []);
try {
rg("/", "tmp", p, p)
}catch(j) {
}
var e = rg("/", "dev", p, p), m = vg(e, "stdin", c), n = vg(e, "stdout", r, a);
d = vg(e, "stderr", r, d);
vg(e, "tty", c, a);
X[1] = {path:"/dev/stdin", object:m, position:0, R:p, p:t, Q:t, S:!f, error:t, K:t, ba:[]};
X[2] = {path:"/dev/stdout", object:n, position:0, R:t, p:p, Q:t, S:!g, error:t, K:t, ba:[]};
X[3] = {path:"/dev/stderr", object:d, position:0, R:t, p:p, Q:t, S:!h, error:t, K:t, ba:[]};
J[fg >> 2] = 1;
J[gg >> 2] = 2;
J[hg >> 2] = 3;
sg("/", "dev/shm/tmp", p, p);
for(f = X.length;f < Math.max(fg, gg, hg) + 4;f++) {
X[f] = r
}
X[fg] = X[1];
X[gg] = X[2];
X[hg] = X[3];
for(var l in X) {
X.hasOwnProperty(l) && B(0 <= l && l < X.length)
}
for(l = 0;l < X.length;l++) {
B("object" == typeof X[l])
}
O([O([0, 0, 0, 0, fg, 0, 0, 0, gg, 0, 0, 0, hg, 0, 0, 0], "void*", 3)], "void*", Ld, ig)
}
}});
ve.push({l:function() {
kg = t
}});
we.push({l:function() {
wg && (X[2] && 0 < X[2].object.i.buffer.length && X[2].object.i(10), X[3] && 0 < X[3].object.i.buffer.length && X[3].object.i(10))
}});
v.FS_createFolder = rg;
v.FS_createPath = sg;
v.FS_createDataFile = ug;
v.FS_createPreloadedFile = function(c, a, d, e, f, g, h, k) {
function j() {
Uj = document.pointerLockElement === y || document.mozPointerLockElement === y || document.webkitPointerLockElement === y
}
function m(a) {
return{jpg:"image/jpeg", jpeg:"image/jpeg", png:"image/png", bmp:"image/bmp", ogg:"audio/ogg", wav:"audio/wav", mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".") + 1)]
}
function n(d) {
function j(d) {
k || ug(c, a, d, e, f);
g && g();
If("cp " + D)
}
var l = t;
v.preloadPlugins.forEach(function(a) {
!l && a.canHandle(D) && (a.handle(d, D, j, function() {
h && h();
If("cp " + D)
}), l = p)
});
l || j(d)
}
if(!bk) {
bk = p;
try {
new Blob, ck = p
}catch(l) {
ck = t, console.log("warning: no blob constructor, cannot create blobs with mimetypes")
}
dk = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : !ck ? console.log("warning: no BlobBuilder") : r;
ek = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : console.log("warning: cannot create object URLs");
v.preloadPlugins || (v.preloadPlugins = []);
v.preloadPlugins.push({canHandle:function(a) {
return!v.Ta && /\.(jpg|jpeg|png|bmp)$/.exec(a)
}, handle:function(a, c, d, e) {
var f = r;
if(ck) {
try {
f = new Blob([a], {type:m(c)})
}catch(g) {
A.j("Blob constructor present but fails: " + g + "; falling back to blob builder")
}
}
f || (f = new dk, f.append((new Uint8Array(a)).buffer), f = f.getBlob());
var h = ek.createObjectURL(f);
B("string" == typeof h, "createObjectURL must return a url as a string");
var j = new Image;
j.onload = function() {
B(j.complete, "Image " + c + " could not be decoded");
var e = document.createElement("canvas");
e.width = j.width;
e.height = j.height;
e.getContext("2d").drawImage(j, 0, 0);
v.preloadedImages[c] = e;
ek.revokeObjectURL(h);
d && d(a)
};
j.onerror = function() {
console.log("Image " + h + " could not be decoded");
e && e()
};
j.src = h
}});
v.preloadPlugins.push({canHandle:function(a) {
return!v.Sa && a.substr(-4) in {".ogg":1, ".wav":1, ".mp3":1}
}, handle:function(a, c, d, e) {
function f(e) {
h || (h = p, v.preloadedAudios[c] = e, d && d(a))
}
function g() {
h || (h = p, v.preloadedAudios[c] = new Audio, e && e())
}
var h = t;
if(ck) {
try {
var j = new Blob([a], {type:m(c)})
}catch(k) {
return g()
}
j = ek.createObjectURL(j);
B("string" == typeof j, "createObjectURL must return a url as a string");
var l = new Audio;
l.addEventListener("canplaythrough", function() {
f(l)
}, t);
l.onerror = function() {
if(!h) {
console.log("warning: browser could not fully decode audio " + c + ", trying slower base64 approach");
for(var d = "", e = 0, g = 0, j = 0;j < a.length;j++) {
e = e << 8 | a[j];
for(g += 8;6 <= g;) {
var k = e >> g - 6 & 63, g = g - 6, d = d + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[k]
}
}
2 == g ? (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(e & 3) << 4], d += "==") : 4 == g && (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(e & 15) << 2], d += "=");
l.src = "data:audio/x-" + c.substr(-3) + ";base64," + d;
f(l)
}
};
l.src = j;
setTimeout(function() {
f(l)
}, 1E4)
}else {
return g()
}
}});
var y = v.canvas;
y.D = y.requestPointerLock || y.mozRequestPointerLock || y.webkitRequestPointerLock;
y.L = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
y.L = y.L.bind(document);
document.addEventListener("pointerlockchange", j, t);
document.addEventListener("mozpointerlockchange", j, t);
document.addEventListener("webkitpointerlockchange", j, t);
v.elementPointerLock && y.addEventListener("click", function(a) {
!Uj && y.D && (y.D(), a.preventDefault())
}, t)
}
for(var D, K = [c, a], w = K[0], u = 1;u < K.length;u++) {
"/" != w[w.length - 1] && (w += "/"), w += K[u]
}
"/" == w[0] && (w = w.substr(1));
D = w;
Hf("cp " + D);
if("string" == typeof d) {
var s = h, q = function() {
s ? s() : b('Loading data file "' + d + '" failed.')
}, G = new XMLHttpRequest;
G.open("GET", d, p);
G.responseType = "arraybuffer";
G.onload = function() {
if(200 == G.status || 0 == G.status && G.response) {
var a = G.response;
B(a, 'Loading data file "' + d + '" failed (no arrayBuffer).');
a = new Uint8Array(a);
n(a);
If("al " + d)
}else {
q()
}
};
G.onerror = q;
G.send(r);
Hf("al " + d)
}else {
n(d)
}
};
v.FS_createLazyFile = function(c, a, d, e, f) {
if("undefined" !== typeof XMLHttpRequest) {
rc || b("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");
var g = function() {
this.C = t;
this.n = []
};
g.prototype.get = function(a) {
if(!(a > this.length - 1 || 0 > a)) {
var c = a % this.ja;
return this.na(Math.floor(a / this.ja))[c]
}
};
g.prototype.ya = function(a) {
this.na = a
};
g.prototype.I = function() {
var a = new XMLHttpRequest;
a.open("HEAD", d, t);
a.send(r);
200 <= a.status && 300 > a.status || 304 === a.status || b(Error("Couldn't load " + d + ". Status: " + a.status));
var c = Number(a.getResponseHeader("Content-length")), e, f = 1048576;
if(!((e = a.getResponseHeader("Accept-Ranges")) && "bytes" === e)) {
f = c
}
var g = this;
g.ya(function(a) {
var e = a * f, h = (a + 1) * f - 1, h = Math.min(h, c - 1);
if("undefined" === typeof g.n[a]) {
var j = g.n;
e > h && b(Error("invalid range (" + e + ", " + h + ") or no bytes requested!"));
h > c - 1 && b(Error("only " + c + " bytes available! programmer error!"));
var w = new XMLHttpRequest;
w.open("GET", d, t);
c !== f && w.setRequestHeader("Range", "bytes=" + e + "-" + h);
"undefined" != typeof Uint8Array && (w.responseType = "arraybuffer");
w.overrideMimeType && w.overrideMimeType("text/plain; charset=x-user-defined");
w.send(r);
200 <= w.status && 300 > w.status || 304 === w.status || b(Error("Couldn't load " + d + ". Status: " + w.status));
e = w.response !== i ? new Uint8Array(w.response || []) : ye(w.responseText || "", p);
j[a] = e
}
"undefined" === typeof g.n[a] && b(Error("doXHR failed!"));
return g.n[a]
});
this.ga = c;
this.fa = f;
this.C = p
};
g = new g;
Object.defineProperty(g, "length", {get:function() {
this.C || this.I();
return this.ga
}});
Object.defineProperty(g, "chunkSize", {get:function() {
this.C || this.I();
return this.fa
}});
g = {e:t, a:g}
}else {
g = {e:t, url:d}
}
return tg(c, a, g, e, f)
};
v.FS_createLink = function(c, a, d, e, f) {
return tg(c, a, {e:t, link:d}, e, f)
};
v.FS_createDevice = vg;
dg = A.aa(4);
v.requestFullScreen = function(c, a) {
Xj(c, a)
};
v.requestAnimationFrame = function(c) {
window.requestAnimationFrame || (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || window.setTimeout);
window.requestAnimationFrame(c)
};
v.pauseMainLoop = aa();
v.resumeMainLoop = function() {
Sj && (Sj = t, r())
};
qe = z = A.k(rd);
sd = p;
qd = qe + 5242880;
re = td = A.k(qd);
B(re < ud);
var F = [0, 0, fk, 0, gk, 0, hk, 0, ik, 0, jk, 0, kk, 0, lk, 0, mk, 0, nk, 0, ok, 0, pk, 0, qk, 0, rk, 0, Ib, 0, sk, 0, tk, 0, uk, 0, vk, 0, wk, 0, xk, 0, yk];
function Md(c) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 245 > c >>> 0 ? 2 : 78;
break;
case 2:
if(11 > c >>> 0) {
var d = 16, a = 4
}else {
a = 3
}
break;
case 3:
d = (c + 11 | 0) & -8;
a = 4;
break;
case 4:
var e = d >>> 3, f = J[104], g = f >>> (e >>> 0), a = 0 == (g & 3 | 0) ? 12 : 5;
break;
case 5:
var h = (g & 1 ^ 1) + e | 0, k = h << 1, j = 456 + (k << 2) | 0, m = 456 + ((k + 2 | 0) << 2) | 0, n = J[m >> 2], l = n + 8 | 0, y = J[l >> 2], a = (j | 0) == (y | 0) ? 6 : 7;
break;
case 6:
J[104] = f & (1 << h ^ -1);
a = 11;
break;
case 7:
a = y >>> 0 < J[108] >>> 0 ? 10 : 8;
break;
case 8:
var D = y + 12 | 0, a = (J[D >> 2] | 0) == (n | 0) ? 9 : 10;
break;
case 9:
J[D >> 2] = j;
J[m >> 2] = y;
a = 11;
break;
case 10:
Y(), b("Reached an unreachable!");
case 11:
var K = h << 3;
J[(n + 4 | 0) >> 2] = K | 3;
var w = n + (K | 4) | 0;
J[w >> 2] |= 1;
var u = l, a = 333;
break;
case 12:
if(d >>> 0 > J[106] >>> 0) {
a = 13
}else {
var s = d, a = 160
}
break;
case 13:
a = 0 == (g | 0) ? 27 : 14;
break;
case 14:
var q = 2 << e, G = g << e & (q | -q | 0), ua = (G & (-G | 0)) - 1 | 0, Ca = ua >>> 12 & 16, va = ua >>> (Ca >>> 0), ba = va >>> 5 & 8, fa = va >>> (ba >>> 0), ka = fa >>> 2 & 4, xa = fa >>> (ka >>> 0), Pa = xa >>> 1 & 2, Da = xa >>> (Pa >>> 0), U = Da >>> 1 & 1, ya = (ba | Ca | ka | Pa | U) + (Da >>> (U >>> 0)) | 0, ab = ya << 1, la = 456 + (ab << 2) | 0, ga = 456 + ((ab + 2 | 0) << 2) | 0, Ea = J[ga >> 2], Fa = Ea + 8 | 0, bb = J[Fa >> 2], a = (la | 0) == (bb | 0) ? 15 : 16;
break;
case 15:
J[104] = f & (1 << ya ^ -1);
a = 20;
break;
case 16:
a = bb >>> 0 < J[108] >>> 0 ? 19 : 17;
break;
case 17:
var tc = bb + 12 | 0, a = (J[tc >> 2] | 0) == (Ea | 0) ? 18 : 19;
break;
case 18:
J[tc >> 2] = la;
J[ga >> 2] = bb;
a = 20;
break;
case 19:
Y(), b("Reached an unreachable!");
case 20:
var uc = ya << 3, Jb = uc - d | 0;
J[(Ea + 4 | 0) >> 2] = d | 3;
var Kb = Ea, Pd = Kb + d | 0;
J[(Kb + (d | 4) | 0) >> 2] = Jb | 1;
J[(Kb + uc | 0) >> 2] = Jb;
var vc = J[106], a = 0 == (vc | 0) ? 26 : 21;
break;
case 21:
var Ga = J[109], cb = vc >>> 3, db = cb << 1, eb = 456 + (db << 2) | 0, wc = J[104], Ha = 1 << cb, a = 0 == (wc & Ha | 0) ? 22 : 23;
break;
case 22:
J[104] = wc | Ha;
var fb = eb, Lb = 456 + ((db + 2 | 0) << 2) | 0, a = 25;
break;
case 23:
var xc = 456 + ((db + 2 | 0) << 2) | 0, gb = J[xc >> 2];
gb >>> 0 < J[108] >>> 0 ? a = 24 : (fb = gb, Lb = xc, a = 25);
break;
case 24:
Y(), b("Reached an unreachable!");
case 25:
J[Lb >> 2] = Ga;
J[(fb + 12 | 0) >> 2] = Ga;
J[(Ga + 8 | 0) >> 2] = fb;
J[(Ga + 12 | 0) >> 2] = eb;
a = 26;
break;
case 26:
J[106] = Jb;
J[109] = Pd;
u = Fa;
a = 333;
break;
case 27:
var Mb = J[105];
0 == (Mb | 0) ? (s = d, a = 160) : a = 28;
break;
case 28:
var yc = (Mb & (-Mb | 0)) - 1 | 0, Qa = yc >>> 12 & 16, zc = yc >>> (Qa >>> 0), hb = zc >>> 5 & 8, Ac = zc >>> (hb >>> 0), ib = Ac >>> 2 & 4, Nb = Ac >>> (ib >>> 0), Qd = Nb >>> 1 & 2, Rd = Nb >>> (Qd >>> 0), Ob = Rd >>> 1 & 1, jb = J[(720 + (((hb | Qa | ib | Qd | Ob) + (Rd >>> (Ob >>> 0)) | 0) << 2) | 0) >> 2], Ra = jb, L = jb, ha = (J[(jb + 4 | 0) >> 2] & -8) - d | 0, a = 29;
break;
case 29:
var Ia = J[(Ra + 16 | 0) >> 2];
if(0 == (Ia | 0)) {
a = 30
}else {
var ma = Ia, a = 31
}
break;
case 30:
var Bc = J[(Ra + 20 | 0) >> 2];
0 == (Bc | 0) ? a = 32 : (ma = Bc, a = 31);
break;
case 31:
var Cc = (J[(ma + 4 | 0) >> 2] & -8) - d | 0, Dc = Cc >>> 0 < ha >>> 0, kb = Dc ? Cc : ha, lb = Dc ? ma : L, Ra = ma, L = lb, ha = kb, a = 29;
break;
case 32:
var na = L, mb = J[108], a = na >>> 0 < mb >>> 0 ? 76 : 33;
break;
case 33:
var Ec = na + d | 0, Sd = Ec, a = na >>> 0 < Ec >>> 0 ? 34 : 76;
break;
case 34:
var S = J[(L + 24 | 0) >> 2], nb = J[(L + 12 | 0) >> 2], a = (nb | 0) == (L | 0) ? 40 : 35;
break;
case 35:
var Pb = J[(L + 8 | 0) >> 2], a = Pb >>> 0 < mb >>> 0 ? 39 : 36;
break;
case 36:
var Ja = Pb + 12 | 0, a = (J[Ja >> 2] | 0) == (L | 0) ? 37 : 39;
break;
case 37:
var Sa = nb + 8 | 0, a = (J[Sa >> 2] | 0) == (L | 0) ? 38 : 39;
break;
case 38:
J[Ja >> 2] = nb;
J[Sa >> 2] = Pb;
var W = nb, a = 47;
break;
case 39:
Y(), b("Reached an unreachable!");
case 40:
var Fc = L + 20 | 0, Gc = J[Fc >> 2];
if(0 == (Gc | 0)) {
a = 41
}else {
var Ka = Gc, Ta = Fc, a = 42
}
break;
case 41:
var Hc = L + 16 | 0, Ic = J[Hc >> 2];
0 == (Ic | 0) ? (W = 0, a = 47) : (Ka = Ic, Ta = Hc, a = 42);
break;
case 42:
var Jc = Ka + 20 | 0, Kc = J[Jc >> 2];
0 == (Kc | 0) ? a = 43 : (Ka = Kc, Ta = Jc, a = 42);
break;
case 43:
var ob = Ka + 16 | 0, pb = J[ob >> 2];
0 == (pb | 0) ? a = 44 : (Ka = pb, Ta = ob, a = 42);
break;
case 44:
a = Ta >>> 0 < mb >>> 0 ? 46 : 45;
break;
case 45:
J[Ta >> 2] = 0;
W = Ka;
a = 47;
break;
case 46:
Y(), b("Reached an unreachable!");
case 47:
a = 0 == (S | 0) ? 67 : 48;
break;
case 48:
var oa = J[(L + 28 | 0) >> 2], Lc = 720 + (oa << 2) | 0, a = (L | 0) == (J[Lc >> 2] | 0) ? 49 : 51;
break;
case 49:
J[Lc >> 2] = W;
a = 0 == (W | 0) ? 50 : 57;
break;
case 50:
J[105] &= 1 << oa ^ -1;
a = 67;
break;
case 51:
a = S >>> 0 < J[108] >>> 0 ? 55 : 52;
break;
case 52:
var Qb = S + 16 | 0, a = (J[Qb >> 2] | 0) == (L | 0) ? 53 : 54;
break;
case 53:
J[Qb >> 2] = W;
a = 56;
break;
case 54:
J[(S + 20 | 0) >> 2] = W;
a = 56;
break;
case 55:
Y(), b("Reached an unreachable!");
case 56:
a = 0 == (W | 0) ? 67 : 57;
break;
case 57:
a = W >>> 0 < J[108] >>> 0 ? 66 : 58;
break;
case 58:
J[(W + 24 | 0) >> 2] = S;
var qb = J[(L + 16 | 0) >> 2], a = 0 == (qb | 0) ? 62 : 59;
break;
case 59:
a = qb >>> 0 < J[108] >>> 0 ? 61 : 60;
break;
case 60:
J[(W + 16 | 0) >> 2] = qb;
J[(qb + 24 | 0) >> 2] = W;
a = 62;
break;
case 61:
Y(), b("Reached an unreachable!");
case 62:
var rb = J[(L + 20 | 0) >> 2], a = 0 == (rb | 0) ? 67 : 63;
break;
case 63:
a = rb >>> 0 < J[108] >>> 0 ? 65 : 64;
break;
case 64:
J[(W + 20 | 0) >> 2] = rb;
J[(rb + 24 | 0) >> 2] = W;
a = 67;
break;
case 65:
Y(), b("Reached an unreachable!");
case 66:
Y(), b("Reached an unreachable!");
case 67:
a = 16 > ha >>> 0 ? 68 : 69;
break;
case 68:
var Mc = ha + d | 0;
J[(L + 4 | 0) >> 2] = Mc | 3;
var Rb = na + (Mc + 4 | 0) | 0;
J[Rb >> 2] |= 1;
a = 77;
break;
case 69:
J[(L + 4 | 0) >> 2] = d | 3;
J[(na + (d | 4) | 0) >> 2] = ha | 1;
J[(na + (ha + d | 0) | 0) >> 2] = ha;
var Nc = J[106], a = 0 == (Nc | 0) ? 75 : 70;
break;
case 70:
var sb = J[109], Oc = Nc >>> 3, Ua = Oc << 1, Sb = 456 + (Ua << 2) | 0, za = J[104], Pc = 1 << Oc, a = 0 == (za & Pc | 0) ? 71 : 72;
break;
case 71:
J[104] = za | Pc;
var Tb = Sb, Qc = 456 + ((Ua + 2 | 0) << 2) | 0, a = 74;
break;
case 72:
var Rc = 456 + ((Ua + 2 | 0) << 2) | 0, Sc = J[Rc >> 2];
Sc >>> 0 < J[108] >>> 0 ? a = 73 : (Tb = Sc, Qc = Rc, a = 74);
break;
case 73:
Y(), b("Reached an unreachable!");
case 74:
J[Qc >> 2] = sb;
J[(Tb + 12 | 0) >> 2] = sb;
J[(sb + 8 | 0) >> 2] = Tb;
J[(sb + 12 | 0) >> 2] = Sb;
a = 75;
break;
case 75:
J[106] = ha;
J[109] = Sd;
a = 77;
break;
case 76:
Y(), b("Reached an unreachable!");
case 77:
var Tc = L + 8 | 0, Uc = Tc;
0 == (Tc | 0) ? (s = d, a = 160) : (u = Uc, a = 333);
break;
case 78:
4294967231 < c >>> 0 ? (s = -1, a = 160) : a = 79;
break;
case 79:
var Vc = c + 11 | 0, E = Vc & -8, Td = J[105];
0 == (Td | 0) ? (s = E, a = 160) : a = 80;
break;
case 80:
var Wc = -E | 0, tb = Vc >>> 8;
if(0 == (tb | 0)) {
var Z = 0, a = 83
}else {
a = 81
}
break;
case 81:
16777215 < E >>> 0 ? (Z = 31, a = 83) : a = 82;
break;
case 82:
var Ub = (tb + 1048320 | 0) >>> 16 & 8, Xc = tb << Ub, Ud = (Xc + 520192 | 0) >>> 16 & 4, Yc = Xc << Ud, Vb = (Yc + 245760 | 0) >>> 16 & 2, Zc = (14 - (Ud | Ub | Vb) | 0) + (Yc << Vb >>> 15) | 0, Z = E >>> ((Zc + 7 | 0) >>> 0) & 1 | Zc << 1, a = 83;
break;
case 83:
var $c = J[(720 + (Z << 2) | 0) >> 2];
if(0 == ($c | 0)) {
var Va = 0, ub = Wc, Wb = 0, a = 90
}else {
a = 84
}
break;
case 84:
if(31 == (Z | 0)) {
var Fg = 0, a = 86
}else {
a = 85
}
break;
case 85:
Fg = 25 - (Z >>> 1) | 0;
a = 86;
break;
case 86:
var Gg = 0, De = Wc, vb = $c, Ee = E << Fg, Hg = 0, a = 87;
break;
case 87:
var Ig = J[(vb + 4 | 0) >> 2] & -8, Fe = Ig - E | 0;
if(Fe >>> 0 < De >>> 0) {
a = 88
}else {
var Ge = Gg, He = De, a = 89
}
break;
case 88:
(Ig | 0) == (E | 0) ? (Va = vb, ub = Fe, Wb = vb, a = 90) : (Ge = vb, He = Fe, a = 89);
break;
case 89:
var Ie = J[(vb + 20 | 0) >> 2], Je = J[(vb + 16 + (Ee >>> 31 << 2) | 0) >> 2], Jg = 0 == (Ie | 0) | (Ie | 0) == (Je | 0) ? Hg : Ie, Gk = Ee << 1;
0 == (Je | 0) ? (Va = Ge, ub = He, Wb = Jg, a = 90) : (Gg = Ge, De = He, vb = Je, Ee = Gk, Hg = Jg, a = 87);
break;
case 90:
if(0 == (Wb | 0) & 0 == (Va | 0)) {
a = 91
}else {
var Ke = Wb, a = 93
}
break;
case 91:
var Kg = 2 << Z, Le = (Kg | -Kg | 0) & Td;
0 == (Le | 0) ? (s = E, a = 160) : a = 92;
break;
case 92:
var Lg = (Le & (-Le | 0)) - 1 | 0, Mg = Lg >>> 12 & 16, Ng = Lg >>> (Mg >>> 0), Og = Ng >>> 5 & 8, Pg = Ng >>> (Og >>> 0), Qg = Pg >>> 2 & 4, Rg = Pg >>> (Qg >>> 0), Sg = Rg >>> 1 & 2, Tg = Rg >>> (Sg >>> 0), Ug = Tg >>> 1 & 1, Ke = J[(720 + (((Og | Mg | Qg | Sg | Ug) + (Tg >>> (Ug >>> 0)) | 0) << 2) | 0) >> 2], a = 93;
break;
case 93:
if(0 == (Ke | 0)) {
var $ = ub, T = Va, a = 96
}else {
var Xb = Ke, Vd = ub, Me = Va, a = 94
}
break;
case 94:
var Vg = (J[(Xb + 4 | 0) >> 2] & -8) - E | 0, Wg = Vg >>> 0 < Vd >>> 0, Ne = Wg ? Vg : Vd, Oe = Wg ? Xb : Me, Xg = J[(Xb + 16 | 0) >> 2];
0 == (Xg | 0) ? a = 95 : (Xb = Xg, Vd = Ne, Me = Oe, a = 94);
break;
case 95:
var Yg = J[(Xb + 20 | 0) >> 2];
0 == (Yg | 0) ? ($ = Ne, T = Oe, a = 96) : (Xb = Yg, Vd = Ne, Me = Oe, a = 94);
break;
case 96:
0 == (T | 0) ? (s = E, a = 160) : a = 97;
break;
case 97:
$ >>> 0 < (J[106] - E | 0) >>> 0 ? a = 98 : (s = E, a = 160);
break;
case 98:
var Q = T, Pe = J[108], a = Q >>> 0 < Pe >>> 0 ? 158 : 99;
break;
case 99:
var Qe = Q + E | 0, Zg = Qe, a = Q >>> 0 < Qe >>> 0 ? 100 : 158;
break;
case 100:
var ad = J[(T + 24 | 0) >> 2], Wd = J[(T + 12 | 0) >> 2], a = (Wd | 0) == (T | 0) ? 106 : 101;
break;
case 101:
var Re = J[(T + 8 | 0) >> 2], a = Re >>> 0 < Pe >>> 0 ? 105 : 102;
break;
case 102:
var $g = Re + 12 | 0, a = (J[$g >> 2] | 0) == (T | 0) ? 103 : 105;
break;
case 103:
var ah = Wd + 8 | 0, a = (J[ah >> 2] | 0) == (T | 0) ? 104 : 105;
break;
case 104:
J[$g >> 2] = Wd;
J[ah >> 2] = Re;
var da = Wd, a = 113;
break;
case 105:
Y(), b("Reached an unreachable!");
case 106:
var bh = T + 20 | 0, ch = J[bh >> 2];
if(0 == (ch | 0)) {
a = 107
}else {
var Yb = ch, bd = bh, a = 108
}
break;
case 107:
var dh = T + 16 | 0, eh = J[dh >> 2];
0 == (eh | 0) ? (da = 0, a = 113) : (Yb = eh, bd = dh, a = 108);
break;
case 108:
var fh = Yb + 20 | 0, gh = J[fh >> 2];
0 == (gh | 0) ? a = 109 : (Yb = gh, bd = fh, a = 108);
break;
case 109:
var hh = Yb + 16 | 0, ih = J[hh >> 2];
0 == (ih | 0) ? a = 110 : (Yb = ih, bd = hh, a = 108);
break;
case 110:
a = bd >>> 0 < Pe >>> 0 ? 112 : 111;
break;
case 111:
J[bd >> 2] = 0;
da = Yb;
a = 113;
break;
case 112:
Y(), b("Reached an unreachable!");
case 113:
a = 0 == (ad | 0) ? 133 : 114;
break;
case 114:
var jh = J[(T + 28 | 0) >> 2], kh = 720 + (jh << 2) | 0, a = (T | 0) == (J[kh >> 2] | 0) ? 115 : 117;
break;
case 115:
J[kh >> 2] = da;
a = 0 == (da | 0) ? 116 : 123;
break;
case 116:
J[105] &= 1 << jh ^ -1;
a = 133;
break;
case 117:
a = ad >>> 0 < J[108] >>> 0 ? 121 : 118;
break;
case 118:
var lh = ad + 16 | 0, a = (J[lh >> 2] | 0) == (T | 0) ? 119 : 120;
break;
case 119:
J[lh >> 2] = da;
a = 122;
break;
case 120:
J[(ad + 20 | 0) >> 2] = da;
a = 122;
break;
case 121:
Y(), b("Reached an unreachable!");
case 122:
a = 0 == (da | 0) ? 133 : 123;
break;
case 123:
a = da >>> 0 < J[108] >>> 0 ? 132 : 124;
break;
case 124:
J[(da + 24 | 0) >> 2] = ad;
var Xd = J[(T + 16 | 0) >> 2], a = 0 == (Xd | 0) ? 128 : 125;
break;
case 125:
a = Xd >>> 0 < J[108] >>> 0 ? 127 : 126;
break;
case 126:
J[(da + 16 | 0) >> 2] = Xd;
J[(Xd + 24 | 0) >> 2] = da;
a = 128;
break;
case 127:
Y(), b("Reached an unreachable!");
case 128:
var Yd = J[(T + 20 | 0) >> 2], a = 0 == (Yd | 0) ? 133 : 129;
break;
case 129:
a = Yd >>> 0 < J[108] >>> 0 ? 131 : 130;
break;
case 130:
J[(da + 20 | 0) >> 2] = Yd;
J[(Yd + 24 | 0) >> 2] = da;
a = 133;
break;
case 131:
Y(), b("Reached an unreachable!");
case 132:
Y(), b("Reached an unreachable!");
case 133:
a = 16 > $ >>> 0 ? 134 : 135;
break;
case 134:
var mh = $ + E | 0;
J[(T + 4 | 0) >> 2] = mh | 3;
var nh = Q + (mh + 4 | 0) | 0;
J[nh >> 2] |= 1;
a = 159;
break;
case 135:
J[(T + 4 | 0) >> 2] = E | 3;
J[(Q + (E | 4) | 0) >> 2] = $ | 1;
J[(Q + ($ + E | 0) | 0) >> 2] = $;
var oh = $ >>> 3, a = 256 > $ >>> 0 ? 136 : 141;
break;
case 136:
var Se = oh << 1, ph = 456 + (Se << 2) | 0, qh = J[104], rh = 1 << oh, a = 0 == (qh & rh | 0) ? 137 : 138;
break;
case 137:
J[104] = qh | rh;
var Te = ph, sh = 456 + ((Se + 2 | 0) << 2) | 0, a = 140;
break;
case 138:
var th = 456 + ((Se + 2 | 0) << 2) | 0, uh = J[th >> 2];
uh >>> 0 < J[108] >>> 0 ? a = 139 : (Te = uh, sh = th, a = 140);
break;
case 139:
Y(), b("Reached an unreachable!");
case 140:
J[sh >> 2] = Zg;
J[(Te + 12 | 0) >> 2] = Zg;
J[(Q + (E + 8 | 0) | 0) >> 2] = Te;
J[(Q + (E + 12 | 0) | 0) >> 2] = ph;
a = 159;
break;
case 141:
var Wa = Qe, Ue = $ >>> 8;
if(0 == (Ue | 0)) {
var wb = 0, a = 144
}else {
a = 142
}
break;
case 142:
16777215 < $ >>> 0 ? (wb = 31, a = 144) : a = 143;
break;
case 143:
var vh = (Ue + 1048320 | 0) >>> 16 & 8, wh = Ue << vh, xh = (wh + 520192 | 0) >>> 16 & 4, yh = wh << xh, zh = (yh + 245760 | 0) >>> 16 & 2, Ah = (14 - (xh | vh | zh) | 0) + (yh << zh >>> 15) | 0, wb = $ >>> ((Ah + 7 | 0) >>> 0) & 1 | Ah << 1, a = 144;
break;
case 144:
var Ve = 720 + (wb << 2) | 0;
J[(Q + (E + 28 | 0) | 0) >> 2] = wb;
var Hk = Q + (E + 16 | 0) | 0;
J[(Q + (E + 20 | 0) | 0) >> 2] = 0;
J[Hk >> 2] = 0;
var Bh = J[105], Ch = 1 << wb, a = 0 == (Bh & Ch | 0) ? 145 : 146;
break;
case 145:
J[105] = Bh | Ch;
J[Ve >> 2] = Wa;
J[(Q + (E + 24 | 0) | 0) >> 2] = Ve;
J[(Q + (E + 12 | 0) | 0) >> 2] = Wa;
J[(Q + (E + 8 | 0) | 0) >> 2] = Wa;
a = 159;
break;
case 146:
var Ik = J[Ve >> 2];
if(31 == (wb | 0)) {
var Dh = 0, a = 148
}else {
a = 147
}
break;
case 147:
Dh = 25 - (wb >>> 1) | 0;
a = 148;
break;
case 148:
var We = $ << Dh, xb = Ik, a = 149;
break;
case 149:
a = (J[(xb + 4 | 0) >> 2] & -8 | 0) == ($ | 0) ? 154 : 150;
break;
case 150:
var Xe = xb + 16 + (We >>> 31 << 2) | 0, Eh = J[Xe >> 2], Jk = We << 1;
0 == (Eh | 0) ? a = 151 : (We = Jk, xb = Eh, a = 149);
break;
case 151:
a = Xe >>> 0 < J[108] >>> 0 ? 153 : 152;
break;
case 152:
J[Xe >> 2] = Wa;
J[(Q + (E + 24 | 0) | 0) >> 2] = xb;
J[(Q + (E + 12 | 0) | 0) >> 2] = Wa;
J[(Q + (E + 8 | 0) | 0) >> 2] = Wa;
a = 159;
break;
case 153:
Y(), b("Reached an unreachable!");
case 154:
var Fh = xb + 8 | 0, Ye = J[Fh >> 2], Gh = J[108], a = xb >>> 0 < Gh >>> 0 ? 157 : 155;
break;
case 155:
a = Ye >>> 0 < Gh >>> 0 ? 157 : 156;
break;
case 156:
J[(Ye + 12 | 0) >> 2] = Wa;
J[Fh >> 2] = Wa;
J[(Q + (E + 8 | 0) | 0) >> 2] = Ye;
J[(Q + (E + 12 | 0) | 0) >> 2] = xb;
J[(Q + (E + 24 | 0) | 0) >> 2] = 0;
a = 159;
break;
case 157:
Y(), b("Reached an unreachable!");
case 158:
Y(), b("Reached an unreachable!");
case 159:
var Hh = T + 8 | 0, Kk = Hh;
0 == (Hh | 0) ? (s = E, a = 160) : (u = Kk, a = 333);
break;
case 160:
var cd = J[106], a = s >>> 0 > cd >>> 0 ? 165 : 161;
break;
case 161:
var Zd = cd - s | 0, dd = J[109], a = 15 < Zd >>> 0 ? 162 : 163;
break;
case 162:
var Ze = dd;
J[109] = Ze + s | 0;
J[106] = Zd;
J[(Ze + (s + 4 | 0) | 0) >> 2] = Zd | 1;
J[(Ze + cd | 0) >> 2] = Zd;
J[(dd + 4 | 0) >> 2] = s | 3;
a = 164;
break;
case 163:
J[106] = 0;
J[109] = 0;
J[(dd + 4 | 0) >> 2] = cd | 3;
var Ih = dd + (cd + 4 | 0) | 0;
J[Ih >> 2] |= 1;
a = 164;
break;
case 164:
u = dd + 8 | 0;
a = 333;
break;
case 165:
var Jh = J[107], a = s >>> 0 < Jh >>> 0 ? 166 : 167;
break;
case 166:
var Kh = Jh - s | 0;
J[107] = Kh;
var $e = J[110], Lh = $e;
J[110] = Lh + s | 0;
J[(Lh + (s + 4 | 0) | 0) >> 2] = Kh | 1;
J[($e + 4 | 0) >> 2] = s | 3;
u = $e + 8 | 0;
a = 333;
break;
case 167:
a = 0 == (J[2] | 0) ? 168 : 169;
break;
case 168:
zk();
a = 169;
break;
case 169:
var Lk = s + 48 | 0, Nh = J[4], Oh = s + 47 | 0, Ph = Nh + Oh | 0, Qh = -Nh | 0, Zb = Ph & Qh;
Zb >>> 0 > s >>> 0 ? a = 170 : (u = 0, a = 333);
break;
case 170:
var Rh = J[214], a = 0 == (Rh | 0) ? 172 : 171;
break;
case 171:
var Sh = J[212], Th = Sh + Zb | 0;
Th >>> 0 <= Sh >>> 0 | Th >>> 0 > Rh >>> 0 ? (u = 0, a = 333) : a = 172;
break;
case 172:
if(0 == (J[215] & 4 | 0)) {
a = 173
}else {
var Uh = 0, a = 196
}
break;
case 173:
var Vh = J[110], a = 0 == (Vh | 0) ? 179 : 174;
break;
case 174:
var Wh = Vh, ed = 864, a = 175;
break;
case 175:
var Xh = ed | 0, Yh = J[Xh >> 2], a = Yh >>> 0 > Wh >>> 0 ? 177 : 176;
break;
case 176:
var Zh = ed + 4 | 0, a = (Yh + J[Zh >> 2] | 0) >>> 0 > Wh >>> 0 ? 178 : 177;
break;
case 177:
var $h = J[(ed + 8 | 0) >> 2];
0 == ($h | 0) ? a = 179 : (ed = $h, a = 175);
break;
case 178:
a = 0 == (ed | 0) ? 179 : 186;
break;
case 179:
var $d = Dg(0);
if(-1 == ($d | 0)) {
var $b = 0, a = 195
}else {
a = 180
}
break;
case 180:
var af = $d, ai = J[3], bi = ai - 1 | 0;
if(0 == (bi & af | 0)) {
var yb = Zb, a = 182
}else {
a = 181
}
break;
case 181:
yb = (Zb - af | 0) + ((bi + af | 0) & (-ai | 0)) | 0;
a = 182;
break;
case 182:
var ci = J[212], di = ci + yb | 0;
yb >>> 0 > s >>> 0 & 2147483647 > yb >>> 0 ? a = 183 : ($b = 0, a = 195);
break;
case 183:
var ei = J[214], a = 0 == (ei | 0) ? 185 : 184;
break;
case 184:
di >>> 0 <= ci >>> 0 | di >>> 0 > ei >>> 0 ? ($b = 0, a = 195) : a = 185;
break;
case 185:
var fi = Dg(yb), gi = (fi | 0) == ($d | 0), bf = gi ? $d : -1, ae = gi ? yb : 0, be = fi, Xa = yb, a = 188;
break;
case 186:
var ce = (Ph - J[107] | 0) & Qh;
2147483647 > ce >>> 0 ? a = 187 : ($b = 0, a = 195);
break;
case 187:
var cf = Dg(ce), hi = (cf | 0) == (J[Xh >> 2] + J[Zh >> 2] | 0), Mk = hi ? ce : 0, bf = hi ? cf : -1, ae = Mk, be = cf, Xa = ce, a = 188;
break;
case 188:
var Nk = -Xa | 0;
if(-1 == (bf | 0)) {
a = 189
}else {
var N = ae, C = bf, a = 199
}
break;
case 189:
if(-1 != (be | 0) & 2147483647 > Xa >>> 0 & Xa >>> 0 < Lk >>> 0) {
a = 190
}else {
var df = Xa, a = 194
}
break;
case 190:
var ii = J[4], ef = ((Oh - Xa | 0) + ii | 0) & (-ii | 0);
2147483647 > ef >>> 0 ? a = 191 : (df = Xa, a = 194);
break;
case 191:
a = -1 == (Dg(ef) | 0) ? 193 : 192;
break;
case 192:
df = ef + Xa | 0;
a = 194;
break;
case 193:
Dg(Nk);
$b = ae;
a = 195;
break;
case 194:
-1 == (be | 0) ? ($b = ae, a = 195) : (N = df, C = be, a = 199);
break;
case 195:
J[215] |= 4;
Uh = $b;
a = 196;
break;
case 196:
a = 2147483647 > Zb >>> 0 ? 197 : 332;
break;
case 197:
var de = Dg(Zb), ff = Dg(0), a = -1 != (ff | 0) & -1 != (de | 0) & de >>> 0 < ff >>> 0 ? 198 : 332;
break;
case 198:
var ji = ff - de | 0, ki = ji >>> 0 > (s + 40 | 0) >>> 0, Ok = ki ? ji : Uh, li = ki ? de : -1;
-1 == (li | 0) ? a = 332 : (N = Ok, C = li, a = 199);
break;
case 199:
var gf = J[212] + N | 0;
J[212] = gf;
a = gf >>> 0 > J[213] >>> 0 ? 200 : 201;
break;
case 200:
J[213] = gf;
a = 201;
break;
case 201:
var H = J[110];
if(0 == (H | 0)) {
a = 202
}else {
var fd = 864, a = 207
}
break;
case 202:
var mi = J[108], a = 0 == (mi | 0) | C >>> 0 < mi >>> 0 ? 203 : 204;
break;
case 203:
J[108] = C;
a = 204;
break;
case 204:
J[216] = C;
J[217] = N;
J[219] = 0;
J[113] = J[2];
J[112] = -1;
var hf = 0, a = 205;
break;
case 205:
var jf = hf << 1, ni = 456 + (jf << 2) | 0;
J[(456 + ((jf + 3 | 0) << 2) | 0) >> 2] = ni;
J[(456 + ((jf + 2 | 0) << 2) | 0) >> 2] = ni;
var oi = hf + 1 | 0;
32 > oi >>> 0 ? (hf = oi, a = 205) : a = 206;
break;
case 206:
Ak(C, N - 40 | 0);
a = 330;
break;
case 207:
var pi = J[(fd | 0) >> 2], qi = fd + 4 | 0, ri = J[qi >> 2], a = (C | 0) == (pi + ri | 0) ? 209 : 208;
break;
case 208:
var si = J[(fd + 8 | 0) >> 2];
0 == (si | 0) ? a = 212 : (fd = si, a = 207);
break;
case 209:
a = 0 == (J[(fd + 12 | 0) >> 2] & 8 | 0) ? 210 : 212;
break;
case 210:
var ti = H, a = ti >>> 0 >= pi >>> 0 & ti >>> 0 < C >>> 0 ? 211 : 212;
break;
case 211:
J[qi >> 2] = ri + N | 0;
Ak(H, J[107] + N | 0);
a = 330;
break;
case 212:
a = C >>> 0 < J[108] >>> 0 ? 213 : 214;
break;
case 213:
J[108] = C;
a = 214;
break;
case 214:
var Pk = C + N | 0, gd = 864, a = 215;
break;
case 215:
var ui = gd | 0, a = (J[ui >> 2] | 0) == (Pk | 0) ? 217 : 216;
break;
case 216:
var vi = J[(gd + 8 | 0) >> 2];
0 == (vi | 0) ? a = 298 : (gd = vi, a = 215);
break;
case 217:
a = 0 == (J[(gd + 12 | 0) >> 2] & 8 | 0) ? 218 : 298;
break;
case 218:
J[ui >> 2] = C;
var wi = gd + 4 | 0;
J[wi >> 2] = J[wi >> 2] + N | 0;
var xi = C + 8 | 0;
if(0 == (xi & 7 | 0)) {
var hd = 0, a = 220
}else {
a = 219
}
break;
case 219:
hd = (-xi | 0) & 7;
a = 220;
break;
case 220:
var Qk = C + hd | 0, yi = C + (N + 8 | 0) | 0;
if(0 == (yi & 7 | 0)) {
var ia = 0, a = 222
}else {
a = 221
}
break;
case 221:
ia = (-yi | 0) & 7;
a = 222;
break;
case 222:
var kf = C + (ia + N | 0) | 0, id = kf, R = hd + s | 0, zi = C + R | 0, fe = zi, ge = (kf - Qk | 0) - s | 0;
J[(C + (hd + 4 | 0) | 0) >> 2] = s | 3;
a = (id | 0) == (J[110] | 0) ? 223 : 224;
break;
case 223:
var Ai = J[107] + ge | 0;
J[107] = Ai;
J[110] = fe;
J[(C + (R + 4 | 0) | 0) >> 2] = Ai | 1;
a = 297;
break;
case 224:
a = (id | 0) == (J[109] | 0) ? 225 : 226;
break;
case 225:
var he = J[106] + ge | 0;
J[106] = he;
J[109] = fe;
J[(C + (R + 4 | 0) | 0) >> 2] = he | 1;
J[(C + (he + R | 0) | 0) >> 2] = he;
a = 297;
break;
case 226:
var lf = N + 4 | 0, ie = J[(C + (ia + lf | 0) | 0) >> 2];
if(1 == (ie & 3 | 0)) {
a = 227
}else {
var Bi = id, pa = ge, a = 274
}
break;
case 227:
var Ci = ie & -8, Di = ie >>> 3, a = 256 > ie >>> 0 ? 228 : 240;
break;
case 228:
var ac = J[(C + ((ia | 8) + N | 0) | 0) >> 2], bc = J[(C + ((N + 12 | 0) + ia | 0) | 0) >> 2], Ei = 456 + (Di << 1 << 2) | 0, a = (ac | 0) == (Ei | 0) ? 231 : 229;
break;
case 229:
a = ac >>> 0 < J[108] >>> 0 ? 239 : 230;
break;
case 230:
a = (J[(ac + 12 | 0) >> 2] | 0) == (id | 0) ? 231 : 239;
break;
case 231:
a = (bc | 0) == (ac | 0) ? 232 : 233;
break;
case 232:
J[104] &= 1 << Di ^ -1;
a = 273;
break;
case 233:
a = (bc | 0) == (Ei | 0) ? 234 : 235;
break;
case 234:
var Fi = bc + 8 | 0, a = 237;
break;
case 235:
a = bc >>> 0 < J[108] >>> 0 ? 238 : 236;
break;
case 236:
var Gi = bc + 8 | 0;
(J[Gi >> 2] | 0) == (id | 0) ? (Fi = Gi, a = 237) : a = 238;
break;
case 237:
J[(ac + 12 | 0) >> 2] = bc;
J[Fi >> 2] = ac;
a = 273;
break;
case 238:
Y(), b("Reached an unreachable!");
case 239:
Y(), b("Reached an unreachable!");
case 240:
var jd = kf, kd = J[(C + ((ia | 24) + N | 0) | 0) >> 2], je = J[(C + ((N + 12 | 0) + ia | 0) | 0) >> 2], a = (je | 0) == (jd | 0) ? 246 : 241;
break;
case 241:
var mf = J[(C + ((ia | 8) + N | 0) | 0) >> 2], a = mf >>> 0 < J[108] >>> 0 ? 245 : 242;
break;
case 242:
var Hi = mf + 12 | 0, a = (J[Hi >> 2] | 0) == (jd | 0) ? 243 : 245;
break;
case 243:
var Ii = je + 8 | 0, a = (J[Ii >> 2] | 0) == (jd | 0) ? 244 : 245;
break;
case 244:
J[Hi >> 2] = je;
J[Ii >> 2] = mf;
var ea = je, a = 253;
break;
case 245:
Y(), b("Reached an unreachable!");
case 246:
var Ji = ia | 16, Ki = C + (Ji + lf | 0) | 0, Li = J[Ki >> 2];
if(0 == (Li | 0)) {
a = 247
}else {
var cc = Li, ld = Ki, a = 248
}
break;
case 247:
var Mi = C + (Ji + N | 0) | 0, Ni = J[Mi >> 2];
0 == (Ni | 0) ? (ea = 0, a = 253) : (cc = Ni, ld = Mi, a = 248);
break;
case 248:
var Oi = cc + 20 | 0, Pi = J[Oi >> 2];
0 == (Pi | 0) ? a = 249 : (cc = Pi, ld = Oi, a = 248);
break;
case 249:
var Qi = cc + 16 | 0, Ri = J[Qi >> 2];
0 == (Ri | 0) ? a = 250 : (cc = Ri, ld = Qi, a = 248);
break;
case 250:
a = ld >>> 0 < J[108] >>> 0 ? 252 : 251;
break;
case 251:
J[ld >> 2] = 0;
ea = cc;
a = 253;
break;
case 252:
Y(), b("Reached an unreachable!");
case 253:
a = 0 == (kd | 0) ? 273 : 254;
break;
case 254:
var Si = J[(C + ((N + 28 | 0) + ia | 0) | 0) >> 2], Ti = 720 + (Si << 2) | 0, a = (jd | 0) == (J[Ti >> 2] | 0) ? 255 : 257;
break;
case 255:
J[Ti >> 2] = ea;
a = 0 == (ea | 0) ? 256 : 263;
break;
case 256:
J[105] &= 1 << Si ^ -1;
a = 273;
break;
case 257:
a = kd >>> 0 < J[108] >>> 0 ? 261 : 258;
break;
case 258:
var Ui = kd + 16 | 0, a = (J[Ui >> 2] | 0) == (jd | 0) ? 259 : 260;
break;
case 259:
J[Ui >> 2] = ea;
a = 262;
break;
case 260:
J[(kd + 20 | 0) >> 2] = ea;
a = 262;
break;
case 261:
Y(), b("Reached an unreachable!");
case 262:
a = 0 == (ea | 0) ? 273 : 263;
break;
case 263:
a = ea >>> 0 < J[108] >>> 0 ? 272 : 264;
break;
case 264:
J[(ea + 24 | 0) >> 2] = kd;
var Vi = ia | 16, ke = J[(C + (Vi + N | 0) | 0) >> 2], a = 0 == (ke | 0) ? 268 : 265;
break;
case 265:
a = ke >>> 0 < J[108] >>> 0 ? 267 : 266;
break;
case 266:
J[(ea + 16 | 0) >> 2] = ke;
J[(ke + 24 | 0) >> 2] = ea;
a = 268;
break;
case 267:
Y(), b("Reached an unreachable!");
case 268:
var le = J[(C + (Vi + lf | 0) | 0) >> 2], a = 0 == (le | 0) ? 273 : 269;
break;
case 269:
a = le >>> 0 < J[108] >>> 0 ? 271 : 270;
break;
case 270:
J[(ea + 20 | 0) >> 2] = le;
J[(le + 24 | 0) >> 2] = ea;
a = 273;
break;
case 271:
Y(), b("Reached an unreachable!");
case 272:
Y(), b("Reached an unreachable!");
case 273:
var Rk = Ci + ge | 0, Bi = C + ((Ci | ia) + N | 0) | 0, pa = Rk, a = 274;
break;
case 274:
var Wi = Bi + 4 | 0;
J[Wi >> 2] &= -2;
J[(C + (R + 4 | 0) | 0) >> 2] = pa | 1;
J[(C + (pa + R | 0) | 0) >> 2] = pa;
var Xi = pa >>> 3, a = 256 > pa >>> 0 ? 275 : 280;
break;
case 275:
var nf = Xi << 1, Yi = 456 + (nf << 2) | 0, Zi = J[104], $i = 1 << Xi, a = 0 == (Zi & $i | 0) ? 276 : 277;
break;
case 276:
J[104] = Zi | $i;
var of = Yi, aj = 456 + ((nf + 2 | 0) << 2) | 0, a = 279;
break;
case 277:
var bj = 456 + ((nf + 2 | 0) << 2) | 0, cj = J[bj >> 2];
cj >>> 0 < J[108] >>> 0 ? a = 278 : (of = cj, aj = bj, a = 279);
break;
case 278:
Y(), b("Reached an unreachable!");
case 279:
J[aj >> 2] = fe;
J[(of + 12 | 0) >> 2] = fe;
J[(C + (R + 8 | 0) | 0) >> 2] = of;
J[(C + (R + 12 | 0) | 0) >> 2] = Yi;
a = 297;
break;
case 280:
var Ya = zi, pf = pa >>> 8;
if(0 == (pf | 0)) {
var zb = 0, a = 283
}else {
a = 281
}
break;
case 281:
16777215 < pa >>> 0 ? (zb = 31, a = 283) : a = 282;
break;
case 282:
var dj = (pf + 1048320 | 0) >>> 16 & 8, ej = pf << dj, fj = (ej + 520192 | 0) >>> 16 & 4, gj = ej << fj, hj = (gj + 245760 | 0) >>> 16 & 2, ij = (14 - (fj | dj | hj) | 0) + (gj << hj >>> 15) | 0, zb = pa >>> ((ij + 7 | 0) >>> 0) & 1 | ij << 1, a = 283;
break;
case 283:
var qf = 720 + (zb << 2) | 0;
J[(C + (R + 28 | 0) | 0) >> 2] = zb;
var Sk = C + (R + 16 | 0) | 0;
J[(C + (R + 20 | 0) | 0) >> 2] = 0;
J[Sk >> 2] = 0;
var jj = J[105], kj = 1 << zb, a = 0 == (jj & kj | 0) ? 284 : 285;
break;
case 284:
J[105] = jj | kj;
J[qf >> 2] = Ya;
J[(C + (R + 24 | 0) | 0) >> 2] = qf;
J[(C + (R + 12 | 0) | 0) >> 2] = Ya;
J[(C + (R + 8 | 0) | 0) >> 2] = Ya;
a = 297;
break;
case 285:
var Tk = J[qf >> 2];
if(31 == (zb | 0)) {
var lj = 0, a = 287
}else {
a = 286
}
break;
case 286:
lj = 25 - (zb >>> 1) | 0;
a = 287;
break;
case 287:
var rf = pa << lj, Ab = Tk, a = 288;
break;
case 288:
a = (J[(Ab + 4 | 0) >> 2] & -8 | 0) == (pa | 0) ? 293 : 289;
break;
case 289:
var sf = Ab + 16 + (rf >>> 31 << 2) | 0, mj = J[sf >> 2], Uk = rf << 1;
0 == (mj | 0) ? a = 290 : (rf = Uk, Ab = mj, a = 288);
break;
case 290:
a = sf >>> 0 < J[108] >>> 0 ? 292 : 291;
break;
case 291:
J[sf >> 2] = Ya;
J[(C + (R + 24 | 0) | 0) >> 2] = Ab;
J[(C + (R + 12 | 0) | 0) >> 2] = Ya;
J[(C + (R + 8 | 0) | 0) >> 2] = Ya;
a = 297;
break;
case 292:
Y(), b("Reached an unreachable!");
case 293:
var nj = Ab + 8 | 0, tf = J[nj >> 2], oj = J[108], a = Ab >>> 0 < oj >>> 0 ? 296 : 294;
break;
case 294:
a = tf >>> 0 < oj >>> 0 ? 296 : 295;
break;
case 295:
J[(tf + 12 | 0) >> 2] = Ya;
J[nj >> 2] = Ya;
J[(C + (R + 8 | 0) | 0) >> 2] = tf;
J[(C + (R + 12 | 0) | 0) >> 2] = Ab;
J[(C + (R + 24 | 0) | 0) >> 2] = 0;
a = 297;
break;
case 296:
Y(), b("Reached an unreachable!");
case 297:
u = C + (hd | 8) | 0;
a = 333;
break;
case 298:
var dc = H, me = 864, a = 299;
break;
case 299:
var ne = J[(me | 0) >> 2], a = ne >>> 0 > dc >>> 0 ? 301 : 300;
break;
case 300:
var uf = J[(me + 4 | 0) >> 2], vf = ne + uf | 0, a = vf >>> 0 > dc >>> 0 ? 302 : 301;
break;
case 301:
me = J[(me + 8 | 0) >> 2];
a = 299;
break;
case 302:
var Vk = uf - 47 | 0, pj = ne + (uf - 39 | 0) | 0;
if(0 == (pj & 7 | 0)) {
var qj = 0, a = 304
}else {
a = 303
}
break;
case 303:
qj = (-pj | 0) & 7;
a = 304;
break;
case 304:
var rj = ne + (Vk + qj | 0) | 0, ec = rj >>> 0 < (H + 16 | 0) >>> 0 ? dc : rj, md = ec + 8 | 0, Wk = md;
Ak(C, N - 40 | 0);
J[(ec + 4 | 0) >> 2] = 27;
B(p);
J[md >> 2] = J[216];
J[md + 4 >> 2] = J[217];
J[md + 8 >> 2] = J[218];
J[md + 12 >> 2] = J[219];
J[216] = C;
J[217] = N;
J[219] = 0;
J[218] = Wk;
var sj = ec + 28 | 0;
J[sj >> 2] = 7;
if((ec + 32 | 0) >>> 0 < vf >>> 0) {
var wf = sj, a = 305
}else {
a = 306
}
break;
case 305:
var tj = wf + 4 | 0;
J[tj >> 2] = 7;
(wf + 8 | 0) >>> 0 < vf >>> 0 ? (wf = tj, a = 305) : a = 306;
break;
case 306:
a = (ec | 0) == (dc | 0) ? 330 : 307;
break;
case 307:
var qa = ec - H | 0, Xk = dc + qa | 0, uj = dc + (qa + 4 | 0) | 0;
J[uj >> 2] &= -2;
J[(H + 4 | 0) >> 2] = qa | 1;
J[Xk >> 2] = qa;
var vj = qa >>> 3, a = 256 > qa >>> 0 ? 308 : 313;
break;
case 308:
var xf = vj << 1, wj = 456 + (xf << 2) | 0, xj = J[104], yj = 1 << vj, a = 0 == (xj & yj | 0) ? 309 : 310;
break;
case 309:
J[104] = xj | yj;
var yf = wj, zj = 456 + ((xf + 2 | 0) << 2) | 0, a = 312;
break;
case 310:
var Aj = 456 + ((xf + 2 | 0) << 2) | 0, Bj = J[Aj >> 2];
Bj >>> 0 < J[108] >>> 0 ? a = 311 : (yf = Bj, zj = Aj, a = 312);
break;
case 311:
Y(), b("Reached an unreachable!");
case 312:
J[zj >> 2] = H;
J[(yf + 12 | 0) >> 2] = H;
J[(H + 8 | 0) >> 2] = yf;
J[(H + 12 | 0) >> 2] = wj;
a = 330;
break;
case 313:
var oe = H, zf = qa >>> 8;
if(0 == (zf | 0)) {
var Bb = 0, a = 316
}else {
a = 314
}
break;
case 314:
16777215 < qa >>> 0 ? (Bb = 31, a = 316) : a = 315;
break;
case 315:
var Cj = (zf + 1048320 | 0) >>> 16 & 8, Dj = zf << Cj, Ej = (Dj + 520192 | 0) >>> 16 & 4, Fj = Dj << Ej, Gj = (Fj + 245760 | 0) >>> 16 & 2, Hj = (14 - (Ej | Cj | Gj) | 0) + (Fj << Gj >>> 15) | 0, Bb = qa >>> ((Hj + 7 | 0) >>> 0) & 1 | Hj << 1, a = 316;
break;
case 316:
var Af = 720 + (Bb << 2) | 0;
J[(H + 28 | 0) >> 2] = Bb;
J[(H + 20 | 0) >> 2] = 0;
J[(H + 16 | 0) >> 2] = 0;
var Ij = J[105], Jj = 1 << Bb, a = 0 == (Ij & Jj | 0) ? 317 : 318;
break;
case 317:
J[105] = Ij | Jj;
J[Af >> 2] = oe;
J[(H + 24 | 0) >> 2] = Af;
J[(H + 12 | 0) >> 2] = H;
J[(H + 8 | 0) >> 2] = H;
a = 330;
break;
case 318:
var Yk = J[Af >> 2];
if(31 == (Bb | 0)) {
var Kj = 0, a = 320
}else {
a = 319
}
break;
case 319:
Kj = 25 - (Bb >>> 1) | 0;
a = 320;
break;
case 320:
var Bf = qa << Kj, Cb = Yk, a = 321;
break;
case 321:
a = (J[(Cb + 4 | 0) >> 2] & -8 | 0) == (qa | 0) ? 326 : 322;
break;
case 322:
var Cf = Cb + 16 + (Bf >>> 31 << 2) | 0, Lj = J[Cf >> 2], Zk = Bf << 1;
0 == (Lj | 0) ? a = 323 : (Bf = Zk, Cb = Lj, a = 321);
break;
case 323:
a = Cf >>> 0 < J[108] >>> 0 ? 325 : 324;
break;
case 324:
J[Cf >> 2] = oe;
J[(H + 24 | 0) >> 2] = Cb;
J[(H + 12 | 0) >> 2] = H;
J[(H + 8 | 0) >> 2] = H;
a = 330;
break;
case 325:
Y(), b("Reached an unreachable!");
case 326:
var Mj = Cb + 8 | 0, Df = J[Mj >> 2], Nj = J[108], a = Cb >>> 0 < Nj >>> 0 ? 329 : 327;
break;
case 327:
a = Df >>> 0 < Nj >>> 0 ? 329 : 328;
break;
case 328:
J[(Df + 12 | 0) >> 2] = oe;
J[Mj >> 2] = oe;
J[(H + 8 | 0) >> 2] = Df;
J[(H + 12 | 0) >> 2] = Cb;
J[(H + 24 | 0) >> 2] = 0;
a = 330;
break;
case 329:
Y(), b("Reached an unreachable!");
case 330:
var Oj = J[107], a = Oj >>> 0 > s >>> 0 ? 331 : 332;
break;
case 331:
var Pj = Oj - s | 0;
J[107] = Pj;
var Ef = J[110], Qj = Ef;
J[110] = Qj + s | 0;
J[(Qj + (s + 4 | 0) | 0) >> 2] = Pj | 1;
J[(Ef + 4 | 0) >> 2] = s | 3;
u = Ef + 8 | 0;
a = 333;
break;
case 332:
eg || (eg = O([0], "i32", Jd), J[eg >> 2] = 0);
J[eg >> 2] = 12;
u = 0;
a = 333;
break;
case 333:
return u;
default:
B(0, "bad label: " + a)
}
}
}
function Bk(c) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 0 == (c | 0) ? 156 : 2;
break;
case 2:
var d = c - 8 | 0, e = d, f = J[108], a = d >>> 0 < f >>> 0 ? 155 : 3;
break;
case 3:
var g = J[(c - 4 | 0) >> 2], h = g & 3, a = 1 == (h | 0) ? 155 : 4;
break;
case 4:
var k = g & -8, j = c + (k - 8 | 0) | 0, m = j;
if(0 == (g & 1 | 0)) {
a = 5
}else {
var n = e, l = k, a = 56
}
break;
case 5:
var y = J[d >> 2], a = 0 == (h | 0) ? 156 : 6;
break;
case 6:
var D = -8 - y | 0, K = c + D | 0, w = K, u = y + k | 0, a = K >>> 0 < f >>> 0 ? 155 : 7;
break;
case 7:
a = (w | 0) == (J[109] | 0) ? 54 : 8;
break;
case 8:
var s = y >>> 3, a = 256 > y >>> 0 ? 9 : 21;
break;
case 9:
var q = J[(c + (D + 8 | 0) | 0) >> 2], G = J[(c + (D + 12 | 0) | 0) >> 2], ua = 456 + (s << 1 << 2) | 0, a = (q | 0) == (ua | 0) ? 12 : 10;
break;
case 10:
a = q >>> 0 < f >>> 0 ? 20 : 11;
break;
case 11:
a = (J[(q + 12 | 0) >> 2] | 0) == (w | 0) ? 12 : 20;
break;
case 12:
a = (G | 0) == (q | 0) ? 13 : 14;
break;
case 13:
J[104] &= 1 << s ^ -1;
n = w;
l = u;
a = 56;
break;
case 14:
a = (G | 0) == (ua | 0) ? 15 : 16;
break;
case 15:
var Ca = G + 8 | 0, a = 18;
break;
case 16:
a = G >>> 0 < f >>> 0 ? 19 : 17;
break;
case 17:
var va = G + 8 | 0;
(J[va >> 2] | 0) == (w | 0) ? (Ca = va, a = 18) : a = 19;
break;
case 18:
J[(q + 12 | 0) >> 2] = G;
J[Ca >> 2] = q;
n = w;
l = u;
a = 56;
break;
case 19:
Y(), b("Reached an unreachable!");
case 20:
Y(), b("Reached an unreachable!");
case 21:
var ba = K, fa = J[(c + (D + 24 | 0) | 0) >> 2], ka = J[(c + (D + 12 | 0) | 0) >> 2], a = (ka | 0) == (ba | 0) ? 27 : 22;
break;
case 22:
var xa = J[(c + (D + 8 | 0) | 0) >> 2], a = xa >>> 0 < f >>> 0 ? 26 : 23;
break;
case 23:
var Pa = xa + 12 | 0, a = (J[Pa >> 2] | 0) == (ba | 0) ? 24 : 26;
break;
case 24:
var Da = ka + 8 | 0, a = (J[Da >> 2] | 0) == (ba | 0) ? 25 : 26;
break;
case 25:
J[Pa >> 2] = ka;
J[Da >> 2] = xa;
var U = ka, a = 34;
break;
case 26:
Y(), b("Reached an unreachable!");
case 27:
var ya = c + (D + 20 | 0) | 0, ab = J[ya >> 2];
if(0 == (ab | 0)) {
a = 28
}else {
var la = ab, ga = ya, a = 29
}
break;
case 28:
var Ea = c + (D + 16 | 0) | 0, Fa = J[Ea >> 2];
0 == (Fa | 0) ? (U = 0, a = 34) : (la = Fa, ga = Ea, a = 29);
break;
case 29:
var bb = la + 20 | 0, tc = J[bb >> 2];
0 == (tc | 0) ? a = 30 : (la = tc, ga = bb, a = 29);
break;
case 30:
var uc = la + 16 | 0, Jb = J[uc >> 2];
0 == (Jb | 0) ? a = 31 : (la = Jb, ga = uc, a = 29);
break;
case 31:
a = ga >>> 0 < f >>> 0 ? 33 : 32;
break;
case 32:
J[ga >> 2] = 0;
U = la;
a = 34;
break;
case 33:
Y(), b("Reached an unreachable!");
case 34:
0 == (fa | 0) ? (n = w, l = u, a = 56) : a = 35;
break;
case 35:
var Kb = J[(c + (D + 28 | 0) | 0) >> 2], Pd = 720 + (Kb << 2) | 0, a = (ba | 0) == (J[Pd >> 2] | 0) ? 36 : 38;
break;
case 36:
J[Pd >> 2] = U;
a = 0 == (U | 0) ? 37 : 44;
break;
case 37:
J[105] &= 1 << Kb ^ -1;
n = w;
l = u;
a = 56;
break;
case 38:
a = fa >>> 0 < J[108] >>> 0 ? 42 : 39;
break;
case 39:
var vc = fa + 16 | 0, a = (J[vc >> 2] | 0) == (ba | 0) ? 40 : 41;
break;
case 40:
J[vc >> 2] = U;
a = 43;
break;
case 41:
J[(fa + 20 | 0) >> 2] = U;
a = 43;
break;
case 42:
Y(), b("Reached an unreachable!");
case 43:
0 == (U | 0) ? (n = w, l = u, a = 56) : a = 44;
break;
case 44:
a = U >>> 0 < J[108] >>> 0 ? 53 : 45;
break;
case 45:
J[(U + 24 | 0) >> 2] = fa;
var Ga = J[(c + (D + 16 | 0) | 0) >> 2], a = 0 == (Ga | 0) ? 49 : 46;
break;
case 46:
a = Ga >>> 0 < J[108] >>> 0 ? 48 : 47;
break;
case 47:
J[(U + 16 | 0) >> 2] = Ga;
J[(Ga + 24 | 0) >> 2] = U;
a = 49;
break;
case 48:
Y(), b("Reached an unreachable!");
case 49:
var cb = J[(c + (D + 20 | 0) | 0) >> 2];
0 == (cb | 0) ? (n = w, l = u, a = 56) : a = 50;
break;
case 50:
a = cb >>> 0 < J[108] >>> 0 ? 52 : 51;
break;
case 51:
J[(U + 20 | 0) >> 2] = cb;
J[(cb + 24 | 0) >> 2] = U;
n = w;
l = u;
a = 56;
break;
case 52:
Y(), b("Reached an unreachable!");
case 53:
Y(), b("Reached an unreachable!");
case 54:
var db = c + (k - 4 | 0) | 0;
3 == (J[db >> 2] & 3 | 0) ? a = 55 : (n = w, l = u, a = 56);
break;
case 55:
J[106] = u;
J[db >> 2] &= -2;
J[(c + (D + 4 | 0) | 0) >> 2] = u | 1;
J[j >> 2] = u;
a = 156;
break;
case 56:
var eb = n, a = eb >>> 0 < j >>> 0 ? 57 : 155;
break;
case 57:
var wc = c + (k - 4 | 0) | 0, Ha = J[wc >> 2], a = 0 == (Ha & 1 | 0) ? 155 : 58;
break;
case 58:
a = 0 == (Ha & 2 | 0) ? 59 : 128;
break;
case 59:
a = (m | 0) == (J[110] | 0) ? 60 : 78;
break;
case 60:
var fb = J[107] + l | 0;
J[107] = fb;
J[110] = n;
J[(n + 4 | 0) >> 2] = fb | 1;
a = (n | 0) == (J[109] | 0) ? 61 : 62;
break;
case 61:
J[109] = 0;
J[106] = 0;
a = 62;
break;
case 62:
a = fb >>> 0 > J[111] >>> 0 ? 63 : 156;
break;
case 63:
if(0 == (J[2] | 0)) {
a = 64
}else {
var Lb = n, a = 65
}
break;
case 64:
zk();
Lb = J[110];
a = 65;
break;
case 65:
a = 0 == (Lb | 0) ? 156 : 66;
break;
case 66:
var xc = J[107], a = 40 < xc >>> 0 ? 67 : 76;
break;
case 67:
var gb = J[4], Mb = Math.P(Math.floor((((xc - 41 | 0) + gb | 0) >>> 0) / (gb >>> 0)) - 1 | 0, gb), yc = Lb, Qa = 864, a = 68;
break;
case 68:
var zc = J[(Qa | 0) >> 2], a = zc >>> 0 > yc >>> 0 ? 70 : 69;
break;
case 69:
if((zc + J[(Qa + 4 | 0) >> 2] | 0) >>> 0 > yc >>> 0) {
var hb = Qa, a = 71
}else {
a = 70
}
break;
case 70:
var Ac = J[(Qa + 8 | 0) >> 2];
0 == (Ac | 0) ? (hb = 0, a = 71) : (Qa = Ac, a = 68);
break;
case 71:
a = 0 == (J[(hb + 12 | 0) >> 2] & 8 | 0) ? 72 : 76;
break;
case 72:
var ib = Dg(0), Nb = hb + 4 | 0, a = (ib | 0) == (J[(hb | 0) >> 2] + J[Nb >> 2] | 0) ? 73 : 76;
break;
case 73:
var Qd = -2147483648 - gb | 0, Rd = Dg(-(2147483646 < Mb >>> 0 ? Qd : Mb) | 0), Ob = Dg(0), a = -1 != (Rd | 0) & Ob >>> 0 < ib >>> 0 ? 74 : 76;
break;
case 74:
var jb = ib - Ob | 0, a = (ib | 0) == (Ob | 0) ? 76 : 75;
break;
case 75:
J[Nb >> 2] = J[Nb >> 2] - jb | 0;
J[212] = J[212] - jb | 0;
Ak(J[110], J[107] - jb | 0);
a = 156;
break;
case 76:
a = J[107] >>> 0 > J[111] >>> 0 ? 77 : 156;
break;
case 77:
J[111] = -1;
a = 156;
break;
case 78:
a = (m | 0) == (J[109] | 0) ? 79 : 80;
break;
case 79:
var Ra = J[106] + l | 0;
J[106] = Ra;
J[109] = n;
J[(n + 4 | 0) >> 2] = Ra | 1;
J[(eb + Ra | 0) >> 2] = Ra;
a = 156;
break;
case 80:
var L = (Ha & -8) + l | 0, ha = Ha >>> 3, a = 256 > Ha >>> 0 ? 81 : 93;
break;
case 81:
var Ia = J[(c + k | 0) >> 2], ma = J[(c + (k | 4) | 0) >> 2], Bc = 456 + (ha << 1 << 2) | 0, a = (Ia | 0) == (Bc | 0) ? 84 : 82;
break;
case 82:
a = Ia >>> 0 < J[108] >>> 0 ? 92 : 83;
break;
case 83:
a = (J[(Ia + 12 | 0) >> 2] | 0) == (m | 0) ? 84 : 92;
break;
case 84:
a = (ma | 0) == (Ia | 0) ? 85 : 86;
break;
case 85:
J[104] &= 1 << ha ^ -1;
a = 126;
break;
case 86:
a = (ma | 0) == (Bc | 0) ? 87 : 88;
break;
case 87:
var Cc = ma + 8 | 0, a = 90;
break;
case 88:
a = ma >>> 0 < J[108] >>> 0 ? 91 : 89;
break;
case 89:
var Dc = ma + 8 | 0;
(J[Dc >> 2] | 0) == (m | 0) ? (Cc = Dc, a = 90) : a = 91;
break;
case 90:
J[(Ia + 12 | 0) >> 2] = ma;
J[Cc >> 2] = Ia;
a = 126;
break;
case 91:
Y(), b("Reached an unreachable!");
case 92:
Y(), b("Reached an unreachable!");
case 93:
var kb = j, lb = J[(c + (k + 16 | 0) | 0) >> 2], na = J[(c + (k | 4) | 0) >> 2], a = (na | 0) == (kb | 0) ? 99 : 94;
break;
case 94:
var mb = J[(c + k | 0) >> 2], a = mb >>> 0 < J[108] >>> 0 ? 98 : 95;
break;
case 95:
var Ec = mb + 12 | 0, a = (J[Ec >> 2] | 0) == (kb | 0) ? 96 : 98;
break;
case 96:
var Sd = na + 8 | 0, a = (J[Sd >> 2] | 0) == (kb | 0) ? 97 : 98;
break;
case 97:
J[Ec >> 2] = na;
J[Sd >> 2] = mb;
var S = na, a = 106;
break;
case 98:
Y(), b("Reached an unreachable!");
case 99:
var nb = c + (k + 12 | 0) | 0, Pb = J[nb >> 2];
if(0 == (Pb | 0)) {
a = 100
}else {
var Ja = Pb, Sa = nb, a = 101
}
break;
case 100:
var W = c + (k + 8 | 0) | 0, Fc = J[W >> 2];
0 == (Fc | 0) ? (S = 0, a = 106) : (Ja = Fc, Sa = W, a = 101);
break;
case 101:
var Gc = Ja + 20 | 0, Ka = J[Gc >> 2];
0 == (Ka | 0) ? a = 102 : (Ja = Ka, Sa = Gc, a = 101);
break;
case 102:
var Ta = Ja + 16 | 0, Hc = J[Ta >> 2];
0 == (Hc | 0) ? a = 103 : (Ja = Hc, Sa = Ta, a = 101);
break;
case 103:
a = Sa >>> 0 < J[108] >>> 0 ? 105 : 104;
break;
case 104:
J[Sa >> 2] = 0;
S = Ja;
a = 106;
break;
case 105:
Y(), b("Reached an unreachable!");
case 106:
a = 0 == (lb | 0) ? 126 : 107;
break;
case 107:
var Ic = J[(c + (k + 20 | 0) | 0) >> 2], Jc = 720 + (Ic << 2) | 0, a = (kb | 0) == (J[Jc >> 2] | 0) ? 108 : 110;
break;
case 108:
J[Jc >> 2] = S;
a = 0 == (S | 0) ? 109 : 116;
break;
case 109:
J[105] &= 1 << Ic ^ -1;
a = 126;
break;
case 110:
a = lb >>> 0 < J[108] >>> 0 ? 114 : 111;
break;
case 111:
var Kc = lb + 16 | 0, a = (J[Kc >> 2] | 0) == (kb | 0) ? 112 : 113;
break;
case 112:
J[Kc >> 2] = S;
a = 115;
break;
case 113:
J[(lb + 20 | 0) >> 2] = S;
a = 115;
break;
case 114:
Y(), b("Reached an unreachable!");
case 115:
a = 0 == (S | 0) ? 126 : 116;
break;
case 116:
a = S >>> 0 < J[108] >>> 0 ? 125 : 117;
break;
case 117:
J[(S + 24 | 0) >> 2] = lb;
var ob = J[(c + (k + 8 | 0) | 0) >> 2], a = 0 == (ob | 0) ? 121 : 118;
break;
case 118:
a = ob >>> 0 < J[108] >>> 0 ? 120 : 119;
break;
case 119:
J[(S + 16 | 0) >> 2] = ob;
J[(ob + 24 | 0) >> 2] = S;
a = 121;
break;
case 120:
Y(), b("Reached an unreachable!");
case 121:
var pb = J[(c + (k + 12 | 0) | 0) >> 2], a = 0 == (pb | 0) ? 126 : 122;
break;
case 122:
a = pb >>> 0 < J[108] >>> 0 ? 124 : 123;
break;
case 123:
J[(S + 20 | 0) >> 2] = pb;
J[(pb + 24 | 0) >> 2] = S;
a = 126;
break;
case 124:
Y(), b("Reached an unreachable!");
case 125:
Y(), b("Reached an unreachable!");
case 126:
J[(n + 4 | 0) >> 2] = L | 1;
J[(eb + L | 0) >> 2] = L;
if((n | 0) == (J[109] | 0)) {
a = 127
}else {
var oa = L, a = 129
}
break;
case 127:
J[106] = L;
a = 156;
break;
case 128:
J[wc >> 2] = Ha & -2;
J[(n + 4 | 0) >> 2] = l | 1;
oa = J[(eb + l | 0) >> 2] = l;
a = 129;
break;
case 129:
var Lc = oa >>> 3, a = 256 > oa >>> 0 ? 130 : 135;
break;
case 130:
var Qb = Lc << 1, qb = 456 + (Qb << 2) | 0, rb = J[104], Mc = 1 << Lc, a = 0 == (rb & Mc | 0) ? 131 : 132;
break;
case 131:
J[104] = rb | Mc;
var Rb = qb, Nc = 456 + ((Qb + 2 | 0) << 2) | 0, a = 134;
break;
case 132:
var sb = 456 + ((Qb + 2 | 0) << 2) | 0, Oc = J[sb >> 2];
Oc >>> 0 < J[108] >>> 0 ? a = 133 : (Rb = Oc, Nc = sb, a = 134);
break;
case 133:
Y(), b("Reached an unreachable!");
case 134:
J[Nc >> 2] = n;
J[(Rb + 12 | 0) >> 2] = n;
J[(n + 8 | 0) >> 2] = Rb;
J[(n + 12 | 0) >> 2] = qb;
a = 156;
break;
case 135:
var Ua = n, Sb = oa >>> 8;
if(0 == (Sb | 0)) {
var za = 0, a = 138
}else {
a = 136
}
break;
case 136:
16777215 < oa >>> 0 ? (za = 31, a = 138) : a = 137;
break;
case 137:
var Pc = (Sb + 1048320 | 0) >>> 16 & 8, Tb = Sb << Pc, Qc = (Tb + 520192 | 0) >>> 16 & 4, Rc = Tb << Qc, Sc = (Rc + 245760 | 0) >>> 16 & 2, Tc = (14 - (Qc | Pc | Sc) | 0) + (Rc << Sc >>> 15) | 0, za = oa >>> ((Tc + 7 | 0) >>> 0) & 1 | Tc << 1, a = 138;
break;
case 138:
var Uc = 720 + (za << 2) | 0;
J[(n + 28 | 0) >> 2] = za;
J[(n + 20 | 0) >> 2] = 0;
J[(n + 16 | 0) >> 2] = 0;
var Vc = J[105], E = 1 << za, a = 0 == (Vc & E | 0) ? 139 : 140;
break;
case 139:
J[105] = Vc | E;
J[Uc >> 2] = Ua;
J[(n + 24 | 0) >> 2] = Uc;
J[(n + 12 | 0) >> 2] = n;
J[(n + 8 | 0) >> 2] = n;
a = 152;
break;
case 140:
var Td = J[Uc >> 2];
if(31 == (za | 0)) {
var Wc = 0, a = 142
}else {
a = 141
}
break;
case 141:
Wc = 25 - (za >>> 1) | 0;
a = 142;
break;
case 142:
var tb = oa << Wc, Z = Td, a = 143;
break;
case 143:
a = (J[(Z + 4 | 0) >> 2] & -8 | 0) == (oa | 0) ? 148 : 144;
break;
case 144:
var Ub = Z + 16 + (tb >>> 31 << 2) | 0, Xc = J[Ub >> 2], Ud = tb << 1;
0 == (Xc | 0) ? a = 145 : (tb = Ud, Z = Xc, a = 143);
break;
case 145:
a = Ub >>> 0 < J[108] >>> 0 ? 147 : 146;
break;
case 146:
J[Ub >> 2] = Ua;
J[(n + 24 | 0) >> 2] = Z;
J[(n + 12 | 0) >> 2] = n;
J[(n + 8 | 0) >> 2] = n;
a = 152;
break;
case 147:
Y(), b("Reached an unreachable!");
case 148:
var Yc = Z + 8 | 0, Vb = J[Yc >> 2], Zc = J[108], a = Z >>> 0 < Zc >>> 0 ? 151 : 149;
break;
case 149:
a = Vb >>> 0 < Zc >>> 0 ? 151 : 150;
break;
case 150:
J[(Vb + 12 | 0) >> 2] = Ua;
J[Yc >> 2] = Ua;
J[(n + 8 | 0) >> 2] = Vb;
J[(n + 12 | 0) >> 2] = Z;
J[(n + 24 | 0) >> 2] = 0;
a = 152;
break;
case 151:
Y(), b("Reached an unreachable!");
case 152:
var $c = J[112] - 1 | 0;
J[112] = $c;
if(0 == ($c | 0)) {
var Va = 872, a = 153
}else {
a = 156
}
break;
case 153:
var ub = J[Va >> 2], Wb = ub + 8 | 0;
0 == (ub | 0) ? a = 154 : (Va = Wb, a = 153);
break;
case 154:
J[112] = -1;
a = 156;
break;
case 155:
Y(), b("Reached an unreachable!");
case 156:
return;
default:
B(0, "bad label: " + a)
}
}
}
function ok() {
}
function yk() {
}
function Ak(c, a) {
for(var d = 0, d = 1;;) {
switch(d) {
case 1:
var e = c, f = c + 8 | 0;
if(0 == (f & 7 | 0)) {
var g = 0, d = 3
}else {
d = 2
}
break;
case 2:
g = (-f | 0) & 7;
d = 3;
break;
case 3:
d = a - g | 0;
J[110] = e + g | 0;
J[107] = d;
J[(e + (g + 4 | 0) | 0) >> 2] = d | 1;
J[(e + (a + 4 | 0) | 0) >> 2] = 40;
J[111] = J[6];
return;
default:
B(0, "bad label: " + d)
}
}
}
function Ck(c, a, d) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var f = c + 16 | 0, g = J[f >> 2], e = 0 == (g | 0) ? 2 : 3;
break;
case 2:
J[f >> 2] = a;
J[(c + 24 | 0) >> 2] = d;
J[(c + 36 | 0) >> 2] = 1;
e = 7;
break;
case 3:
e = (g | 0) == (a | 0) ? 4 : 6;
break;
case 4:
var h = c + 24 | 0, e = 2 == (J[h >> 2] | 0) ? 5 : 7;
break;
case 5:
J[h >> 2] = d;
e = 7;
break;
case 6:
e = c + 36 | 0;
J[e >> 2] = J[e >> 2] + 1 | 0;
J[(c + 24 | 0) >> 2] = 2;
I[c + 54 | 0] = 1;
e = 7;
break;
case 7:
return;
default:
B(0, "bad label: " + e)
}
}
}
function Dk(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
I[c + 53 | 0] = 1;
f = (J[(c + 4 | 0) >> 2] | 0) == (d | 0) ? 2 : 11;
break;
case 2:
I[c + 52 | 0] = 1;
var g = c + 16 | 0, h = J[g >> 2], f = 0 == (h | 0) ? 3 : 5;
break;
case 3:
J[g >> 2] = a;
J[(c + 24 | 0) >> 2] = e;
J[(c + 36 | 0) >> 2] = 1;
f = 1 == (J[(c + 48 | 0) >> 2] | 0) & 1 == (e | 0) ? 4 : 11;
break;
case 4:
I[c + 54 | 0] = 1;
f = 11;
break;
case 5:
f = (h | 0) == (a | 0) ? 6 : 10;
break;
case 6:
var k = c + 24 | 0, f = J[k >> 2];
if(2 == (f | 0)) {
f = 7
}else {
var j = f, f = 8
}
break;
case 7:
j = J[k >> 2] = e;
f = 8;
break;
case 8:
f = 1 == (J[(c + 48 | 0) >> 2] | 0) & 1 == (j | 0) ? 9 : 11;
break;
case 9:
I[c + 54 | 0] = 1;
f = 11;
break;
case 10:
f = c + 36 | 0;
J[f >> 2] = J[f >> 2] + 1 | 0;
I[c + 54 | 0] = 1;
f = 11;
break;
case 11:
return;
default:
B(0, "bad label: " + f)
}
}
}
function sk(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (J[(a + 8 | 0) >> 2] | 0) == (c | 0) ? 2 : 5;
break;
case 2:
f = (J[(a + 4 | 0) >> 2] | 0) == (d | 0) ? 3 : 14;
break;
case 3:
var g = a + 28 | 0, f = 1 == (J[g >> 2] | 0) ? 14 : 4;
break;
case 4:
J[g >> 2] = e;
f = 14;
break;
case 5:
f = (J[(a | 0) >> 2] | 0) == (c | 0) ? 6 : 14;
break;
case 6:
f = (J[(a + 16 | 0) >> 2] | 0) == (d | 0) ? 8 : 7;
break;
case 7:
var h = a + 20 | 0, f = (J[h >> 2] | 0) == (d | 0) ? 8 : 10;
break;
case 8:
f = 1 == (e | 0) ? 9 : 14;
break;
case 9:
J[(a + 32 | 0) >> 2] = 1;
f = 14;
break;
case 10:
J[(a + 32 | 0) >> 2] = e;
J[h >> 2] = d;
f = a + 40 | 0;
J[f >> 2] = J[f >> 2] + 1 | 0;
f = 1 == (J[(a + 36 | 0) >> 2] | 0) ? 11 : 13;
break;
case 11:
f = 2 == (J[(a + 24 | 0) >> 2] | 0) ? 12 : 13;
break;
case 12:
I[a + 54 | 0] = 1;
f = 13;
break;
case 13:
J[(a + 44 | 0) >> 2] = 4;
f = 14;
break;
case 14:
return;
default:
B(0, "bad label: " + f)
}
}
}
function Ek(c, a, d, e, f, g) {
for(var h = 0, h = 1;;) {
switch(h) {
case 1:
var k = J[(c + 4 | 0) >> 2], j = k >> 8;
if(0 == (k & 1 | 0)) {
var m = j, h = 3
}else {
h = 2
}
break;
case 2:
m = J[(J[e >> 2] + j | 0) >> 2];
h = 3;
break;
case 3:
c = J[(c | 0) >> 2];
F[J[(J[c >> 2] + 20 | 0) >> 2]](c, a, d, e + m | 0, 0 != (k & 2 | 0) ? f : 2, g);
return;
default:
B(0, "bad label: " + h)
}
}
}
function Fk(c, a, d, e, f) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
var h = J[(c + 4 | 0) >> 2], k = h >> 8;
if(0 == (h & 1 | 0)) {
var j = k, g = 3
}else {
g = 2
}
break;
case 2:
j = J[(J[d >> 2] + k | 0) >> 2];
g = 3;
break;
case 3:
c = J[(c | 0) >> 2];
F[J[(J[c >> 2] + 24 | 0) >> 2]](c, a, d + j | 0, 0 != (h & 2 | 0) ? e : 2, f);
return;
default:
B(0, "bad label: " + g)
}
}
}
function $k(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
var g = J[(c + 4 | 0) >> 2], h = g >> 8;
if(0 == (g & 1 | 0)) {
var k = h, f = 3
}else {
f = 2
}
break;
case 2:
k = J[(J[d >> 2] + h | 0) >> 2];
f = 3;
break;
case 3:
c = J[(c | 0) >> 2];
F[J[(J[c >> 2] + 28 | 0) >> 2]](c, a, d + k | 0, 0 != (g & 2 | 0) ? e : 2);
return;
default:
B(0, "bad label: " + f)
}
}
}
function Ib(c) {
var c = J[(c + 4 | 0) >> 2], a = yg(c), d = Md(a + 1);
Bg(d, c, a);
I[d + a | 0] = 0;
return d
}
function rk(c, a, d) {
var e = 0, f = z;
B((z | 0) < (qd | 0));
for(e = 1;;) {
switch(e) {
case 1:
var g = a, e = 0 == (I[d] & 1) << 24 >> 24 ? 3 : 2;
break;
case 2:
var h = J[(d + 8 | 0) >> 2], e = 4;
break;
case 3:
h = d + 1 | 0;
e = 4;
break;
case 4:
c = (xd = z, z = z + 24 | 0, B((z | 0) < (qd | 0)), J[xd >> 2] = c, Id[xd + 8 >> 3] = g, J[xd + 16 >> 2] = h, xd);
zg(c);
z = f;
return;
default:
B(0, "bad label: " + e)
}
}
}
function qk() {
}
function vk(c) {
Bk(c)
}
function pk(c) {
Bk(c)
}
function fk(c) {
Bk(c)
}
function gk(c) {
Bk(c)
}
function xk(c, a, d, e, f) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
g = (J[(a + 8 | 0) >> 2] | 0) == (c | 0) ? 2 : 3;
break;
case 2:
Dk(a, d, e, f);
g = 3;
break;
case 3:
return;
default:
B(0, "bad label: " + g)
}
}
}
function ik(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (J[(a + 8 | 0) >> 2] | 0) == (c | 0) ? 2 : 3;
break;
case 2:
Ck(a, d, e);
f = 3;
break;
case 3:
return;
default:
B(0, "bad label: " + f)
}
}
}
function kk(c, a, d, e, f, g) {
for(var h = 0, h = 1;;) {
switch(h) {
case 1:
h = (c | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
Dk(a, d, e, f);
h = 4;
break;
case 3:
h = J[(c + 8 | 0) >> 2];
F[J[(J[h >> 2] + 20 | 0) >> 2]](h, a, d, e, f, g);
h = 4;
break;
case 4:
return;
default:
B(0, "bad label: " + h)
}
}
}
function jk(c, a, d, e, f) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
var h = c | 0, g = (h | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
g = (J[(a + 4 | 0) >> 2] | 0) == (d | 0) ? 3 : 20;
break;
case 3:
var k = a + 28 | 0, g = 1 == (J[k >> 2] | 0) ? 20 : 4;
break;
case 4:
J[k >> 2] = e;
g = 20;
break;
case 5:
g = (h | 0) == (J[(a | 0) >> 2] | 0) ? 6 : 19;
break;
case 6:
g = (J[(a + 16 | 0) >> 2] | 0) == (d | 0) ? 8 : 7;
break;
case 7:
var j = a + 20 | 0, g = (J[j >> 2] | 0) == (d | 0) ? 8 : 10;
break;
case 8:
g = 1 == (e | 0) ? 9 : 20;
break;
case 9:
J[(a + 32 | 0) >> 2] = 1;
g = 20;
break;
case 10:
J[(a + 32 | 0) >> 2] = e;
var m = a + 44 | 0, g = 4 == (J[m >> 2] | 0) ? 20 : 11;
break;
case 11:
var n = a + 52 | 0;
I[n] = 0;
g = a + 53 | 0;
I[g] = 0;
var l = J[(c + 8 | 0) >> 2];
F[J[(J[l >> 2] + 20 | 0) >> 2]](l, a, d, d, 1, f);
if(0 == I[g] << 24 >> 24) {
var y = 0, g = 13
}else {
g = 12
}
break;
case 12:
0 == I[n] << 24 >> 24 ? (y = 1, g = 13) : g = 17;
break;
case 13:
J[j >> 2] = d;
g = a + 40 | 0;
J[g >> 2] = J[g >> 2] + 1 | 0;
g = 1 == (J[(a + 36 | 0) >> 2] | 0) ? 14 : 16;
break;
case 14:
g = 2 == (J[(a + 24 | 0) >> 2] | 0) ? 15 : 16;
break;
case 15:
I[a + 54 | 0] = 1;
g = y ? 17 : 18;
break;
case 16:
g = y ? 17 : 18;
break;
case 17:
J[m >> 2] = 3;
g = 20;
break;
case 18:
J[m >> 2] = 4;
g = 20;
break;
case 19:
g = J[(c + 8 | 0) >> 2];
F[J[(J[g >> 2] + 24 | 0) >> 2]](g, a, d, e, f);
g = 20;
break;
case 20:
return;
default:
B(0, "bad label: " + g)
}
}
}
function hk(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (c | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
Ck(a, d, e);
f = 4;
break;
case 3:
f = J[(c + 8 | 0) >> 2];
F[J[(J[f >> 2] + 28 | 0) >> 2]](f, a, d, e);
f = 4;
break;
case 4:
return;
default:
B(0, "bad label: " + f)
}
}
}
function uk(c, a, d, e, f, g) {
for(var h = 0, h = 1;;) {
switch(h) {
case 1:
h = (c | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
Dk(a, d, e, f);
h = 13;
break;
case 3:
var k = a + 52 | 0, j = I[k], m = a + 53 | 0, n = I[m], h = c + 16 | 0, l = J[(c + 12 | 0) >> 2], y = c + 16 + (l << 3) | 0;
I[k] = 0;
I[m] = 0;
Ek(h, a, d, e, f, g);
h = 1 < (l | 0) ? 4 : 12;
break;
case 4:
var D = a + 24 | 0, K = c + 8 | 0, w = a + 54 | 0, u = c + 24 | 0, h = 5;
break;
case 5:
h = 0 == I[w] << 24 >> 24 ? 6 : 12;
break;
case 6:
h = 0 == I[k] << 24 >> 24 ? 9 : 7;
break;
case 7:
h = 1 == (J[D >> 2] | 0) ? 12 : 8;
break;
case 8:
h = 0 == (J[K >> 2] & 2 | 0) ? 12 : 11;
break;
case 9:
h = 0 == I[m] << 24 >> 24 ? 11 : 10;
break;
case 10:
h = 0 == (J[K >> 2] & 1 | 0) ? 12 : 11;
break;
case 11:
I[k] = 0;
I[m] = 0;
Ek(u, a, d, e, f, g);
h = u + 8 | 0;
h >>> 0 < y >>> 0 ? (u = h, h = 5) : h = 12;
break;
case 12:
I[k] = j;
I[m] = n;
h = 13;
break;
case 13:
return;
default:
B(0, "bad label: " + h)
}
}
}
function zk() {
for(var c = 0, c = 1;;) {
switch(c) {
case 1:
c = 0 == (J[2] | 0) ? 2 : 5;
break;
case 2:
var a = Cg(), c = 0 == ((a - 1 | 0) & a | 0) ? 4 : 3;
break;
case 3:
Y(), b("Reached an unreachable!");
case 4:
J[4] = a;
J[3] = a;
J[5] = -1;
J[6] = 2097152;
J[7] = 0;
J[215] = 0;
c = Math.floor(Date.now() / 1E3);
J[2] = c & -16 ^ 1431655768;
c = 5;
break;
case 5:
return;
default:
B(0, "bad label: " + c)
}
}
}
function tk(c, a, d, e) {
var f = 0, g = z;
z = z + 16 | 0;
B((z | 0) < (qd | 0));
for(f = 1;;) {
switch(f) {
case 1:
var h = g, k = e + 4 | 0, j = J[(e | 0) >> 2], f = -1 == (j | 0) ? 2 : 3;
break;
case 2:
b("Assertion failed: " + Ed(304) + ", at: " + [Ed(200), 1014, Ed(888)] + " at " + Error().stack), b("Reached an unreachable!");
case 3:
f = 11 > j >>> 0 ? 4 : 5;
break;
case 4:
f = h;
I[f] = j << 1 & 255;
var m = h + 1 | 0, n = f, f = 6;
break;
case 5:
m = (j + 16 | 0) & -16;
a: {
f = m;
n = 0;
for(n = 1;;) {
switch(n) {
case 1:
var l = 0 == (f | 0) ? 1 : f, n = Md(l);
if(0 == (n | 0)) {
n = 2
}else {
var y = n, n = 4
}
break;
case 2:
var D = (wd = J[444], J[444] = wd + 0, wd);
0 == (D | 0) ? (y = 0, n = 4) : n = 3;
break;
case 3:
F[D]();
n = Md(l);
0 == (n | 0) ? n = 2 : (y = n, n = 4);
break;
case 4:
f = y;
break a;
default:
B(0, "bad label: " + n)
}
}
f = i
}
J[(h + 8 | 0) >> 2] = f;
J[(h | 0) >> 2] = m | 1;
J[(h + 4 | 0) >> 2] = j;
n = h;
m = f;
f = 6;
break;
case 6:
B(0 === j % 1);
Bg(m, k, j);
I[m + j | 0] = 0;
F[c](a, d, h);
f = 0 == (I[n] & 1) << 24 >> 24 ? 8 : 7;
break;
case 7:
Bk(J[(h + 8 | 0) >> 2]);
f = 8;
break;
case 8:
z = g;
return;
default:
B(0, "bad label: " + f)
}
}
}
function mk(c, a) {
return(c | 0) == (a | 0)
}
function nk(c, a, d, e, f) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
var h = c | 0, g = (h | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
g = (J[(a + 4 | 0) >> 2] | 0) == (d | 0) ? 3 : 43;
break;
case 3:
var k = a + 28 | 0, g = 1 == (J[k >> 2] | 0) ? 43 : 4;
break;
case 4:
J[k >> 2] = e;
g = 43;
break;
case 5:
g = (h | 0) == (J[(a | 0) >> 2] | 0) ? 6 : 27;
break;
case 6:
g = (J[(a + 16 | 0) >> 2] | 0) == (d | 0) ? 8 : 7;
break;
case 7:
var j = a + 20 | 0, g = (J[j >> 2] | 0) == (d | 0) ? 8 : 10;
break;
case 8:
g = 1 == (e | 0) ? 9 : 43;
break;
case 9:
J[(a + 32 | 0) >> 2] = 1;
g = 43;
break;
case 10:
J[(a + 32 | 0) >> 2] = e;
var m = a + 44 | 0, g = 4 == (J[m >> 2] | 0) ? 43 : 11;
break;
case 11:
var g = J[(c + 12 | 0) >> 2], n = c + 16 + (g << 3) | 0;
if(0 < (g | 0)) {
g = 12
}else {
var l = 0, g = 21
}
break;
case 12:
var y = a + 52 | 0, D = a + 53 | 0, K = a + 54 | 0, w = c + 8 | 0, u = a + 24 | 0, s = 0, q = c + 16 | 0, G = 0, g = 13;
break;
case 13:
I[y] = 0;
I[D] = 0;
Ek(q, a, d, d, 1, f);
if(0 == I[K] << 24 >> 24) {
g = 14
}else {
var ua = G, Ca = s, g = 20
}
break;
case 14:
if(0 == I[D] << 24 >> 24) {
var va = G, ba = s, g = 19
}else {
g = 15
}
break;
case 15:
g = 0 == I[y] << 24 >> 24 ? 18 : 16;
break;
case 16:
g = 1 == (J[u >> 2] | 0) ? 25 : 17;
break;
case 17:
0 == (J[w >> 2] & 2 | 0) ? g = 25 : (ba = va = 1, g = 19);
break;
case 18:
0 == (J[w >> 2] & 1 | 0) ? (ua = 1, Ca = s, g = 20) : (va = 1, ba = s, g = 19);
break;
case 19:
g = q + 8 | 0;
g >>> 0 < n >>> 0 ? (s = ba, q = g, G = va, g = 13) : (ua = va, Ca = ba, g = 20);
break;
case 20:
if(Ca) {
var fa = ua, g = 24
}else {
l = ua, g = 21
}
break;
case 21:
J[j >> 2] = d;
g = a + 40 | 0;
J[g >> 2] = J[g >> 2] + 1 | 0;
1 == (J[(a + 36 | 0) >> 2] | 0) ? g = 22 : (fa = l, g = 24);
break;
case 22:
2 == (J[(a + 24 | 0) >> 2] | 0) ? g = 23 : (fa = l, g = 24);
break;
case 23:
I[a + 54 | 0] = 1;
g = l ? 25 : 26;
break;
case 24:
g = fa ? 25 : 26;
break;
case 25:
J[m >> 2] = 3;
g = 43;
break;
case 26:
J[m >> 2] = 4;
g = 43;
break;
case 27:
var g = J[(c + 12 | 0) >> 2], ka = c + 16 + (g << 3) | 0;
Fk(c + 16 | 0, a, d, e, f);
var xa = c + 24 | 0, g = 1 < (g | 0) ? 28 : 43;
break;
case 28:
var Pa = J[(c + 8 | 0) >> 2], g = 0 == (Pa & 2 | 0) ? 29 : 30;
break;
case 29:
var Da = a + 36 | 0, g = 1 == (J[Da >> 2] | 0) ? 30 : 33;
break;
case 30:
var U = a + 54 | 0, ya = xa, g = 31;
break;
case 31:
g = 0 == I[U] << 24 >> 24 ? 32 : 43;
break;
case 32:
Fk(ya, a, d, e, f);
g = ya + 8 | 0;
g >>> 0 < ka >>> 0 ? (ya = g, g = 31) : g = 43;
break;
case 33:
g = 0 == (Pa & 1 | 0) ? 35 : 34;
break;
case 34:
var ab = a + 24 | 0, la = a + 54 | 0, ga = xa, g = 36;
break;
case 35:
var Ea = a + 54 | 0, Fa = xa, g = 40;
break;
case 36:
g = 0 == I[la] << 24 >> 24 ? 37 : 43;
break;
case 37:
g = 1 == (J[Da >> 2] | 0) ? 38 : 39;
break;
case 38:
g = 1 == (J[ab >> 2] | 0) ? 43 : 39;
break;
case 39:
Fk(ga, a, d, e, f);
g = ga + 8 | 0;
g >>> 0 < ka >>> 0 ? (ga = g, g = 36) : g = 43;
break;
case 40:
g = 0 == I[Ea] << 24 >> 24 ? 41 : 43;
break;
case 41:
g = 1 == (J[Da >> 2] | 0) ? 43 : 42;
break;
case 42:
Fk(Fa, a, d, e, f);
g = Fa + 8 | 0;
g >>> 0 < ka >>> 0 ? (Fa = g, g = 40) : g = 43;
break;
case 43:
return;
default:
B(0, "bad label: " + g)
}
}
}
function lk(c, a, d, e) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (c | 0) == (J[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
Ck(a, d, e);
f = 7;
break;
case 3:
var f = J[(c + 12 | 0) >> 2], g = c + 16 + (f << 3) | 0;
$k(c + 16 | 0, a, d, e);
f = 1 < (f | 0) ? 4 : 7;
break;
case 4:
var h = a + 54 | 0, k = c + 24 | 0, f = 5;
break;
case 5:
$k(k, a, d, e);
f = 0 == I[h] << 24 >> 24 ? 6 : 7;
break;
case 6:
f = k + 8 | 0;
f >>> 0 < g >>> 0 ? (k = f, f = 5) : f = 7;
break;
case 7:
return;
default:
B(0, "bad label: " + f)
}
}
}
function wk(c, a, d) {
var e = 0, f = z;
z = z + 112 | 0;
B((z | 0) < (qd | 0));
for(e = 1;;) {
switch(e) {
case 1:
var g = f, h = f + 56;
if((c | 0) == (a | 0)) {
var k = 1, e = 17
}else {
e = 2
}
break;
case 2:
0 == (a | 0) ? (k = 0, e = 17) : e = 3;
break;
case 3:
var j = a, m = J[a >> 2], n = j + J[(m - 8 | 0) >> 2] | 0, l = m = J[(m - 4 | 0) >> 2];
J[(g | 0) >> 2] = 1744;
J[(g + 4 | 0) >> 2] = j;
J[(g + 8 | 0) >> 2] = 1760;
J[(g + 12 | 0) >> 2] = -1;
var j = g + 16 | 0, y = g + 20 | 0, D = g + 24 | 0, K = g + 28 | 0, w = g + 32 | 0, u = g + 40 | 0, e = 1744 == (m | 0);
Rj(j, 39);
e = e ? 4 : 5;
break;
case 4:
J[(g + 48 | 0) >> 2] = 1;
F[J[(J[436] + 20 | 0) >> 2]](l, g, n, n, 1, 0);
var s = 1 == (J[D >> 2] | 0) ? n : 0, e = 14;
break;
case 5:
e = g + 36 | 0;
F[J[(J[m >> 2] + 24 | 0) >> 2]](l, g, n, 1, 0);
e = J[e >> 2];
0 == (e | 0) ? e = 6 : 1 == (e | 0) ? e = 9 : (s = 0, e = 14);
break;
case 6:
1 == (J[u >> 2] | 0) ? e = 7 : (s = 0, e = 14);
break;
case 7:
1 == (J[K >> 2] | 0) ? e = 8 : (s = 0, e = 14);
break;
case 8:
s = J[y >> 2];
s = 1 == (J[w >> 2] | 0) ? s : 0;
e = 14;
break;
case 9:
e = 1 == (J[D >> 2] | 0) ? 13 : 10;
break;
case 10:
0 == (J[u >> 2] | 0) ? e = 11 : (s = 0, e = 14);
break;
case 11:
1 == (J[K >> 2] | 0) ? e = 12 : (s = 0, e = 14);
break;
case 12:
1 == (J[w >> 2] | 0) ? e = 13 : (s = 0, e = 14);
break;
case 13:
s = J[j >> 2];
e = 14;
break;
case 14:
var q = s;
0 == (s | 0) ? (k = 0, e = 17) : e = 15;
break;
case 15:
Rj(h, 56);
J[(h | 0) >> 2] = q;
J[(h + 8 | 0) >> 2] = c;
J[(h + 12 | 0) >> 2] = -1;
J[(h + 48 | 0) >> 2] = 1;
F[J[(J[s >> 2] + 28 | 0) >> 2]](q, h, J[d >> 2], 1);
1 == (J[(h + 24 | 0) >> 2] | 0) ? e = 16 : (k = 0, e = 17);
break;
case 16:
J[d >> 2] = J[(h + 16 | 0) >> 2];
k = 1;
e = 17;
break;
case 17:
return z = f, k;
default:
B(0, "bad label: " + e)
}
}
}
var Ag = r;
v.ia = function(c) {
function a() {
for(var a = 0;3 > a;a++) {
e.push(0)
}
}
B(0 == Be, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
B(!v.preRun || 0 == v.preRun.length, "cannot call main when preRun functions remain to be called");
c = c || [];
xe || (xe = p, te(ue));
var d = c.length + 1, e = [O(ye("/bin/this.program"), "i8", Jd)];
a();
for(var f = 0;f < d - 1;f += 1) {
e.push(O(ye(c[f]), "i8", Jd)), a()
}
e.push(0);
var e = O(e, "i32", Jd), g, c = z;
try {
g = v._main(d, e, 0)
}catch(h) {
if("ExitStatus" == h.name) {
return h.status
}
"SimulateInfiniteLoop" == h ? v.noExitRuntime = p : b(h)
}finally {
z = c
}
return g
};
function Kf(c) {
function a() {
xe || (xe = p, te(ue));
te(ve);
var a = 0;
Ff = p;
v._main && Jf && (a = v.ia(c), v.noExitRuntime || te(we));
if(v.postRun) {
for("function" == typeof v.postRun && (v.postRun = [v.postRun]);0 < v.postRun.length;) {
v.postRun.pop()()
}
}
return a
}
c = c || v.arguments;
if(0 < Be) {
return v.g("run() called, but dependencies remain, so not running"), 0
}
if(v.preRun) {
"function" == typeof v.preRun && (v.preRun = [v.preRun]);
var d = v.preRun;
v.preRun = [];
for(var e = d.length - 1;0 <= e;e--) {
d[e]()
}
if(0 < Be) {
return 0
}
}
return v.setStatus ? (v.setStatus("Running..."), setTimeout(function() {
setTimeout(function() {
v.setStatus("")
}, 1);
a()
}, 1), 0) : a()
}
v.run = v.Ya = Kf;
if(v.preInit) {
for("function" == typeof v.preInit && (v.preInit = [v.preInit]);0 < v.preInit.length;) {
v.preInit.pop()()
}
}
var Jf = p;
v.noInitialRun && (Jf = t);
Kf();
/*global Module:true, Runtime*/
/*global HEAP32*/
/*global new_*/
/*global createNamedFunction*/
/*global readLatin1String, writeStringToMemory*/
/*global requireRegisteredType, throwBindingError*/
var Module = Module || {};
var _emval_handle_array = [{}]; // reserve zero
var _emval_free_list = [];
// Public JS API
/** @expose */
Module.count_emval_handles = function() {
var count = 0;
for (var i = 1; i < _emval_handle_array.length; ++i) {
if (_emval_handle_array[i] !== undefined) {
++count;
}
}
return count;
};
/** @expose */
Module.get_first_emval = function() {
for (var i = 1; i < _emval_handle_array.length; ++i) {
if (_emval_handle_array[i] !== undefined) {
return _emval_handle_array[i];
}
}
return null;
};
// Private C++ API
var _emval_symbols = {}; // address -> string
function __emval_register_symbol(address) {
_emval_symbols[address] = readLatin1String(address);
}
function getStringOrSymbol(address) {
var symbol = _emval_symbols[address];
if (symbol === undefined) {
return readLatin1String(address);
} else {
return symbol;
}
}
function requireHandle(handle) {
if (!handle) {
throwBindingError('Cannot use deleted val. handle = ' + handle);
}
}
function __emval_register(value) {
var handle = _emval_free_list.length ?
_emval_free_list.pop() :
_emval_handle_array.length;
_emval_handle_array[handle] = {refcount: 1, value: value};
return handle;
}
function __emval_incref(handle) {
if (handle) {
_emval_handle_array[handle].refcount += 1;
}
}
function __emval_decref(handle) {
if (handle && 0 === --_emval_handle_array[handle].refcount) {
_emval_handle_array[handle] = undefined;
_emval_free_list.push(handle);
}
}
function __emval_new_array() {
return __emval_register([]);
}
function __emval_new_object() {
return __emval_register({});
}
function __emval_undefined() {
return __emval_register(undefined);
}
function __emval_null() {
return __emval_register(null);
}
function __emval_new_cstring(v) {
return __emval_register(getStringOrSymbol(v));
}
function __emval_take_value(type, v) {
type = requireRegisteredType(type, '_emval_take_value');
v = type.fromWireType(v);
return __emval_register(v);
}
var __newers = {}; // arity -> function
function craftEmvalAllocator(argCount) {
/*This function returns a new function that looks like this:
function emval_allocator_3(handle, argTypes, arg0Wired, arg1Wired, arg2Wired) {
var argType0 = requireRegisteredType(HEAP32[(argTypes >> 2)], "parameter 0");
var arg0 = argType0.fromWireType(arg0Wired);
var argType1 = requireRegisteredType(HEAP32[(argTypes >> 2) + 1], "parameter 1");
var arg1 = argType1.fromWireType(arg1Wired);
var argType2 = requireRegisteredType(HEAP32[(argTypes >> 2) + 2], "parameter 2");
var arg2 = argType2.fromWireType(arg2Wired);
var constructor = _emval_handle_array[handle].value;
var emval = new constructor(arg0, arg1, arg2);
return emval;
} */
var args1 = ["requireRegisteredType", "HEAP32", "_emval_handle_array", "__emval_register"];
var args2 = [requireRegisteredType, HEAP32, _emval_handle_array, __emval_register];
var argsList = "";
var argsListWired = "";
for(var i = 0; i < argCount; ++i) {
argsList += (i!==0?", ":"")+"arg"+i; // 'arg0, arg1, ..., argn'
argsListWired += ", arg"+i+"Wired"; // ', arg0Wired, arg1Wired, ..., argnWired'
}
var invokerFnBody =
"return function emval_allocator_"+argCount+"(handle, argTypes " + argsListWired + ") {\n";
for(var i = 0; i < argCount; ++i) {
invokerFnBody +=
"var argType"+i+" = requireRegisteredType(HEAP32[(argTypes >> 2) + "+i+"], \"parameter "+i+"\");\n" +
"var arg"+i+" = argType"+i+".fromWireType(arg"+i+"Wired);\n";
}
invokerFnBody +=
"var constructor = _emval_handle_array[handle].value;\n" +
"var obj = new constructor("+argsList+");\n" +
"return __emval_register(obj);\n" +
"}\n";
args1.push(invokerFnBody);
var invokerFunction = new_(Function, args1).apply(null, args2);
return invokerFunction;
}
function __emval_new(handle, argCount, argTypes) {
requireHandle(handle);
var newer = __newers[argCount];
if (!newer) {
newer = craftEmvalAllocator(argCount);
__newers[argCount] = newer;
}
if (argCount === 0) {
return newer(handle, argTypes);
} else if (argCount === 1) {
return newer(handle, argTypes, arguments[3]);
} else if (argCount === 2) {
return newer(handle, argTypes, arguments[3], arguments[4]);
} else if (argCount === 3) {
return newer(handle, argTypes, arguments[3], arguments[4], arguments[5]);
} else if (argCount === 4) {
return newer(handle, argTypes, arguments[3], arguments[4], arguments[5], arguments[6]);
} else {
// This is a slow path! (.apply and .splice are slow), so a few specializations are present above.
return newer.apply(null, arguments.splice(1));
}
}
// appease jshint (technically this code uses eval)
var global = (function(){return Function;})()('return this')();
function __emval_get_global(name) {
name = getStringOrSymbol(name);
return __emval_register(global[name]);
}
function __emval_get_module_property(name) {
name = getStringOrSymbol(name);
return __emval_register(Module[name]);
}
function __emval_get_property(handle, key) {
requireHandle(handle);
return __emval_register(_emval_handle_array[handle].value[_emval_handle_array[key].value]);
}
function __emval_set_property(handle, key, value) {
requireHandle(handle);
_emval_handle_array[handle].value[_emval_handle_array[key].value] = _emval_handle_array[value].value;
}
function __emval_as(handle, returnType) {
requireHandle(handle);
returnType = requireRegisteredType(returnType, 'emval::as');
var destructors = [];
// caller owns destructing
return returnType.toWireType(destructors, _emval_handle_array[handle].value);
}
function parseParameters(argCount, argTypes, argWireTypes) {
var a = new Array(argCount);
for (var i = 0; i < argCount; ++i) {
var argType = requireRegisteredType(
HEAP32[(argTypes >> 2) + i],
"parameter " + i);
a[i] = argType.fromWireType(argWireTypes[i]);
}
return a;
}
function __emval_call(handle, argCount, argTypes) {
requireHandle(handle);
var types = lookupTypes(argCount, argTypes);
var args = new Array(argCount);
for (var i = 0; i < argCount; ++i) {
args[i] = types[i].fromWireType(arguments[3 + i]);
}
var fn = _emval_handle_array[handle].value;
var rv = fn.apply(undefined, args);
return __emval_register(rv);
}
function lookupTypes(argCount, argTypes, argWireTypes) {
var a = new Array(argCount);
for (var i = 0; i < argCount; ++i) {
a[i] = requireRegisteredType(
HEAP32[(argTypes >> 2) + i],
"parameter " + i);
}
return a;
}
function __emval_get_method_caller(argCount, argTypes) {
var types = lookupTypes(argCount, argTypes);
var retType = types[0];
var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$";
var args1 = ["Runtime", "createNamedFunction", "requireHandle", "getStringOrSymbol", "_emval_handle_array", "retType"];
var args2 = [Runtime, createNamedFunction, requireHandle, getStringOrSymbol, _emval_handle_array, retType];
var argsList = ""; // 'arg0, arg1, arg2, ... , argN'
var argsListWired = ""; // 'arg0Wired, ..., argNWired'
for (var i = 0; i < argCount - 1; ++i) {
argsList += (i !== 0 ? ", " : "") + "arg" + i;
argsListWired += ", arg" + i + "Wired";
args1.push("argType" + i);
args2.push(types[1 + i]);
}
var invokerFnBody =
"return Runtime.addFunction(createNamedFunction('" + signatureName + "', function (handle, name" + argsListWired + ") {\n" +
"requireHandle(handle);\n" +
"name = getStringOrSymbol(name);\n";
for (var i = 0; i < argCount - 1; ++i) {
invokerFnBody += "var arg" + i + " = argType" + i + ".fromWireType(arg" + i + "Wired);\n";
}
invokerFnBody +=
"var obj = _emval_handle_array[handle].value;\n" +
"return retType.toWireType(null, obj[name](" + argsList + "));\n" +
"}));\n";
args1.push(invokerFnBody);
var invokerFunction = new_(Function, args1).apply(null, args2);
return invokerFunction;
}
function __emval_has_function(handle, name) {
name = getStringOrSymbol(name);
return _emval_handle_array[handle].value[name] instanceof Function;
}
/*global Module*/
/*global _malloc, _free, _memcpy*/
/*global FUNCTION_TABLE, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32*/
/*global readLatin1String*/
/*global __emval_register, _emval_handle_array, __emval_decref*/
/*global ___getTypeName*/
/*jslint sub:true*/ /* The symbols 'fromWireType' and 'toWireType' must be accessed via array notation to be closure-safe since craftInvokerFunction crafts functions as strings that can't be closured. */
var InternalError = Module.InternalError = extendError(Error, 'InternalError');
var BindingError = Module.BindingError = extendError(Error, 'BindingError');
var UnboundTypeError = Module.UnboundTypeError = extendError(BindingError, 'UnboundTypeError');
function throwInternalError(message) {
throw new InternalError(message);
}
function throwBindingError(message) {
throw new BindingError(message);
}
function throwUnboundTypeError(message, types) {
var unboundTypes = [];
var seen = {};
function visit(type) {
if (seen[type]) {
return;
}
if (registeredTypes[type]) {
return;
}
if (typeDependencies[type]) {
typeDependencies[type].forEach(visit);
return;
}
unboundTypes.push(type);
seen[type] = true;
}
types.forEach(visit);
throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', ']));
}
// Creates a function overload resolution table to the given method 'methodName' in the given prototype,
// if the overload table doesn't yet exist.
function ensureOverloadTable(proto, methodName, humanName) {
if (undefined === proto[methodName].overloadTable) {
var prevFunc = proto[methodName];
// Inject an overload resolver function that routes to the appropriate overload based on the number of arguments.
proto[methodName] = function() {
// TODO This check can be removed in -O3 level "unsafe" optimizations.
if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {
throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!");
}
return proto[methodName].overloadTable[arguments.length].apply(this, arguments);
};
// Move the previous function into the overload table.
proto[methodName].overloadTable = [];
proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;
}
}
/* Registers a symbol (function, class, enum, ...) as part of the Module JS object so that
hand-written code is able to access that symbol via 'Module.name'.
name: The name of the symbol that's being exposed.
value: The object itself to expose (function, class, ...)
numArguments: For functions, specifies the number of arguments the function takes in. For other types, unused and undefined.
To implement support for multiple overloads of a function, an 'overload selector' function is used. That selector function chooses
the appropriate overload to call from an function overload table. This selector function is only used if multiple overloads are
actually registered, since it carries a slight performance penalty. */
function exposePublicSymbol(name, value, numArguments) {
if (Module.hasOwnProperty(name)) {
if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) {
throwBindingError("Cannot register public name '" + name + "' twice");
}
// We are exposing a function with the same name as an existing function. Create an overload table and a function selector
// that routes between the two.
ensureOverloadTable(Module, name, name);
if (Module.hasOwnProperty(numArguments)) {
throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!");
}
// Add the new function into the overload table.
Module[name].overloadTable[numArguments] = value;
}
else {
Module[name] = value;
if (undefined !== numArguments) {
Module[name].numArguments = numArguments;
}
}
}
function replacePublicSymbol(name, value, numArguments) {
if (!Module.hasOwnProperty(name)) {
throwInternalError('Replacing nonexistant public symbol');
}
// If there's an overload table for this symbol, replace the symbol in the overload table instead.
if (undefined !== Module[name].overloadTable && undefined !== numArguments) {
Module[name].overloadTable[numArguments] = value;
}
else {
Module[name] = value;
}
}
// from https://github.com/imvu/imvujs/blob/master/src/error.js
function extendError(baseErrorType, errorName) {
var errorClass = createNamedFunction(errorName, function(message) {
this.name = errorName;
this.message = message;
var stack = (new Error(message)).stack;
if (stack !== undefined) {
this.stack = this.toString() + '\n' +
stack.replace(/^Error(:[^\n]*)?\n/, '');
}
});
errorClass.prototype = Object.create(baseErrorType.prototype);
errorClass.prototype.constructor = errorClass;
errorClass.prototype.toString = function() {
if (this.message === undefined) {
return this.name;
} else {
return this.name + ': ' + this.message;
}
};
return errorClass;
}
// from https://github.com/imvu/imvujs/blob/master/src/function.js
function createNamedFunction(name, body) {
name = makeLegalFunctionName(name);
/*jshint evil:true*/
return new Function(
"body",
"return function " + name + "() {\n" +
" \"use strict\";" +
" return body.apply(this, arguments);\n" +
"};\n"
)(body);
}
function _embind_repr(v) {
var t = typeof v;
if (t === 'object' || t === 'array' || t === 'function') {
return v.toString();
} else {
return '' + v;
}
}
// typeID -> { toWireType: ..., fromWireType: ... }
var registeredTypes = {};
// typeID -> [callback]
var awaitingDependencies = {};
// typeID -> [dependentTypes]
var typeDependencies = {};
// class typeID -> {pointerType: ..., constPointerType: ...}
var registeredPointers = {};
function registerType(rawType, registeredInstance) {
var name = registeredInstance.name;
if (!rawType) {
throwBindingError('type "' + name + '" must have a positive integer typeid pointer');
}
if (registeredTypes.hasOwnProperty(rawType)) {
throwBindingError("Cannot register type '" + name + "' twice");
}
registeredTypes[rawType] = registeredInstance;
delete typeDependencies[rawType];
if (awaitingDependencies.hasOwnProperty(rawType)) {
var callbacks = awaitingDependencies[rawType];
delete awaitingDependencies[rawType];
callbacks.forEach(function(cb) {
cb();
});
}
}
function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) {
myTypes.forEach(function(type) {
typeDependencies[type] = dependentTypes;
});
function onComplete(typeConverters) {
var myTypeConverters = getTypeConverters(typeConverters);
if (myTypeConverters.length !== myTypes.length) {
throwInternalError('Mismatched type converter count');
}
for (var i = 0; i < myTypes.length; ++i) {
registerType(myTypes[i], myTypeConverters[i]);
}
}
var typeConverters = new Array(dependentTypes.length);
var unregisteredTypes = [];
var registered = 0;
dependentTypes.forEach(function(dt, i) {
if (registeredTypes.hasOwnProperty(dt)) {
typeConverters[i] = registeredTypes[dt];
} else {
unregisteredTypes.push(dt);
if (!awaitingDependencies.hasOwnProperty(dt)) {
awaitingDependencies[dt] = [];
}
awaitingDependencies[dt].push(function() {
typeConverters[i] = registeredTypes[dt];
++registered;
if (registered === unregisteredTypes.length) {
onComplete(typeConverters);
}
});
}
});
if (0 === unregisteredTypes.length) {
onComplete(typeConverters);
}
}
var __charCodes = (function() {
var codes = new Array(256);
for (var i = 0; i < 256; ++i) {
codes[i] = String.fromCharCode(i);
}
return codes;
})();
function readLatin1String(ptr) {
var ret = "";
var c = ptr;
while (HEAPU8[c]) {
ret += __charCodes[HEAPU8[c++]];
}
return ret;
}
function getTypeName(type) {
var ptr = ___getTypeName(type);
var rv = readLatin1String(ptr);
_free(ptr);
return rv;
}
function heap32VectorToArray(count, firstElement) {
var array = [];
for (var i = 0; i < count; i++) {
array.push(HEAP32[(firstElement >> 2) + i]);
}
return array;
}
function requireRegisteredType(rawType, humanName) {
var impl = registeredTypes[rawType];
if (undefined === impl) {
throwBindingError(humanName + " has unknown type " + getTypeName(rawType));
}
return impl;
}
function __embind_register_void(rawType, name) {
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function() {
return undefined;
},
'toWireType': function(destructors, o) {
// TODO: assert if anything else is given?
return undefined;
},
});
}
function __embind_register_bool(rawType, name, trueValue, falseValue) {
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function(wt) {
// ambiguous emscripten ABI: sometimes return values are
// true or false, and sometimes integers (0 or 1)
return !!wt;
},
'toWireType': function(destructors, o) {
return o ? trueValue : falseValue;
},
destructorFunction: null, // This type does not need a destructor
});
}
// When converting a number from JS to C++ side, the valid range of the number is
// [minRange, maxRange], inclusive.
function __embind_register_integer(primitiveType, name, minRange, maxRange) {
name = readLatin1String(name);
if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32.
maxRange = 4294967295;
}
registerType(primitiveType, {
name: name,
minRange: minRange,
maxRange: maxRange,
'fromWireType': function(value) {
return value;
},
'toWireType': function(destructors, value) {
// todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could
// avoid the following two if()s and assume value is of proper type.
if (typeof value !== "number" && typeof value !== "boolean") {
throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name);
}
if (value < minRange || value > maxRange) {
throw new TypeError('Passing a number "' + _embind_repr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!');
}
return value | 0;
},
destructorFunction: null, // This type does not need a destructor
});
}
function __embind_register_float(rawType, name) {
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function(value) {
return value;
},
'toWireType': function(destructors, value) {
// todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could
// avoid the following if() and assume value is of proper type.
if (typeof value !== "number" && typeof value !== "boolean") {
throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name);
}
return value;
},
destructorFunction: null, // This type does not need a destructor
});
}
function __embind_register_std_string(rawType, name) {
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function(value) {
var length = HEAPU32[value >> 2];
var a = new Array(length);
for (var i = 0; i < length; ++i) {
a[i] = String.fromCharCode(HEAPU8[value + 4 + i]);
}
_free(value);
return a.join('');
},
'toWireType': function(destructors, value) {
if (value instanceof ArrayBuffer) {
value = new Uint8Array(value);
}
function getTAElement(ta, index) {
return ta[index];
}
function getStringElement(string, index) {
return string.charCodeAt(index);
}
var getElement;
if (value instanceof Uint8Array) {
getElement = getTAElement;
} else if (value instanceof Int8Array) {
getElement = getTAElement;
} else if (typeof value === 'string') {
getElement = getStringElement;
} else {
throwBindingError('Cannot pass non-string to std::string');
}
// assumes 4-byte alignment
var length = value.length;
var ptr = _malloc(4 + length);
HEAPU32[ptr >> 2] = length;
for (var i = 0; i < length; ++i) {
var charCode = getElement(value, i);
if (charCode > 255) {
_free(ptr);
throwBindingError('String has UTF-16 code units that do not fit in 8 bits');
}
HEAPU8[ptr + 4 + i] = charCode;
}
if (destructors !== null) {
destructors.push(_free, ptr);
}
return ptr;
},
destructorFunction: function(ptr) { _free(ptr); },
});
}
function __embind_register_std_wstring(rawType, charSize, name) {
name = readLatin1String(name);
var HEAP, shift;
if (charSize === 2) {
HEAP = HEAPU16;
shift = 1;
} else if (charSize === 4) {
HEAP = HEAPU32;
shift = 2;
}
registerType(rawType, {
name: name,
'fromWireType': function(value) {
var length = HEAPU32[value >> 2];
var a = new Array(length);
var start = (value + 4) >> shift;
for (var i = 0; i < length; ++i) {
a[i] = String.fromCharCode(HEAP[start + i]);
}
_free(value);
return a.join('');
},
'toWireType': function(destructors, value) {
// assumes 4-byte alignment
var length = value.length;
var ptr = _malloc(4 + length * charSize);
HEAPU32[ptr >> 2] = length;
var start = (ptr + 4) >> shift;
for (var i = 0; i < length; ++i) {
HEAP[start + i] = value.charCodeAt(i);
}
if (destructors !== null) {
destructors.push(_free, ptr);
}
return ptr;
},
destructorFunction: function(ptr) { _free(ptr); },
});
}
function __embind_register_emval(rawType, name) {
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function(handle) {
var rv = _emval_handle_array[handle].value;
__emval_decref(handle);
return rv;
},
'toWireType': function(destructors, value) {
return __emval_register(value);
},
destructorFunction: null, // This type does not need a destructor
});
}
function __embind_register_memory_view(rawType, name) {
var typeMapping = [
Int8Array,
Uint8Array,
Int16Array,
Uint16Array,
Int32Array,
Uint32Array,
Float32Array,
Float64Array,
];
name = readLatin1String(name);
registerType(rawType, {
name: name,
'fromWireType': function(handle) {
var type = HEAPU32[handle >> 2];
var size = HEAPU32[(handle >> 2) + 1]; // in elements
var data = HEAPU32[(handle >> 2) + 2]; // byte offset into emscripten heap
var TA = typeMapping[type];
return new TA(HEAP8.buffer, data, size);
},
});
}
function runDestructors(destructors) {
while (destructors.length) {
var ptr = destructors.pop();
var del = destructors.pop();
del(ptr);
}
}
// Function implementation of operator new, per
// http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
// 13.2.2
// ES3
function new_(constructor, argumentList) {
if (!(constructor instanceof Function)) {
throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function");
}
/*
* Previously, the following line was just:
function dummy() {};
* Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the
* correct constructor name. Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which
* isn't very helpful. Using IMVU.createNamedFunction addresses the issue. Doublely-unfortunately, there's no way
* to write a test for this behavior. -NRD 2013.02.22
*/
var dummy = createNamedFunction(constructor.name, function(){});
dummy.prototype = constructor.prototype;
var obj = new dummy;
var r = constructor.apply(obj, argumentList);
return (r instanceof Object) ? r : obj;
}
// The path to interop from JS code to C++ code:
// (hand-written JS code) -> (autogenerated JS invoker) -> (template-generated C++ invoker) -> (target C++ function)
// craftInvokerFunction generates the JS invoker function for each function exposed to JS through embind.
function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) {
// humanName: a human-readable string name for the function to be generated.
// argTypes: An array that contains the embind type objects for all types in the function signature.
// argTypes[0] is the type object for the function return value.
// argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method.
// argTypes[2...] are the actual function parameters.
// classType: The embind type object for the class to be bound, or null if this is not a method of a class.
// cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code.
// cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling.
var argCount = argTypes.length;
if (argCount < 2) {
throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");
}
var isClassMethodFunc = (argTypes[1] !== null && classType !== null);
if (!isClassMethodFunc && !FUNCTION_TABLE[cppTargetFunc]) {
throwBindingError('Global function '+humanName+' is not defined!');
}
// Free functions with signature "void function()" do not need an invoker that marshalls between wire types.
// TODO: This omits argument count check - enable only at -O3 or similar.
// if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) {
// return FUNCTION_TABLE[fn];
// }
var argsList = "";
var argsListWired = "";
for(var i = 0; i < argCount-2; ++i) {
argsList += (i!==0?", ":"")+"arg"+i;
argsListWired += (i!==0?", ":"")+"arg"+i+"Wired";
}
var invokerFnBody =
"return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" +
"if (arguments.length !== "+(argCount - 2)+") {\n" +
"throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" +
"}\n";
// Determine if we need to use a dynamic stack to store the destructors for the function parameters.
// TODO: Remove this completely once all function invokers are being dynamically generated.
var needsDestructorStack = false;
for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here.
if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack
needsDestructorStack = true;
break;
}
}
if (needsDestructorStack) {
invokerFnBody +=
"var destructors = [];\n";
}
var dtorStack = needsDestructorStack ? "destructors" : "null";
var args1 = ["throwBindingError", "classType", "invoker", "fn", "runDestructors", "retType", "classParam"];
var args2 = [throwBindingError, classType, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];
if (isClassMethodFunc) {
invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n";
}
for(var i = 0; i < argCount-2; ++i) {
invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";
args1.push("argType"+i);
args2.push(argTypes[i+2]);
}
if (isClassMethodFunc) {
argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired;
}
var returns = (argTypes[0].name !== "void");
invokerFnBody +=
(returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";
if (needsDestructorStack) {
invokerFnBody += "runDestructors(destructors);\n";
} else {
for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method.
var paramName = (i === 1 ? "thisWired" : ("arg"+(i-2)+"Wired"));
if (argTypes[i].destructorFunction !== null) {
invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";
args1.push(paramName+"_dtor");
args2.push(argTypes[i].destructorFunction);
}
}
}
if (returns) {
invokerFnBody += "return retType.fromWireType(rv);\n";
}
invokerFnBody += "}\n";
args1.push(invokerFnBody);
var invokerFunction = new_(Function, args1).apply(null, args2);
return invokerFunction;
}
function __embind_register_function(name, argCount, rawArgTypesAddr, rawInvoker, fn) {
var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
name = readLatin1String(name);
rawInvoker = FUNCTION_TABLE[rawInvoker];
exposePublicSymbol(name, function() {
throwUnboundTypeError('Cannot call ' + name + ' due to unbound types', argTypes);
}, argCount - 1);
whenDependentTypesAreResolved([], argTypes, function(argTypes) {
var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */);
replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn), argCount - 1);
return [];
});
}
var tupleRegistrations = {};
function __embind_register_tuple(rawType, name, rawConstructor, rawDestructor) {
tupleRegistrations[rawType] = {
name: readLatin1String(name),
rawConstructor: FUNCTION_TABLE[rawConstructor],
rawDestructor: FUNCTION_TABLE[rawDestructor],
elements: [],
};
}
function __embind_register_tuple_element(
rawTupleType,
getterReturnType,
getter,
getterContext,
setterArgumentType,
setter,
setterContext
) {
tupleRegistrations[rawTupleType].elements.push({
getterReturnType: getterReturnType,
getter: FUNCTION_TABLE[getter],
getterContext: getterContext,
setterArgumentType: setterArgumentType,
setter: FUNCTION_TABLE[setter],
setterContext: setterContext,
});
}
function __embind_finalize_tuple(rawTupleType) {
var reg = tupleRegistrations[rawTupleType];
delete tupleRegistrations[rawTupleType];
var elements = reg.elements;
var elementsLength = elements.length;
var elementTypes = elements.map(function(elt) { return elt.getterReturnType; }).
concat(elements.map(function(elt) { return elt.setterArgumentType; }));
var rawConstructor = reg.rawConstructor;
var rawDestructor = reg.rawDestructor;
whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) {
elements.forEach(function(elt, i) {
var getterReturnType = elementTypes[i];
var getter = elt.getter;
var getterContext = elt.getterContext;
var setterArgumentType = elementTypes[i + elementsLength];
var setter = elt.setter;
var setterContext = elt.setterContext;
elt.read = function(ptr) {
return getterReturnType['fromWireType'](getter(getterContext, ptr));
};
elt.write = function(ptr, o) {
var destructors = [];
setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o));
runDestructors(destructors);
};
});
return [{
name: reg.name,
'fromWireType': function(ptr) {
var rv = new Array(elementsLength);
for (var i = 0; i < elementsLength; ++i) {
rv[i] = elements[i].read(ptr);
}
rawDestructor(ptr);
return rv;
},
'toWireType': function(destructors, o) {
if (elementsLength !== o.length) {
throw new TypeError("Incorrect number of tuple elements for " + reg.name + ": expected=" + elementsLength + ", actual=" + o.length);
}
var ptr = rawConstructor();
for (var i = 0; i < elementsLength; ++i) {
elements[i].write(ptr, o[i]);
}
if (destructors !== null) {
destructors.push(rawDestructor, ptr);
}
return ptr;
},
destructorFunction: rawDestructor,
}];
});
}
var structRegistrations = {};
function __embind_register_struct(
rawType,
name,
rawConstructor,
rawDestructor
) {
structRegistrations[rawType] = {
name: readLatin1String(name),
rawConstructor: FUNCTION_TABLE[rawConstructor],
rawDestructor: FUNCTION_TABLE[rawDestructor],
fields: [],
};
}
function __embind_register_struct_field(
structType,
fieldName,
getterReturnType,
getter,
getterContext,
setterArgumentType,
setter,
setterContext
) {
structRegistrations[structType].fields.push({
fieldName: readLatin1String(fieldName),
getterReturnType: getterReturnType,
getter: FUNCTION_TABLE[getter],
getterContext: getterContext,
setterArgumentType: setterArgumentType,
setter: FUNCTION_TABLE[setter],
setterContext: setterContext,
});
}
function __embind_finalize_struct(structType) {
var reg = structRegistrations[structType];
delete structRegistrations[structType];
var rawConstructor = reg.rawConstructor;
var rawDestructor = reg.rawDestructor;
var fieldRecords = reg.fields;
var fieldTypes = fieldRecords.map(function(field) { return field.getterReturnType; }).
concat(fieldRecords.map(function(field) { return field.setterArgumentType; }));
whenDependentTypesAreResolved([structType], fieldTypes, function(fieldTypes) {
var fields = {};
fieldRecords.forEach(function(field, i) {
var fieldName = field.fieldName;
var getterReturnType = fieldTypes[i];
var getter = field.getter;
var getterContext = field.getterContext;
var setterArgumentType = fieldTypes[i + fieldRecords.length];
var setter = field.setter;
var setterContext = field.setterContext;
fields[fieldName] = {
read: function(ptr) {
return getterReturnType['fromWireType'](
getter(getterContext, ptr));
},
write: function(ptr, o) {
var destructors = [];
setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o));
runDestructors(destructors);
}
};
});
return [{
name: reg.name,
'fromWireType': function(ptr) {
var rv = {};
for (var i in fields) {
rv[i] = fields[i].read(ptr);
}
rawDestructor(ptr);
return rv;
},
'toWireType': function(destructors, o) {
// todo: Here we have an opportunity for -O3 level "unsafe" optimizations:
// assume all fields are present without checking.
for (var fieldName in fields) {
if (!(fieldName in o)) {
throw new TypeError('Missing field');
}
}
var ptr = rawConstructor();
for (fieldName in fields) {
fields[fieldName].write(ptr, o[fieldName]);
}
if (destructors !== null) {
destructors.push(rawDestructor, ptr);
}
return ptr;
},
destructorFunction: rawDestructor,
}];
});
}
var genericPointerToWireType = function(destructors, handle) {
if (handle === null) {
if (this.isReference) {
throwBindingError('null is not a valid ' + this.name);
}
if (this.isSmartPointer) {
var ptr = this.rawConstructor();
if (destructors !== null) {
destructors.push(this.rawDestructor, ptr);
}
return ptr;
} else {
return 0;
}
}
if (!handle.$$) {
throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name);
}
if (!handle.$$.ptr) {
throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name);
}
if (!this.isConst && handle.$$.ptrType.isConst) {
throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name);
}
var handleClass = handle.$$.ptrType.registeredClass;
var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
if (this.isSmartPointer) {
// TODO: this is not strictly true
// We could support BY_EMVAL conversions from raw pointers to smart pointers
// because the smart pointer can hold a reference to the handle
if (undefined === handle.$$.smartPtr) {
throwBindingError('Passing raw pointer to smart pointer is illegal');
}
switch (this.sharingPolicy) {
case 0: // NONE
// no upcasting
if (handle.$$.smartPtrType === this) {
ptr = handle.$$.smartPtr;
} else {
throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name);
}
break;
case 1: // INTRUSIVE
ptr = handle.$$.smartPtr;
break;
case 2: // BY_EMVAL
if (handle.$$.smartPtrType === this) {
ptr = handle.$$.smartPtr;
} else {
var clonedHandle = handle.clone();
ptr = this.rawShare(
ptr,
__emval_register(function() {
clonedHandle.delete();
})
);
if (destructors !== null) {
destructors.push(this.rawDestructor, ptr);
}
}
break;
default:
throwBindingError('Unsupporting sharing policy');
}
}
return ptr;
};
// If we know a pointer type is not going to have SmartPtr logic in it, we can
// special-case optimize it a bit (compare to genericPointerToWireType)
var constNoSmartPtrRawPointerToWireType = function(destructors, handle) {
if (handle === null) {
if (this.isReference) {
throwBindingError('null is not a valid ' + this.name);
}
return 0;
}
if (!handle.$$) {
throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name);
}
if (!handle.$$.ptr) {
throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name);
}
var handleClass = handle.$$.ptrType.registeredClass;
var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
return ptr;
};
// An optimized version for non-const method accesses - there we must additionally restrict that
// the pointer is not a const-pointer.
var nonConstNoSmartPtrRawPointerToWireType = function(destructors, handle) {
if (handle === null) {
if (this.isReference) {
throwBindingError('null is not a valid ' + this.name);
}
return 0;
}
if (!handle.$$) {
throwBindingError('Cannot pass "' + _embind_repr(handle) + '" as a ' + this.name);
}
if (!handle.$$.ptr) {
throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name);
}
if (handle.$$.ptrType.isConst) {
throwBindingError('Cannot convert argument of type ' + handle.$$.ptrType.name + ' to parameter type ' + this.name);
}
var handleClass = handle.$$.ptrType.registeredClass;
var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
return ptr;
};
function RegisteredPointer(
name,
registeredClass,
isReference,
isConst,
// smart pointer properties
isSmartPointer,
pointeeType,
sharingPolicy,
rawGetPointee,
rawConstructor,
rawShare,
rawDestructor
) {
this.name = name;
this.registeredClass = registeredClass;
this.isReference = isReference;
this.isConst = isConst;
// smart pointer properties
this.isSmartPointer = isSmartPointer;
this.pointeeType = pointeeType;
this.sharingPolicy = sharingPolicy;
this.rawGetPointee = rawGetPointee;
this.rawConstructor = rawConstructor;
this.rawShare = rawShare;
this.rawDestructor = rawDestructor;
if (!isSmartPointer && registeredClass.baseClass === undefined) {
if (isConst) {
this['toWireType'] = constNoSmartPtrRawPointerToWireType;
this.destructorFunction = null;
} else {
this['toWireType'] = nonConstNoSmartPtrRawPointerToWireType;
this.destructorFunction = null;
}
} else {
this['toWireType'] = genericPointerToWireType;
// Here we must leave this.destructorFunction undefined, since whether genericPointerToWireType returns
// a pointer that needs to be freed up is runtime-dependent, and cannot be evaluated at registration time.
// TODO: Create an alternative mechanism that allows removing the use of var destructors = []; array in
// craftInvokerFunction altogether.
}
}
RegisteredPointer.prototype.getPointee = function(ptr) {
if (this.rawGetPointee) {
ptr = this.rawGetPointee(ptr);
}
return ptr;
};
RegisteredPointer.prototype.destructor = function(ptr) {
if (this.rawDestructor) {
this.rawDestructor(ptr);
}
};
RegisteredPointer.prototype['fromWireType'] = function(ptr) {
// ptr is a raw pointer (or a raw smartpointer)
// rawPointer is a maybe-null raw pointer
var rawPointer = this.getPointee(ptr);
if (!rawPointer) {
this.destructor(ptr);
return null;
}
function makeDefaultHandle() {
if (this.isSmartPointer) {
return makeClassHandle(this.registeredClass.instancePrototype, {
ptrType: this.pointeeType,
ptr: rawPointer,
smartPtrType: this,
smartPtr: ptr,
});
} else {
return makeClassHandle(this.registeredClass.instancePrototype, {
ptrType: this,
ptr: ptr,
});
}
}
var actualType = this.registeredClass.getActualType(rawPointer);
var registeredPointerRecord = registeredPointers[actualType];
if (!registeredPointerRecord) {
return makeDefaultHandle.call(this);
}
var toType;
if (this.isConst) {
toType = registeredPointerRecord.constPointerType;
} else {
toType = registeredPointerRecord.pointerType;
}
var dp = downcastPointer(
rawPointer,
this.registeredClass,
toType.registeredClass);
if (dp === null) {
return makeDefaultHandle.call(this);
}
if (this.isSmartPointer) {
return makeClassHandle(toType.registeredClass.instancePrototype, {
ptrType: toType,
ptr: dp,
smartPtrType: this,
smartPtr: ptr,
});
} else {
return makeClassHandle(toType.registeredClass.instancePrototype, {
ptrType: toType,
ptr: dp,
});
}
};
function makeClassHandle(prototype, record) {
if (!record.ptrType || !record.ptr) {
throwInternalError('makeClassHandle requires ptr and ptrType');
}
var hasSmartPtrType = !!record.smartPtrType;
var hasSmartPtr = !!record.smartPtr;
if (hasSmartPtrType !== hasSmartPtr) {
throwInternalError('Both smartPtrType and smartPtr must be specified');
}
record.count = { value: 1 };
return Object.create(prototype, {
$$: {
value: record,
},
});
}
// root of all pointer and smart pointer handles in embind
function ClassHandle() {
}
function getInstanceTypeName(handle) {
return handle.$$.ptrType.registeredClass.name;
}
ClassHandle.prototype.isAliasOf = function(other) {
if (!(this instanceof ClassHandle)) {
return false;
}
if (!(other instanceof ClassHandle)) {
return false;
}
var leftClass = this.$$.ptrType.registeredClass;
var left = this.$$.ptr;
var rightClass = other.$$.ptrType.registeredClass;
var right = other.$$.ptr;
while (leftClass.baseClass) {
left = leftClass.upcast(left);
leftClass = leftClass.baseClass;
}
while (rightClass.baseClass) {
right = rightClass.upcast(right);
rightClass = rightClass.baseClass;
}
return leftClass === rightClass && left === right;
};
function throwInstanceAlreadyDeleted(obj) {
throwBindingError(getInstanceTypeName(obj) + ' instance already deleted');
}
ClassHandle.prototype.clone = function() {
if (!this.$$.ptr) {
throwInstanceAlreadyDeleted(this);
}
var clone = Object.create(Object.getPrototypeOf(this), {
$$: {
value: shallowCopy(this.$$),
}
});
clone.$$.count.value += 1;
return clone;
};
function runDestructor(handle) {
var $$ = handle.$$;
if ($$.smartPtr) {
$$.smartPtrType.rawDestructor($$.smartPtr);
} else {
$$.ptrType.registeredClass.rawDestructor($$.ptr);
}
}
ClassHandle.prototype['delete'] = function ClassHandle_delete() {
if (!this.$$.ptr) {
throwInstanceAlreadyDeleted(this);
}
if (this.$$.deleteScheduled) {
throwBindingError('Object already scheduled for deletion');
}
this.$$.count.value -= 1;
if (0 === this.$$.count.value) {
runDestructor(this);
}
this.$$.smartPtr = undefined;
this.$$.ptr = undefined;
};
var deletionQueue = [];
ClassHandle.prototype['isDeleted'] = function isDeleted() {
return !this.$$.ptr;
};
ClassHandle.prototype['deleteLater'] = function deleteLater() {
if (!this.$$.ptr) {
throwInstanceAlreadyDeleted(this);
}
if (this.$$.deleteScheduled) {
throwBindingError('Object already scheduled for deletion');
}
deletionQueue.push(this);
if (deletionQueue.length === 1 && delayFunction) {
delayFunction(flushPendingDeletes);
}
this.$$.deleteScheduled = true;
return this;
};
function flushPendingDeletes() {
while (deletionQueue.length) {
var obj = deletionQueue.pop();
obj.$$.deleteScheduled = false;
obj['delete']();
}
}
Module['flushPendingDeletes'] = flushPendingDeletes;
var delayFunction;
Module['setDelayFunction'] = function setDelayFunction(fn) {
delayFunction = fn;
if (deletionQueue.length && delayFunction) {
delayFunction(flushPendingDeletes);
}
};
function RegisteredClass(
name,
constructor,
instancePrototype,
rawDestructor,
baseClass,
getActualType,
upcast,
downcast
) {
this.name = name;
this.constructor = constructor;
this.instancePrototype = instancePrototype;
this.rawDestructor = rawDestructor;
this.baseClass = baseClass;
this.getActualType = getActualType;
this.upcast = upcast;
this.downcast = downcast;
}
function shallowCopy(o) {
var rv = {};
for (var k in o) {
rv[k] = o[k];
}
return rv;
}
function __embind_register_class(
rawType,
rawPointerType,
rawConstPointerType,
baseClassRawType,
getActualType,
upcast,
downcast,
name,
rawDestructor
) {
name = readLatin1String(name);
rawDestructor = FUNCTION_TABLE[rawDestructor];
getActualType = FUNCTION_TABLE[getActualType];
upcast = FUNCTION_TABLE[upcast];
downcast = FUNCTION_TABLE[downcast];
var legalFunctionName = makeLegalFunctionName(name);
exposePublicSymbol(legalFunctionName, function() {
// this code cannot run if baseClassRawType is zero
throwUnboundTypeError('Cannot construct ' + name + ' due to unbound types', [baseClassRawType]);
});
whenDependentTypesAreResolved(
[rawType, rawPointerType, rawConstPointerType],
baseClassRawType ? [baseClassRawType] : [],
function(base) {
base = base[0];
var baseClass;
var basePrototype;
if (baseClassRawType) {
baseClass = base.registeredClass;
basePrototype = baseClass.instancePrototype;
} else {
basePrototype = ClassHandle.prototype;
}
var constructor = createNamedFunction(legalFunctionName, function() {
if (Object.getPrototypeOf(this) !== instancePrototype) {
throw new BindingError("Use 'new' to construct " + name);
}
if (undefined === registeredClass.constructor_body) {
throw new BindingError(name + " has no accessible constructor");
}
var body = registeredClass.constructor_body[arguments.length];
if (undefined === body) {
throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!");
}
return body.apply(this, arguments);
});
var instancePrototype = Object.create(basePrototype, {
constructor: { value: constructor },
});
constructor.prototype = instancePrototype;
var registeredClass = new RegisteredClass(
name,
constructor,
instancePrototype,
rawDestructor,
baseClass,
getActualType,
upcast,
downcast);
var referenceConverter = new RegisteredPointer(
name,
registeredClass,
true,
false,
false);
var pointerConverter = new RegisteredPointer(
name + '*',
registeredClass,
false,
false,
false);
var constPointerConverter = new RegisteredPointer(
name + ' const*',
registeredClass,
false,
true,
false);
registeredPointers[rawType] = {
pointerType: pointerConverter,
constPointerType: constPointerConverter
};
replacePublicSymbol(legalFunctionName, constructor);
return [referenceConverter, pointerConverter, constPointerConverter];
}
);
}
function __embind_register_class_constructor(
rawClassType,
argCount,
rawArgTypesAddr,
invoker,
rawConstructor
) {
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
invoker = FUNCTION_TABLE[invoker];
whenDependentTypesAreResolved([], [rawClassType], function(classType) {
classType = classType[0];
var humanName = 'constructor ' + classType.name;
if (undefined === classType.registeredClass.constructor_body) {
classType.registeredClass.constructor_body = [];
}
if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) {
throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount-1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
}
classType.registeredClass.constructor_body[argCount - 1] = function() {
throwUnboundTypeError('Cannot construct ' + classType.name + ' due to unbound types', rawArgTypes);
};
whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {
classType.registeredClass.constructor_body[argCount - 1] = function() {
if (arguments.length !== argCount - 1) {
throwBindingError(humanName + ' called with ' + arguments.length + ' arguments, expected ' + (argCount-1));
}
var destructors = [];
var args = new Array(argCount);
args[0] = rawConstructor;
for (var i = 1; i < argCount; ++i) {
args[i] = argTypes[i]['toWireType'](destructors, arguments[i - 1]);
}
var ptr = invoker.apply(null, args);
runDestructors(destructors);
return argTypes[0]['fromWireType'](ptr);
};
return [];
});
return [];
});
}
function downcastPointer(ptr, ptrClass, desiredClass) {
if (ptrClass === desiredClass) {
return ptr;
}
if (undefined === desiredClass.baseClass) {
return null; // no conversion
}
// O(depth) stack space used
return desiredClass.downcast(
downcastPointer(ptr, ptrClass, desiredClass.baseClass));
}
function upcastPointer(ptr, ptrClass, desiredClass) {
while (ptrClass !== desiredClass) {
if (!ptrClass.upcast) {
throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name);
}
ptr = ptrClass.upcast(ptr);
ptrClass = ptrClass.baseClass;
}
return ptr;
}
function validateThis(this_, classType, humanName) {
if (!(this_ instanceof Object)) {
throwBindingError(humanName + ' with invalid "this": ' + this_);
}
if (!(this_ instanceof classType.registeredClass.constructor)) {
throwBindingError(humanName + ' incompatible with "this" of type ' + this_.constructor.name);
}
if (!this_.$$.ptr) {
throwBindingError('cannot call emscripten binding method ' + humanName + ' on deleted object');
}
// todo: kill this
return upcastPointer(
this_.$$.ptr,
this_.$$.ptrType.registeredClass,
classType.registeredClass);
}
function __embind_register_class_function(
rawClassType,
methodName,
argCount,
rawArgTypesAddr, // [ReturnType, ThisType, Args...]
rawInvoker,
context
) {
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
methodName = readLatin1String(methodName);
rawInvoker = FUNCTION_TABLE[rawInvoker];
whenDependentTypesAreResolved([], [rawClassType], function(classType) {
classType = classType[0];
var humanName = classType.name + '.' + methodName;
var unboundTypesHandler = function() {
throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes);
};
var proto = classType.registeredClass.instancePrototype;
var method = proto[methodName];
if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount-2)) {
// This is the first overload to be registered, OR we are replacing a function in the base class with a function in the derived class.
unboundTypesHandler.argCount = argCount-2;
unboundTypesHandler.className = classType.name;
proto[methodName] = unboundTypesHandler;
} else {
// There was an existing function with the same name registered. Set up a function overload routing table.
ensureOverloadTable(proto, methodName, humanName);
proto[methodName].overloadTable[argCount-2] = unboundTypesHandler;
}
whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {
var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context);
// Replace the initial unbound-handler-stub function with the appropriate member function, now that all types
// are resolved. If multiple overloads are registered for this function, the function goes into an overload table.
if (undefined === proto[methodName].overloadTable) {
proto[methodName] = memberFunction;
} else {
proto[methodName].overloadTable[argCount-2] = memberFunction;
}
return [];
});
return [];
});
}
function __embind_register_class_class_function(
rawClassType,
methodName,
argCount,
rawArgTypesAddr,
rawInvoker,
fn
) {
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
methodName = readLatin1String(methodName);
rawInvoker = FUNCTION_TABLE[rawInvoker];
whenDependentTypesAreResolved([], [rawClassType], function(classType) {
classType = classType[0];
var humanName = classType.name + '.' + methodName;
var unboundTypesHandler = function() {
throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes);
};
var proto = classType.registeredClass.constructor;
if (undefined === proto[methodName]) {
// This is the first function to be registered with this name.
unboundTypesHandler.argCount = argCount-1;
proto[methodName] = unboundTypesHandler;
} else {
// There was an existing function with the same name registered. Set up a function overload routing table.
ensureOverloadTable(proto, methodName, humanName);
proto[methodName].overloadTable[argCount-1] = unboundTypesHandler;
}
whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) {
// Replace the initial unbound-types-handler stub with the proper function. If multiple overloads are registered,
// the function handlers go into an overload table.
var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */);
var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn);
if (undefined === proto[methodName].overloadTable) {
proto[methodName] = func;
} else {
proto[methodName].overloadTable[argCount-1] = func;
}
return [];
});
return [];
});
}
function __embind_register_class_property(
classType,
fieldName,
getterReturnType,
getter,
getterContext,
setterArgumentType,
setter,
setterContext
) {
fieldName = readLatin1String(fieldName);
getter = FUNCTION_TABLE[getter];
whenDependentTypesAreResolved([], [classType], function(classType) {
classType = classType[0];
var humanName = classType.name + '.' + fieldName;
var desc = {
get: function() {
throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]);
},
enumerable: true,
configurable: true
};
if (setter) {
desc.set = function() {
throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]);
};
} else {
desc.set = function(v) {
throwBindingError(humanName + ' is a read-only property');
};
}
Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);
whenDependentTypesAreResolved(
[],
(setter ? [getterReturnType, setterArgumentType] : [getterReturnType]),
function(types) {
var getterReturnType = types[0];
var desc = {
get: function() {
var ptr = validateThis(this, classType, humanName + ' getter');
return getterReturnType['fromWireType'](getter(getterContext, ptr));
},
enumerable: true
};
if (setter) {
setter = FUNCTION_TABLE[setter];
var setterArgumentType = types[1];
desc.set = function(v) {
var ptr = validateThis(this, classType, humanName + ' setter');
var destructors = [];
setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, v));
runDestructors(destructors);
};
}
Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc);
return [];
});
return [];
});
}
var char_0 = '0'.charCodeAt(0);
var char_9 = '9'.charCodeAt(0);
function makeLegalFunctionName(name) {
name = name.replace(/[^a-zA-Z0-9_]/g, '$');
var f = name.charCodeAt(0);
if (f >= char_0 && f <= char_9) {
return '_' + name;
} else {
return name;
}
}
function __embind_register_smart_ptr(
rawType,
rawPointeeType,
name,
sharingPolicy,
rawGetPointee,
rawConstructor,
rawShare,
rawDestructor
) {
name = readLatin1String(name);
rawGetPointee = FUNCTION_TABLE[rawGetPointee];
rawConstructor = FUNCTION_TABLE[rawConstructor];
rawShare = FUNCTION_TABLE[rawShare];
rawDestructor = FUNCTION_TABLE[rawDestructor];
whenDependentTypesAreResolved([rawType], [rawPointeeType], function(pointeeType) {
pointeeType = pointeeType[0];
var registeredPointer = new RegisteredPointer(
name,
pointeeType.registeredClass,
false,
false,
// smart pointer properties
true,
pointeeType,
sharingPolicy,
rawGetPointee,
rawConstructor,
rawShare,
rawDestructor);
return [registeredPointer];
});
}
function __embind_register_enum(
rawType,
name
) {
name = readLatin1String(name);
function constructor() {
}
constructor.values = {};
registerType(rawType, {
name: name,
constructor: constructor,
'fromWireType': function(c) {
return this.constructor.values[c];
},
'toWireType': function(destructors, c) {
return c.value;
},
destructorFunction: null,
});
exposePublicSymbol(name, constructor);
}
function __embind_register_enum_value(
rawEnumType,
name,
enumValue
) {
var enumType = requireRegisteredType(rawEnumType, 'enum');
name = readLatin1String(name);
var Enum = enumType.constructor;
var Value = Object.create(enumType.constructor.prototype, {
value: {value: enumValue},
constructor: {value: createNamedFunction(enumType.name + '_' + name, function() {})},
});
Enum.values[enumValue] = Value;
Enum[name] = Value;
}
function __embind_register_constant(name, type, value) {
name = readLatin1String(name);
whenDependentTypesAreResolved([], [type], function(type) {
type = type[0];
Module[name] = type['fromWireType'](value);
return [];
});
}
try {
this["Module"] = Module;
} catch (e) {
this["Module"] = Module = {};
}
var ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function";
var ENVIRONMENT_IS_WEB = typeof window === "object";
var ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
Module["print"] = (function(x) {
process["stdout"].write(x + "\n");
});
Module["printErr"] = (function(x) {
process["stderr"].write(x + "\n");
});
var nodeFS = require("fs");
var nodePath = require("path");
Module["read"] = (function(filename, binary) {
filename = nodePath["normalize"](filename);
var ret = nodeFS["readFileSync"](filename);
if (!ret && filename != nodePath["resolve"](filename)) {
filename = path.join(__dirname, "..", "src", filename);
ret = nodeFS["readFileSync"](filename);
}
if (ret && !binary) ret = ret.toString();
return ret;
});
Module["readBinary"] = (function(filename) {
return Module["read"](filename, true);
});
Module["load"] = (function(f) {
globalEval(read(f));
});
if (!Module["arguments"]) {
Module["arguments"] = process["argv"].slice(2);
}
}
if (ENVIRONMENT_IS_SHELL) {
Module["print"] = print;
if (typeof printErr != "undefined") Module["printErr"] = printErr;
Module["read"] = read;
Module["readBinary"] = (function(f) {
return read(f, "binary");
});
if (!Module["arguments"]) {
if (typeof scriptArgs != "undefined") {
Module["arguments"] = scriptArgs;
} else if (typeof arguments != "undefined") {
Module["arguments"] = arguments;
}
}
}
if (ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER) {
if (!Module["print"]) {
Module["print"] = (function(x) {
console.log(x);
});
}
if (!Module["printErr"]) {
Module["printErr"] = (function(x) {
console.log(x);
});
}
}
if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module["read"] = (function(url) {
var xhr = new XMLHttpRequest;
xhr.open("GET", url, false);
xhr.send(null);
return xhr.responseText;
});
if (!Module["arguments"]) {
if (typeof arguments != "undefined") {
Module["arguments"] = arguments;
}
}
}
if (ENVIRONMENT_IS_WORKER) {
var TRY_USE_DUMP = false;
if (!Module["print"]) {
Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function(x) {
dump(x);
}) : (function(x) {});
}
Module["load"] = importScripts;
}
if (!ENVIRONMENT_IS_WORKER && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL) {
throw "Unknown runtime environment. Where are we?";
}
function globalEval(x) {
eval.call(null, x);
}
if (!Module["load"] == "undefined" && Module["read"]) {
Module["load"] = (function(f) {
globalEval(Module["read"](f));
});
}
if (!Module["print"]) {
Module["print"] = (function() {});
}
if (!Module["printErr"]) {
Module["printErr"] = Module["print"];
}
if (!Module["arguments"]) {
Module["arguments"] = [];
}
Module.print = Module["print"];
Module.printErr = Module["printErr"];
if (!Module["preRun"]) Module["preRun"] = [];
if (!Module["postRun"]) Module["postRun"] = [];
var Runtime = {
stackSave: (function() {
return STACKTOP;
}),
stackRestore: (function(stackTop) {
STACKTOP = stackTop;
}),
forceAlign: (function(target, quantum) {
quantum = quantum || 4;
if (quantum == 1) return target;
if (isNumber(target) && isNumber(quantum)) {
return Math.ceil(target / quantum) * quantum;
} else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
var logg = log2(quantum);
return "((((" + target + ")+" + (quantum - 1) + ")>>" + logg + ")<<" + logg + ")";
}
return "Math.ceil((" + target + ")/" + quantum + ")*" + quantum;
}),
isNumberType: (function(type) {
return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
}),
isPointerType: function isPointerType(type) {
return type[type.length - 1] == "*";
},
isStructType: function isStructType(type) {
if (isPointerType(type)) return false;
if (/^\[\d+\ x\ (.*)\]/.test(type)) return true;
if (/<?{ ?[^}]* ?}>?/.test(type)) return true;
return type[0] == "%";
},
INT_TYPES: {
"i1": 0,
"i8": 0,
"i16": 0,
"i32": 0,
"i64": 0
},
FLOAT_TYPES: {
"float": 0,
"double": 0
},
or64: (function(x, y) {
var l = x | 0 | (y | 0);
var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
return l + h;
}),
and64: (function(x, y) {
var l = (x | 0) & (y | 0);
var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
return l + h;
}),
xor64: (function(x, y) {
var l = (x | 0) ^ (y | 0);
var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
return l + h;
}),
getNativeTypeSize: (function(type, quantumSize) {
if (Runtime.QUANTUM_SIZE == 1) return 1;
var size = {
"%i1": 1,
"%i8": 1,
"%i16": 2,
"%i32": 4,
"%i64": 8,
"%float": 4,
"%double": 8
}["%" + type];
if (!size) {
if (type.charAt(type.length - 1) == "*") {
size = Runtime.QUANTUM_SIZE;
} else if (type[0] == "i") {
var bits = parseInt(type.substr(1));
assert(bits % 8 == 0);
size = bits / 8;
}
}
return size;
}),
getNativeFieldSize: (function(type) {
return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
}),
dedup: function dedup(items, ident) {
var seen = {};
if (ident) {
return items.filter((function(item) {
if (seen[item[ident]]) return false;
seen[item[ident]] = true;
return true;
}));
} else {
return items.filter((function(item) {
if (seen[item]) return false;
seen[item] = true;
return true;
}));
}
},
set: function set() {
var args = typeof arguments[0] === "object" ? arguments[0] : arguments;
var ret = {};
for (var i = 0; i < args.length; i++) {
ret[args[i]] = 0;
}
return ret;
},
STACK_ALIGN: 8,
getAlignSize: (function(type, size, vararg) {
if (type == "i64" || type == "double" || vararg) return 8;
if (!type) return Math.min(size, 8);
return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
}),
calculateStructAlignment: function calculateStructAlignment(type) {
type.flatSize = 0;
type.alignSize = 0;
var diffs = [];
var prev = -1;
type.flatIndexes = type.fields.map((function(field) {
var size, alignSize;
if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
size = Runtime.getNativeTypeSize(field);
alignSize = Runtime.getAlignSize(field, size);
} else if (Runtime.isStructType(field)) {
size = Types.types[field].flatSize;
alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
} else if (field[0] == "b") {
size = field.substr(1) | 0;
alignSize = 1;
} else {
throw "Unclear type in struct: " + field + ", in " + type.name_ + " :: " + dump(Types.types[type.name_]);
}
if (type.packed) alignSize = 1;
type.alignSize = Math.max(type.alignSize, alignSize);
var curr = Runtime.alignMemory(type.flatSize, alignSize);
type.flatSize = curr + size;
if (prev >= 0) {
diffs.push(curr - prev);
}
prev = curr;
return curr;
}));
type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
if (diffs.length == 0) {
type.flatFactor = type.flatSize;
} else if (Runtime.dedup(diffs).length == 1) {
type.flatFactor = diffs[0];
}
type.needsFlattening = type.flatFactor != 1;
return type.flatIndexes;
},
generateStructInfo: (function(struct, typeName, offset) {
var type, alignment;
if (typeName) {
offset = offset || 0;
type = (typeof Types === "undefined" ? Runtime.typeInfo : Types.types)[typeName];
if (!type) return null;
if (type.fields.length != struct.length) {
printErr("Number of named fields must match the type for " + typeName + ": possibly duplicate struct names. Cannot return structInfo");
return null;
}
alignment = type.flatIndexes;
} else {
var type = {
fields: struct.map((function(item) {
return item[0];
}))
};
alignment = Runtime.calculateStructAlignment(type);
}
var ret = {
__size__: type.flatSize
};
if (typeName) {
struct.forEach((function(item, i) {
if (typeof item === "string") {
ret[item] = alignment[i] + offset;
} else {
var key;
for (var k in item) key = k;
ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
}
}));
} else {
struct.forEach((function(item, i) {
ret[item[1]] = alignment[i];
}));
}
return ret;
}),
dynCall: (function(sig, ptr, args) {
if (args && args.length) {
assert(args.length == sig.length - 1);
return FUNCTION_TABLE[ptr].apply(null, args);
} else {
assert(sig.length == 1);
return FUNCTION_TABLE[ptr]();
}
}),
addFunction: (function(func) {
var table = FUNCTION_TABLE;
var ret = table.length;
table.push(func);
table.push(0);
return ret;
}),
removeFunction: (function(index) {
var table = FUNCTION_TABLE;
table[index] = null;
}),
warnOnce: (function(text) {
if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
if (!Runtime.warnOnce.shown[text]) {
Runtime.warnOnce.shown[text] = 1;
Module.printErr(text);
}
}),
funcWrappers: {},
getFuncWrapper: (function(func, sig) {
assert(sig);
if (!Runtime.funcWrappers[func]) {
Runtime.funcWrappers[func] = (function() {
return Runtime.dynCall(sig, func, arguments);
});
}
return Runtime.funcWrappers[func];
}),
UTF8Processor: (function() {
var buffer = [];
var needed = 0;
this.processCChar = (function(code) {
code = code & 255;
if (needed) {
buffer.push(code);
needed--;
}
if (buffer.length == 0) {
if (code < 128) return String.fromCharCode(code);
buffer.push(code);
if (code > 191 && code < 224) {
needed = 1;
} else {
needed = 2;
}
return "";
}
if (needed > 0) return "";
var c1 = buffer[0];
var c2 = buffer[1];
var c3 = buffer[2];
var ret;
if (c1 > 191 && c1 < 224) {
ret = String.fromCharCode((c1 & 31) << 6 | c2 & 63);
} else {
ret = String.fromCharCode((c1 & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
}
buffer.length = 0;
return ret;
});
this.processJSString = (function(string) {
string = unescape(encodeURIComponent(string));
var ret = [];
for (var i = 0; i < string.length; i++) {
ret.push(string.charCodeAt(i));
}
return ret;
});
}),
stackAlloc: (function(size) {
var ret = STACKTOP;
STACKTOP = STACKTOP + size | 0;
STACKTOP = STACKTOP + 7 >> 3 << 3;
assert((STACKTOP | 0) < (STACK_MAX | 0));
return ret;
}),
staticAlloc: (function(size) {
var ret = STATICTOP;
STATICTOP = STATICTOP + (assert(!staticSealed), size) | 0;
STATICTOP = STATICTOP + 7 >> 3 << 3;
return ret;
}),
dynamicAlloc: (function(size) {
var ret = DYNAMICTOP;
DYNAMICTOP = DYNAMICTOP + (assert(DYNAMICTOP > 0), size) | 0;
DYNAMICTOP = DYNAMICTOP + 7 >> 3 << 3;
if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();
return ret;
}),
alignMemory: (function(size, quantum) {
var ret = size = Math.ceil(size / (quantum ? quantum : 8)) * (quantum ? quantum : 8);
return ret;
}),
makeBigInt: (function(low, high, unsigned) {
var ret = unsigned ? (low >>> 0) + (high >>> 0) * 4294967296 : (low >>> 0) + (high | 0) * 4294967296;
return ret;
}),
GLOBAL_BASE: 8,
QUANTUM_SIZE: 4,
__dummy__: 0
};
var __THREW__ = 0;
var setjmpId = 1;
var setjmpLabels = {};
var ABORT = false;
var undef = 0;
var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function abort(text) {
Module.print(text + ":\n" + (new Error).stack);
ABORT = true;
throw "Assertion: " + text;
}
function assert(condition, text) {
if (!condition) {
abort("Assertion failed: " + text);
}
}
var globalScope = this;
function ccall(ident, returnType, argTypes, args) {
return ccallFunc(getCFunc(ident), returnType, argTypes, args);
}
Module["ccall"] = ccall;
function getCFunc(ident) {
try {
var func = globalScope["Module"]["_" + ident];
if (!func) func = eval("_" + ident);
} catch (e) {}
assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
return func;
}
function ccallFunc(func, returnType, argTypes, args) {
var stack = 0;
function toC(value, type) {
if (type == "string") {
if (value === null || value === undefined || value === 0) return 0;
if (!stack) stack = Runtime.stackSave();
var ret = Runtime.stackAlloc(value.length + 1);
writeStringToMemory(value, ret);
return ret;
} else if (type == "array") {
if (!stack) stack = Runtime.stackSave();
var ret = Runtime.stackAlloc(value.length);
writeArrayToMemory(value, ret);
return ret;
}
return value;
}
function fromC(value, type) {
if (type == "string") {
return Pointer_stringify(value);
}
assert(type != "array");
return value;
}
var i = 0;
var cArgs = args ? args.map((function(arg) {
return toC(arg, argTypes[i++]);
})) : [];
var ret = fromC(func.apply(null, cArgs), returnType);
if (stack) Runtime.stackRestore(stack);
return ret;
}
function cwrap(ident, returnType, argTypes) {
var func = getCFunc(ident);
return (function() {
return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
});
}
Module["cwrap"] = cwrap;
function setValue(ptr, value, type, noSafe) {
type = type || "i8";
if (type.charAt(type.length - 1) === "*") type = "i32";
switch (type) {
case "i1":
HEAP8[ptr] = value;
break;
case "i8":
HEAP8[ptr] = value;
break;
case "i16":
HEAP16[ptr >> 1] = value;
break;
case "i32":
HEAP32[ptr >> 2] = value;
break;
case "i64":
tempI64 = [ value >>> 0, Math.min(Math.floor(value / 4294967296), 4294967295) >>> 0 ], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
break;
case "float":
HEAPF32[ptr >> 2] = value;
break;
case "double":
HEAPF64[ptr >> 3] = value;
break;
default:
abort("invalid type for setValue: " + type);
}
}
Module["setValue"] = setValue;
function getValue(ptr, type, noSafe) {
type = type || "i8";
if (type.charAt(type.length - 1) === "*") type = "i32";
switch (type) {
case "i1":
return HEAP8[ptr];
case "i8":
return HEAP8[ptr];
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 setValue: " + type);
}
return null;
}
Module["getValue"] = getValue;
var ALLOC_NORMAL = 0;
var ALLOC_STACK = 1;
var ALLOC_STATIC = 2;
var ALLOC_DYNAMIC = 3;
var ALLOC_NONE = 4;
Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
Module["ALLOC_STACK"] = ALLOC_STACK;
Module["ALLOC_STATIC"] = ALLOC_STATIC;
Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
Module["ALLOC_NONE"] = ALLOC_NONE;
function allocate(slab, types, allocator, ptr) {
var zeroinit, size;
if (typeof slab === "number") {
zeroinit = true;
size = slab;
} else {
zeroinit = false;
size = slab.length;
}
var singleType = typeof types === "string" ? types : null;
var ret;
if (allocator == ALLOC_NONE) {
ret = ptr;
} else {
ret = [ _malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc ][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
}
if (zeroinit) {
var ptr = ret, stop;
assert((ret & 3) == 0);
stop = ret + (size & ~3);
for (; ptr < stop; ptr += 4) {
HEAP32[ptr >> 2] = 0;
}
stop = ret + size;
while (ptr < stop) {
HEAP8[ptr++ | 0] = 0;
}
return ret;
}
if (singleType === "i8") {
HEAPU8.set(new Uint8Array(slab), ret);
return ret;
}
var i = 0, type, typeSize, previousType;
while (i < size) {
var curr = slab[i];
if (typeof curr === "function") {
curr = Runtime.getFunctionIndex(curr);
}
type = singleType || types[i];
if (type === 0) {
i++;
continue;
}
assert(type, "Must know what type to store in allocate!");
if (type == "i64") type = "i32";
setValue(ret + i, curr, type);
if (previousType !== type) {
typeSize = Runtime.getNativeTypeSize(type);
previousType = type;
}
i += typeSize;
}
return ret;
}
Module["allocate"] = allocate;
function Pointer_stringify(ptr, length) {
var hasUtf = false;
var t;
var i = 0;
while (1) {
t = HEAPU8[ptr + i | 0];
if (t >= 128) hasUtf = true; else if (t == 0 && !length) break;
i++;
if (length && i == length) break;
}
if (!length) length = i;
var ret = "";
if (!hasUtf) {
var MAX_CHUNK = 1024;
var curr;
while (length > 0) {
curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
ret = ret ? ret + curr : curr;
ptr += MAX_CHUNK;
length -= MAX_CHUNK;
}
return ret;
}
var utf8 = new Runtime.UTF8Processor;
for (i = 0; i < length; i++) {
assert(ptr + i < TOTAL_MEMORY);
t = HEAPU8[ptr + i | 0];
ret += utf8.processCChar(t);
}
return ret;
}
Module["Pointer_stringify"] = Pointer_stringify;
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
return x + 4095 >> 12 << 12;
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false;
var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0;
var DYNAMIC_BASE = 0, DYNAMICTOP = 0;
function enlargeMemory() {
abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");
}
var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 16777216;
var FAST_MEMORY = Module["FAST_MEMORY"] || 2097152;
assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1))["subarray"] && !!(new Int32Array(1))["set"], "Cannot fallback to non-typed array case: Code is too specialized");
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, "Typed arrays 2 must be run on a little-endian system");
Module["HEAP"] = HEAP;
Module["HEAP8"] = HEAP8;
Module["HEAP16"] = HEAP16;
Module["HEAP32"] = HEAP32;
Module["HEAPU8"] = HEAPU8;
Module["HEAPU16"] = HEAPU16;
Module["HEAPU32"] = HEAPU32;
Module["HEAPF32"] = HEAPF32;
Module["HEAPF64"] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
while (callbacks.length > 0) {
var callback = callbacks.shift();
if (typeof callback == "function") {
callback();
continue;
}
var func = callback.func;
if (typeof func === "number") {
if (callback.arg === undefined) {
Runtime.dynCall("v", func);
} else {
Runtime.dynCall("vi", func, [ callback.arg ]);
}
} else {
func(callback.arg === undefined ? null : callback.arg);
}
}
}
var __ATINIT__ = [];
var __ATMAIN__ = [];
var __ATEXIT__ = [];
var runtimeInitialized = false;
function ensureInitRuntime() {
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__);
}
function intArrayFromString(stringy, dontAddNull, length) {
var ret = (new Runtime.UTF8Processor).processJSString(stringy);
if (length) {
ret.length = length;
}
if (!dontAddNull) {
ret.push(0);
}
return ret;
}
Module["intArrayFromString"] = intArrayFromString;
function intArrayToString(array) {
var ret = [];
for (var i = 0; i < array.length; i++) {
var chr = array[i];
if (chr > 255) {
assert(false, "Character code " + chr + " (" + String.fromCharCode(chr) + ") at offset " + i + " not in 0x00-0xFF.");
chr &= 255;
}
ret.push(String.fromCharCode(chr));
}
return ret.join("");
}
Module["intArrayToString"] = intArrayToString;
function writeStringToMemory(string, buffer, dontAddNull) {
var array = intArrayFromString(string, dontAddNull);
var i = 0;
while (i < array.length) {
var chr = array[i];
HEAP8[buffer + i | 0] = chr;
i = i + 1;
}
}
Module["writeStringToMemory"] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[buffer + i | 0] = array[i];
}
}
Module["writeArrayToMemory"] = writeArrayToMemory;
function unSign(value, bits, ignore, sig) {
if (value >= 0) {
return value;
}
return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value;
}
function reSign(value, bits, ignore, sig) {
if (value <= 0) {
return value;
}
var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);
if (value >= half && (bits <= 32 || value > half)) {
value = -2 * half + value;
}
return value;
}
if (!Math.imul) Math.imul = (function(a, b) {
var ah = a >>> 16;
var al = a & 65535;
var bh = b >>> 16;
var bl = b & 65535;
return al * bl + (ah * bl + al * bh << 16) | 0;
});
var runDependencies = 0;
var runDependencyTracking = {};
var calledInit = false, calledRun = false;
var runDependencyWatcher = null;
function addRunDependency(id) {
runDependencies++;
if (Module["monitorRunDependencies"]) {
Module["monitorRunDependencies"](runDependencies);
}
if (id) {
assert(!runDependencyTracking[id]);
runDependencyTracking[id] = 1;
if (runDependencyWatcher === null && typeof setInterval !== "undefined") {
runDependencyWatcher = setInterval((function() {
var shown = false;
for (var dep in runDependencyTracking) {
if (!shown) {
shown = true;
Module.printErr("still waiting on run dependencies:");
}
Module.printErr("dependency: " + dep);
}
if (shown) {
Module.printErr("(end of list)");
}
}), 6e3);
}
} else {
Module.printErr("warning: run dependency added without ID");
}
}
Module["addRunDependency"] = addRunDependency;
function removeRunDependency(id) {
runDependencies--;
if (Module["monitorRunDependencies"]) {
Module["monitorRunDependencies"](runDependencies);
}
if (id) {
assert(runDependencyTracking[id]);
delete runDependencyTracking[id];
} else {
Module.printErr("warning: run dependency removed without ID");
}
if (runDependencies == 0) {
if (runDependencyWatcher !== null) {
clearInterval(runDependencyWatcher);
runDependencyWatcher = null;
}
if (!calledRun && shouldRunNow) run();
}
}
Module["removeRunDependency"] = removeRunDependency;
Module["preloadedImages"] = {};
Module["preloadedAudios"] = {};
function addPreRun(func) {
if (!Module["preRun"]) Module["preRun"] = []; else if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
Module["preRun"].push(func);
}
var awaitingMemoryInitializer = false;
function loadMemoryInitializer(filename) {
function applyData(data) {
HEAPU8.set(data, STATIC_BASE);
runPostSets();
}
addPreRun((function() {
if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
applyData(Module["readBinary"](filename));
} else {
Browser.asyncLoad(filename, (function(data) {
applyData(data);
}), (function(data) {
throw "could not load memory initializer " + filename;
}));
}
}));
awaitingMemoryInitializer = false;
}
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 1776;
__ATINIT__ = __ATINIT__.concat([ {
func: (function() {
__GLOBAL__I_a();
})
}, {
func: (function() {
__GLOBAL__I_a7();
})
} ]);
var __ZTVN10__cxxabiv120__si_class_type_infoE;
var __ZTVN10__cxxabiv117__class_type_infoE;
var __ZTIt;
var __ZTIs;
var __ZTIm;
var __ZTIl;
var __ZTIj;
var __ZTIi;
var __ZTIh;
var __ZTIf;
var __ZTId;
var __ZTIc;
var __ZTIa;
__ZTVN10__cxxabiv120__si_class_type_infoE = allocate([ 0, 0, 0, 0, 192, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTVN10__cxxabiv117__class_type_infoE = allocate([ 0, 0, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIt = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIs = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIm = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIl = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIj = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIi = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIh = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIf = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTId = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIc = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
__ZTIa = allocate([ 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_STATIC);
allocate([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 108, 111, 110, 103, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 105, 110, 116, 0, 0, 0, 0, 105, 110, 116, 0, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 115, 104, 111, 114, 116, 0, 0, 115, 104, 111, 114, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 0, 0, 99, 104, 97, 114, 0, 0, 0, 0, 118, 111, 105, 100, 0, 0, 0, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 118, 97, 108, 0, 115, 116, 100, 58, 58, 119, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 47, 118, 111, 108, 47, 98, 105, 103, 50, 52, 48, 47, 115, 110, 97, 112, 47, 106, 105, 109, 47, 119, 111, 114, 107, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 115, 121, 115, 116, 101, 109, 47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 98, 111, 111, 108, 0, 0, 0, 0, 100, 111, 117, 98, 108, 101, 0, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 0, 0, 0, 102, 108, 111, 97, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 0, 0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 58, 32, 37, 100, 44, 32, 37, 102, 44, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 111, 105, 100, 32, 115, 116, 100, 58, 58, 95, 95, 49, 58, 58, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 60, 116, 114, 117, 101, 62, 58, 58, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 40, 41, 32, 99, 111, 110, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 6, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 50, 49, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 73, 76, 98, 49, 69, 69, 69, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 119, 69, 69, 69, 69, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 51, 118, 97, 108, 69, 0, 0, 0, 0, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 49, 49, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 69, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 51, 95, 95, 102, 117, 110, 100, 97, 109, 101, 110, 116, 97, 108, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 0, 0, 0, 0, 208, 3, 0, 0, 32, 4, 0, 0, 208, 3, 0, 0, 120, 4, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 0, 0, 0, 0, 152, 4, 0, 0, 248, 3, 0, 0, 192, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 248, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 88, 5, 0, 0, 0, 0, 0, 0, 120, 5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 80, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
function runPostSets() {
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 12 >> 2] = 22;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 28 >> 2] = 12;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 32 >> 2] = 10;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 36 >> 2] = 6;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 12 >> 2] = 36;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 28 >> 2] = 40;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 32 >> 2] = 30;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 36 >> 2] = 8;
HEAP32[__ZTIt >> 2] = 976 | 0;
HEAP32[__ZTIt + 4 >> 2] = 1064 | 0;
HEAP32[__ZTIs >> 2] = 976 | 0;
HEAP32[__ZTIs + 4 >> 2] = 1072 | 0;
HEAP32[__ZTIm >> 2] = 976 | 0;
HEAP32[__ZTIm + 4 >> 2] = 1080 | 0;
HEAP32[__ZTIl >> 2] = 976 | 0;
HEAP32[__ZTIl + 4 >> 2] = 1088 | 0;
HEAP32[__ZTIj >> 2] = 976 | 0;
HEAP32[__ZTIj + 4 >> 2] = 1096 | 0;
HEAP32[__ZTIi >> 2] = 976 | 0;
HEAP32[__ZTIi + 4 >> 2] = 1104 | 0;
HEAP32[__ZTIh >> 2] = 976 | 0;
HEAP32[__ZTIh + 4 >> 2] = 1112 | 0;
HEAP32[__ZTIf >> 2] = 976 | 0;
HEAP32[__ZTIf + 4 >> 2] = 1120 | 0;
HEAP32[__ZTId >> 2] = 976 | 0;
HEAP32[__ZTId + 4 >> 2] = 1128 | 0;
HEAP32[__ZTIc >> 2] = 976 | 0;
HEAP32[__ZTIc + 4 >> 2] = 1136 | 0;
HEAP32[__ZTIa >> 2] = 976 | 0;
HEAP32[__ZTIa + 4 >> 2] = 1152 | 0;
HEAP32[1616 >> 2] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[1624 >> 2] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[1680 >> 2] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[1688 >> 2] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[1696 >> 2] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[1712 >> 2] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[1728 >> 2] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[1744 >> 2] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[1760 >> 2] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
}
if (!awaitingMemoryInitializer) runPostSets();
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
}
function copyTempDouble(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4];
HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5];
HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6];
HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7];
}
var ERRNO_CODES = {
E2BIG: 7,
EACCES: 13,
EADDRINUSE: 98,
EADDRNOTAVAIL: 99,
EAFNOSUPPORT: 97,
EAGAIN: 11,
EALREADY: 114,
EBADF: 9,
EBADMSG: 74,
EBUSY: 16,
ECANCELED: 125,
ECHILD: 10,
ECONNABORTED: 103,
ECONNREFUSED: 111,
ECONNRESET: 104,
EDEADLK: 35,
EDESTADDRREQ: 89,
EDOM: 33,
EDQUOT: 122,
EEXIST: 17,
EFAULT: 14,
EFBIG: 27,
EHOSTUNREACH: 113,
EIDRM: 43,
EILSEQ: 84,
EINPROGRESS: 115,
EINTR: 4,
EINVAL: 22,
EIO: 5,
EISCONN: 106,
EISDIR: 21,
ELOOP: 40,
EMFILE: 24,
EMLINK: 31,
EMSGSIZE: 90,
EMULTIHOP: 72,
ENAMETOOLONG: 36,
ENETDOWN: 100,
ENETRESET: 102,
ENETUNREACH: 101,
ENFILE: 23,
ENOBUFS: 105,
ENODATA: 61,
ENODEV: 19,
ENOENT: 2,
ENOEXEC: 8,
ENOLCK: 37,
ENOLINK: 67,
ENOMEM: 12,
ENOMSG: 42,
ENOPROTOOPT: 92,
ENOSPC: 28,
ENOSR: 63,
ENOSTR: 60,
ENOSYS: 38,
ENOTCONN: 107,
ENOTDIR: 20,
ENOTEMPTY: 39,
ENOTRECOVERABLE: 131,
ENOTSOCK: 88,
ENOTSUP: 95,
ENOTTY: 25,
ENXIO: 6,
EOPNOTSUPP: 45,
EOVERFLOW: 75,
EOWNERDEAD: 130,
EPERM: 1,
EPIPE: 32,
EPROTO: 71,
EPROTONOSUPPORT: 93,
EPROTOTYPE: 91,
ERANGE: 34,
EROFS: 30,
ESPIPE: 29,
ESRCH: 3,
ESTALE: 116,
ETIME: 62,
ETIMEDOUT: 110,
ETXTBSY: 26,
EWOULDBLOCK: 11,
EXDEV: 18
};
var ___errno_state = 0;
function ___setErrNo(value) {
HEAP32[___errno_state >> 2] = value;
return value;
}
var _stdin = allocate(1, "i32*", ALLOC_STATIC);
var _stdout = allocate(1, "i32*", ALLOC_STATIC);
var _stderr = allocate(1, "i32*", ALLOC_STATIC);
var __impure_ptr = allocate(1, "i32*", ALLOC_STATIC);
var FS = {
currentPath: "/",
nextInode: 2,
streams: [ null ],
checkStreams: (function() {
for (var i in FS.streams) if (FS.streams.hasOwnProperty(i)) assert(i >= 0 && i < FS.streams.length);
for (var i = 0; i < FS.streams.length; i++) assert(typeof FS.streams[i] == "object");
}),
ignorePermissions: true,
joinPath: (function(parts, forceRelative) {
var ret = parts[0];
for (var i = 1; i < parts.length; i++) {
if (ret[ret.length - 1] != "/") ret += "/";
ret += parts[i];
}
if (forceRelative && ret[0] == "/") ret = ret.substr(1);
return ret;
}),
absolutePath: (function(relative, base) {
if (typeof relative !== "string") return null;
if (base === undefined) base = FS.currentPath;
if (relative && relative[0] == "/") base = "";
var full = base + "/" + relative;
var parts = full.split("/").reverse();
var absolute = [ "" ];
while (parts.length) {
var part = parts.pop();
if (part == "" || part == ".") {} else if (part == "..") {
if (absolute.length > 1) absolute.pop();
} else {
absolute.push(part);
}
}
return absolute.length == 1 ? "/" : absolute.join("/");
}),
analyzePath: (function(path, dontResolveLastLink, linksVisited) {
var ret = {
isRoot: false,
exists: false,
error: 0,
name: null,
path: null,
object: null,
parentExists: false,
parentPath: null,
parentObject: null
};
path = FS.absolutePath(path);
if (path == "/") {
ret.isRoot = true;
ret.exists = ret.parentExists = true;
ret.name = "/";
ret.path = ret.parentPath = "/";
ret.object = ret.parentObject = FS.root;
} else if (path !== null) {
linksVisited = linksVisited || 0;
path = path.slice(1).split("/");
var current = FS.root;
var traversed = [ "" ];
while (path.length) {
if (path.length == 1 && current.isFolder) {
ret.parentExists = true;
ret.parentPath = traversed.length == 1 ? "/" : traversed.join("/");
ret.parentObject = current;
ret.name = path[0];
}
var target = path.shift();
if (!current.isFolder) {
ret.error = ERRNO_CODES.ENOTDIR;
break;
} else if (!current.read) {
ret.error = ERRNO_CODES.EACCES;
break;
} else if (!current.contents.hasOwnProperty(target)) {
ret.error = ERRNO_CODES.ENOENT;
break;
}
current = current.contents[target];
if (current.link && !(dontResolveLastLink && path.length == 0)) {
if (linksVisited > 40) {
ret.error = ERRNO_CODES.ELOOP;
break;
}
var link = FS.absolutePath(current.link, traversed.join("/"));
ret = FS.analyzePath([ link ].concat(path).join("/"), dontResolveLastLink, linksVisited + 1);
return ret;
}
traversed.push(target);
if (path.length == 0) {
ret.exists = true;
ret.path = traversed.join("/");
ret.object = current;
}
}
}
return ret;
}),
findObject: (function(path, dontResolveLastLink) {
FS.ensureRoot();
var ret = FS.analyzePath(path, dontResolveLastLink);
if (ret.exists) {
return ret.object;
} else {
___setErrNo(ret.error);
return null;
}
}),
createObject: (function(parent, name, properties, canRead, canWrite) {
if (!parent) parent = "/";
if (typeof parent === "string") parent = FS.findObject(parent);
if (!parent) {
___setErrNo(ERRNO_CODES.EACCES);
throw new Error("Parent path must exist.");
}
if (!parent.isFolder) {
___setErrNo(ERRNO_CODES.ENOTDIR);
throw new Error("Parent must be a folder.");
}
if (!parent.write && !FS.ignorePermissions) {
___setErrNo(ERRNO_CODES.EACCES);
throw new Error("Parent folder must be writeable.");
}
if (!name || name == "." || name == "..") {
___setErrNo(ERRNO_CODES.ENOENT);
throw new Error("Name must not be empty.");
}
if (parent.contents.hasOwnProperty(name)) {
___setErrNo(ERRNO_CODES.EEXIST);
throw new Error("Can't overwrite object.");
}
parent.contents[name] = {
read: canRead === undefined ? true : canRead,
write: canWrite === undefined ? false : canWrite,
timestamp: Date.now(),
inodeNumber: FS.nextInode++
};
for (var key in properties) {
if (properties.hasOwnProperty(key)) {
parent.contents[name][key] = properties[key];
}
}
return parent.contents[name];
}),
createFolder: (function(parent, name, canRead, canWrite) {
var properties = {
isFolder: true,
isDevice: false,
contents: {}
};
return FS.createObject(parent, name, properties, canRead, canWrite);
}),
createPath: (function(parent, path, canRead, canWrite) {
var current = FS.findObject(parent);
if (current === null) throw new Error("Invalid parent.");
path = path.split("/").reverse();
while (path.length) {
var part = path.pop();
if (!part) continue;
if (!current.contents.hasOwnProperty(part)) {
FS.createFolder(current, part, canRead, canWrite);
}
current = current.contents[part];
}
return current;
}),
createFile: (function(parent, name, properties, canRead, canWrite) {
properties.isFolder = false;
return FS.createObject(parent, name, properties, canRead, canWrite);
}),
createDataFile: (function(parent, name, data, canRead, canWrite) {
if (typeof data === "string") {
var dataArray = new Array(data.length);
for (var i = 0, len = data.length; i < len; ++i) dataArray[i] = data.charCodeAt(i);
data = dataArray;
}
var properties = {
isDevice: false,
contents: data.subarray ? data.subarray(0) : data
};
return FS.createFile(parent, name, properties, canRead, canWrite);
}),
createLazyFile: (function(parent, name, url, canRead, canWrite) {
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 LazyUint8Array = (function() {
this.lengthKnown = false;
this.chunks = [];
});
LazyUint8Array.prototype.get = (function(idx) {
if (idx > this.length - 1 || idx < 0) {
return undefined;
}
var chunkOffset = idx % this.chunkSize;
var chunkNum = Math.floor(idx / this.chunkSize);
return this.getter(chunkNum)[chunkOffset];
});
LazyUint8Array.prototype.setDataGetter = (function(getter) {
this.getter = getter;
});
LazyUint8Array.prototype.cacheLength = (function() {
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 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.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);
}
});
var lazyArray = this;
lazyArray.setDataGetter((function(chunkNum) {
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!");
return lazyArray.chunks[chunkNum];
}));
this._length = datalength;
this._chunkSize = chunkSize;
this.lengthKnown = true;
});
var lazyArray = new LazyUint8Array;
Object.defineProperty(lazyArray, "length", {
get: (function() {
if (!this.lengthKnown) {
this.cacheLength();
}
return this._length;
})
});
Object.defineProperty(lazyArray, "chunkSize", {
get: (function() {
if (!this.lengthKnown) {
this.cacheLength();
}
return this._chunkSize;
})
});
var properties = {
isDevice: false,
contents: lazyArray
};
} else {
var properties = {
isDevice: false,
url: url
};
}
return FS.createFile(parent, name, properties, canRead, canWrite);
}),
createPreloadedFile: (function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile) {
Browser.init();
var fullname = FS.joinPath([ parent, name ], true);
function processData(byteArray) {
function finish(byteArray) {
if (!dontCreateFile) {
FS.createDataFile(parent, name, byteArray, canRead, canWrite);
}
if (onload) onload();
removeRunDependency("cp " + fullname);
}
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("cp " + fullname);
}));
handled = true;
}
}));
if (!handled) finish(byteArray);
}
addRunDependency("cp " + fullname);
if (typeof url == "string") {
Browser.asyncLoad(url, (function(byteArray) {
processData(byteArray);
}), onerror);
} else {
processData(url);
}
}),
createLink: (function(parent, name, target, canRead, canWrite) {
var properties = {
isDevice: false,
link: target
};
return FS.createFile(parent, name, properties, canRead, canWrite);
}),
createDevice: (function(parent, name, input, output) {
if (!(input || output)) {
throw new Error("A device must have at least one callback defined.");
}
var ops = {
isDevice: true,
input: input,
output: output
};
return FS.createFile(parent, name, ops, Boolean(input), Boolean(output));
}),
forceLoadFile: (function(obj) {
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 (Module["read"]) {
try {
obj.contents = intArrayFromString(Module["read"](obj.url), true);
} catch (e) {
success = false;
}
} else {
throw new Error("Cannot load without read() or XMLHttpRequest.");
}
if (!success) ___setErrNo(ERRNO_CODES.EIO);
return success;
}),
ensureRoot: (function() {
if (FS.root) return;
FS.root = {
read: true,
write: true,
isFolder: true,
isDevice: false,
timestamp: Date.now(),
inodeNumber: 1,
contents: {}
};
}),
init: (function(input, output, error) {
assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
FS.init.initialized = true;
FS.ensureRoot();
input = input || Module["stdin"];
output = output || Module["stdout"];
error = error || Module["stderr"];
var stdinOverridden = true, stdoutOverridden = true, stderrOverridden = true;
if (!input) {
stdinOverridden = false;
input = (function() {
if (!input.cache || !input.cache.length) {
var result;
if (typeof window != "undefined" && typeof window.prompt == "function") {
result = window.prompt("Input: ");
if (result === null) result = String.fromCharCode(0);
} else if (typeof readline == "function") {
result = readline();
}
if (!result) result = "";
input.cache = intArrayFromString(result + "\n", true);
}
return input.cache.shift();
});
}
var utf8 = new Runtime.UTF8Processor;
function simpleOutput(val) {
if (val === null || val === 10) {
output.printer(output.buffer.join(""));
output.buffer = [];
} else {
output.buffer.push(utf8.processCChar(val));
}
}
if (!output) {
stdoutOverridden = false;
output = simpleOutput;
}
if (!output.printer) output.printer = Module["print"];
if (!output.buffer) output.buffer = [];
if (!error) {
stderrOverridden = false;
error = simpleOutput;
}
if (!error.printer) error.printer = Module["print"];
if (!error.buffer) error.buffer = [];
try {
FS.createFolder("/", "tmp", true, true);
} catch (e) {}
var devFolder = FS.createFolder("/", "dev", true, true);
var stdin = FS.createDevice(devFolder, "stdin", input);
var stdout = FS.createDevice(devFolder, "stdout", null, output);
var stderr = FS.createDevice(devFolder, "stderr", null, error);
FS.createDevice(devFolder, "tty", input, output);
FS.streams[1] = {
path: "/dev/stdin",
object: stdin,
position: 0,
isRead: true,
isWrite: false,
isAppend: false,
isTerminal: !stdinOverridden,
error: false,
eof: false,
ungotten: []
};
FS.streams[2] = {
path: "/dev/stdout",
object: stdout,
position: 0,
isRead: false,
isWrite: true,
isAppend: false,
isTerminal: !stdoutOverridden,
error: false,
eof: false,
ungotten: []
};
FS.streams[3] = {
path: "/dev/stderr",
object: stderr,
position: 0,
isRead: false,
isWrite: true,
isAppend: false,
isTerminal: !stderrOverridden,
error: false,
eof: false,
ungotten: []
};
HEAP32[_stdin >> 2] = 1;
HEAP32[_stdout >> 2] = 2;
HEAP32[_stderr >> 2] = 3;
FS.createPath("/", "dev/shm/tmp", true, true);
for (var i = FS.streams.length; i < Math.max(_stdin, _stdout, _stderr) + 4; i++) {
FS.streams[i] = null;
}
FS.streams[_stdin] = FS.streams[1];
FS.streams[_stdout] = FS.streams[2];
FS.streams[_stderr] = FS.streams[3];
FS.checkStreams();
allocate([ allocate([ 0, 0, 0, 0, _stdin, 0, 0, 0, _stdout, 0, 0, 0, _stderr, 0, 0, 0 ], "void*", ALLOC_DYNAMIC) ], "void*", ALLOC_NONE, __impure_ptr);
}),
quit: (function() {
if (!FS.init.initialized) return;
if (FS.streams[2] && FS.streams[2].object.output.buffer.length > 0) FS.streams[2].object.output(10);
if (FS.streams[3] && FS.streams[3].object.output.buffer.length > 0) FS.streams[3].object.output(10);
}),
standardizePath: (function(path) {
if (path.substr(0, 2) == "./") path = path.substr(2);
return path;
}),
deleteFile: (function(path) {
path = FS.analyzePath(path);
if (!path.parentExists || !path.exists) {
throw "Invalid path " + path;
}
delete path.parentObject.contents[path.name];
})
};
function _pwrite(fildes, buf, nbyte, offset) {
var stream = FS.streams[fildes];
if (!stream || stream.object.isDevice) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
} else if (!stream.isWrite) {
___setErrNo(ERRNO_CODES.EACCES);
return -1;
} else if (stream.object.isFolder) {
___setErrNo(ERRNO_CODES.EISDIR);
return -1;
} else if (nbyte < 0 || offset < 0) {
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
} else {
var contents = stream.object.contents;
while (contents.length < offset) contents.push(0);
for (var i = 0; i < nbyte; i++) {
contents[offset + i] = HEAPU8[buf + i | 0];
}
stream.object.timestamp = Date.now();
return i;
}
}
function _write(fildes, buf, nbyte) {
var stream = FS.streams[fildes];
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
} else if (!stream.isWrite) {
___setErrNo(ERRNO_CODES.EACCES);
return -1;
} else if (nbyte < 0) {
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
} else {
if (stream.object.isDevice) {
if (stream.object.output) {
for (var i = 0; i < nbyte; i++) {
try {
stream.object.output(HEAP8[buf + i | 0]);
} catch (e) {
___setErrNo(ERRNO_CODES.EIO);
return -1;
}
}
stream.object.timestamp = Date.now();
return i;
} else {
___setErrNo(ERRNO_CODES.ENXIO);
return -1;
}
} else {
var bytesWritten = _pwrite(fildes, buf, nbyte, stream.position);
if (bytesWritten != -1) stream.position += bytesWritten;
return bytesWritten;
}
}
}
function _fwrite(ptr, size, nitems, stream) {
var bytesToWrite = nitems * size;
if (bytesToWrite == 0) return 0;
var bytesWritten = _write(stream, ptr, bytesToWrite);
if (bytesWritten == -1) {
if (FS.streams[stream]) FS.streams[stream].error = true;
return 0;
} else {
return Math.floor(bytesWritten / size);
}
}
function _strlen(ptr) {
ptr = ptr | 0;
var curr = 0;
curr = ptr;
while (HEAP8[curr]) {
curr = curr + 1 | 0;
}
return curr - ptr | 0;
}
function __reallyNegative(x) {
return x < 0 || x === 0 && 1 / x === -Infinity;
}
function __formatString(format, varargs) {
var textIndex = format;
var argIndex = 0;
function getNextArg(type) {
var ret;
if (type === "double") {
ret = HEAPF64[varargs + argIndex >> 3];
} else if (type == "i64") {
ret = [ HEAP32[varargs + argIndex >> 2], HEAP32[varargs + (argIndex + 8) >> 2] ];
argIndex += 8;
} else {
type = "i32";
ret = HEAP32[varargs + argIndex >> 2];
}
argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true));
return ret;
}
var ret = [];
var curr, next, currArg;
while (1) {
var startTextIndex = textIndex;
curr = HEAP8[textIndex];
if (curr === 0) break;
next = HEAP8[textIndex + 1 | 0];
if (curr == 37) {
var flagAlwaysSigned = false;
var flagLeftAlign = false;
var flagAlternative = false;
var flagZeroPad = false;
flagsLoop : while (1) {
switch (next) {
case 43:
flagAlwaysSigned = true;
break;
case 45:
flagLeftAlign = true;
break;
case 35:
flagAlternative = true;
break;
case 48:
if (flagZeroPad) {
break flagsLoop;
} else {
flagZeroPad = true;
break;
}
default:
break flagsLoop;
}
textIndex++;
next = HEAP8[textIndex + 1 | 0];
}
var width = 0;
if (next == 42) {
width = getNextArg("i32");
textIndex++;
next = HEAP8[textIndex + 1 | 0];
} else {
while (next >= 48 && next <= 57) {
width = width * 10 + (next - 48);
textIndex++;
next = HEAP8[textIndex + 1 | 0];
}
}
var precisionSet = false;
if (next == 46) {
var precision = 0;
precisionSet = true;
textIndex++;
next = HEAP8[textIndex + 1 | 0];
if (next == 42) {
precision = getNextArg("i32");
textIndex++;
} else {
while (1) {
var precisionChr = HEAP8[textIndex + 1 | 0];
if (precisionChr < 48 || precisionChr > 57) break;
precision = precision * 10 + (precisionChr - 48);
textIndex++;
}
}
next = HEAP8[textIndex + 1 | 0];
} else {
var precision = 6;
}
var argSize;
switch (String.fromCharCode(next)) {
case "h":
var nextNext = HEAP8[textIndex + 2 | 0];
if (nextNext == 104) {
textIndex++;
argSize = 1;
} else {
argSize = 2;
}
break;
case "l":
var nextNext = HEAP8[textIndex + 2 | 0];
if (nextNext == 108) {
textIndex++;
argSize = 8;
} else {
argSize = 4;
}
break;
case "L":
case "q":
case "j":
argSize = 8;
break;
case "z":
case "t":
case "I":
argSize = 4;
break;
default:
argSize = null;
}
if (argSize) textIndex++;
next = HEAP8[textIndex + 1 | 0];
switch (String.fromCharCode(next)) {
case "d":
case "i":
case "u":
case "o":
case "x":
case "X":
case "p":
{
var signed = next == 100 || next == 105;
argSize = argSize || 4;
var currArg = getNextArg("i" + argSize * 8);
var origArg = currArg;
var argText;
if (argSize == 8) {
currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
}
if (argSize <= 4) {
var limit = Math.pow(256, argSize) - 1;
currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
}
var currAbsArg = Math.abs(currArg);
var prefix = "";
if (next == 100 || next == 105) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else argText = reSign(currArg, 8 * argSize, 1).toString(10);
} else if (next == 117) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else argText = unSign(currArg, 8 * argSize, 1).toString(10);
currArg = Math.abs(currArg);
} else if (next == 111) {
argText = (flagAlternative ? "0" : "") + currAbsArg.toString(8);
} else if (next == 120 || next == 88) {
prefix = flagAlternative && currArg != 0 ? "0x" : "";
if (argSize == 8 && i64Math) {
if (origArg[1]) {
argText = (origArg[1] >>> 0).toString(16);
var lower = (origArg[0] >>> 0).toString(16);
while (lower.length < 8) lower = "0" + lower;
argText += lower;
} else {
argText = (origArg[0] >>> 0).toString(16);
}
} else if (currArg < 0) {
currArg = -currArg;
argText = (currAbsArg - 1).toString(16);
var buffer = [];
for (var i = 0; i < argText.length; i++) {
buffer.push((15 - parseInt(argText[i], 16)).toString(16));
}
argText = buffer.join("");
while (argText.length < argSize * 2) argText = "f" + argText;
} else {
argText = currAbsArg.toString(16);
}
if (next == 88) {
prefix = prefix.toUpperCase();
argText = argText.toUpperCase();
}
} else if (next == 112) {
if (currAbsArg === 0) {
argText = "(nil)";
} else {
prefix = "0x";
argText = currAbsArg.toString(16);
}
}
if (precisionSet) {
while (argText.length < precision) {
argText = "0" + argText;
}
}
if (flagAlwaysSigned) {
if (currArg < 0) {
prefix = "-" + prefix;
} else {
prefix = "+" + prefix;
}
}
while (prefix.length + argText.length < width) {
if (flagLeftAlign) {
argText += " ";
} else {
if (flagZeroPad) {
argText = "0" + argText;
} else {
prefix = " " + prefix;
}
}
}
argText = prefix + argText;
argText.split("").forEach((function(chr) {
ret.push(chr.charCodeAt(0));
}));
break;
}
case "f":
case "F":
case "e":
case "E":
case "g":
case "G":
{
var currArg = getNextArg("double");
var argText;
if (isNaN(currArg)) {
argText = "nan";
flagZeroPad = false;
} else if (!isFinite(currArg)) {
argText = (currArg < 0 ? "-" : "") + "inf";
flagZeroPad = false;
} else {
var isGeneral = false;
var effectivePrecision = Math.min(precision, 20);
if (next == 103 || next == 71) {
isGeneral = true;
precision = precision || 1;
var exponent = parseInt(currArg.toExponential(effectivePrecision).split("e")[1], 10);
if (precision > exponent && exponent >= -4) {
next = (next == 103 ? "f" : "F").charCodeAt(0);
precision -= exponent + 1;
} else {
next = (next == 103 ? "e" : "E").charCodeAt(0);
precision--;
}
effectivePrecision = Math.min(precision, 20);
}
if (next == 101 || next == 69) {
argText = currArg.toExponential(effectivePrecision);
if (/[eE][-+]\d$/.test(argText)) {
argText = argText.slice(0, -1) + "0" + argText.slice(-1);
}
} else if (next == 102 || next == 70) {
argText = currArg.toFixed(effectivePrecision);
if (currArg === 0 && __reallyNegative(currArg)) {
argText = "-" + argText;
}
}
var parts = argText.split("e");
if (isGeneral && !flagAlternative) {
while (parts[0].length > 1 && parts[0].indexOf(".") != -1 && (parts[0].slice(-1) == "0" || parts[0].slice(-1) == ".")) {
parts[0] = parts[0].slice(0, -1);
}
} else {
if (flagAlternative && argText.indexOf(".") == -1) parts[0] += ".";
while (precision > effectivePrecision++) parts[0] += "0";
}
argText = parts[0] + (parts.length > 1 ? "e" + parts[1] : "");
if (next == 69) argText = argText.toUpperCase();
if (flagAlwaysSigned && currArg >= 0) {
argText = "+" + argText;
}
}
while (argText.length < width) {
if (flagLeftAlign) {
argText += " ";
} else {
if (flagZeroPad && (argText[0] == "-" || argText[0] == "+")) {
argText = argText[0] + "0" + argText.slice(1);
} else {
argText = (flagZeroPad ? "0" : " ") + argText;
}
}
}
if (next < 97) argText = argText.toUpperCase();
argText.split("").forEach((function(chr) {
ret.push(chr.charCodeAt(0));
}));
break;
}
case "s":
{
var arg = getNextArg("i8*");
var argLength = arg ? _strlen(arg) : "(null)".length;
if (precisionSet) argLength = Math.min(argLength, precision);
if (!flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
if (arg) {
for (var i = 0; i < argLength; i++) {
ret.push(HEAPU8[arg++ | 0]);
}
} else {
ret = ret.concat(intArrayFromString("(null)".substr(0, argLength), true));
}
if (flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
break;
}
case "c":
{
if (flagLeftAlign) ret.push(getNextArg("i8"));
while (--width > 0) {
ret.push(32);
}
if (!flagLeftAlign) ret.push(getNextArg("i8"));
break;
}
case "n":
{
var ptr = getNextArg("i32*");
HEAP32[ptr >> 2] = ret.length;
break;
}
case "%":
{
ret.push(curr);
break;
}
default:
{
for (var i = startTextIndex; i < textIndex + 2; i++) {
ret.push(HEAP8[i]);
}
}
}
textIndex += 2;
} else {
ret.push(curr);
textIndex += 1;
}
}
return ret;
}
function _fprintf(stream, format, varargs) {
var result = __formatString(format, varargs);
var stack = Runtime.stackSave();
var ret = _fwrite(allocate(result, "i8", ALLOC_STACK), 1, result.length, stream);
Runtime.stackRestore(stack);
return ret;
}
function _printf(format, varargs) {
var stdout = HEAP32[_stdout >> 2];
return _fprintf(stdout, format, varargs);
}
function _llvm_lifetime_start() {}
function _llvm_lifetime_end() {}
function _strdup(ptr) {
var len = _strlen(ptr);
var newStr = _malloc(len + 1);
_memcpy(newStr, ptr, len);
HEAP8[newStr + len | 0] = 0;
return newStr;
}
function _abort() {
ABORT = true;
throw "abort() at " + (new Error).stack;
}
function ___errno_location() {
if (!___setErrNo.ret) {
___setErrNo.ret = allocate([ 0 ], "i32", ALLOC_NORMAL);
HEAP32[___setErrNo.ret >> 2] = 0;
}
return ___setErrNo.ret;
}
var ___errno = ___errno_location;
function _memcpy(dest, src, num) {
dest = dest | 0;
src = src | 0;
num = num | 0;
var ret = 0;
ret = dest | 0;
if ((dest & 3) == (src & 3)) {
while (dest & 3) {
if ((num | 0) == 0) return ret | 0;
HEAP8[dest] = HEAP8[src];
dest = dest + 1 | 0;
src = src + 1 | 0;
num = num - 1 | 0;
}
while ((num | 0) >= 4) {
HEAP32[dest >> 2] = HEAP32[src >> 2];
dest = dest + 4 | 0;
src = src + 4 | 0;
num = num - 4 | 0;
}
}
while ((num | 0) > 0) {
HEAP8[dest] = HEAP8[src];
dest = dest + 1 | 0;
src = src + 1 | 0;
num = num - 1 | 0;
}
return ret | 0;
}
var _llvm_memcpy_p0i8_p0i8_i32 = _memcpy;
function _sysconf(name) {
switch (name) {
case 8:
return PAGE_SIZE;
case 54:
case 56:
case 21:
case 61:
case 63:
case 22:
case 67:
case 23:
case 24:
case 25:
case 26:
case 27:
case 69:
case 28:
case 101:
case 70:
case 71:
case 29:
case 30:
case 199:
case 75:
case 76:
case 32:
case 43:
case 44:
case 80:
case 46:
case 47:
case 45:
case 48:
case 49:
case 42:
case 82:
case 33:
case 7:
case 108:
case 109:
case 107:
case 112:
case 119:
case 121:
return 200809;
case 13:
case 104:
case 94:
case 95:
case 34:
case 35:
case 77:
case 81:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 91:
case 94:
case 95:
case 110:
case 111:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 120:
case 40:
case 16:
case 79:
case 19:
return -1;
case 92:
case 93:
case 5:
case 72:
case 6:
case 74:
case 92:
case 93:
case 96:
case 97:
case 98:
case 99:
case 102:
case 103:
case 105:
return 1;
case 38:
case 66:
case 50:
case 51:
case 4:
return 1024;
case 15:
case 64:
case 41:
return 32;
case 55:
case 37:
case 17:
return 2147483647;
case 18:
case 1:
return 47839;
case 59:
case 57:
return 99;
case 68:
case 58:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 14:
return 32768;
case 73:
return 32767;
case 39:
return 16384;
case 60:
return 1e3;
case 106:
return 700;
case 52:
return 256;
case 62:
return 255;
case 2:
return 100;
case 65:
return 64;
case 36:
return 20;
case 100:
return 16;
case 20:
return 6;
case 53:
return 4;
case 10:
return 1;
}
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
}
function _time(ptr) {
var ret = Math.floor(Date.now() / 1e3);
if (ptr) {
HEAP32[ptr >> 2] = ret;
}
return ret;
}
function _sbrk(bytes) {
var self = _sbrk;
if (!self.called) {
DYNAMICTOP = alignMemoryPage(DYNAMICTOP);
self.called = true;
assert(Runtime.dynamicAlloc);
self.alloc = Runtime.dynamicAlloc;
Runtime.dynamicAlloc = (function() {
abort("cannot dynamically allocate, sbrk now has control");
});
}
var ret = DYNAMICTOP;
if (bytes != 0) self.alloc(bytes);
return ret;
}
function __ZNSt9type_infoD2Ev() {}
function _memset(ptr, value, num) {
ptr = ptr | 0;
value = value | 0;
num = num | 0;
var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
stop = ptr + num | 0;
if ((num | 0) >= 20) {
value = value & 255;
unaligned = ptr & 3;
value4 = value | value << 8 | value << 16 | value << 24;
stop4 = stop & ~3;
if (unaligned) {
unaligned = ptr + 4 - unaligned | 0;
while ((ptr | 0) < (unaligned | 0)) {
HEAP8[ptr] = value;
ptr = ptr + 1 | 0;
}
}
while ((ptr | 0) < (stop4 | 0)) {
HEAP32[ptr >> 2] = value4;
ptr = ptr + 4 | 0;
}
}
while ((ptr | 0) < (stop | 0)) {
HEAP8[ptr] = value;
ptr = ptr + 1 | 0;
}
}
var _llvm_memset_p0i8_i64 = _memset;
function ___assert_func(filename, line, func, condition) {
throw "Assertion failed: " + (condition ? Pointer_stringify(condition) : "unknown condition") + ", at: " + [ filename ? Pointer_stringify(filename) : "unknown filename", line, func ? Pointer_stringify(func) : "unknown function" ] + " at " + (new Error).stack;
}
function _free() {
Runtime.warnOnce("using stub free (reference it from C to have the real one included)");
}
var Browser = {
mainLoop: {
scheduler: null,
shouldPause: false,
paused: false,
queue: [],
pause: (function() {
Browser.mainLoop.shouldPause = true;
}),
resume: (function() {
if (Browser.mainLoop.paused) {
Browser.mainLoop.paused = false;
Browser.mainLoop.scheduler();
}
Browser.mainLoop.shouldPause = false;
}),
updateStatus: (function() {
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 + ")");
} else {
Module["setStatus"](message);
}
} else {
Module["setStatus"]("");
}
}
})
},
isFullScreen: false,
pointerLock: false,
moduleContextCreatedCallbacks: [],
workers: [],
init: (function() {
if (Browser.initted) return;
Browser.initted = true;
try {
new Blob;
Browser.hasBlobConstructor = true;
} catch (e) {
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;
Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : console.log("warning: cannot create object URLs");
function getMimetype(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)];
}
if (!Module["preloadPlugins"]) Module["preloadPlugins"] = [];
var imagePlugin = {};
imagePlugin["canHandle"] = (function(name) {
return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/.exec(name);
});
imagePlugin["handle"] = (function(byteArray, name, onload, onerror) {
var b = null;
if (Browser.hasBlobConstructor) {
try {
b = new Blob([ byteArray ], {
type: getMimetype(name)
});
} catch (e) {
Runtime.warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder");
}
}
if (!b) {
var bb = new Browser.BlobBuilder;
bb.append((new Uint8Array(byteArray)).buffer);
b = bb.getBlob();
}
var url = Browser.URLObject.createObjectURL(b);
assert(typeof url == "string", "createObjectURL must return a url as a string");
var img = new Image;
img.onload = (function() {
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(event) {
console.log("Image " + url + " could not be decoded");
if (onerror) onerror();
});
img.src = url;
});
Module["preloadPlugins"].push(imagePlugin);
var audioPlugin = {};
audioPlugin["canHandle"] = (function(name) {
return !Module.noAudioDecoding && name.substr(-4) in {
".ogg": 1,
".wav": 1,
".mp3": 1
};
});
audioPlugin["handle"] = (function(byteArray, name, onload, onerror) {
var done = false;
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;
if (onerror) onerror();
}
if (Browser.hasBlobConstructor) {
try {
var b = new Blob([ byteArray ], {
type: getMimetype(name)
});
} catch (e) {
return fail();
}
var url = Browser.URLObject.createObjectURL(b);
assert(typeof url == "string", "createObjectURL must return a url as a string");
var audio = new Audio;
audio.addEventListener("canplaythrough", (function() {
finish(audio);
}), false);
audio.onerror = (function(event) {
if (done) return;
console.log("warning: browser could not fully decode audio " + name + ", trying slower base64 approach");
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) {
var curr = leftchar >> leftbits - 6 & 63;
leftbits -= 6;
ret += BASE[curr];
}
}
if (leftbits == 2) {
ret += BASE[(leftchar & 3) << 4];
ret += PAD + PAD;
} else if (leftbits == 4) {
ret += BASE[(leftchar & 15) << 2];
ret += PAD;
}
return ret;
}
audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray);
finish(audio);
});
audio.src = url;
setTimeout((function() {
finish(audio);
}), 1e4);
} else {
return fail();
}
});
Module["preloadPlugins"].push(audioPlugin);
var canvas = Module["canvas"];
canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"];
canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"];
canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
function pointerLockChange() {
Browser.pointerLock = document["pointerLockElement"] === canvas || document["mozPointerLockElement"] === canvas || document["webkitPointerLockElement"] === canvas;
}
document.addEventListener("pointerlockchange", pointerLockChange, false);
document.addEventListener("mozpointerlockchange", pointerLockChange, false);
document.addEventListener("webkitpointerlockchange", pointerLockChange, false);
if (Module["elementPointerLock"]) {
canvas.addEventListener("click", (function(ev) {
if (!Browser.pointerLock && canvas.requestPointerLock) {
canvas.requestPointerLock();
ev.preventDefault();
}
}), false);
}
}),
createContext: (function(canvas, useWebGL, setInModule) {
var ctx;
try {
if (useWebGL) {
ctx = canvas.getContext("experimental-webgl", {
alpha: false
});
} else {
ctx = canvas.getContext("2d");
}
if (!ctx) throw ":(";
} catch (e) {
Module.print("Could not create canvas - " + e);
return null;
}
if (useWebGL) {
canvas.style.backgroundColor = "black";
canvas.addEventListener("webglcontextlost", (function(event) {
alert("WebGL context lost. You will need to reload the page.");
}), false);
}
if (setInModule) {
Module.ctx = ctx;
Module.useWebGL = useWebGL;
Browser.moduleContextCreatedCallbacks.forEach((function(callback) {
callback();
}));
Browser.init();
}
return ctx;
}),
destroyContext: (function(canvas, useWebGL, setInModule) {}),
fullScreenHandlersInstalled: false,
lockPointer: undefined,
resizeCanvas: undefined,
requestFullScreen: (function(lockPointer, resizeCanvas) {
this.lockPointer = lockPointer;
this.resizeCanvas = resizeCanvas;
if (typeof this.lockPointer === "undefined") this.lockPointer = true;
if (typeof this.resizeCanvas === "undefined") this.resizeCanvas = false;
var canvas = Module["canvas"];
function fullScreenChange() {
Browser.isFullScreen = false;
if ((document["webkitFullScreenElement"] || document["webkitFullscreenElement"] || document["mozFullScreenElement"] || document["mozFullscreenElement"] || document["fullScreenElement"] || document["fullscreenElement"]) === canvas) {
canvas.cancelFullScreen = document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["webkitCancelFullScreen"];
canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
if (Browser.lockPointer) canvas.requestPointerLock();
Browser.isFullScreen = true;
if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
} else if (Browser.resizeCanvas) {
Browser.setWindowedCanvasSize();
}
if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullScreen);
}
if (!this.fullScreenHandlersInstalled) {
this.fullScreenHandlersInstalled = true;
document.addEventListener("fullscreenchange", fullScreenChange, false);
document.addEventListener("mozfullscreenchange", fullScreenChange, false);
document.addEventListener("webkitfullscreenchange", fullScreenChange, false);
}
canvas.requestFullScreen = canvas["requestFullScreen"] || canvas["mozRequestFullScreen"] || (canvas["webkitRequestFullScreen"] ? (function() {
canvas["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]);
}) : null);
canvas.requestFullScreen();
}),
requestAnimationFrame: (function(func) {
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = window["requestAnimationFrame"] || window["mozRequestAnimationFrame"] || window["webkitRequestAnimationFrame"] || window["msRequestAnimationFrame"] || window["oRequestAnimationFrame"] || window["setTimeout"];
}
window.requestAnimationFrame(func);
}),
getMovementX: (function(event) {
return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0;
}),
getMovementY: (function(event) {
return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0;
}),
mouseX: 0,
mouseY: 0,
mouseMovementX: 0,
mouseMovementY: 0,
calculateMouseEvent: (function(event) {
if (Browser.pointerLock) {
if (event.type != "mousemove" && "mozMovementX" in event) {
Browser.mouseMovementX = Browser.mouseMovementY = 0;
} else {
Browser.mouseMovementX = Browser.getMovementX(event);
Browser.mouseMovementY = Browser.getMovementY(event);
}
Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
} else {
var rect = Module["canvas"].getBoundingClientRect();
var x = event.pageX - (window.scrollX + rect.left);
var y = event.pageY - (window.scrollY + rect.top);
var cw = Module["canvas"].width;
var ch = Module["canvas"].height;
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;
}
}),
xhrLoad: (function(url, onload, onerror) {
var xhr = new XMLHttpRequest;
xhr.open("GET", url, true);
xhr.responseType = "arraybuffer";
xhr.onload = (function() {
if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
onload(xhr.response);
} else {
onerror();
}
});
xhr.onerror = onerror;
xhr.send(null);
}),
asyncLoad: (function(url, onload, onerror, noRunDep) {
Browser.xhrLoad(url, (function(arrayBuffer) {
assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
onload(new Uint8Array(arrayBuffer));
if (!noRunDep) removeRunDependency("al " + url);
}), (function(event) {
if (onerror) {
onerror();
} else {
throw 'Loading data file "' + url + '" failed.';
}
}));
if (!noRunDep) addRunDependency("al " + url);
}),
resizeListeners: [],
updateResizeListeners: (function() {
var canvas = Module["canvas"];
Browser.resizeListeners.forEach((function(listener) {
listener(canvas.width, canvas.height);
}));
}),
setCanvasSize: (function(width, height, noUpdates) {
var canvas = Module["canvas"];
canvas.width = width;
canvas.height = height;
if (!noUpdates) Browser.updateResizeListeners();
}),
windowedWidth: 0,
windowedHeight: 0,
setFullScreenCanvasSize: (function() {
var canvas = Module["canvas"];
this.windowedWidth = canvas.width;
this.windowedHeight = canvas.height;
canvas.width = screen.width;
canvas.height = screen.height;
var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
flags = flags | 8388608;
HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;
Browser.updateResizeListeners();
}),
setWindowedCanvasSize: (function() {
var canvas = Module["canvas"];
canvas.width = this.windowedWidth;
canvas.height = this.windowedHeight;
var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
flags = flags & ~8388608;
HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;
Browser.updateResizeListeners();
})
};
__ATINIT__.unshift({
func: (function() {
if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
})
});
__ATMAIN__.push({
func: (function() {
FS.ignorePermissions = false;
})
});
__ATEXIT__.push({
func: (function() {
FS.quit();
})
});
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;
___errno_state = Runtime.staticAlloc(4);
Module["requestFullScreen"] = (function(lockPointer, resizeCanvas) {
Browser.requestFullScreen(lockPointer, resizeCanvas);
});
Module["requestAnimationFrame"] = (function(func) {
Browser.requestAnimationFrame(func);
});
Module["pauseMainLoop"] = (function() {
Browser.mainLoop.pause();
});
Module["resumeMainLoop"] = (function() {
Browser.mainLoop.resume();
});
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true;
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY);
var FUNCTION_TABLE = [ 0, 0, __ZN10__cxxabiv121__vmi_class_type_infoD0Ev, 0, __ZN10__cxxabiv123__fundamental_type_infoD0Ev, 0, __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib, 0, __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv116__shim_type_info5noop1Ev, 0, __ZN10__cxxabiv120__si_class_type_infoD0Ev, 0, __ZN10__cxxabiv116__shim_type_infoD2Ev, 0, __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE, 0, ___getTypeName, 0, __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib, 0, __ZN10__cxxabiv117__class_type_infoD0Ev, 0, __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib, 0, __ZNK10__cxxabiv116__shim_type_info5noop2Ev ];
function __Znwj($size) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = ($size | 0) == 0;
var $_size = $1 ? 1 : $size;
var $2 = _malloc($_size);
var $3 = ($2 | 0) == 0;
if ($3) {
label = 2;
break;
} else {
var $_lcssa = $2;
label = 4;
break;
}
case 2:
var $4 = (tempValue = HEAP32[1776 >> 2], HEAP32[1776 >> 2] = tempValue + 0, tempValue);
var $5 = ($4 | 0) == 0;
if ($5) {
var $_lcssa = 0;
label = 4;
break;
} else {
label = 3;
break;
}
case 3:
var $7 = $4;
FUNCTION_TABLE[$7]();
var $8 = _malloc($_size);
var $9 = ($8 | 0) == 0;
if ($9) {
label = 2;
break;
} else {
var $_lcssa = $8;
label = 4;
break;
}
case 4:
var $_lcssa;
return $_lcssa;
default:
assert(0, "bad label: " + label);
}
}
function _malloc($bytes) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $bytes >>> 0 < 245;
if ($1) {
label = 2;
break;
} else {
label = 78;
break;
}
case 2:
var $3 = $bytes >>> 0 < 11;
if ($3) {
var $8 = 16;
label = 4;
break;
} else {
label = 3;
break;
}
case 3:
var $5 = $bytes + 11 | 0;
var $6 = $5 & -8;
var $8 = $6;
label = 4;
break;
case 4:
var $8;
var $9 = $8 >>> 3;
var $10 = HEAP32[(416 | 0) >> 2];
var $11 = $10 >>> ($9 >>> 0);
var $12 = $11 & 3;
var $13 = ($12 | 0) == 0;
if ($13) {
label = 12;
break;
} else {
label = 5;
break;
}
case 5:
var $15 = $11 & 1;
var $16 = $15 ^ 1;
var $17 = $16 + $9 | 0;
var $18 = $17 << 1;
var $19 = 456 + ($18 << 2) | 0;
var $20 = $19;
var $_sum121 = $18 + 2 | 0;
var $21 = 456 + ($_sum121 << 2) | 0;
var $22 = HEAP32[$21 >> 2];
var $23 = $22 + 8 | 0;
var $24 = HEAP32[$23 >> 2];
var $25 = ($20 | 0) == ($24 | 0);
if ($25) {
label = 6;
break;
} else {
label = 7;
break;
}
case 6:
var $27 = 1 << $17;
var $28 = $27 ^ -1;
var $29 = $10 & $28;
HEAP32[(416 | 0) >> 2] = $29;
label = 11;
break;
case 7:
var $31 = $24;
var $32 = HEAP32[(432 | 0) >> 2];
var $33 = $31 >>> 0 < $32 >>> 0;
if ($33) {
label = 10;
break;
} else {
label = 8;
break;
}
case 8:
var $35 = $24 + 12 | 0;
var $36 = HEAP32[$35 >> 2];
var $37 = ($36 | 0) == ($22 | 0);
if ($37) {
label = 9;
break;
} else {
label = 10;
break;
}
case 9:
HEAP32[$35 >> 2] = $20;
HEAP32[$21 >> 2] = $24;
label = 11;
break;
case 10:
_abort();
throw "Reached an unreachable!";
case 11:
var $40 = $17 << 3;
var $41 = $40 | 3;
var $42 = $22 + 4 | 0;
HEAP32[$42 >> 2] = $41;
var $43 = $22;
var $_sum123124 = $40 | 4;
var $44 = $43 + $_sum123124 | 0;
var $45 = $44;
var $46 = HEAP32[$45 >> 2];
var $47 = $46 | 1;
HEAP32[$45 >> 2] = $47;
var $48 = $23;
var $mem_0 = $48;
label = 333;
break;
case 12:
var $50 = HEAP32[(424 | 0) >> 2];
var $51 = $8 >>> 0 > $50 >>> 0;
if ($51) {
label = 13;
break;
} else {
var $nb_0 = $8;
label = 160;
break;
}
case 13:
var $53 = ($11 | 0) == 0;
if ($53) {
label = 27;
break;
} else {
label = 14;
break;
}
case 14:
var $55 = $11 << $9;
var $56 = 2 << $9;
var $57 = -$56 | 0;
var $58 = $56 | $57;
var $59 = $55 & $58;
var $60 = -$59 | 0;
var $61 = $59 & $60;
var $62 = $61 - 1 | 0;
var $63 = $62 >>> 12;
var $64 = $63 & 16;
var $65 = $62 >>> ($64 >>> 0);
var $66 = $65 >>> 5;
var $67 = $66 & 8;
var $68 = $67 | $64;
var $69 = $65 >>> ($67 >>> 0);
var $70 = $69 >>> 2;
var $71 = $70 & 4;
var $72 = $68 | $71;
var $73 = $69 >>> ($71 >>> 0);
var $74 = $73 >>> 1;
var $75 = $74 & 2;
var $76 = $72 | $75;
var $77 = $73 >>> ($75 >>> 0);
var $78 = $77 >>> 1;
var $79 = $78 & 1;
var $80 = $76 | $79;
var $81 = $77 >>> ($79 >>> 0);
var $82 = $80 + $81 | 0;
var $83 = $82 << 1;
var $84 = 456 + ($83 << 2) | 0;
var $85 = $84;
var $_sum114 = $83 + 2 | 0;
var $86 = 456 + ($_sum114 << 2) | 0;
var $87 = HEAP32[$86 >> 2];
var $88 = $87 + 8 | 0;
var $89 = HEAP32[$88 >> 2];
var $90 = ($85 | 0) == ($89 | 0);
if ($90) {
label = 15;
break;
} else {
label = 16;
break;
}
case 15:
var $92 = 1 << $82;
var $93 = $92 ^ -1;
var $94 = $10 & $93;
HEAP32[(416 | 0) >> 2] = $94;
label = 20;
break;
case 16:
var $96 = $89;
var $97 = HEAP32[(432 | 0) >> 2];
var $98 = $96 >>> 0 < $97 >>> 0;
if ($98) {
label = 19;
break;
} else {
label = 17;
break;
}
case 17:
var $100 = $89 + 12 | 0;
var $101 = HEAP32[$100 >> 2];
var $102 = ($101 | 0) == ($87 | 0);
if ($102) {
label = 18;
break;
} else {
label = 19;
break;
}
case 18:
HEAP32[$100 >> 2] = $85;
HEAP32[$86 >> 2] = $89;
label = 20;
break;
case 19:
_abort();
throw "Reached an unreachable!";
case 20:
var $105 = $82 << 3;
var $106 = $105 - $8 | 0;
var $107 = $8 | 3;
var $108 = $87 + 4 | 0;
HEAP32[$108 >> 2] = $107;
var $109 = $87;
var $110 = $109 + $8 | 0;
var $111 = $110;
var $112 = $106 | 1;
var $_sum116117 = $8 | 4;
var $113 = $109 + $_sum116117 | 0;
var $114 = $113;
HEAP32[$114 >> 2] = $112;
var $115 = $109 + $105 | 0;
var $116 = $115;
HEAP32[$116 >> 2] = $106;
var $117 = HEAP32[(424 | 0) >> 2];
var $118 = ($117 | 0) == 0;
if ($118) {
label = 26;
break;
} else {
label = 21;
break;
}
case 21:
var $120 = HEAP32[(436 | 0) >> 2];
var $121 = $117 >>> 3;
var $122 = $121 << 1;
var $123 = 456 + ($122 << 2) | 0;
var $124 = $123;
var $125 = HEAP32[(416 | 0) >> 2];
var $126 = 1 << $121;
var $127 = $125 & $126;
var $128 = ($127 | 0) == 0;
if ($128) {
label = 22;
break;
} else {
label = 23;
break;
}
case 22:
var $130 = $125 | $126;
HEAP32[(416 | 0) >> 2] = $130;
var $_sum119_pre = $122 + 2 | 0;
var $_pre = 456 + ($_sum119_pre << 2) | 0;
var $F4_0 = $124;
var $_pre_phi = $_pre;
label = 25;
break;
case 23:
var $_sum120 = $122 + 2 | 0;
var $132 = 456 + ($_sum120 << 2) | 0;
var $133 = HEAP32[$132 >> 2];
var $134 = $133;
var $135 = HEAP32[(432 | 0) >> 2];
var $136 = $134 >>> 0 < $135 >>> 0;
if ($136) {
label = 24;
break;
} else {
var $F4_0 = $133;
var $_pre_phi = $132;
label = 25;
break;
}
case 24:
_abort();
throw "Reached an unreachable!";
case 25:
var $_pre_phi;
var $F4_0;
HEAP32[$_pre_phi >> 2] = $120;
var $139 = $F4_0 + 12 | 0;
HEAP32[$139 >> 2] = $120;
var $140 = $120 + 8 | 0;
HEAP32[$140 >> 2] = $F4_0;
var $141 = $120 + 12 | 0;
HEAP32[$141 >> 2] = $124;
label = 26;
break;
case 26:
HEAP32[(424 | 0) >> 2] = $106;
HEAP32[(436 | 0) >> 2] = $111;
var $143 = $88;
var $mem_0 = $143;
label = 333;
break;
case 27:
var $145 = HEAP32[(420 | 0) >> 2];
var $146 = ($145 | 0) == 0;
if ($146) {
var $nb_0 = $8;
label = 160;
break;
} else {
label = 28;
break;
}
case 28:
var $148 = -$145 | 0;
var $149 = $145 & $148;
var $150 = $149 - 1 | 0;
var $151 = $150 >>> 12;
var $152 = $151 & 16;
var $153 = $150 >>> ($152 >>> 0);
var $154 = $153 >>> 5;
var $155 = $154 & 8;
var $156 = $155 | $152;
var $157 = $153 >>> ($155 >>> 0);
var $158 = $157 >>> 2;
var $159 = $158 & 4;
var $160 = $156 | $159;
var $161 = $157 >>> ($159 >>> 0);
var $162 = $161 >>> 1;
var $163 = $162 & 2;
var $164 = $160 | $163;
var $165 = $161 >>> ($163 >>> 0);
var $166 = $165 >>> 1;
var $167 = $166 & 1;
var $168 = $164 | $167;
var $169 = $165 >>> ($167 >>> 0);
var $170 = $168 + $169 | 0;
var $171 = 720 + ($170 << 2) | 0;
var $172 = HEAP32[$171 >> 2];
var $173 = $172 + 4 | 0;
var $174 = HEAP32[$173 >> 2];
var $175 = $174 & -8;
var $176 = $175 - $8 | 0;
var $t_0_i = $172;
var $v_0_i = $172;
var $rsize_0_i = $176;
label = 29;
break;
case 29:
var $rsize_0_i;
var $v_0_i;
var $t_0_i;
var $178 = $t_0_i + 16 | 0;
var $179 = HEAP32[$178 >> 2];
var $180 = ($179 | 0) == 0;
if ($180) {
label = 30;
break;
} else {
var $185 = $179;
label = 31;
break;
}
case 30:
var $182 = $t_0_i + 20 | 0;
var $183 = HEAP32[$182 >> 2];
var $184 = ($183 | 0) == 0;
if ($184) {
label = 32;
break;
} else {
var $185 = $183;
label = 31;
break;
}
case 31:
var $185;
var $186 = $185 + 4 | 0;
var $187 = HEAP32[$186 >> 2];
var $188 = $187 & -8;
var $189 = $188 - $8 | 0;
var $190 = $189 >>> 0 < $rsize_0_i >>> 0;
var $_rsize_0_i = $190 ? $189 : $rsize_0_i;
var $_v_0_i = $190 ? $185 : $v_0_i;
var $t_0_i = $185;
var $v_0_i = $_v_0_i;
var $rsize_0_i = $_rsize_0_i;
label = 29;
break;
case 32:
var $192 = $v_0_i;
var $193 = HEAP32[(432 | 0) >> 2];
var $194 = $192 >>> 0 < $193 >>> 0;
if ($194) {
label = 76;
break;
} else {
label = 33;
break;
}
case 33:
var $196 = $192 + $8 | 0;
var $197 = $196;
var $198 = $192 >>> 0 < $196 >>> 0;
if ($198) {
label = 34;
break;
} else {
label = 76;
break;
}
case 34:
var $200 = $v_0_i + 24 | 0;
var $201 = HEAP32[$200 >> 2];
var $202 = $v_0_i + 12 | 0;
var $203 = HEAP32[$202 >> 2];
var $204 = ($203 | 0) == ($v_0_i | 0);
if ($204) {
label = 40;
break;
} else {
label = 35;
break;
}
case 35:
var $206 = $v_0_i + 8 | 0;
var $207 = HEAP32[$206 >> 2];
var $208 = $207;
var $209 = $208 >>> 0 < $193 >>> 0;
if ($209) {
label = 39;
break;
} else {
label = 36;
break;
}
case 36:
var $211 = $207 + 12 | 0;
var $212 = HEAP32[$211 >> 2];
var $213 = ($212 | 0) == ($v_0_i | 0);
if ($213) {
label = 37;
break;
} else {
label = 39;
break;
}
case 37:
var $215 = $203 + 8 | 0;
var $216 = HEAP32[$215 >> 2];
var $217 = ($216 | 0) == ($v_0_i | 0);
if ($217) {
label = 38;
break;
} else {
label = 39;
break;
}
case 38:
HEAP32[$211 >> 2] = $203;
HEAP32[$215 >> 2] = $207;
var $R_1_i = $203;
label = 47;
break;
case 39:
_abort();
throw "Reached an unreachable!";
case 40:
var $220 = $v_0_i + 20 | 0;
var $221 = HEAP32[$220 >> 2];
var $222 = ($221 | 0) == 0;
if ($222) {
label = 41;
break;
} else {
var $R_0_i = $221;
var $RP_0_i = $220;
label = 42;
break;
}
case 41:
var $224 = $v_0_i + 16 | 0;
var $225 = HEAP32[$224 >> 2];
var $226 = ($225 | 0) == 0;
if ($226) {
var $R_1_i = 0;
label = 47;
break;
} else {
var $R_0_i = $225;
var $RP_0_i = $224;
label = 42;
break;
}
case 42:
var $RP_0_i;
var $R_0_i;
var $227 = $R_0_i + 20 | 0;
var $228 = HEAP32[$227 >> 2];
var $229 = ($228 | 0) == 0;
if ($229) {
label = 43;
break;
} else {
var $R_0_i = $228;
var $RP_0_i = $227;
label = 42;
break;
}
case 43:
var $231 = $R_0_i + 16 | 0;
var $232 = HEAP32[$231 >> 2];
var $233 = ($232 | 0) == 0;
if ($233) {
label = 44;
break;
} else {
var $R_0_i = $232;
var $RP_0_i = $231;
label = 42;
break;
}
case 44:
var $235 = $RP_0_i;
var $236 = $235 >>> 0 < $193 >>> 0;
if ($236) {
label = 46;
break;
} else {
label = 45;
break;
}
case 45:
HEAP32[$RP_0_i >> 2] = 0;
var $R_1_i = $R_0_i;
label = 47;
break;
case 46:
_abort();
throw "Reached an unreachable!";
case 47:
var $R_1_i;
var $240 = ($201 | 0) == 0;
if ($240) {
label = 67;
break;
} else {
label = 48;
break;
}
case 48:
var $242 = $v_0_i + 28 | 0;
var $243 = HEAP32[$242 >> 2];
var $244 = 720 + ($243 << 2) | 0;
var $245 = HEAP32[$244 >> 2];
var $246 = ($v_0_i | 0) == ($245 | 0);
if ($246) {
label = 49;
break;
} else {
label = 51;
break;
}
case 49:
HEAP32[$244 >> 2] = $R_1_i;
var $cond_i = ($R_1_i | 0) == 0;
if ($cond_i) {
label = 50;
break;
} else {
label = 57;
break;
}
case 50:
var $248 = 1 << $243;
var $249 = $248 ^ -1;
var $250 = HEAP32[(420 | 0) >> 2];
var $251 = $250 & $249;
HEAP32[(420 | 0) >> 2] = $251;
label = 67;
break;
case 51:
var $253 = $201;
var $254 = HEAP32[(432 | 0) >> 2];
var $255 = $253 >>> 0 < $254 >>> 0;
if ($255) {
label = 55;
break;
} else {
label = 52;
break;
}
case 52:
var $257 = $201 + 16 | 0;
var $258 = HEAP32[$257 >> 2];
var $259 = ($258 | 0) == ($v_0_i | 0);
if ($259) {
label = 53;
break;
} else {
label = 54;
break;
}
case 53:
HEAP32[$257 >> 2] = $R_1_i;
label = 56;
break;
case 54:
var $262 = $201 + 20 | 0;
HEAP32[$262 >> 2] = $R_1_i;
label = 56;
break;
case 55:
_abort();
throw "Reached an unreachable!";
case 56:
var $265 = ($R_1_i | 0) == 0;
if ($265) {
label = 67;
break;
} else {
label = 57;
break;
}
case 57:
var $267 = $R_1_i;
var $268 = HEAP32[(432 | 0) >> 2];
var $269 = $267 >>> 0 < $268 >>> 0;
if ($269) {
label = 66;
break;
} else {
label = 58;
break;
}
case 58:
var $271 = $R_1_i + 24 | 0;
HEAP32[$271 >> 2] = $201;
var $272 = $v_0_i + 16 | 0;
var $273 = HEAP32[$272 >> 2];
var $274 = ($273 | 0) == 0;
if ($274) {
label = 62;
break;
} else {
label = 59;
break;
}
case 59:
var $276 = $273;
var $277 = HEAP32[(432 | 0) >> 2];
var $278 = $276 >>> 0 < $277 >>> 0;
if ($278) {
label = 61;
break;
} else {
label = 60;
break;
}
case 60:
var $280 = $R_1_i + 16 | 0;
HEAP32[$280 >> 2] = $273;
var $281 = $273 + 24 | 0;
HEAP32[$281 >> 2] = $R_1_i;
label = 62;
break;
case 61:
_abort();
throw "Reached an unreachable!";
case 62:
var $284 = $v_0_i + 20 | 0;
var $285 = HEAP32[$284 >> 2];
var $286 = ($285 | 0) == 0;
if ($286) {
label = 67;
break;
} else {
label = 63;
break;
}
case 63:
var $288 = $285;
var $289 = HEAP32[(432 | 0) >> 2];
var $290 = $288 >>> 0 < $289 >>> 0;
if ($290) {
label = 65;
break;
} else {
label = 64;
break;
}
case 64:
var $292 = $R_1_i + 20 | 0;
HEAP32[$292 >> 2] = $285;
var $293 = $285 + 24 | 0;
HEAP32[$293 >> 2] = $R_1_i;
label = 67;
break;
case 65:
_abort();
throw "Reached an unreachable!";
case 66:
_abort();
throw "Reached an unreachable!";
case 67:
var $297 = $rsize_0_i >>> 0 < 16;
if ($297) {
label = 68;
break;
} else {
label = 69;
break;
}
case 68:
var $299 = $rsize_0_i + $8 | 0;
var $300 = $299 | 3;
var $301 = $v_0_i + 4 | 0;
HEAP32[$301 >> 2] = $300;
var $_sum4_i = $299 + 4 | 0;
var $302 = $192 + $_sum4_i | 0;
var $303 = $302;
var $304 = HEAP32[$303 >> 2];
var $305 = $304 | 1;
HEAP32[$303 >> 2] = $305;
label = 77;
break;
case 69:
var $307 = $8 | 3;
var $308 = $v_0_i + 4 | 0;
HEAP32[$308 >> 2] = $307;
var $309 = $rsize_0_i | 1;
var $_sum_i147 = $8 | 4;
var $310 = $192 + $_sum_i147 | 0;
var $311 = $310;
HEAP32[$311 >> 2] = $309;
var $_sum1_i = $rsize_0_i + $8 | 0;
var $312 = $192 + $_sum1_i | 0;
var $313 = $312;
HEAP32[$313 >> 2] = $rsize_0_i;
var $314 = HEAP32[(424 | 0) >> 2];
var $315 = ($314 | 0) == 0;
if ($315) {
label = 75;
break;
} else {
label = 70;
break;
}
case 70:
var $317 = HEAP32[(436 | 0) >> 2];
var $318 = $314 >>> 3;
var $319 = $318 << 1;
var $320 = 456 + ($319 << 2) | 0;
var $321 = $320;
var $322 = HEAP32[(416 | 0) >> 2];
var $323 = 1 << $318;
var $324 = $322 & $323;
var $325 = ($324 | 0) == 0;
if ($325) {
label = 71;
break;
} else {
label = 72;
break;
}
case 71:
var $327 = $322 | $323;
HEAP32[(416 | 0) >> 2] = $327;
var $_sum2_pre_i = $319 + 2 | 0;
var $_pre_i = 456 + ($_sum2_pre_i << 2) | 0;
var $F1_0_i = $321;
var $_pre_phi_i = $_pre_i;
label = 74;
break;
case 72:
var $_sum3_i = $319 + 2 | 0;
var $329 = 456 + ($_sum3_i << 2) | 0;
var $330 = HEAP32[$329 >> 2];
var $331 = $330;
var $332 = HEAP32[(432 | 0) >> 2];
var $333 = $331 >>> 0 < $332 >>> 0;
if ($333) {
label = 73;
break;
} else {
var $F1_0_i = $330;
var $_pre_phi_i = $329;
label = 74;
break;
}
case 73:
_abort();
throw "Reached an unreachable!";
case 74:
var $_pre_phi_i;
var $F1_0_i;
HEAP32[$_pre_phi_i >> 2] = $317;
var $336 = $F1_0_i + 12 | 0;
HEAP32[$336 >> 2] = $317;
var $337 = $317 + 8 | 0;
HEAP32[$337 >> 2] = $F1_0_i;
var $338 = $317 + 12 | 0;
HEAP32[$338 >> 2] = $321;
label = 75;
break;
case 75:
HEAP32[(424 | 0) >> 2] = $rsize_0_i;
HEAP32[(436 | 0) >> 2] = $197;
label = 77;
break;
case 76:
_abort();
throw "Reached an unreachable!";
case 77:
var $341 = $v_0_i + 8 | 0;
var $342 = $341;
var $343 = ($341 | 0) == 0;
if ($343) {
var $nb_0 = $8;
label = 160;
break;
} else {
var $mem_0 = $342;
label = 333;
break;
}
case 78:
var $345 = $bytes >>> 0 > 4294967231;
if ($345) {
var $nb_0 = -1;
label = 160;
break;
} else {
label = 79;
break;
}
case 79:
var $347 = $bytes + 11 | 0;
var $348 = $347 & -8;
var $349 = HEAP32[(420 | 0) >> 2];
var $350 = ($349 | 0) == 0;
if ($350) {
var $nb_0 = $348;
label = 160;
break;
} else {
label = 80;
break;
}
case 80:
var $352 = -$348 | 0;
var $353 = $347 >>> 8;
var $354 = ($353 | 0) == 0;
if ($354) {
var $idx_0_i = 0;
label = 83;
break;
} else {
label = 81;
break;
}
case 81:
var $356 = $348 >>> 0 > 16777215;
if ($356) {
var $idx_0_i = 31;
label = 83;
break;
} else {
label = 82;
break;
}
case 82:
var $358 = $353 + 1048320 | 0;
var $359 = $358 >>> 16;
var $360 = $359 & 8;
var $361 = $353 << $360;
var $362 = $361 + 520192 | 0;
var $363 = $362 >>> 16;
var $364 = $363 & 4;
var $365 = $364 | $360;
var $366 = $361 << $364;
var $367 = $366 + 245760 | 0;
var $368 = $367 >>> 16;
var $369 = $368 & 2;
var $370 = $365 | $369;
var $371 = 14 - $370 | 0;
var $372 = $366 << $369;
var $373 = $372 >>> 15;
var $374 = $371 + $373 | 0;
var $375 = $374 << 1;
var $376 = $374 + 7 | 0;
var $377 = $348 >>> ($376 >>> 0);
var $378 = $377 & 1;
var $379 = $378 | $375;
var $idx_0_i = $379;
label = 83;
break;
case 83:
var $idx_0_i;
var $381 = 720 + ($idx_0_i << 2) | 0;
var $382 = HEAP32[$381 >> 2];
var $383 = ($382 | 0) == 0;
if ($383) {
var $v_2_i = 0;
var $rsize_2_i = $352;
var $t_1_i = 0;
label = 90;
break;
} else {
label = 84;
break;
}
case 84:
var $385 = ($idx_0_i | 0) == 31;
if ($385) {
var $390 = 0;
label = 86;
break;
} else {
label = 85;
break;
}
case 85:
var $387 = $idx_0_i >>> 1;
var $388 = 25 - $387 | 0;
var $390 = $388;
label = 86;
break;
case 86:
var $390;
var $391 = $348 << $390;
var $v_0_i128 = 0;
var $rsize_0_i127 = $352;
var $t_0_i126 = $382;
var $sizebits_0_i = $391;
var $rst_0_i = 0;
label = 87;
break;
case 87:
var $rst_0_i;
var $sizebits_0_i;
var $t_0_i126;
var $rsize_0_i127;
var $v_0_i128;
var $393 = $t_0_i126 + 4 | 0;
var $394 = HEAP32[$393 >> 2];
var $395 = $394 & -8;
var $396 = $395 - $348 | 0;
var $397 = $396 >>> 0 < $rsize_0_i127 >>> 0;
if ($397) {
label = 88;
break;
} else {
var $v_1_i = $v_0_i128;
var $rsize_1_i = $rsize_0_i127;
label = 89;
break;
}
case 88:
var $399 = ($395 | 0) == ($348 | 0);
if ($399) {
var $v_2_i = $t_0_i126;
var $rsize_2_i = $396;
var $t_1_i = $t_0_i126;
label = 90;
break;
} else {
var $v_1_i = $t_0_i126;
var $rsize_1_i = $396;
label = 89;
break;
}
case 89:
var $rsize_1_i;
var $v_1_i;
var $401 = $t_0_i126 + 20 | 0;
var $402 = HEAP32[$401 >> 2];
var $403 = $sizebits_0_i >>> 31;
var $404 = $t_0_i126 + 16 + ($403 << 2) | 0;
var $405 = HEAP32[$404 >> 2];
var $406 = ($402 | 0) == 0;
var $407 = ($402 | 0) == ($405 | 0);
var $or_cond_i = $406 | $407;
var $rst_1_i = $or_cond_i ? $rst_0_i : $402;
var $408 = ($405 | 0) == 0;
var $409 = $sizebits_0_i << 1;
if ($408) {
var $v_2_i = $v_1_i;
var $rsize_2_i = $rsize_1_i;
var $t_1_i = $rst_1_i;
label = 90;
break;
} else {
var $v_0_i128 = $v_1_i;
var $rsize_0_i127 = $rsize_1_i;
var $t_0_i126 = $405;
var $sizebits_0_i = $409;
var $rst_0_i = $rst_1_i;
label = 87;
break;
}
case 90:
var $t_1_i;
var $rsize_2_i;
var $v_2_i;
var $410 = ($t_1_i | 0) == 0;
var $411 = ($v_2_i | 0) == 0;
var $or_cond21_i = $410 & $411;
if ($or_cond21_i) {
label = 91;
break;
} else {
var $t_2_ph_i = $t_1_i;
label = 93;
break;
}
case 91:
var $413 = 2 << $idx_0_i;
var $414 = -$413 | 0;
var $415 = $413 | $414;
var $416 = $415 & $349;
var $417 = ($416 | 0) == 0;
if ($417) {
var $nb_0 = $348;
label = 160;
break;
} else {
label = 92;
break;
}
case 92:
var $419 = -$416 | 0;
var $420 = $416 & $419;
var $421 = $420 - 1 | 0;
var $422 = $421 >>> 12;
var $423 = $422 & 16;
var $424 = $421 >>> ($423 >>> 0);
var $425 = $424 >>> 5;
var $426 = $425 & 8;
var $427 = $426 | $423;
var $428 = $424 >>> ($426 >>> 0);
var $429 = $428 >>> 2;
var $430 = $429 & 4;
var $431 = $427 | $430;
var $432 = $428 >>> ($430 >>> 0);
var $433 = $432 >>> 1;
var $434 = $433 & 2;
var $435 = $431 | $434;
var $436 = $432 >>> ($434 >>> 0);
var $437 = $436 >>> 1;
var $438 = $437 & 1;
var $439 = $435 | $438;
var $440 = $436 >>> ($438 >>> 0);
var $441 = $439 + $440 | 0;
var $442 = 720 + ($441 << 2) | 0;
var $443 = HEAP32[$442 >> 2];
var $t_2_ph_i = $443;
label = 93;
break;
case 93:
var $t_2_ph_i;
var $444 = ($t_2_ph_i | 0) == 0;
if ($444) {
var $rsize_3_lcssa_i = $rsize_2_i;
var $v_3_lcssa_i = $v_2_i;
label = 96;
break;
} else {
var $t_228_i = $t_2_ph_i;
var $rsize_329_i = $rsize_2_i;
var $v_330_i = $v_2_i;
label = 94;
break;
}
case 94:
var $v_330_i;
var $rsize_329_i;
var $t_228_i;
var $445 = $t_228_i + 4 | 0;
var $446 = HEAP32[$445 >> 2];
var $447 = $446 & -8;
var $448 = $447 - $348 | 0;
var $449 = $448 >>> 0 < $rsize_329_i >>> 0;
var $_rsize_3_i = $449 ? $448 : $rsize_329_i;
var $t_2_v_3_i = $449 ? $t_228_i : $v_330_i;
var $450 = $t_228_i + 16 | 0;
var $451 = HEAP32[$450 >> 2];
var $452 = ($451 | 0) == 0;
if ($452) {
label = 95;
break;
} else {
var $t_228_i = $451;
var $rsize_329_i = $_rsize_3_i;
var $v_330_i = $t_2_v_3_i;
label = 94;
break;
}
case 95:
var $453 = $t_228_i + 20 | 0;
var $454 = HEAP32[$453 >> 2];
var $455 = ($454 | 0) == 0;
if ($455) {
var $rsize_3_lcssa_i = $_rsize_3_i;
var $v_3_lcssa_i = $t_2_v_3_i;
label = 96;
break;
} else {
var $t_228_i = $454;
var $rsize_329_i = $_rsize_3_i;
var $v_330_i = $t_2_v_3_i;
label = 94;
break;
}
case 96:
var $v_3_lcssa_i;
var $rsize_3_lcssa_i;
var $456 = ($v_3_lcssa_i | 0) == 0;
if ($456) {
var $nb_0 = $348;
label = 160;
break;
} else {
label = 97;
break;
}
case 97:
var $458 = HEAP32[(424 | 0) >> 2];
var $459 = $458 - $348 | 0;
var $460 = $rsize_3_lcssa_i >>> 0 < $459 >>> 0;
if ($460) {
label = 98;
break;
} else {
var $nb_0 = $348;
label = 160;
break;
}
case 98:
var $462 = $v_3_lcssa_i;
var $463 = HEAP32[(432 | 0) >> 2];
var $464 = $462 >>> 0 < $463 >>> 0;
if ($464) {
label = 158;
break;
} else {
label = 99;
break;
}
case 99:
var $466 = $462 + $348 | 0;
var $467 = $466;
var $468 = $462 >>> 0 < $466 >>> 0;
if ($468) {
label = 100;
break;
} else {
label = 158;
break;
}
case 100:
var $470 = $v_3_lcssa_i + 24 | 0;
var $471 = HEAP32[$470 >> 2];
var $472 = $v_3_lcssa_i + 12 | 0;
var $473 = HEAP32[$472 >> 2];
var $474 = ($473 | 0) == ($v_3_lcssa_i | 0);
if ($474) {
label = 106;
break;
} else {
label = 101;
break;
}
case 101:
var $476 = $v_3_lcssa_i + 8 | 0;
var $477 = HEAP32[$476 >> 2];
var $478 = $477;
var $479 = $478 >>> 0 < $463 >>> 0;
if ($479) {
label = 105;
break;
} else {
label = 102;
break;
}
case 102:
var $481 = $477 + 12 | 0;
var $482 = HEAP32[$481 >> 2];
var $483 = ($482 | 0) == ($v_3_lcssa_i | 0);
if ($483) {
label = 103;
break;
} else {
label = 105;
break;
}
case 103:
var $485 = $473 + 8 | 0;
var $486 = HEAP32[$485 >> 2];
var $487 = ($486 | 0) == ($v_3_lcssa_i | 0);
if ($487) {
label = 104;
break;
} else {
label = 105;
break;
}
case 104:
HEAP32[$481 >> 2] = $473;
HEAP32[$485 >> 2] = $477;
var $R_1_i132 = $473;
label = 113;
break;
case 105:
_abort();
throw "Reached an unreachable!";
case 106:
var $490 = $v_3_lcssa_i + 20 | 0;
var $491 = HEAP32[$490 >> 2];
var $492 = ($491 | 0) == 0;
if ($492) {
label = 107;
break;
} else {
var $R_0_i130 = $491;
var $RP_0_i129 = $490;
label = 108;
break;
}
case 107:
var $494 = $v_3_lcssa_i + 16 | 0;
var $495 = HEAP32[$494 >> 2];
var $496 = ($495 | 0) == 0;
if ($496) {
var $R_1_i132 = 0;
label = 113;
break;
} else {
var $R_0_i130 = $495;
var $RP_0_i129 = $494;
label = 108;
break;
}
case 108:
var $RP_0_i129;
var $R_0_i130;
var $497 = $R_0_i130 + 20 | 0;
var $498 = HEAP32[$497 >> 2];
var $499 = ($498 | 0) == 0;
if ($499) {
label = 109;
break;
} else {
var $R_0_i130 = $498;
var $RP_0_i129 = $497;
label = 108;
break;
}
case 109:
var $501 = $R_0_i130 + 16 | 0;
var $502 = HEAP32[$501 >> 2];
var $503 = ($502 | 0) == 0;
if ($503) {
label = 110;
break;
} else {
var $R_0_i130 = $502;
var $RP_0_i129 = $501;
label = 108;
break;
}
case 110:
var $505 = $RP_0_i129;
var $506 = $505 >>> 0 < $463 >>> 0;
if ($506) {
label = 112;
break;
} else {
label = 111;
break;
}
case 111:
HEAP32[$RP_0_i129 >> 2] = 0;
var $R_1_i132 = $R_0_i130;
label = 113;
break;
case 112:
_abort();
throw "Reached an unreachable!";
case 113:
var $R_1_i132;
var $510 = ($471 | 0) == 0;
if ($510) {
label = 133;
break;
} else {
label = 114;
break;
}
case 114:
var $512 = $v_3_lcssa_i + 28 | 0;
var $513 = HEAP32[$512 >> 2];
var $514 = 720 + ($513 << 2) | 0;
var $515 = HEAP32[$514 >> 2];
var $516 = ($v_3_lcssa_i | 0) == ($515 | 0);
if ($516) {
label = 115;
break;
} else {
label = 117;
break;
}
case 115:
HEAP32[$514 >> 2] = $R_1_i132;
var $cond_i133 = ($R_1_i132 | 0) == 0;
if ($cond_i133) {
label = 116;
break;
} else {
label = 123;
break;
}
case 116:
var $518 = 1 << $513;
var $519 = $518 ^ -1;
var $520 = HEAP32[(420 | 0) >> 2];
var $521 = $520 & $519;
HEAP32[(420 | 0) >> 2] = $521;
label = 133;
break;
case 117:
var $523 = $471;
var $524 = HEAP32[(432 | 0) >> 2];
var $525 = $523 >>> 0 < $524 >>> 0;
if ($525) {
label = 121;
break;
} else {
label = 118;
break;
}
case 118:
var $527 = $471 + 16 | 0;
var $528 = HEAP32[$527 >> 2];
var $529 = ($528 | 0) == ($v_3_lcssa_i | 0);
if ($529) {
label = 119;
break;
} else {
label = 120;
break;
}
case 119:
HEAP32[$527 >> 2] = $R_1_i132;
label = 122;
break;
case 120:
var $532 = $471 + 20 | 0;
HEAP32[$532 >> 2] = $R_1_i132;
label = 122;
break;
case 121:
_abort();
throw "Reached an unreachable!";
case 122:
var $535 = ($R_1_i132 | 0) == 0;
if ($535) {
label = 133;
break;
} else {
label = 123;
break;
}
case 123:
var $537 = $R_1_i132;
var $538 = HEAP32[(432 | 0) >> 2];
var $539 = $537 >>> 0 < $538 >>> 0;
if ($539) {
label = 132;
break;
} else {
label = 124;
break;
}
case 124:
var $541 = $R_1_i132 + 24 | 0;
HEAP32[$541 >> 2] = $471;
var $542 = $v_3_lcssa_i + 16 | 0;
var $543 = HEAP32[$542 >> 2];
var $544 = ($543 | 0) == 0;
if ($544) {
label = 128;
break;
} else {
label = 125;
break;
}
case 125:
var $546 = $543;
var $547 = HEAP32[(432 | 0) >> 2];
var $548 = $546 >>> 0 < $547 >>> 0;
if ($548) {
label = 127;
break;
} else {
label = 126;
break;
}
case 126:
var $550 = $R_1_i132 + 16 | 0;
HEAP32[$550 >> 2] = $543;
var $551 = $543 + 24 | 0;
HEAP32[$551 >> 2] = $R_1_i132;
label = 128;
break;
case 127:
_abort();
throw "Reached an unreachable!";
case 128:
var $554 = $v_3_lcssa_i + 20 | 0;
var $555 = HEAP32[$554 >> 2];
var $556 = ($555 | 0) == 0;
if ($556) {
label = 133;
break;
} else {
label = 129;
break;
}
case 129:
var $558 = $555;
var $559 = HEAP32[(432 | 0) >> 2];
var $560 = $558 >>> 0 < $559 >>> 0;
if ($560) {
label = 131;
break;
} else {
label = 130;
break;
}
case 130:
var $562 = $R_1_i132 + 20 | 0;
HEAP32[$562 >> 2] = $555;
var $563 = $555 + 24 | 0;
HEAP32[$563 >> 2] = $R_1_i132;
label = 133;
break;
case 131:
_abort();
throw "Reached an unreachable!";
case 132:
_abort();
throw "Reached an unreachable!";
case 133:
var $567 = $rsize_3_lcssa_i >>> 0 < 16;
if ($567) {
label = 134;
break;
} else {
label = 135;
break;
}
case 134:
var $569 = $rsize_3_lcssa_i + $348 | 0;
var $570 = $569 | 3;
var $571 = $v_3_lcssa_i + 4 | 0;
HEAP32[$571 >> 2] = $570;
var $_sum19_i = $569 + 4 | 0;
var $572 = $462 + $_sum19_i | 0;
var $573 = $572;
var $574 = HEAP32[$573 >> 2];
var $575 = $574 | 1;
HEAP32[$573 >> 2] = $575;
label = 159;
break;
case 135:
var $577 = $348 | 3;
var $578 = $v_3_lcssa_i + 4 | 0;
HEAP32[$578 >> 2] = $577;
var $579 = $rsize_3_lcssa_i | 1;
var $_sum_i135146 = $348 | 4;
var $580 = $462 + $_sum_i135146 | 0;
var $581 = $580;
HEAP32[$581 >> 2] = $579;
var $_sum1_i136 = $rsize_3_lcssa_i + $348 | 0;
var $582 = $462 + $_sum1_i136 | 0;
var $583 = $582;
HEAP32[$583 >> 2] = $rsize_3_lcssa_i;
var $584 = $rsize_3_lcssa_i >>> 3;
var $585 = $rsize_3_lcssa_i >>> 0 < 256;
if ($585) {
label = 136;
break;
} else {
label = 141;
break;
}
case 136:
var $587 = $584 << 1;
var $588 = 456 + ($587 << 2) | 0;
var $589 = $588;
var $590 = HEAP32[(416 | 0) >> 2];
var $591 = 1 << $584;
var $592 = $590 & $591;
var $593 = ($592 | 0) == 0;
if ($593) {
label = 137;
break;
} else {
label = 138;
break;
}
case 137:
var $595 = $590 | $591;
HEAP32[(416 | 0) >> 2] = $595;
var $_sum15_pre_i = $587 + 2 | 0;
var $_pre_i137 = 456 + ($_sum15_pre_i << 2) | 0;
var $F5_0_i = $589;
var $_pre_phi_i138 = $_pre_i137;
label = 140;
break;
case 138:
var $_sum18_i = $587 + 2 | 0;
var $597 = 456 + ($_sum18_i << 2) | 0;
var $598 = HEAP32[$597 >> 2];
var $599 = $598;
var $600 = HEAP32[(432 | 0) >> 2];
var $601 = $599 >>> 0 < $600 >>> 0;
if ($601) {
label = 139;
break;
} else {
var $F5_0_i = $598;
var $_pre_phi_i138 = $597;
label = 140;
break;
}
case 139:
_abort();
throw "Reached an unreachable!";
case 140:
var $_pre_phi_i138;
var $F5_0_i;
HEAP32[$_pre_phi_i138 >> 2] = $467;
var $604 = $F5_0_i + 12 | 0;
HEAP32[$604 >> 2] = $467;
var $_sum16_i = $348 + 8 | 0;
var $605 = $462 + $_sum16_i | 0;
var $606 = $605;
HEAP32[$606 >> 2] = $F5_0_i;
var $_sum17_i = $348 + 12 | 0;
var $607 = $462 + $_sum17_i | 0;
var $608 = $607;
HEAP32[$608 >> 2] = $589;
label = 159;
break;
case 141:
var $610 = $466;
var $611 = $rsize_3_lcssa_i >>> 8;
var $612 = ($611 | 0) == 0;
if ($612) {
var $I7_0_i = 0;
label = 144;
break;
} else {
label = 142;
break;
}
case 142:
var $614 = $rsize_3_lcssa_i >>> 0 > 16777215;
if ($614) {
var $I7_0_i = 31;
label = 144;
break;
} else {
label = 143;
break;
}
case 143:
var $616 = $611 + 1048320 | 0;
var $617 = $616 >>> 16;
var $618 = $617 & 8;
var $619 = $611 << $618;
var $620 = $619 + 520192 | 0;
var $621 = $620 >>> 16;
var $622 = $621 & 4;
var $623 = $622 | $618;
var $624 = $619 << $622;
var $625 = $624 + 245760 | 0;
var $626 = $625 >>> 16;
var $627 = $626 & 2;
var $628 = $623 | $627;
var $629 = 14 - $628 | 0;
var $630 = $624 << $627;
var $631 = $630 >>> 15;
var $632 = $629 + $631 | 0;
var $633 = $632 << 1;
var $634 = $632 + 7 | 0;
var $635 = $rsize_3_lcssa_i >>> ($634 >>> 0);
var $636 = $635 & 1;
var $637 = $636 | $633;
var $I7_0_i = $637;
label = 144;
break;
case 144:
var $I7_0_i;
var $639 = 720 + ($I7_0_i << 2) | 0;
var $_sum2_i = $348 + 28 | 0;
var $640 = $462 + $_sum2_i | 0;
var $641 = $640;
HEAP32[$641 >> 2] = $I7_0_i;
var $_sum3_i139 = $348 + 16 | 0;
var $642 = $462 + $_sum3_i139 | 0;
var $_sum4_i140 = $348 + 20 | 0;
var $643 = $462 + $_sum4_i140 | 0;
var $644 = $643;
HEAP32[$644 >> 2] = 0;
var $645 = $642;
HEAP32[$645 >> 2] = 0;
var $646 = HEAP32[(420 | 0) >> 2];
var $647 = 1 << $I7_0_i;
var $648 = $646 & $647;
var $649 = ($648 | 0) == 0;
if ($649) {
label = 145;
break;
} else {
label = 146;
break;
}
case 145:
var $651 = $646 | $647;
HEAP32[(420 | 0) >> 2] = $651;
HEAP32[$639 >> 2] = $610;
var $652 = $639;
var $_sum5_i = $348 + 24 | 0;
var $653 = $462 + $_sum5_i | 0;
var $654 = $653;
HEAP32[$654 >> 2] = $652;
var $_sum6_i = $348 + 12 | 0;
var $655 = $462 + $_sum6_i | 0;
var $656 = $655;
HEAP32[$656 >> 2] = $610;
var $_sum7_i = $348 + 8 | 0;
var $657 = $462 + $_sum7_i | 0;
var $658 = $657;
HEAP32[$658 >> 2] = $610;
label = 159;
break;
case 146:
var $660 = HEAP32[$639 >> 2];
var $661 = ($I7_0_i | 0) == 31;
if ($661) {
var $666 = 0;
label = 148;
break;
} else {
label = 147;
break;
}
case 147:
var $663 = $I7_0_i >>> 1;
var $664 = 25 - $663 | 0;
var $666 = $664;
label = 148;
break;
case 148:
var $666;
var $667 = $rsize_3_lcssa_i << $666;
var $K12_0_i = $667;
var $T_0_i = $660;
label = 149;
break;
case 149:
var $T_0_i;
var $K12_0_i;
var $669 = $T_0_i + 4 | 0;
var $670 = HEAP32[$669 >> 2];
var $671 = $670 & -8;
var $672 = ($671 | 0) == ($rsize_3_lcssa_i | 0);
if ($672) {
label = 154;
break;
} else {
label = 150;
break;
}
case 150:
var $674 = $K12_0_i >>> 31;
var $675 = $T_0_i + 16 + ($674 << 2) | 0;
var $676 = HEAP32[$675 >> 2];
var $677 = ($676 | 0) == 0;
var $678 = $K12_0_i << 1;
if ($677) {
label = 151;
break;
} else {
var $K12_0_i = $678;
var $T_0_i = $676;
label = 149;
break;
}
case 151:
var $680 = $675;
var $681 = HEAP32[(432 | 0) >> 2];
var $682 = $680 >>> 0 < $681 >>> 0;
if ($682) {
label = 153;
break;
} else {
label = 152;
break;
}
case 152:
HEAP32[$675 >> 2] = $610;
var $_sum12_i = $348 + 24 | 0;
var $684 = $462 + $_sum12_i | 0;
var $685 = $684;
HEAP32[$685 >> 2] = $T_0_i;
var $_sum13_i = $348 + 12 | 0;
var $686 = $462 + $_sum13_i | 0;
var $687 = $686;
HEAP32[$687 >> 2] = $610;
var $_sum14_i = $348 + 8 | 0;
var $688 = $462 + $_sum14_i | 0;
var $689 = $688;
HEAP32[$689 >> 2] = $610;
label = 159;
break;
case 153:
_abort();
throw "Reached an unreachable!";
case 154:
var $692 = $T_0_i + 8 | 0;
var $693 = HEAP32[$692 >> 2];
var $694 = $T_0_i;
var $695 = HEAP32[(432 | 0) >> 2];
var $696 = $694 >>> 0 < $695 >>> 0;
if ($696) {
label = 157;
break;
} else {
label = 155;
break;
}
case 155:
var $698 = $693;
var $699 = $698 >>> 0 < $695 >>> 0;
if ($699) {
label = 157;
break;
} else {
label = 156;
break;
}
case 156:
var $701 = $693 + 12 | 0;
HEAP32[$701 >> 2] = $610;
HEAP32[$692 >> 2] = $610;
var $_sum9_i = $348 + 8 | 0;
var $702 = $462 + $_sum9_i | 0;
var $703 = $702;
HEAP32[$703 >> 2] = $693;
var $_sum10_i = $348 + 12 | 0;
var $704 = $462 + $_sum10_i | 0;
var $705 = $704;
HEAP32[$705 >> 2] = $T_0_i;
var $_sum11_i = $348 + 24 | 0;
var $706 = $462 + $_sum11_i | 0;
var $707 = $706;
HEAP32[$707 >> 2] = 0;
label = 159;
break;
case 157:
_abort();
throw "Reached an unreachable!";
case 158:
_abort();
throw "Reached an unreachable!";
case 159:
var $709 = $v_3_lcssa_i + 8 | 0;
var $710 = $709;
var $711 = ($709 | 0) == 0;
if ($711) {
var $nb_0 = $348;
label = 160;
break;
} else {
var $mem_0 = $710;
label = 333;
break;
}
case 160:
var $nb_0;
var $712 = HEAP32[(424 | 0) >> 2];
var $713 = $nb_0 >>> 0 > $712 >>> 0;
if ($713) {
label = 165;
break;
} else {
label = 161;
break;
}
case 161:
var $715 = $712 - $nb_0 | 0;
var $716 = HEAP32[(436 | 0) >> 2];
var $717 = $715 >>> 0 > 15;
if ($717) {
label = 162;
break;
} else {
label = 163;
break;
}
case 162:
var $719 = $716;
var $720 = $719 + $nb_0 | 0;
var $721 = $720;
HEAP32[(436 | 0) >> 2] = $721;
HEAP32[(424 | 0) >> 2] = $715;
var $722 = $715 | 1;
var $_sum112 = $nb_0 + 4 | 0;
var $723 = $719 + $_sum112 | 0;
var $724 = $723;
HEAP32[$724 >> 2] = $722;
var $725 = $719 + $712 | 0;
var $726 = $725;
HEAP32[$726 >> 2] = $715;
var $727 = $nb_0 | 3;
var $728 = $716 + 4 | 0;
HEAP32[$728 >> 2] = $727;
label = 164;
break;
case 163:
HEAP32[(424 | 0) >> 2] = 0;
HEAP32[(436 | 0) >> 2] = 0;
var $730 = $712 | 3;
var $731 = $716 + 4 | 0;
HEAP32[$731 >> 2] = $730;
var $732 = $716;
var $_sum111 = $712 + 4 | 0;
var $733 = $732 + $_sum111 | 0;
var $734 = $733;
var $735 = HEAP32[$734 >> 2];
var $736 = $735 | 1;
HEAP32[$734 >> 2] = $736;
label = 164;
break;
case 164:
var $738 = $716 + 8 | 0;
var $739 = $738;
var $mem_0 = $739;
label = 333;
break;
case 165:
var $741 = HEAP32[(428 | 0) >> 2];
var $742 = $nb_0 >>> 0 < $741 >>> 0;
if ($742) {
label = 166;
break;
} else {
label = 167;
break;
}
case 166:
var $744 = $741 - $nb_0 | 0;
HEAP32[(428 | 0) >> 2] = $744;
var $745 = HEAP32[(440 | 0) >> 2];
var $746 = $745;
var $747 = $746 + $nb_0 | 0;
var $748 = $747;
HEAP32[(440 | 0) >> 2] = $748;
var $749 = $744 | 1;
var $_sum = $nb_0 + 4 | 0;
var $750 = $746 + $_sum | 0;
var $751 = $750;
HEAP32[$751 >> 2] = $749;
var $752 = $nb_0 | 3;
var $753 = $745 + 4 | 0;
HEAP32[$753 >> 2] = $752;
var $754 = $745 + 8 | 0;
var $755 = $754;
var $mem_0 = $755;
label = 333;
break;
case 167:
var $757 = HEAP32[(8 | 0) >> 2];
var $758 = ($757 | 0) == 0;
if ($758) {
label = 168;
break;
} else {
label = 169;
break;
}
case 168:
_init_mparams();
label = 169;
break;
case 169:
var $761 = $nb_0 + 48 | 0;
var $762 = HEAP32[(16 | 0) >> 2];
var $763 = $nb_0 + 47 | 0;
var $764 = $762 + $763 | 0;
var $765 = -$762 | 0;
var $766 = $764 & $765;
var $767 = $766 >>> 0 > $nb_0 >>> 0;
if ($767) {
label = 170;
break;
} else {
var $mem_0 = 0;
label = 333;
break;
}
case 170:
var $769 = HEAP32[(856 | 0) >> 2];
var $770 = ($769 | 0) == 0;
if ($770) {
label = 172;
break;
} else {
label = 171;
break;
}
case 171:
var $772 = HEAP32[(848 | 0) >> 2];
var $773 = $772 + $766 | 0;
var $774 = $773 >>> 0 <= $772 >>> 0;
var $775 = $773 >>> 0 > $769 >>> 0;
var $or_cond1_i = $774 | $775;
if ($or_cond1_i) {
var $mem_0 = 0;
label = 333;
break;
} else {
label = 172;
break;
}
case 172:
var $777 = HEAP32[(860 | 0) >> 2];
var $778 = $777 & 4;
var $779 = ($778 | 0) == 0;
if ($779) {
label = 173;
break;
} else {
var $tsize_1_i = 0;
label = 196;
break;
}
case 173:
var $781 = HEAP32[(440 | 0) >> 2];
var $782 = ($781 | 0) == 0;
if ($782) {
label = 179;
break;
} else {
label = 174;
break;
}
case 174:
var $784 = $781;
var $sp_0_i_i = 864 | 0;
label = 175;
break;
case 175:
var $sp_0_i_i;
var $786 = $sp_0_i_i | 0;
var $787 = HEAP32[$786 >> 2];
var $788 = $787 >>> 0 > $784 >>> 0;
if ($788) {
label = 177;
break;
} else {
label = 176;
break;
}
case 176:
var $790 = $sp_0_i_i + 4 | 0;
var $791 = HEAP32[$790 >> 2];
var $792 = $787 + $791 | 0;
var $793 = $792 >>> 0 > $784 >>> 0;
if ($793) {
label = 178;
break;
} else {
label = 177;
break;
}
case 177:
var $795 = $sp_0_i_i + 8 | 0;
var $796 = HEAP32[$795 >> 2];
var $797 = ($796 | 0) == 0;
if ($797) {
label = 179;
break;
} else {
var $sp_0_i_i = $796;
label = 175;
break;
}
case 178:
var $798 = ($sp_0_i_i | 0) == 0;
if ($798) {
label = 179;
break;
} else {
label = 186;
break;
}
case 179:
var $799 = _sbrk(0);
var $800 = ($799 | 0) == -1;
if ($800) {
var $tsize_0253134_i = 0;
label = 195;
break;
} else {
label = 180;
break;
}
case 180:
var $802 = $799;
var $803 = HEAP32[(12 | 0) >> 2];
var $804 = $803 - 1 | 0;
var $805 = $804 & $802;
var $806 = ($805 | 0) == 0;
if ($806) {
var $ssize_0_i = $766;
label = 182;
break;
} else {
label = 181;
break;
}
case 181:
var $808 = $804 + $802 | 0;
var $809 = -$803 | 0;
var $810 = $808 & $809;
var $811 = $766 - $802 | 0;
var $812 = $811 + $810 | 0;
var $ssize_0_i = $812;
label = 182;
break;
case 182:
var $ssize_0_i;
var $814 = HEAP32[(848 | 0) >> 2];
var $815 = $814 + $ssize_0_i | 0;
var $816 = $ssize_0_i >>> 0 > $nb_0 >>> 0;
var $817 = $ssize_0_i >>> 0 < 2147483647;
var $or_cond_i141 = $816 & $817;
if ($or_cond_i141) {
label = 183;
break;
} else {
var $tsize_0253134_i = 0;
label = 195;
break;
}
case 183:
var $819 = HEAP32[(856 | 0) >> 2];
var $820 = ($819 | 0) == 0;
if ($820) {
label = 185;
break;
} else {
label = 184;
break;
}
case 184:
var $822 = $815 >>> 0 <= $814 >>> 0;
var $823 = $815 >>> 0 > $819 >>> 0;
var $or_cond2_i = $822 | $823;
if ($or_cond2_i) {
var $tsize_0253134_i = 0;
label = 195;
break;
} else {
label = 185;
break;
}
case 185:
var $825 = _sbrk($ssize_0_i);
var $826 = ($825 | 0) == ($799 | 0);
var $ssize_0__i = $826 ? $ssize_0_i : 0;
var $__i = $826 ? $799 : -1;
var $tbase_0_i = $__i;
var $tsize_0_i = $ssize_0__i;
var $br_0_i = $825;
var $ssize_1_i = $ssize_0_i;
label = 188;
break;
case 186:
var $828 = HEAP32[(428 | 0) >> 2];
var $829 = $764 - $828 | 0;
var $830 = $829 & $765;
var $831 = $830 >>> 0 < 2147483647;
if ($831) {
label = 187;
break;
} else {
var $tsize_0253134_i = 0;
label = 195;
break;
}
case 187:
var $833 = _sbrk($830);
var $834 = HEAP32[$786 >> 2];
var $835 = HEAP32[$790 >> 2];
var $836 = $834 + $835 | 0;
var $837 = ($833 | 0) == ($836 | 0);
var $_3_i = $837 ? $830 : 0;
var $_4_i = $837 ? $833 : -1;
var $tbase_0_i = $_4_i;
var $tsize_0_i = $_3_i;
var $br_0_i = $833;
var $ssize_1_i = $830;
label = 188;
break;
case 188:
var $ssize_1_i;
var $br_0_i;
var $tsize_0_i;
var $tbase_0_i;
var $839 = -$ssize_1_i | 0;
var $840 = ($tbase_0_i | 0) == -1;
if ($840) {
label = 189;
break;
} else {
var $tsize_239_i = $tsize_0_i;
var $tbase_240_i = $tbase_0_i;
label = 199;
break;
}
case 189:
var $842 = ($br_0_i | 0) != -1;
var $843 = $ssize_1_i >>> 0 < 2147483647;
var $or_cond5_i = $842 & $843;
var $844 = $ssize_1_i >>> 0 < $761 >>> 0;
var $or_cond6_i = $or_cond5_i & $844;
if ($or_cond6_i) {
label = 190;
break;
} else {
var $ssize_2_i = $ssize_1_i;
label = 194;
break;
}
case 190:
var $846 = HEAP32[(16 | 0) >> 2];
var $847 = $763 - $ssize_1_i | 0;
var $848 = $847 + $846 | 0;
var $849 = -$846 | 0;
var $850 = $848 & $849;
var $851 = $850 >>> 0 < 2147483647;
if ($851) {
label = 191;
break;
} else {
var $ssize_2_i = $ssize_1_i;
label = 194;
break;
}
case 191:
var $853 = _sbrk($850);
var $854 = ($853 | 0) == -1;
if ($854) {
label = 193;
break;
} else {
label = 192;
break;
}
case 192:
var $856 = $850 + $ssize_1_i | 0;
var $ssize_2_i = $856;
label = 194;
break;
case 193:
var $858 = _sbrk($839);
var $tsize_0253134_i = $tsize_0_i;
label = 195;
break;
case 194:
var $ssize_2_i;
var $860 = ($br_0_i | 0) == -1;
if ($860) {
var $tsize_0253134_i = $tsize_0_i;
label = 195;
break;
} else {
var $tsize_239_i = $ssize_2_i;
var $tbase_240_i = $br_0_i;
label = 199;
break;
}
case 195:
var $tsize_0253134_i;
var $861 = HEAP32[(860 | 0) >> 2];
var $862 = $861 | 4;
HEAP32[(860 | 0) >> 2] = $862;
var $tsize_1_i = $tsize_0253134_i;
label = 196;
break;
case 196:
var $tsize_1_i;
var $864 = $766 >>> 0 < 2147483647;
if ($864) {
label = 197;
break;
} else {
label = 332;
break;
}
case 197:
var $866 = _sbrk($766);
var $867 = _sbrk(0);
var $notlhs_i = ($866 | 0) != -1;
var $notrhs_i = ($867 | 0) != -1;
var $or_cond8_not_i = $notrhs_i & $notlhs_i;
var $868 = $866 >>> 0 < $867 >>> 0;
var $or_cond9_i = $or_cond8_not_i & $868;
if ($or_cond9_i) {
label = 198;
break;
} else {
label = 332;
break;
}
case 198:
var $869 = $867;
var $870 = $866;
var $871 = $869 - $870 | 0;
var $872 = $nb_0 + 40 | 0;
var $873 = $871 >>> 0 > $872 >>> 0;
var $_tsize_1_i = $873 ? $871 : $tsize_1_i;
var $_tbase_1_i = $873 ? $866 : -1;
var $874 = ($_tbase_1_i | 0) == -1;
if ($874) {
label = 332;
break;
} else {
var $tsize_239_i = $_tsize_1_i;
var $tbase_240_i = $_tbase_1_i;
label = 199;
break;
}
case 199:
var $tbase_240_i;
var $tsize_239_i;
var $875 = HEAP32[(848 | 0) >> 2];
var $876 = $875 + $tsize_239_i | 0;
HEAP32[(848 | 0) >> 2] = $876;
var $877 = HEAP32[(852 | 0) >> 2];
var $878 = $876 >>> 0 > $877 >>> 0;
if ($878) {
label = 200;
break;
} else {
label = 201;
break;
}
case 200:
HEAP32[(852 | 0) >> 2] = $876;
label = 201;
break;
case 201:
var $880 = HEAP32[(440 | 0) >> 2];
var $881 = ($880 | 0) == 0;
if ($881) {
label = 202;
break;
} else {
var $sp_060_i = 864 | 0;
label = 207;
break;
}
case 202:
var $883 = HEAP32[(432 | 0) >> 2];
var $884 = ($883 | 0) == 0;
var $885 = $tbase_240_i >>> 0 < $883 >>> 0;
var $or_cond10_i = $884 | $885;
if ($or_cond10_i) {
label = 203;
break;
} else {
label = 204;
break;
}
case 203:
HEAP32[(432 | 0) >> 2] = $tbase_240_i;
label = 204;
break;
case 204:
HEAP32[(864 | 0) >> 2] = $tbase_240_i;
HEAP32[(868 | 0) >> 2] = $tsize_239_i;
HEAP32[(876 | 0) >> 2] = 0;
var $887 = HEAP32[(8 | 0) >> 2];
HEAP32[(452 | 0) >> 2] = $887;
HEAP32[(448 | 0) >> 2] = -1;
var $i_02_i_i = 0;
label = 205;
break;
case 205:
var $i_02_i_i;
var $889 = $i_02_i_i << 1;
var $890 = 456 + ($889 << 2) | 0;
var $891 = $890;
var $_sum_i14_i = $889 + 3 | 0;
var $892 = 456 + ($_sum_i14_i << 2) | 0;
HEAP32[$892 >> 2] = $891;
var $_sum1_i15_i = $889 + 2 | 0;
var $893 = 456 + ($_sum1_i15_i << 2) | 0;
HEAP32[$893 >> 2] = $891;
var $894 = $i_02_i_i + 1 | 0;
var $895 = $894 >>> 0 < 32;
if ($895) {
var $i_02_i_i = $894;
label = 205;
break;
} else {
label = 206;
break;
}
case 206:
var $896 = $tbase_240_i;
var $897 = $tsize_239_i - 40 | 0;
_init_top($896, $897);
label = 330;
break;
case 207:
var $sp_060_i;
var $898 = $sp_060_i | 0;
var $899 = HEAP32[$898 >> 2];
var $900 = $sp_060_i + 4 | 0;
var $901 = HEAP32[$900 >> 2];
var $902 = $899 + $901 | 0;
var $903 = ($tbase_240_i | 0) == ($902 | 0);
if ($903) {
label = 209;
break;
} else {
label = 208;
break;
}
case 208:
var $905 = $sp_060_i + 8 | 0;
var $906 = HEAP32[$905 >> 2];
var $907 = ($906 | 0) == 0;
if ($907) {
label = 212;
break;
} else {
var $sp_060_i = $906;
label = 207;
break;
}
case 209:
var $908 = $sp_060_i + 12 | 0;
var $909 = HEAP32[$908 >> 2];
var $910 = $909 & 8;
var $911 = ($910 | 0) == 0;
if ($911) {
label = 210;
break;
} else {
label = 212;
break;
}
case 210:
var $913 = $880;
var $914 = $913 >>> 0 >= $899 >>> 0;
var $915 = $913 >>> 0 < $tbase_240_i >>> 0;
var $or_cond42_i = $914 & $915;
if ($or_cond42_i) {
label = 211;
break;
} else {
label = 212;
break;
}
case 211:
var $917 = $901 + $tsize_239_i | 0;
HEAP32[$900 >> 2] = $917;
var $918 = HEAP32[(428 | 0) >> 2];
var $919 = $918 + $tsize_239_i | 0;
_init_top($880, $919);
label = 330;
break;
case 212:
var $920 = HEAP32[(432 | 0) >> 2];
var $921 = $tbase_240_i >>> 0 < $920 >>> 0;
if ($921) {
label = 213;
break;
} else {
label = 214;
break;
}
case 213:
HEAP32[(432 | 0) >> 2] = $tbase_240_i;
label = 214;
break;
case 214:
var $923 = $tbase_240_i + $tsize_239_i | 0;
var $sp_153_i = 864 | 0;
label = 215;
break;
case 215:
var $sp_153_i;
var $925 = $sp_153_i | 0;
var $926 = HEAP32[$925 >> 2];
var $927 = ($926 | 0) == ($923 | 0);
if ($927) {
label = 217;
break;
} else {
label = 216;
break;
}
case 216:
var $929 = $sp_153_i + 8 | 0;
var $930 = HEAP32[$929 >> 2];
var $931 = ($930 | 0) == 0;
if ($931) {
label = 298;
break;
} else {
var $sp_153_i = $930;
label = 215;
break;
}
case 217:
var $932 = $sp_153_i + 12 | 0;
var $933 = HEAP32[$932 >> 2];
var $934 = $933 & 8;
var $935 = ($934 | 0) == 0;
if ($935) {
label = 218;
break;
} else {
label = 298;
break;
}
case 218:
HEAP32[$925 >> 2] = $tbase_240_i;
var $937 = $sp_153_i + 4 | 0;
var $938 = HEAP32[$937 >> 2];
var $939 = $938 + $tsize_239_i | 0;
HEAP32[$937 >> 2] = $939;
var $940 = $tbase_240_i + 8 | 0;
var $941 = $940;
var $942 = $941 & 7;
var $943 = ($942 | 0) == 0;
if ($943) {
var $948 = 0;
label = 220;
break;
} else {
label = 219;
break;
}
case 219:
var $945 = -$941 | 0;
var $946 = $945 & 7;
var $948 = $946;
label = 220;
break;
case 220:
var $948;
var $949 = $tbase_240_i + $948 | 0;
var $_sum86_i = $tsize_239_i + 8 | 0;
var $950 = $tbase_240_i + $_sum86_i | 0;
var $951 = $950;
var $952 = $951 & 7;
var $953 = ($952 | 0) == 0;
if ($953) {
var $958 = 0;
label = 222;
break;
} else {
label = 221;
break;
}
case 221:
var $955 = -$951 | 0;
var $956 = $955 & 7;
var $958 = $956;
label = 222;
break;
case 222:
var $958;
var $_sum87_i = $958 + $tsize_239_i | 0;
var $959 = $tbase_240_i + $_sum87_i | 0;
var $960 = $959;
var $961 = $959;
var $962 = $949;
var $963 = $961 - $962 | 0;
var $_sum_i16_i = $948 + $nb_0 | 0;
var $964 = $tbase_240_i + $_sum_i16_i | 0;
var $965 = $964;
var $966 = $963 - $nb_0 | 0;
var $967 = $nb_0 | 3;
var $_sum1_i17_i = $948 + 4 | 0;
var $968 = $tbase_240_i + $_sum1_i17_i | 0;
var $969 = $968;
HEAP32[$969 >> 2] = $967;
var $970 = HEAP32[(440 | 0) >> 2];
var $971 = ($960 | 0) == ($970 | 0);
if ($971) {
label = 223;
break;
} else {
label = 224;
break;
}
case 223:
var $973 = HEAP32[(428 | 0) >> 2];
var $974 = $973 + $966 | 0;
HEAP32[(428 | 0) >> 2] = $974;
HEAP32[(440 | 0) >> 2] = $965;
var $975 = $974 | 1;
var $_sum46_i_i = $_sum_i16_i + 4 | 0;
var $976 = $tbase_240_i + $_sum46_i_i | 0;
var $977 = $976;
HEAP32[$977 >> 2] = $975;
label = 297;
break;
case 224:
var $979 = HEAP32[(436 | 0) >> 2];
var $980 = ($960 | 0) == ($979 | 0);
if ($980) {
label = 225;
break;
} else {
label = 226;
break;
}
case 225:
var $982 = HEAP32[(424 | 0) >> 2];
var $983 = $982 + $966 | 0;
HEAP32[(424 | 0) >> 2] = $983;
HEAP32[(436 | 0) >> 2] = $965;
var $984 = $983 | 1;
var $_sum44_i_i = $_sum_i16_i + 4 | 0;
var $985 = $tbase_240_i + $_sum44_i_i | 0;
var $986 = $985;
HEAP32[$986 >> 2] = $984;
var $_sum45_i_i = $983 + $_sum_i16_i | 0;
var $987 = $tbase_240_i + $_sum45_i_i | 0;
var $988 = $987;
HEAP32[$988 >> 2] = $983;
label = 297;
break;
case 226:
var $_sum2_i18_i = $tsize_239_i + 4 | 0;
var $_sum88_i = $958 + $_sum2_i18_i | 0;
var $990 = $tbase_240_i + $_sum88_i | 0;
var $991 = $990;
var $992 = HEAP32[$991 >> 2];
var $993 = $992 & 3;
var $994 = ($993 | 0) == 1;
if ($994) {
label = 227;
break;
} else {
var $oldfirst_0_i_i = $960;
var $qsize_0_i_i = $966;
label = 274;
break;
}
case 227:
var $996 = $992 & -8;
var $997 = $992 >>> 3;
var $998 = $992 >>> 0 < 256;
if ($998) {
label = 228;
break;
} else {
label = 240;
break;
}
case 228:
var $_sum3940_i_i = $958 | 8;
var $_sum98_i = $_sum3940_i_i + $tsize_239_i | 0;
var $1000 = $tbase_240_i + $_sum98_i | 0;
var $1001 = $1000;
var $1002 = HEAP32[$1001 >> 2];
var $_sum41_i_i = $tsize_239_i + 12 | 0;
var $_sum99_i = $_sum41_i_i + $958 | 0;
var $1003 = $tbase_240_i + $_sum99_i | 0;
var $1004 = $1003;
var $1005 = HEAP32[$1004 >> 2];
var $1006 = $997 << 1;
var $1007 = 456 + ($1006 << 2) | 0;
var $1008 = $1007;
var $1009 = ($1002 | 0) == ($1008 | 0);
if ($1009) {
label = 231;
break;
} else {
label = 229;
break;
}
case 229:
var $1011 = $1002;
var $1012 = HEAP32[(432 | 0) >> 2];
var $1013 = $1011 >>> 0 < $1012 >>> 0;
if ($1013) {
label = 239;
break;
} else {
label = 230;
break;
}
case 230:
var $1015 = $1002 + 12 | 0;
var $1016 = HEAP32[$1015 >> 2];
var $1017 = ($1016 | 0) == ($960 | 0);
if ($1017) {
label = 231;
break;
} else {
label = 239;
break;
}
case 231:
var $1018 = ($1005 | 0) == ($1002 | 0);
if ($1018) {
label = 232;
break;
} else {
label = 233;
break;
}
case 232:
var $1020 = 1 << $997;
var $1021 = $1020 ^ -1;
var $1022 = HEAP32[(416 | 0) >> 2];
var $1023 = $1022 & $1021;
HEAP32[(416 | 0) >> 2] = $1023;
label = 273;
break;
case 233:
var $1025 = ($1005 | 0) == ($1008 | 0);
if ($1025) {
label = 234;
break;
} else {
label = 235;
break;
}
case 234:
var $_pre56_i_i = $1005 + 8 | 0;
var $_pre_phi57_i_i = $_pre56_i_i;
label = 237;
break;
case 235:
var $1027 = $1005;
var $1028 = HEAP32[(432 | 0) >> 2];
var $1029 = $1027 >>> 0 < $1028 >>> 0;
if ($1029) {
label = 238;
break;
} else {
label = 236;
break;
}
case 236:
var $1031 = $1005 + 8 | 0;
var $1032 = HEAP32[$1031 >> 2];
var $1033 = ($1032 | 0) == ($960 | 0);
if ($1033) {
var $_pre_phi57_i_i = $1031;
label = 237;
break;
} else {
label = 238;
break;
}
case 237:
var $_pre_phi57_i_i;
var $1034 = $1002 + 12 | 0;
HEAP32[$1034 >> 2] = $1005;
HEAP32[$_pre_phi57_i_i >> 2] = $1002;
label = 273;
break;
case 238:
_abort();
throw "Reached an unreachable!";
case 239:
_abort();
throw "Reached an unreachable!";
case 240:
var $1036 = $959;
var $_sum34_i_i = $958 | 24;
var $_sum89_i = $_sum34_i_i + $tsize_239_i | 0;
var $1037 = $tbase_240_i + $_sum89_i | 0;
var $1038 = $1037;
var $1039 = HEAP32[$1038 >> 2];
var $_sum5_i_i = $tsize_239_i + 12 | 0;
var $_sum90_i = $_sum5_i_i + $958 | 0;
var $1040 = $tbase_240_i + $_sum90_i | 0;
var $1041 = $1040;
var $1042 = HEAP32[$1041 >> 2];
var $1043 = ($1042 | 0) == ($1036 | 0);
if ($1043) {
label = 246;
break;
} else {
label = 241;
break;
}
case 241:
var $_sum3637_i_i = $958 | 8;
var $_sum91_i = $_sum3637_i_i + $tsize_239_i | 0;
var $1045 = $tbase_240_i + $_sum91_i | 0;
var $1046 = $1045;
var $1047 = HEAP32[$1046 >> 2];
var $1048 = $1047;
var $1049 = HEAP32[(432 | 0) >> 2];
var $1050 = $1048 >>> 0 < $1049 >>> 0;
if ($1050) {
label = 245;
break;
} else {
label = 242;
break;
}
case 242:
var $1052 = $1047 + 12 | 0;
var $1053 = HEAP32[$1052 >> 2];
var $1054 = ($1053 | 0) == ($1036 | 0);
if ($1054) {
label = 243;
break;
} else {
label = 245;
break;
}
case 243:
var $1056 = $1042 + 8 | 0;
var $1057 = HEAP32[$1056 >> 2];
var $1058 = ($1057 | 0) == ($1036 | 0);
if ($1058) {
label = 244;
break;
} else {
label = 245;
break;
}
case 244:
HEAP32[$1052 >> 2] = $1042;
HEAP32[$1056 >> 2] = $1047;
var $R_1_i_i = $1042;
label = 253;
break;
case 245:
_abort();
throw "Reached an unreachable!";
case 246:
var $_sum67_i_i = $958 | 16;
var $_sum96_i = $_sum67_i_i + $_sum2_i18_i | 0;
var $1061 = $tbase_240_i + $_sum96_i | 0;
var $1062 = $1061;
var $1063 = HEAP32[$1062 >> 2];
var $1064 = ($1063 | 0) == 0;
if ($1064) {
label = 247;
break;
} else {
var $R_0_i_i = $1063;
var $RP_0_i_i = $1062;
label = 248;
break;
}
case 247:
var $_sum97_i = $_sum67_i_i + $tsize_239_i | 0;
var $1066 = $tbase_240_i + $_sum97_i | 0;
var $1067 = $1066;
var $1068 = HEAP32[$1067 >> 2];
var $1069 = ($1068 | 0) == 0;
if ($1069) {
var $R_1_i_i = 0;
label = 253;
break;
} else {
var $R_0_i_i = $1068;
var $RP_0_i_i = $1067;
label = 248;
break;
}
case 248:
var $RP_0_i_i;
var $R_0_i_i;
var $1070 = $R_0_i_i + 20 | 0;
var $1071 = HEAP32[$1070 >> 2];
var $1072 = ($1071 | 0) == 0;
if ($1072) {
label = 249;
break;
} else {
var $R_0_i_i = $1071;
var $RP_0_i_i = $1070;
label = 248;
break;
}
case 249:
var $1074 = $R_0_i_i + 16 | 0;
var $1075 = HEAP32[$1074 >> 2];
var $1076 = ($1075 | 0) == 0;
if ($1076) {
label = 250;
break;
} else {
var $R_0_i_i = $1075;
var $RP_0_i_i = $1074;
label = 248;
break;
}
case 250:
var $1078 = $RP_0_i_i;
var $1079 = HEAP32[(432 | 0) >> 2];
var $1080 = $1078 >>> 0 < $1079 >>> 0;
if ($1080) {
label = 252;
break;
} else {
label = 251;
break;
}
case 251:
HEAP32[$RP_0_i_i >> 2] = 0;
var $R_1_i_i = $R_0_i_i;
label = 253;
break;
case 252:
_abort();
throw "Reached an unreachable!";
case 253:
var $R_1_i_i;
var $1084 = ($1039 | 0) == 0;
if ($1084) {
label = 273;
break;
} else {
label = 254;
break;
}
case 254:
var $_sum31_i_i = $tsize_239_i + 28 | 0;
var $_sum92_i = $_sum31_i_i + $958 | 0;
var $1086 = $tbase_240_i + $_sum92_i | 0;
var $1087 = $1086;
var $1088 = HEAP32[$1087 >> 2];
var $1089 = 720 + ($1088 << 2) | 0;
var $1090 = HEAP32[$1089 >> 2];
var $1091 = ($1036 | 0) == ($1090 | 0);
if ($1091) {
label = 255;
break;
} else {
label = 257;
break;
}
case 255:
HEAP32[$1089 >> 2] = $R_1_i_i;
var $cond_i_i = ($R_1_i_i | 0) == 0;
if ($cond_i_i) {
label = 256;
break;
} else {
label = 263;
break;
}
case 256:
var $1093 = 1 << $1088;
var $1094 = $1093 ^ -1;
var $1095 = HEAP32[(420 | 0) >> 2];
var $1096 = $1095 & $1094;
HEAP32[(420 | 0) >> 2] = $1096;
label = 273;
break;
case 257:
var $1098 = $1039;
var $1099 = HEAP32[(432 | 0) >> 2];
var $1100 = $1098 >>> 0 < $1099 >>> 0;
if ($1100) {
label = 261;
break;
} else {
label = 258;
break;
}
case 258:
var $1102 = $1039 + 16 | 0;
var $1103 = HEAP32[$1102 >> 2];
var $1104 = ($1103 | 0) == ($1036 | 0);
if ($1104) {
label = 259;
break;
} else {
label = 260;
break;
}
case 259:
HEAP32[$1102 >> 2] = $R_1_i_i;
label = 262;
break;
case 260:
var $1107 = $1039 + 20 | 0;
HEAP32[$1107 >> 2] = $R_1_i_i;
label = 262;
break;
case 261:
_abort();
throw "Reached an unreachable!";
case 262:
var $1110 = ($R_1_i_i | 0) == 0;
if ($1110) {
label = 273;
break;
} else {
label = 263;
break;
}
case 263:
var $1112 = $R_1_i_i;
var $1113 = HEAP32[(432 | 0) >> 2];
var $1114 = $1112 >>> 0 < $1113 >>> 0;
if ($1114) {
label = 272;
break;
} else {
label = 264;
break;
}
case 264:
var $1116 = $R_1_i_i + 24 | 0;
HEAP32[$1116 >> 2] = $1039;
var $_sum3233_i_i = $958 | 16;
var $_sum93_i = $_sum3233_i_i + $tsize_239_i | 0;
var $1117 = $tbase_240_i + $_sum93_i | 0;
var $1118 = $1117;
var $1119 = HEAP32[$1118 >> 2];
var $1120 = ($1119 | 0) == 0;
if ($1120) {
label = 268;
break;
} else {
label = 265;
break;
}
case 265:
var $1122 = $1119;
var $1123 = HEAP32[(432 | 0) >> 2];
var $1124 = $1122 >>> 0 < $1123 >>> 0;
if ($1124) {
label = 267;
break;
} else {
label = 266;
break;
}
case 266:
var $1126 = $R_1_i_i + 16 | 0;
HEAP32[$1126 >> 2] = $1119;
var $1127 = $1119 + 24 | 0;
HEAP32[$1127 >> 2] = $R_1_i_i;
label = 268;
break;
case 267:
_abort();
throw "Reached an unreachable!";
case 268:
var $_sum94_i = $_sum3233_i_i + $_sum2_i18_i | 0;
var $1130 = $tbase_240_i + $_sum94_i | 0;
var $1131 = $1130;
var $1132 = HEAP32[$1131 >> 2];
var $1133 = ($1132 | 0) == 0;
if ($1133) {
label = 273;
break;
} else {
label = 269;
break;
}
case 269:
var $1135 = $1132;
var $1136 = HEAP32[(432 | 0) >> 2];
var $1137 = $1135 >>> 0 < $1136 >>> 0;
if ($1137) {
label = 271;
break;
} else {
label = 270;
break;
}
case 270:
var $1139 = $R_1_i_i + 20 | 0;
HEAP32[$1139 >> 2] = $1132;
var $1140 = $1132 + 24 | 0;
HEAP32[$1140 >> 2] = $R_1_i_i;
label = 273;
break;
case 271:
_abort();
throw "Reached an unreachable!";
case 272:
_abort();
throw "Reached an unreachable!";
case 273:
var $_sum9_i_i = $996 | $958;
var $_sum95_i = $_sum9_i_i + $tsize_239_i | 0;
var $1144 = $tbase_240_i + $_sum95_i | 0;
var $1145 = $1144;
var $1146 = $996 + $966 | 0;
var $oldfirst_0_i_i = $1145;
var $qsize_0_i_i = $1146;
label = 274;
break;
case 274:
var $qsize_0_i_i;
var $oldfirst_0_i_i;
var $1148 = $oldfirst_0_i_i + 4 | 0;
var $1149 = HEAP32[$1148 >> 2];
var $1150 = $1149 & -2;
HEAP32[$1148 >> 2] = $1150;
var $1151 = $qsize_0_i_i | 1;
var $_sum10_i_i = $_sum_i16_i + 4 | 0;
var $1152 = $tbase_240_i + $_sum10_i_i | 0;
var $1153 = $1152;
HEAP32[$1153 >> 2] = $1151;
var $_sum11_i_i = $qsize_0_i_i + $_sum_i16_i | 0;
var $1154 = $tbase_240_i + $_sum11_i_i | 0;
var $1155 = $1154;
HEAP32[$1155 >> 2] = $qsize_0_i_i;
var $1156 = $qsize_0_i_i >>> 3;
var $1157 = $qsize_0_i_i >>> 0 < 256;
if ($1157) {
label = 275;
break;
} else {
label = 280;
break;
}
case 275:
var $1159 = $1156 << 1;
var $1160 = 456 + ($1159 << 2) | 0;
var $1161 = $1160;
var $1162 = HEAP32[(416 | 0) >> 2];
var $1163 = 1 << $1156;
var $1164 = $1162 & $1163;
var $1165 = ($1164 | 0) == 0;
if ($1165) {
label = 276;
break;
} else {
label = 277;
break;
}
case 276:
var $1167 = $1162 | $1163;
HEAP32[(416 | 0) >> 2] = $1167;
var $_sum27_pre_i_i = $1159 + 2 | 0;
var $_pre_i19_i = 456 + ($_sum27_pre_i_i << 2) | 0;
var $F4_0_i_i = $1161;
var $_pre_phi_i20_i = $_pre_i19_i;
label = 279;
break;
case 277:
var $_sum30_i_i = $1159 + 2 | 0;
var $1169 = 456 + ($_sum30_i_i << 2) | 0;
var $1170 = HEAP32[$1169 >> 2];
var $1171 = $1170;
var $1172 = HEAP32[(432 | 0) >> 2];
var $1173 = $1171 >>> 0 < $1172 >>> 0;
if ($1173) {
label = 278;
break;
} else {
var $F4_0_i_i = $1170;
var $_pre_phi_i20_i = $1169;
label = 279;
break;
}
case 278:
_abort();
throw "Reached an unreachable!";
case 279:
var $_pre_phi_i20_i;
var $F4_0_i_i;
HEAP32[$_pre_phi_i20_i >> 2] = $965;
var $1176 = $F4_0_i_i + 12 | 0;
HEAP32[$1176 >> 2] = $965;
var $_sum28_i_i = $_sum_i16_i + 8 | 0;
var $1177 = $tbase_240_i + $_sum28_i_i | 0;
var $1178 = $1177;
HEAP32[$1178 >> 2] = $F4_0_i_i;
var $_sum29_i_i = $_sum_i16_i + 12 | 0;
var $1179 = $tbase_240_i + $_sum29_i_i | 0;
var $1180 = $1179;
HEAP32[$1180 >> 2] = $1161;
label = 297;
break;
case 280:
var $1182 = $964;
var $1183 = $qsize_0_i_i >>> 8;
var $1184 = ($1183 | 0) == 0;
if ($1184) {
var $I7_0_i_i = 0;
label = 283;
break;
} else {
label = 281;
break;
}
case 281:
var $1186 = $qsize_0_i_i >>> 0 > 16777215;
if ($1186) {
var $I7_0_i_i = 31;
label = 283;
break;
} else {
label = 282;
break;
}
case 282:
var $1188 = $1183 + 1048320 | 0;
var $1189 = $1188 >>> 16;
var $1190 = $1189 & 8;
var $1191 = $1183 << $1190;
var $1192 = $1191 + 520192 | 0;
var $1193 = $1192 >>> 16;
var $1194 = $1193 & 4;
var $1195 = $1194 | $1190;
var $1196 = $1191 << $1194;
var $1197 = $1196 + 245760 | 0;
var $1198 = $1197 >>> 16;
var $1199 = $1198 & 2;
var $1200 = $1195 | $1199;
var $1201 = 14 - $1200 | 0;
var $1202 = $1196 << $1199;
var $1203 = $1202 >>> 15;
var $1204 = $1201 + $1203 | 0;
var $1205 = $1204 << 1;
var $1206 = $1204 + 7 | 0;
var $1207 = $qsize_0_i_i >>> ($1206 >>> 0);
var $1208 = $1207 & 1;
var $1209 = $1208 | $1205;
var $I7_0_i_i = $1209;
label = 283;
break;
case 283:
var $I7_0_i_i;
var $1211 = 720 + ($I7_0_i_i << 2) | 0;
var $_sum12_i21_i = $_sum_i16_i + 28 | 0;
var $1212 = $tbase_240_i + $_sum12_i21_i | 0;
var $1213 = $1212;
HEAP32[$1213 >> 2] = $I7_0_i_i;
var $_sum13_i_i = $_sum_i16_i + 16 | 0;
var $1214 = $tbase_240_i + $_sum13_i_i | 0;
var $_sum14_i_i = $_sum_i16_i + 20 | 0;
var $1215 = $tbase_240_i + $_sum14_i_i | 0;
var $1216 = $1215;
HEAP32[$1216 >> 2] = 0;
var $1217 = $1214;
HEAP32[$1217 >> 2] = 0;
var $1218 = HEAP32[(420 | 0) >> 2];
var $1219 = 1 << $I7_0_i_i;
var $1220 = $1218 & $1219;
var $1221 = ($1220 | 0) == 0;
if ($1221) {
label = 284;
break;
} else {
label = 285;
break;
}
case 284:
var $1223 = $1218 | $1219;
HEAP32[(420 | 0) >> 2] = $1223;
HEAP32[$1211 >> 2] = $1182;
var $1224 = $1211;
var $_sum15_i_i = $_sum_i16_i + 24 | 0;
var $1225 = $tbase_240_i + $_sum15_i_i | 0;
var $1226 = $1225;
HEAP32[$1226 >> 2] = $1224;
var $_sum16_i_i = $_sum_i16_i + 12 | 0;
var $1227 = $tbase_240_i + $_sum16_i_i | 0;
var $1228 = $1227;
HEAP32[$1228 >> 2] = $1182;
var $_sum17_i_i = $_sum_i16_i + 8 | 0;
var $1229 = $tbase_240_i + $_sum17_i_i | 0;
var $1230 = $1229;
HEAP32[$1230 >> 2] = $1182;
label = 297;
break;
case 285:
var $1232 = HEAP32[$1211 >> 2];
var $1233 = ($I7_0_i_i | 0) == 31;
if ($1233) {
var $1238 = 0;
label = 287;
break;
} else {
label = 286;
break;
}
case 286:
var $1235 = $I7_0_i_i >>> 1;
var $1236 = 25 - $1235 | 0;
var $1238 = $1236;
label = 287;
break;
case 287:
var $1238;
var $1239 = $qsize_0_i_i << $1238;
var $K8_0_i_i = $1239;
var $T_0_i22_i = $1232;
label = 288;
break;
case 288:
var $T_0_i22_i;
var $K8_0_i_i;
var $1241 = $T_0_i22_i + 4 | 0;
var $1242 = HEAP32[$1241 >> 2];
var $1243 = $1242 & -8;
var $1244 = ($1243 | 0) == ($qsize_0_i_i | 0);
if ($1244) {
label = 293;
break;
} else {
label = 289;
break;
}
case 289:
var $1246 = $K8_0_i_i >>> 31;
var $1247 = $T_0_i22_i + 16 + ($1246 << 2) | 0;
var $1248 = HEAP32[$1247 >> 2];
var $1249 = ($1248 | 0) == 0;
var $1250 = $K8_0_i_i << 1;
if ($1249) {
label = 290;
break;
} else {
var $K8_0_i_i = $1250;
var $T_0_i22_i = $1248;
label = 288;
break;
}
case 290:
var $1252 = $1247;
var $1253 = HEAP32[(432 | 0) >> 2];
var $1254 = $1252 >>> 0 < $1253 >>> 0;
if ($1254) {
label = 292;
break;
} else {
label = 291;
break;
}
case 291:
HEAP32[$1247 >> 2] = $1182;
var $_sum24_i_i = $_sum_i16_i + 24 | 0;
var $1256 = $tbase_240_i + $_sum24_i_i | 0;
var $1257 = $1256;
HEAP32[$1257 >> 2] = $T_0_i22_i;
var $_sum25_i_i = $_sum_i16_i + 12 | 0;
var $1258 = $tbase_240_i + $_sum25_i_i | 0;
var $1259 = $1258;
HEAP32[$1259 >> 2] = $1182;
var $_sum26_i_i = $_sum_i16_i + 8 | 0;
var $1260 = $tbase_240_i + $_sum26_i_i | 0;
var $1261 = $1260;
HEAP32[$1261 >> 2] = $1182;
label = 297;
break;
case 292:
_abort();
throw "Reached an unreachable!";
case 293:
var $1264 = $T_0_i22_i + 8 | 0;
var $1265 = HEAP32[$1264 >> 2];
var $1266 = $T_0_i22_i;
var $1267 = HEAP32[(432 | 0) >> 2];
var $1268 = $1266 >>> 0 < $1267 >>> 0;
if ($1268) {
label = 296;
break;
} else {
label = 294;
break;
}
case 294:
var $1270 = $1265;
var $1271 = $1270 >>> 0 < $1267 >>> 0;
if ($1271) {
label = 296;
break;
} else {
label = 295;
break;
}
case 295:
var $1273 = $1265 + 12 | 0;
HEAP32[$1273 >> 2] = $1182;
HEAP32[$1264 >> 2] = $1182;
var $_sum21_i_i = $_sum_i16_i + 8 | 0;
var $1274 = $tbase_240_i + $_sum21_i_i | 0;
var $1275 = $1274;
HEAP32[$1275 >> 2] = $1265;
var $_sum22_i_i = $_sum_i16_i + 12 | 0;
var $1276 = $tbase_240_i + $_sum22_i_i | 0;
var $1277 = $1276;
HEAP32[$1277 >> 2] = $T_0_i22_i;
var $_sum23_i_i = $_sum_i16_i + 24 | 0;
var $1278 = $tbase_240_i + $_sum23_i_i | 0;
var $1279 = $1278;
HEAP32[$1279 >> 2] = 0;
label = 297;
break;
case 296:
_abort();
throw "Reached an unreachable!";
case 297:
var $_sum1819_i_i = $948 | 8;
var $1280 = $tbase_240_i + $_sum1819_i_i | 0;
var $mem_0 = $1280;
label = 333;
break;
case 298:
var $1281 = $880;
var $sp_0_i_i_i = 864 | 0;
label = 299;
break;
case 299:
var $sp_0_i_i_i;
var $1283 = $sp_0_i_i_i | 0;
var $1284 = HEAP32[$1283 >> 2];
var $1285 = $1284 >>> 0 > $1281 >>> 0;
if ($1285) {
label = 301;
break;
} else {
label = 300;
break;
}
case 300:
var $1287 = $sp_0_i_i_i + 4 | 0;
var $1288 = HEAP32[$1287 >> 2];
var $1289 = $1284 + $1288 | 0;
var $1290 = $1289 >>> 0 > $1281 >>> 0;
if ($1290) {
label = 302;
break;
} else {
label = 301;
break;
}
case 301:
var $1292 = $sp_0_i_i_i + 8 | 0;
var $1293 = HEAP32[$1292 >> 2];
var $sp_0_i_i_i = $1293;
label = 299;
break;
case 302:
var $_sum_i_i = $1288 - 47 | 0;
var $_sum1_i_i = $1288 - 39 | 0;
var $1294 = $1284 + $_sum1_i_i | 0;
var $1295 = $1294;
var $1296 = $1295 & 7;
var $1297 = ($1296 | 0) == 0;
if ($1297) {
var $1302 = 0;
label = 304;
break;
} else {
label = 303;
break;
}
case 303:
var $1299 = -$1295 | 0;
var $1300 = $1299 & 7;
var $1302 = $1300;
label = 304;
break;
case 304:
var $1302;
var $_sum2_i_i = $_sum_i_i + $1302 | 0;
var $1303 = $1284 + $_sum2_i_i | 0;
var $1304 = $880 + 16 | 0;
var $1305 = $1304;
var $1306 = $1303 >>> 0 < $1305 >>> 0;
var $1307 = $1306 ? $1281 : $1303;
var $1308 = $1307 + 8 | 0;
var $1309 = $1308;
var $1310 = $tbase_240_i;
var $1311 = $tsize_239_i - 40 | 0;
_init_top($1310, $1311);
var $1312 = $1307 + 4 | 0;
var $1313 = $1312;
HEAP32[$1313 >> 2] = 27;
assert(16 % 1 === 0);
HEAP32[$1308 >> 2] = HEAP32[(864 | 0) >> 2];
HEAP32[$1308 + 4 >> 2] = HEAP32[(864 | 0) + 4 >> 2];
HEAP32[$1308 + 8 >> 2] = HEAP32[(864 | 0) + 8 >> 2];
HEAP32[$1308 + 12 >> 2] = HEAP32[(864 | 0) + 12 >> 2];
HEAP32[(864 | 0) >> 2] = $tbase_240_i;
HEAP32[(868 | 0) >> 2] = $tsize_239_i;
HEAP32[(876 | 0) >> 2] = 0;
HEAP32[(872 | 0) >> 2] = $1309;
var $1314 = $1307 + 28 | 0;
var $1315 = $1314;
HEAP32[$1315 >> 2] = 7;
var $1316 = $1307 + 32 | 0;
var $1317 = $1316 >>> 0 < $1289 >>> 0;
if ($1317) {
var $1318 = $1315;
label = 305;
break;
} else {
label = 306;
break;
}
case 305:
var $1318;
var $1319 = $1318 + 4 | 0;
HEAP32[$1319 >> 2] = 7;
var $1320 = $1318 + 8 | 0;
var $1321 = $1320;
var $1322 = $1321 >>> 0 < $1289 >>> 0;
if ($1322) {
var $1318 = $1319;
label = 305;
break;
} else {
label = 306;
break;
}
case 306:
var $1323 = ($1307 | 0) == ($1281 | 0);
if ($1323) {
label = 330;
break;
} else {
label = 307;
break;
}
case 307:
var $1325 = $1307;
var $1326 = $880;
var $1327 = $1325 - $1326 | 0;
var $1328 = $1281 + $1327 | 0;
var $_sum3_i_i = $1327 + 4 | 0;
var $1329 = $1281 + $_sum3_i_i | 0;
var $1330 = $1329;
var $1331 = HEAP32[$1330 >> 2];
var $1332 = $1331 & -2;
HEAP32[$1330 >> 2] = $1332;
var $1333 = $1327 | 1;
var $1334 = $880 + 4 | 0;
HEAP32[$1334 >> 2] = $1333;
var $1335 = $1328;
HEAP32[$1335 >> 2] = $1327;
var $1336 = $1327 >>> 3;
var $1337 = $1327 >>> 0 < 256;
if ($1337) {
label = 308;
break;
} else {
label = 313;
break;
}
case 308:
var $1339 = $1336 << 1;
var $1340 = 456 + ($1339 << 2) | 0;
var $1341 = $1340;
var $1342 = HEAP32[(416 | 0) >> 2];
var $1343 = 1 << $1336;
var $1344 = $1342 & $1343;
var $1345 = ($1344 | 0) == 0;
if ($1345) {
label = 309;
break;
} else {
label = 310;
break;
}
case 309:
var $1347 = $1342 | $1343;
HEAP32[(416 | 0) >> 2] = $1347;
var $_sum11_pre_i_i = $1339 + 2 | 0;
var $_pre_i_i = 456 + ($_sum11_pre_i_i << 2) | 0;
var $F_0_i_i = $1341;
var $_pre_phi_i_i = $_pre_i_i;
label = 312;
break;
case 310:
var $_sum12_i_i = $1339 + 2 | 0;
var $1349 = 456 + ($_sum12_i_i << 2) | 0;
var $1350 = HEAP32[$1349 >> 2];
var $1351 = $1350;
var $1352 = HEAP32[(432 | 0) >> 2];
var $1353 = $1351 >>> 0 < $1352 >>> 0;
if ($1353) {
label = 311;
break;
} else {
var $F_0_i_i = $1350;
var $_pre_phi_i_i = $1349;
label = 312;
break;
}
case 311:
_abort();
throw "Reached an unreachable!";
case 312:
var $_pre_phi_i_i;
var $F_0_i_i;
HEAP32[$_pre_phi_i_i >> 2] = $880;
var $1356 = $F_0_i_i + 12 | 0;
HEAP32[$1356 >> 2] = $880;
var $1357 = $880 + 8 | 0;
HEAP32[$1357 >> 2] = $F_0_i_i;
var $1358 = $880 + 12 | 0;
HEAP32[$1358 >> 2] = $1341;
label = 330;
break;
case 313:
var $1360 = $880;
var $1361 = $1327 >>> 8;
var $1362 = ($1361 | 0) == 0;
if ($1362) {
var $I1_0_i_i = 0;
label = 316;
break;
} else {
label = 314;
break;
}
case 314:
var $1364 = $1327 >>> 0 > 16777215;
if ($1364) {
var $I1_0_i_i = 31;
label = 316;
break;
} else {
label = 315;
break;
}
case 315:
var $1366 = $1361 + 1048320 | 0;
var $1367 = $1366 >>> 16;
var $1368 = $1367 & 8;
var $1369 = $1361 << $1368;
var $1370 = $1369 + 520192 | 0;
var $1371 = $1370 >>> 16;
var $1372 = $1371 & 4;
var $1373 = $1372 | $1368;
var $1374 = $1369 << $1372;
var $1375 = $1374 + 245760 | 0;
var $1376 = $1375 >>> 16;
var $1377 = $1376 & 2;
var $1378 = $1373 | $1377;
var $1379 = 14 - $1378 | 0;
var $1380 = $1374 << $1377;
var $1381 = $1380 >>> 15;
var $1382 = $1379 + $1381 | 0;
var $1383 = $1382 << 1;
var $1384 = $1382 + 7 | 0;
var $1385 = $1327 >>> ($1384 >>> 0);
var $1386 = $1385 & 1;
var $1387 = $1386 | $1383;
var $I1_0_i_i = $1387;
label = 316;
break;
case 316:
var $I1_0_i_i;
var $1389 = 720 + ($I1_0_i_i << 2) | 0;
var $1390 = $880 + 28 | 0;
var $I1_0_c_i_i = $I1_0_i_i;
HEAP32[$1390 >> 2] = $I1_0_c_i_i;
var $1391 = $880 + 20 | 0;
HEAP32[$1391 >> 2] = 0;
var $1392 = $880 + 16 | 0;
HEAP32[$1392 >> 2] = 0;
var $1393 = HEAP32[(420 | 0) >> 2];
var $1394 = 1 << $I1_0_i_i;
var $1395 = $1393 & $1394;
var $1396 = ($1395 | 0) == 0;
if ($1396) {
label = 317;
break;
} else {
label = 318;
break;
}
case 317:
var $1398 = $1393 | $1394;
HEAP32[(420 | 0) >> 2] = $1398;
HEAP32[$1389 >> 2] = $1360;
var $1399 = $880 + 24 | 0;
var $_c_i_i = $1389;
HEAP32[$1399 >> 2] = $_c_i_i;
var $1400 = $880 + 12 | 0;
HEAP32[$1400 >> 2] = $880;
var $1401 = $880 + 8 | 0;
HEAP32[$1401 >> 2] = $880;
label = 330;
break;
case 318:
var $1403 = HEAP32[$1389 >> 2];
var $1404 = ($I1_0_i_i | 0) == 31;
if ($1404) {
var $1409 = 0;
label = 320;
break;
} else {
label = 319;
break;
}
case 319:
var $1406 = $I1_0_i_i >>> 1;
var $1407 = 25 - $1406 | 0;
var $1409 = $1407;
label = 320;
break;
case 320:
var $1409;
var $1410 = $1327 << $1409;
var $K2_0_i_i = $1410;
var $T_0_i_i = $1403;
label = 321;
break;
case 321:
var $T_0_i_i;
var $K2_0_i_i;
var $1412 = $T_0_i_i + 4 | 0;
var $1413 = HEAP32[$1412 >> 2];
var $1414 = $1413 & -8;
var $1415 = ($1414 | 0) == ($1327 | 0);
if ($1415) {
label = 326;
break;
} else {
label = 322;
break;
}
case 322:
var $1417 = $K2_0_i_i >>> 31;
var $1418 = $T_0_i_i + 16 + ($1417 << 2) | 0;
var $1419 = HEAP32[$1418 >> 2];
var $1420 = ($1419 | 0) == 0;
var $1421 = $K2_0_i_i << 1;
if ($1420) {
label = 323;
break;
} else {
var $K2_0_i_i = $1421;
var $T_0_i_i = $1419;
label = 321;
break;
}
case 323:
var $1423 = $1418;
var $1424 = HEAP32[(432 | 0) >> 2];
var $1425 = $1423 >>> 0 < $1424 >>> 0;
if ($1425) {
label = 325;
break;
} else {
label = 324;
break;
}
case 324:
HEAP32[$1418 >> 2] = $1360;
var $1427 = $880 + 24 | 0;
var $T_0_c8_i_i = $T_0_i_i;
HEAP32[$1427 >> 2] = $T_0_c8_i_i;
var $1428 = $880 + 12 | 0;
HEAP32[$1428 >> 2] = $880;
var $1429 = $880 + 8 | 0;
HEAP32[$1429 >> 2] = $880;
label = 330;
break;
case 325:
_abort();
throw "Reached an unreachable!";
case 326:
var $1432 = $T_0_i_i + 8 | 0;
var $1433 = HEAP32[$1432 >> 2];
var $1434 = $T_0_i_i;
var $1435 = HEAP32[(432 | 0) >> 2];
var $1436 = $1434 >>> 0 < $1435 >>> 0;
if ($1436) {
label = 329;
break;
} else {
label = 327;
break;
}
case 327:
var $1438 = $1433;
var $1439 = $1438 >>> 0 < $1435 >>> 0;
if ($1439) {
label = 329;
break;
} else {
label = 328;
break;
}
case 328:
var $1441 = $1433 + 12 | 0;
HEAP32[$1441 >> 2] = $1360;
HEAP32[$1432 >> 2] = $1360;
var $1442 = $880 + 8 | 0;
var $_c7_i_i = $1433;
HEAP32[$1442 >> 2] = $_c7_i_i;
var $1443 = $880 + 12 | 0;
var $T_0_c_i_i = $T_0_i_i;
HEAP32[$1443 >> 2] = $T_0_c_i_i;
var $1444 = $880 + 24 | 0;
HEAP32[$1444 >> 2] = 0;
label = 330;
break;
case 329:
_abort();
throw "Reached an unreachable!";
case 330:
var $1445 = HEAP32[(428 | 0) >> 2];
var $1446 = $1445 >>> 0 > $nb_0 >>> 0;
if ($1446) {
label = 331;
break;
} else {
label = 332;
break;
}
case 331:
var $1448 = $1445 - $nb_0 | 0;
HEAP32[(428 | 0) >> 2] = $1448;
var $1449 = HEAP32[(440 | 0) >> 2];
var $1450 = $1449;
var $1451 = $1450 + $nb_0 | 0;
var $1452 = $1451;
HEAP32[(440 | 0) >> 2] = $1452;
var $1453 = $1448 | 1;
var $_sum_i144 = $nb_0 + 4 | 0;
var $1454 = $1450 + $_sum_i144 | 0;
var $1455 = $1454;
HEAP32[$1455 >> 2] = $1453;
var $1456 = $nb_0 | 3;
var $1457 = $1449 + 4 | 0;
HEAP32[$1457 >> 2] = $1456;
var $1458 = $1449 + 8 | 0;
var $1459 = $1458;
var $mem_0 = $1459;
label = 333;
break;
case 332:
var $1460 = ___errno_location();
HEAP32[$1460 >> 2] = 12;
var $mem_0 = 0;
label = 333;
break;
case 333:
var $mem_0;
return $mem_0;
default:
assert(0, "bad label: " + label);
}
}
function __ZdlPv($ptr) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = ($ptr | 0) == 0;
if ($1) {
label = 156;
break;
} else {
label = 2;
break;
}
case 2:
var $3 = $ptr - 8 | 0;
var $4 = $3;
var $5 = HEAP32[(432 | 0) >> 2];
var $6 = $3 >>> 0 < $5 >>> 0;
if ($6) {
label = 155;
break;
} else {
label = 3;
break;
}
case 3:
var $8 = $ptr - 4 | 0;
var $9 = $8;
var $10 = HEAP32[$9 >> 2];
var $11 = $10 & 3;
var $12 = ($11 | 0) == 1;
if ($12) {
label = 155;
break;
} else {
label = 4;
break;
}
case 4:
var $14 = $10 & -8;
var $_sum_i = $14 - 8 | 0;
var $15 = $ptr + $_sum_i | 0;
var $16 = $15;
var $17 = $10 & 1;
var $18 = ($17 | 0) == 0;
if ($18) {
label = 5;
break;
} else {
var $p_0_i = $4;
var $psize_0_i = $14;
label = 56;
break;
}
case 5:
var $20 = $3;
var $21 = HEAP32[$20 >> 2];
var $22 = ($11 | 0) == 0;
if ($22) {
label = 156;
break;
} else {
label = 6;
break;
}
case 6:
var $_sum253_i = -8 - $21 | 0;
var $24 = $ptr + $_sum253_i | 0;
var $25 = $24;
var $26 = $21 + $14 | 0;
var $27 = $24 >>> 0 < $5 >>> 0;
if ($27) {
label = 155;
break;
} else {
label = 7;
break;
}
case 7:
var $29 = HEAP32[(436 | 0) >> 2];
var $30 = ($25 | 0) == ($29 | 0);
if ($30) {
label = 54;
break;
} else {
label = 8;
break;
}
case 8:
var $32 = $21 >>> 3;
var $33 = $21 >>> 0 < 256;
if ($33) {
label = 9;
break;
} else {
label = 21;
break;
}
case 9:
var $_sum297_i = $_sum253_i + 8 | 0;
var $35 = $ptr + $_sum297_i | 0;
var $36 = $35;
var $37 = HEAP32[$36 >> 2];
var $_sum298_i = $_sum253_i + 12 | 0;
var $38 = $ptr + $_sum298_i | 0;
var $39 = $38;
var $40 = HEAP32[$39 >> 2];
var $41 = $32 << 1;
var $42 = 456 + ($41 << 2) | 0;
var $43 = $42;
var $44 = ($37 | 0) == ($43 | 0);
if ($44) {
label = 12;
break;
} else {
label = 10;
break;
}
case 10:
var $46 = $37;
var $47 = $46 >>> 0 < $5 >>> 0;
if ($47) {
label = 20;
break;
} else {
label = 11;
break;
}
case 11:
var $49 = $37 + 12 | 0;
var $50 = HEAP32[$49 >> 2];
var $51 = ($50 | 0) == ($25 | 0);
if ($51) {
label = 12;
break;
} else {
label = 20;
break;
}
case 12:
var $52 = ($40 | 0) == ($37 | 0);
if ($52) {
label = 13;
break;
} else {
label = 14;
break;
}
case 13:
var $54 = 1 << $32;
var $55 = $54 ^ -1;
var $56 = HEAP32[(416 | 0) >> 2];
var $57 = $56 & $55;
HEAP32[(416 | 0) >> 2] = $57;
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
case 14:
var $59 = ($40 | 0) == ($43 | 0);
if ($59) {
label = 15;
break;
} else {
label = 16;
break;
}
case 15:
var $_pre328_i = $40 + 8 | 0;
var $_pre_phi329_i = $_pre328_i;
label = 18;
break;
case 16:
var $61 = $40;
var $62 = $61 >>> 0 < $5 >>> 0;
if ($62) {
label = 19;
break;
} else {
label = 17;
break;
}
case 17:
var $64 = $40 + 8 | 0;
var $65 = HEAP32[$64 >> 2];
var $66 = ($65 | 0) == ($25 | 0);
if ($66) {
var $_pre_phi329_i = $64;
label = 18;
break;
} else {
label = 19;
break;
}
case 18:
var $_pre_phi329_i;
var $67 = $37 + 12 | 0;
HEAP32[$67 >> 2] = $40;
HEAP32[$_pre_phi329_i >> 2] = $37;
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
case 19:
_abort();
throw "Reached an unreachable!";
case 20:
_abort();
throw "Reached an unreachable!";
case 21:
var $69 = $24;
var $_sum287_i = $_sum253_i + 24 | 0;
var $70 = $ptr + $_sum287_i | 0;
var $71 = $70;
var $72 = HEAP32[$71 >> 2];
var $_sum288_i = $_sum253_i + 12 | 0;
var $73 = $ptr + $_sum288_i | 0;
var $74 = $73;
var $75 = HEAP32[$74 >> 2];
var $76 = ($75 | 0) == ($69 | 0);
if ($76) {
label = 27;
break;
} else {
label = 22;
break;
}
case 22:
var $_sum294_i = $_sum253_i + 8 | 0;
var $78 = $ptr + $_sum294_i | 0;
var $79 = $78;
var $80 = HEAP32[$79 >> 2];
var $81 = $80;
var $82 = $81 >>> 0 < $5 >>> 0;
if ($82) {
label = 26;
break;
} else {
label = 23;
break;
}
case 23:
var $84 = $80 + 12 | 0;
var $85 = HEAP32[$84 >> 2];
var $86 = ($85 | 0) == ($69 | 0);
if ($86) {
label = 24;
break;
} else {
label = 26;
break;
}
case 24:
var $88 = $75 + 8 | 0;
var $89 = HEAP32[$88 >> 2];
var $90 = ($89 | 0) == ($69 | 0);
if ($90) {
label = 25;
break;
} else {
label = 26;
break;
}
case 25:
HEAP32[$84 >> 2] = $75;
HEAP32[$88 >> 2] = $80;
var $R_1_i = $75;
label = 34;
break;
case 26:
_abort();
throw "Reached an unreachable!";
case 27:
var $_sum290_i = $_sum253_i + 20 | 0;
var $93 = $ptr + $_sum290_i | 0;
var $94 = $93;
var $95 = HEAP32[$94 >> 2];
var $96 = ($95 | 0) == 0;
if ($96) {
label = 28;
break;
} else {
var $R_0_i = $95;
var $RP_0_i = $94;
label = 29;
break;
}
case 28:
var $_sum289_i = $_sum253_i + 16 | 0;
var $98 = $ptr + $_sum289_i | 0;
var $99 = $98;
var $100 = HEAP32[$99 >> 2];
var $101 = ($100 | 0) == 0;
if ($101) {
var $R_1_i = 0;
label = 34;
break;
} else {
var $R_0_i = $100;
var $RP_0_i = $99;
label = 29;
break;
}
case 29:
var $RP_0_i;
var $R_0_i;
var $102 = $R_0_i + 20 | 0;
var $103 = HEAP32[$102 >> 2];
var $104 = ($103 | 0) == 0;
if ($104) {
label = 30;
break;
} else {
var $R_0_i = $103;
var $RP_0_i = $102;
label = 29;
break;
}
case 30:
var $106 = $R_0_i + 16 | 0;
var $107 = HEAP32[$106 >> 2];
var $108 = ($107 | 0) == 0;
if ($108) {
label = 31;
break;
} else {
var $R_0_i = $107;
var $RP_0_i = $106;
label = 29;
break;
}
case 31:
var $110 = $RP_0_i;
var $111 = $110 >>> 0 < $5 >>> 0;
if ($111) {
label = 33;
break;
} else {
label = 32;
break;
}
case 32:
HEAP32[$RP_0_i >> 2] = 0;
var $R_1_i = $R_0_i;
label = 34;
break;
case 33:
_abort();
throw "Reached an unreachable!";
case 34:
var $R_1_i;
var $115 = ($72 | 0) == 0;
if ($115) {
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
} else {
label = 35;
break;
}
case 35:
var $_sum291_i = $_sum253_i + 28 | 0;
var $117 = $ptr + $_sum291_i | 0;
var $118 = $117;
var $119 = HEAP32[$118 >> 2];
var $120 = 720 + ($119 << 2) | 0;
var $121 = HEAP32[$120 >> 2];
var $122 = ($69 | 0) == ($121 | 0);
if ($122) {
label = 36;
break;
} else {
label = 38;
break;
}
case 36:
HEAP32[$120 >> 2] = $R_1_i;
var $cond_i = ($R_1_i | 0) == 0;
if ($cond_i) {
label = 37;
break;
} else {
label = 44;
break;
}
case 37:
var $124 = 1 << $119;
var $125 = $124 ^ -1;
var $126 = HEAP32[(420 | 0) >> 2];
var $127 = $126 & $125;
HEAP32[(420 | 0) >> 2] = $127;
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
case 38:
var $129 = $72;
var $130 = HEAP32[(432 | 0) >> 2];
var $131 = $129 >>> 0 < $130 >>> 0;
if ($131) {
label = 42;
break;
} else {
label = 39;
break;
}
case 39:
var $133 = $72 + 16 | 0;
var $134 = HEAP32[$133 >> 2];
var $135 = ($134 | 0) == ($69 | 0);
if ($135) {
label = 40;
break;
} else {
label = 41;
break;
}
case 40:
HEAP32[$133 >> 2] = $R_1_i;
label = 43;
break;
case 41:
var $138 = $72 + 20 | 0;
HEAP32[$138 >> 2] = $R_1_i;
label = 43;
break;
case 42:
_abort();
throw "Reached an unreachable!";
case 43:
var $141 = ($R_1_i | 0) == 0;
if ($141) {
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
} else {
label = 44;
break;
}
case 44:
var $143 = $R_1_i;
var $144 = HEAP32[(432 | 0) >> 2];
var $145 = $143 >>> 0 < $144 >>> 0;
if ($145) {
label = 53;
break;
} else {
label = 45;
break;
}
case 45:
var $147 = $R_1_i + 24 | 0;
HEAP32[$147 >> 2] = $72;
var $_sum292_i = $_sum253_i + 16 | 0;
var $148 = $ptr + $_sum292_i | 0;
var $149 = $148;
var $150 = HEAP32[$149 >> 2];
var $151 = ($150 | 0) == 0;
if ($151) {
label = 49;
break;
} else {
label = 46;
break;
}
case 46:
var $153 = $150;
var $154 = HEAP32[(432 | 0) >> 2];
var $155 = $153 >>> 0 < $154 >>> 0;
if ($155) {
label = 48;
break;
} else {
label = 47;
break;
}
case 47:
var $157 = $R_1_i + 16 | 0;
HEAP32[$157 >> 2] = $150;
var $158 = $150 + 24 | 0;
HEAP32[$158 >> 2] = $R_1_i;
label = 49;
break;
case 48:
_abort();
throw "Reached an unreachable!";
case 49:
var $_sum293_i = $_sum253_i + 20 | 0;
var $161 = $ptr + $_sum293_i | 0;
var $162 = $161;
var $163 = HEAP32[$162 >> 2];
var $164 = ($163 | 0) == 0;
if ($164) {
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
} else {
label = 50;
break;
}
case 50:
var $166 = $163;
var $167 = HEAP32[(432 | 0) >> 2];
var $168 = $166 >>> 0 < $167 >>> 0;
if ($168) {
label = 52;
break;
} else {
label = 51;
break;
}
case 51:
var $170 = $R_1_i + 20 | 0;
HEAP32[$170 >> 2] = $163;
var $171 = $163 + 24 | 0;
HEAP32[$171 >> 2] = $R_1_i;
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
case 52:
_abort();
throw "Reached an unreachable!";
case 53:
_abort();
throw "Reached an unreachable!";
case 54:
var $_sum254_i = $14 - 4 | 0;
var $175 = $ptr + $_sum254_i | 0;
var $176 = $175;
var $177 = HEAP32[$176 >> 2];
var $178 = $177 & 3;
var $179 = ($178 | 0) == 3;
if ($179) {
label = 55;
break;
} else {
var $p_0_i = $25;
var $psize_0_i = $26;
label = 56;
break;
}
case 55:
HEAP32[(424 | 0) >> 2] = $26;
var $181 = HEAP32[$176 >> 2];
var $182 = $181 & -2;
HEAP32[$176 >> 2] = $182;
var $183 = $26 | 1;
var $_sum285_i = $_sum253_i + 4 | 0;
var $184 = $ptr + $_sum285_i | 0;
var $185 = $184;
HEAP32[$185 >> 2] = $183;
var $186 = $15;
HEAP32[$186 >> 2] = $26;
label = 156;
break;
case 56:
var $psize_0_i;
var $p_0_i;
var $188 = $p_0_i;
var $189 = $188 >>> 0 < $15 >>> 0;
if ($189) {
label = 57;
break;
} else {
label = 155;
break;
}
case 57:
var $_sum284_i = $14 - 4 | 0;
var $191 = $ptr + $_sum284_i | 0;
var $192 = $191;
var $193 = HEAP32[$192 >> 2];
var $194 = $193 & 1;
var $phitmp_i = ($194 | 0) == 0;
if ($phitmp_i) {
label = 155;
break;
} else {
label = 58;
break;
}
case 58:
var $196 = $193 & 2;
var $197 = ($196 | 0) == 0;
if ($197) {
label = 59;
break;
} else {
label = 128;
break;
}
case 59:
var $199 = HEAP32[(440 | 0) >> 2];
var $200 = ($16 | 0) == ($199 | 0);
if ($200) {
label = 60;
break;
} else {
label = 78;
break;
}
case 60:
var $202 = HEAP32[(428 | 0) >> 2];
var $203 = $202 + $psize_0_i | 0;
HEAP32[(428 | 0) >> 2] = $203;
HEAP32[(440 | 0) >> 2] = $p_0_i;
var $204 = $203 | 1;
var $205 = $p_0_i + 4 | 0;
HEAP32[$205 >> 2] = $204;
var $206 = HEAP32[(436 | 0) >> 2];
var $207 = ($p_0_i | 0) == ($206 | 0);
if ($207) {
label = 61;
break;
} else {
label = 62;
break;
}
case 61:
HEAP32[(436 | 0) >> 2] = 0;
HEAP32[(424 | 0) >> 2] = 0;
label = 62;
break;
case 62:
var $210 = HEAP32[(444 | 0) >> 2];
var $211 = $203 >>> 0 > $210 >>> 0;
if ($211) {
label = 63;
break;
} else {
label = 156;
break;
}
case 63:
var $213 = HEAP32[(8 | 0) >> 2];
var $214 = ($213 | 0) == 0;
if ($214) {
label = 64;
break;
} else {
var $217 = $p_0_i;
label = 65;
break;
}
case 64:
_init_mparams();
var $_pre = HEAP32[(440 | 0) >> 2];
var $217 = $_pre;
label = 65;
break;
case 65:
var $217;
var $218 = ($217 | 0) == 0;
if ($218) {
label = 156;
break;
} else {
label = 66;
break;
}
case 66:
var $220 = HEAP32[(428 | 0) >> 2];
var $221 = $220 >>> 0 > 40;
if ($221) {
label = 67;
break;
} else {
label = 76;
break;
}
case 67:
var $223 = HEAP32[(16 | 0) >> 2];
var $224 = $220 - 41 | 0;
var $225 = $224 + $223 | 0;
var $226 = Math.floor(($225 >>> 0) / ($223 >>> 0));
var $227 = $226 - 1 | 0;
var $228 = Math.imul($227, $223);
var $229 = $217;
var $sp_0_i_i_i = 864 | 0;
label = 68;
break;
case 68:
var $sp_0_i_i_i;
var $231 = $sp_0_i_i_i | 0;
var $232 = HEAP32[$231 >> 2];
var $233 = $232 >>> 0 > $229 >>> 0;
if ($233) {
label = 70;
break;
} else {
label = 69;
break;
}
case 69:
var $235 = $sp_0_i_i_i + 4 | 0;
var $236 = HEAP32[$235 >> 2];
var $237 = $232 + $236 | 0;
var $238 = $237 >>> 0 > $229 >>> 0;
if ($238) {
var $_0_i_i_i = $sp_0_i_i_i;
label = 71;
break;
} else {
label = 70;
break;
}
case 70:
var $240 = $sp_0_i_i_i + 8 | 0;
var $241 = HEAP32[$240 >> 2];
var $242 = ($241 | 0) == 0;
if ($242) {
var $_0_i_i_i = 0;
label = 71;
break;
} else {
var $sp_0_i_i_i = $241;
label = 68;
break;
}
case 71:
var $_0_i_i_i;
var $243 = $_0_i_i_i + 12 | 0;
var $244 = HEAP32[$243 >> 2];
var $245 = $244 & 8;
var $246 = ($245 | 0) == 0;
if ($246) {
label = 72;
break;
} else {
label = 76;
break;
}
case 72:
var $248 = _sbrk(0);
var $249 = $_0_i_i_i | 0;
var $250 = HEAP32[$249 >> 2];
var $251 = $_0_i_i_i + 4 | 0;
var $252 = HEAP32[$251 >> 2];
var $253 = $250 + $252 | 0;
var $254 = ($248 | 0) == ($253 | 0);
if ($254) {
label = 73;
break;
} else {
label = 76;
break;
}
case 73:
var $256 = -2147483648 - $223 | 0;
var $257 = $228 >>> 0 > 2147483646;
var $__i_i = $257 ? $256 : $228;
var $258 = -$__i_i | 0;
var $259 = _sbrk($258);
var $260 = _sbrk(0);
var $261 = ($259 | 0) != -1;
var $262 = $260 >>> 0 < $248 >>> 0;
var $or_cond_i_i = $261 & $262;
if ($or_cond_i_i) {
label = 74;
break;
} else {
label = 76;
break;
}
case 74:
var $264 = $248;
var $265 = $260;
var $266 = $264 - $265 | 0;
var $267 = ($248 | 0) == ($260 | 0);
if ($267) {
label = 76;
break;
} else {
label = 75;
break;
}
case 75:
var $269 = HEAP32[$251 >> 2];
var $270 = $269 - $266 | 0;
HEAP32[$251 >> 2] = $270;
var $271 = HEAP32[(848 | 0) >> 2];
var $272 = $271 - $266 | 0;
HEAP32[(848 | 0) >> 2] = $272;
var $273 = HEAP32[(440 | 0) >> 2];
var $274 = HEAP32[(428 | 0) >> 2];
var $275 = $274 - $266 | 0;
_init_top($273, $275);
label = 156;
break;
case 76:
var $276 = HEAP32[(428 | 0) >> 2];
var $277 = HEAP32[(444 | 0) >> 2];
var $278 = $276 >>> 0 > $277 >>> 0;
if ($278) {
label = 77;
break;
} else {
label = 156;
break;
}
case 77:
HEAP32[(444 | 0) >> 2] = -1;
label = 156;
break;
case 78:
var $281 = HEAP32[(436 | 0) >> 2];
var $282 = ($16 | 0) == ($281 | 0);
if ($282) {
label = 79;
break;
} else {
label = 80;
break;
}
case 79:
var $284 = HEAP32[(424 | 0) >> 2];
var $285 = $284 + $psize_0_i | 0;
HEAP32[(424 | 0) >> 2] = $285;
HEAP32[(436 | 0) >> 2] = $p_0_i;
var $286 = $285 | 1;
var $287 = $p_0_i + 4 | 0;
HEAP32[$287 >> 2] = $286;
var $288 = $188 + $285 | 0;
var $289 = $288;
HEAP32[$289 >> 2] = $285;
label = 156;
break;
case 80:
var $291 = $193 & -8;
var $292 = $291 + $psize_0_i | 0;
var $293 = $193 >>> 3;
var $294 = $193 >>> 0 < 256;
if ($294) {
label = 81;
break;
} else {
label = 93;
break;
}
case 81:
var $296 = $ptr + $14 | 0;
var $297 = $296;
var $298 = HEAP32[$297 >> 2];
var $_sum278279_i = $14 | 4;
var $299 = $ptr + $_sum278279_i | 0;
var $300 = $299;
var $301 = HEAP32[$300 >> 2];
var $302 = $293 << 1;
var $303 = 456 + ($302 << 2) | 0;
var $304 = $303;
var $305 = ($298 | 0) == ($304 | 0);
if ($305) {
label = 84;
break;
} else {
label = 82;
break;
}
case 82:
var $307 = $298;
var $308 = HEAP32[(432 | 0) >> 2];
var $309 = $307 >>> 0 < $308 >>> 0;
if ($309) {
label = 92;
break;
} else {
label = 83;
break;
}
case 83:
var $311 = $298 + 12 | 0;
var $312 = HEAP32[$311 >> 2];
var $313 = ($312 | 0) == ($16 | 0);
if ($313) {
label = 84;
break;
} else {
label = 92;
break;
}
case 84:
var $314 = ($301 | 0) == ($298 | 0);
if ($314) {
label = 85;
break;
} else {
label = 86;
break;
}
case 85:
var $316 = 1 << $293;
var $317 = $316 ^ -1;
var $318 = HEAP32[(416 | 0) >> 2];
var $319 = $318 & $317;
HEAP32[(416 | 0) >> 2] = $319;
label = 126;
break;
case 86:
var $321 = ($301 | 0) == ($304 | 0);
if ($321) {
label = 87;
break;
} else {
label = 88;
break;
}
case 87:
var $_pre326_i = $301 + 8 | 0;
var $_pre_phi327_i = $_pre326_i;
label = 90;
break;
case 88:
var $323 = $301;
var $324 = HEAP32[(432 | 0) >> 2];
var $325 = $323 >>> 0 < $324 >>> 0;
if ($325) {
label = 91;
break;
} else {
label = 89;
break;
}
case 89:
var $327 = $301 + 8 | 0;
var $328 = HEAP32[$327 >> 2];
var $329 = ($328 | 0) == ($16 | 0);
if ($329) {
var $_pre_phi327_i = $327;
label = 90;
break;
} else {
label = 91;
break;
}
case 90:
var $_pre_phi327_i;
var $330 = $298 + 12 | 0;
HEAP32[$330 >> 2] = $301;
HEAP32[$_pre_phi327_i >> 2] = $298;
label = 126;
break;
case 91:
_abort();
throw "Reached an unreachable!";
case 92:
_abort();
throw "Reached an unreachable!";
case 93:
var $332 = $15;
var $_sum256_i = $14 + 16 | 0;
var $333 = $ptr + $_sum256_i | 0;
var $334 = $333;
var $335 = HEAP32[$334 >> 2];
var $_sum257258_i = $14 | 4;
var $336 = $ptr + $_sum257258_i | 0;
var $337 = $336;
var $338 = HEAP32[$337 >> 2];
var $339 = ($338 | 0) == ($332 | 0);
if ($339) {
label = 99;
break;
} else {
label = 94;
break;
}
case 94:
var $341 = $ptr + $14 | 0;
var $342 = $341;
var $343 = HEAP32[$342 >> 2];
var $344 = $343;
var $345 = HEAP32[(432 | 0) >> 2];
var $346 = $344 >>> 0 < $345 >>> 0;
if ($346) {
label = 98;
break;
} else {
label = 95;
break;
}
case 95:
var $348 = $343 + 12 | 0;
var $349 = HEAP32[$348 >> 2];
var $350 = ($349 | 0) == ($332 | 0);
if ($350) {
label = 96;
break;
} else {
label = 98;
break;
}
case 96:
var $352 = $338 + 8 | 0;
var $353 = HEAP32[$352 >> 2];
var $354 = ($353 | 0) == ($332 | 0);
if ($354) {
label = 97;
break;
} else {
label = 98;
break;
}
case 97:
HEAP32[$348 >> 2] = $338;
HEAP32[$352 >> 2] = $343;
var $R7_1_i = $338;
label = 106;
break;
case 98:
_abort();
throw "Reached an unreachable!";
case 99:
var $_sum260_i = $14 + 12 | 0;
var $357 = $ptr + $_sum260_i | 0;
var $358 = $357;
var $359 = HEAP32[$358 >> 2];
var $360 = ($359 | 0) == 0;
if ($360) {
label = 100;
break;
} else {
var $R7_0_i = $359;
var $RP9_0_i = $358;
label = 101;
break;
}
case 100:
var $_sum259_i = $14 + 8 | 0;
var $362 = $ptr + $_sum259_i | 0;
var $363 = $362;
var $364 = HEAP32[$363 >> 2];
var $365 = ($364 | 0) == 0;
if ($365) {
var $R7_1_i = 0;
label = 106;
break;
} else {
var $R7_0_i = $364;
var $RP9_0_i = $363;
label = 101;
break;
}
case 101:
var $RP9_0_i;
var $R7_0_i;
var $366 = $R7_0_i + 20 | 0;
var $367 = HEAP32[$366 >> 2];
var $368 = ($367 | 0) == 0;
if ($368) {
label = 102;
break;
} else {
var $R7_0_i = $367;
var $RP9_0_i = $366;
label = 101;
break;
}
case 102:
var $370 = $R7_0_i + 16 | 0;
var $371 = HEAP32[$370 >> 2];
var $372 = ($371 | 0) == 0;
if ($372) {
label = 103;
break;
} else {
var $R7_0_i = $371;
var $RP9_0_i = $370;
label = 101;
break;
}
case 103:
var $374 = $RP9_0_i;
var $375 = HEAP32[(432 | 0) >> 2];
var $376 = $374 >>> 0 < $375 >>> 0;
if ($376) {
label = 105;
break;
} else {
label = 104;
break;
}
case 104:
HEAP32[$RP9_0_i >> 2] = 0;
var $R7_1_i = $R7_0_i;
label = 106;
break;
case 105:
_abort();
throw "Reached an unreachable!";
case 106:
var $R7_1_i;
var $380 = ($335 | 0) == 0;
if ($380) {
label = 126;
break;
} else {
label = 107;
break;
}
case 107:
var $_sum271_i = $14 + 20 | 0;
var $382 = $ptr + $_sum271_i | 0;
var $383 = $382;
var $384 = HEAP32[$383 >> 2];
var $385 = 720 + ($384 << 2) | 0;
var $386 = HEAP32[$385 >> 2];
var $387 = ($332 | 0) == ($386 | 0);
if ($387) {
label = 108;
break;
} else {
label = 110;
break;
}
case 108:
HEAP32[$385 >> 2] = $R7_1_i;
var $cond319_i = ($R7_1_i | 0) == 0;
if ($cond319_i) {
label = 109;
break;
} else {
label = 116;
break;
}
case 109:
var $389 = 1 << $384;
var $390 = $389 ^ -1;
var $391 = HEAP32[(420 | 0) >> 2];
var $392 = $391 & $390;
HEAP32[(420 | 0) >> 2] = $392;
label = 126;
break;
case 110:
var $394 = $335;
var $395 = HEAP32[(432 | 0) >> 2];
var $396 = $394 >>> 0 < $395 >>> 0;
if ($396) {
label = 114;
break;
} else {
label = 111;
break;
}
case 111:
var $398 = $335 + 16 | 0;
var $399 = HEAP32[$398 >> 2];
var $400 = ($399 | 0) == ($332 | 0);
if ($400) {
label = 112;
break;
} else {
label = 113;
break;
}
case 112:
HEAP32[$398 >> 2] = $R7_1_i;
label = 115;
break;
case 113:
var $403 = $335 + 20 | 0;
HEAP32[$403 >> 2] = $R7_1_i;
label = 115;
break;
case 114:
_abort();
throw "Reached an unreachable!";
case 115:
var $406 = ($R7_1_i | 0) == 0;
if ($406) {
label = 126;
break;
} else {
label = 116;
break;
}
case 116:
var $408 = $R7_1_i;
var $409 = HEAP32[(432 | 0) >> 2];
var $410 = $408 >>> 0 < $409 >>> 0;
if ($410) {
label = 125;
break;
} else {
label = 117;
break;
}
case 117:
var $412 = $R7_1_i + 24 | 0;
HEAP32[$412 >> 2] = $335;
var $_sum272_i = $14 + 8 | 0;
var $413 = $ptr + $_sum272_i | 0;
var $414 = $413;
var $415 = HEAP32[$414 >> 2];
var $416 = ($415 | 0) == 0;
if ($416) {
label = 121;
break;
} else {
label = 118;
break;
}
case 118:
var $418 = $415;
var $419 = HEAP32[(432 | 0) >> 2];
var $420 = $418 >>> 0 < $419 >>> 0;
if ($420) {
label = 120;
break;
} else {
label = 119;
break;
}
case 119:
var $422 = $R7_1_i + 16 | 0;
HEAP32[$422 >> 2] = $415;
var $423 = $415 + 24 | 0;
HEAP32[$423 >> 2] = $R7_1_i;
label = 121;
break;
case 120:
_abort();
throw "Reached an unreachable!";
case 121:
var $_sum273_i = $14 + 12 | 0;
var $426 = $ptr + $_sum273_i | 0;
var $427 = $426;
var $428 = HEAP32[$427 >> 2];
var $429 = ($428 | 0) == 0;
if ($429) {
label = 126;
break;
} else {
label = 122;
break;
}
case 122:
var $431 = $428;
var $432 = HEAP32[(432 | 0) >> 2];
var $433 = $431 >>> 0 < $432 >>> 0;
if ($433) {
label = 124;
break;
} else {
label = 123;
break;
}
case 123:
var $435 = $R7_1_i + 20 | 0;
HEAP32[$435 >> 2] = $428;
var $436 = $428 + 24 | 0;
HEAP32[$436 >> 2] = $R7_1_i;
label = 126;
break;
case 124:
_abort();
throw "Reached an unreachable!";
case 125:
_abort();
throw "Reached an unreachable!";
case 126:
var $439 = $292 | 1;
var $440 = $p_0_i + 4 | 0;
HEAP32[$440 >> 2] = $439;
var $441 = $188 + $292 | 0;
var $442 = $441;
HEAP32[$442 >> 2] = $292;
var $443 = HEAP32[(436 | 0) >> 2];
var $444 = ($p_0_i | 0) == ($443 | 0);
if ($444) {
label = 127;
break;
} else {
var $psize_1_i = $292;
label = 129;
break;
}
case 127:
HEAP32[(424 | 0) >> 2] = $292;
label = 156;
break;
case 128:
var $447 = $193 & -2;
HEAP32[$192 >> 2] = $447;
var $448 = $psize_0_i | 1;
var $449 = $p_0_i + 4 | 0;
HEAP32[$449 >> 2] = $448;
var $450 = $188 + $psize_0_i | 0;
var $451 = $450;
HEAP32[$451 >> 2] = $psize_0_i;
var $psize_1_i = $psize_0_i;
label = 129;
break;
case 129:
var $psize_1_i;
var $453 = $psize_1_i >>> 3;
var $454 = $psize_1_i >>> 0 < 256;
if ($454) {
label = 130;
break;
} else {
label = 135;
break;
}
case 130:
var $456 = $453 << 1;
var $457 = 456 + ($456 << 2) | 0;
var $458 = $457;
var $459 = HEAP32[(416 | 0) >> 2];
var $460 = 1 << $453;
var $461 = $459 & $460;
var $462 = ($461 | 0) == 0;
if ($462) {
label = 131;
break;
} else {
label = 132;
break;
}
case 131:
var $464 = $459 | $460;
HEAP32[(416 | 0) >> 2] = $464;
var $_sum269_pre_i = $456 + 2 | 0;
var $_pre_i = 456 + ($_sum269_pre_i << 2) | 0;
var $F16_0_i = $458;
var $_pre_phi_i = $_pre_i;
label = 134;
break;
case 132:
var $_sum270_i = $456 + 2 | 0;
var $466 = 456 + ($_sum270_i << 2) | 0;
var $467 = HEAP32[$466 >> 2];
var $468 = $467;
var $469 = HEAP32[(432 | 0) >> 2];
var $470 = $468 >>> 0 < $469 >>> 0;
if ($470) {
label = 133;
break;
} else {
var $F16_0_i = $467;
var $_pre_phi_i = $466;
label = 134;
break;
}
case 133:
_abort();
throw "Reached an unreachable!";
case 134:
var $_pre_phi_i;
var $F16_0_i;
HEAP32[$_pre_phi_i >> 2] = $p_0_i;
var $473 = $F16_0_i + 12 | 0;
HEAP32[$473 >> 2] = $p_0_i;
var $474 = $p_0_i + 8 | 0;
HEAP32[$474 >> 2] = $F16_0_i;
var $475 = $p_0_i + 12 | 0;
HEAP32[$475 >> 2] = $458;
label = 156;
break;
case 135:
var $477 = $p_0_i;
var $478 = $psize_1_i >>> 8;
var $479 = ($478 | 0) == 0;
if ($479) {
var $I18_0_i = 0;
label = 138;
break;
} else {
label = 136;
break;
}
case 136:
var $481 = $psize_1_i >>> 0 > 16777215;
if ($481) {
var $I18_0_i = 31;
label = 138;
break;
} else {
label = 137;
break;
}
case 137:
var $483 = $478 + 1048320 | 0;
var $484 = $483 >>> 16;
var $485 = $484 & 8;
var $486 = $478 << $485;
var $487 = $486 + 520192 | 0;
var $488 = $487 >>> 16;
var $489 = $488 & 4;
var $490 = $489 | $485;
var $491 = $486 << $489;
var $492 = $491 + 245760 | 0;
var $493 = $492 >>> 16;
var $494 = $493 & 2;
var $495 = $490 | $494;
var $496 = 14 - $495 | 0;
var $497 = $491 << $494;
var $498 = $497 >>> 15;
var $499 = $496 + $498 | 0;
var $500 = $499 << 1;
var $501 = $499 + 7 | 0;
var $502 = $psize_1_i >>> ($501 >>> 0);
var $503 = $502 & 1;
var $504 = $503 | $500;
var $I18_0_i = $504;
label = 138;
break;
case 138:
var $I18_0_i;
var $506 = 720 + ($I18_0_i << 2) | 0;
var $507 = $p_0_i + 28 | 0;
var $I18_0_c_i = $I18_0_i;
HEAP32[$507 >> 2] = $I18_0_c_i;
var $508 = $p_0_i + 20 | 0;
HEAP32[$508 >> 2] = 0;
var $509 = $p_0_i + 16 | 0;
HEAP32[$509 >> 2] = 0;
var $510 = HEAP32[(420 | 0) >> 2];
var $511 = 1 << $I18_0_i;
var $512 = $510 & $511;
var $513 = ($512 | 0) == 0;
if ($513) {
label = 139;
break;
} else {
label = 140;
break;
}
case 139:
var $515 = $510 | $511;
HEAP32[(420 | 0) >> 2] = $515;
HEAP32[$506 >> 2] = $477;
var $516 = $p_0_i + 24 | 0;
var $_c_i = $506;
HEAP32[$516 >> 2] = $_c_i;
var $517 = $p_0_i + 12 | 0;
HEAP32[$517 >> 2] = $p_0_i;
var $518 = $p_0_i + 8 | 0;
HEAP32[$518 >> 2] = $p_0_i;
label = 152;
break;
case 140:
var $520 = HEAP32[$506 >> 2];
var $521 = ($I18_0_i | 0) == 31;
if ($521) {
var $526 = 0;
label = 142;
break;
} else {
label = 141;
break;
}
case 141:
var $523 = $I18_0_i >>> 1;
var $524 = 25 - $523 | 0;
var $526 = $524;
label = 142;
break;
case 142:
var $526;
var $527 = $psize_1_i << $526;
var $K19_0_i = $527;
var $T_0_i = $520;
label = 143;
break;
case 143:
var $T_0_i;
var $K19_0_i;
var $529 = $T_0_i + 4 | 0;
var $530 = HEAP32[$529 >> 2];
var $531 = $530 & -8;
var $532 = ($531 | 0) == ($psize_1_i | 0);
if ($532) {
label = 148;
break;
} else {
label = 144;
break;
}
case 144:
var $534 = $K19_0_i >>> 31;
var $535 = $T_0_i + 16 + ($534 << 2) | 0;
var $536 = HEAP32[$535 >> 2];
var $537 = ($536 | 0) == 0;
var $538 = $K19_0_i << 1;
if ($537) {
label = 145;
break;
} else {
var $K19_0_i = $538;
var $T_0_i = $536;
label = 143;
break;
}
case 145:
var $540 = $535;
var $541 = HEAP32[(432 | 0) >> 2];
var $542 = $540 >>> 0 < $541 >>> 0;
if ($542) {
label = 147;
break;
} else {
label = 146;
break;
}
case 146:
HEAP32[$535 >> 2] = $477;
var $544 = $p_0_i + 24 | 0;
var $T_0_c266_i = $T_0_i;
HEAP32[$544 >> 2] = $T_0_c266_i;
var $545 = $p_0_i + 12 | 0;
HEAP32[$545 >> 2] = $p_0_i;
var $546 = $p_0_i + 8 | 0;
HEAP32[$546 >> 2] = $p_0_i;
label = 152;
break;
case 147:
_abort();
throw "Reached an unreachable!";
case 148:
var $549 = $T_0_i + 8 | 0;
var $550 = HEAP32[$549 >> 2];
var $551 = $T_0_i;
var $552 = HEAP32[(432 | 0) >> 2];
var $553 = $551 >>> 0 < $552 >>> 0;
if ($553) {
label = 151;
break;
} else {
label = 149;
break;
}
case 149:
var $555 = $550;
var $556 = $555 >>> 0 < $552 >>> 0;
if ($556) {
label = 151;
break;
} else {
label = 150;
break;
}
case 150:
var $558 = $550 + 12 | 0;
HEAP32[$558 >> 2] = $477;
HEAP32[$549 >> 2] = $477;
var $559 = $p_0_i + 8 | 0;
var $_c265_i = $550;
HEAP32[$559 >> 2] = $_c265_i;
var $560 = $p_0_i + 12 | 0;
var $T_0_c_i = $T_0_i;
HEAP32[$560 >> 2] = $T_0_c_i;
var $561 = $p_0_i + 24 | 0;
HEAP32[$561 >> 2] = 0;
label = 152;
break;
case 151:
_abort();
throw "Reached an unreachable!";
case 152:
var $563 = HEAP32[(448 | 0) >> 2];
var $564 = $563 - 1 | 0;
HEAP32[(448 | 0) >> 2] = $564;
var $565 = ($564 | 0) == 0;
if ($565) {
var $sp_0_in_i_i = 872 | 0;
label = 153;
break;
} else {
label = 156;
break;
}
case 153:
var $sp_0_in_i_i;
var $sp_0_i_i = HEAP32[$sp_0_in_i_i >> 2];
var $566 = ($sp_0_i_i | 0) == 0;
var $567 = $sp_0_i_i + 8 | 0;
if ($566) {
label = 154;
break;
} else {
var $sp_0_in_i_i = $567;
label = 153;
break;
}
case 154:
HEAP32[(448 | 0) >> 2] = -1;
label = 156;
break;
case 155:
_abort();
throw "Reached an unreachable!";
case 156:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv116__shim_type_info5noop1Ev($this) {
var label = 0;
return;
}
function __ZNK10__cxxabiv116__shim_type_info5noop2Ev($this) {
var label = 0;
return;
}
function _init_top($p, $psize) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $p;
var $2 = $p + 8 | 0;
var $3 = $2;
var $4 = $3 & 7;
var $5 = ($4 | 0) == 0;
if ($5) {
var $10 = 0;
label = 3;
break;
} else {
label = 2;
break;
}
case 2:
var $7 = -$3 | 0;
var $8 = $7 & 7;
var $10 = $8;
label = 3;
break;
case 3:
var $10;
var $11 = $1 + $10 | 0;
var $12 = $11;
var $13 = $psize - $10 | 0;
HEAP32[(440 | 0) >> 2] = $12;
HEAP32[(428 | 0) >> 2] = $13;
var $14 = $13 | 1;
var $_sum = $10 + 4 | 0;
var $15 = $1 + $_sum | 0;
var $16 = $15;
HEAP32[$16 >> 2] = $14;
var $_sum2 = $psize + 4 | 0;
var $17 = $1 + $_sum2 | 0;
var $18 = $17;
HEAP32[$18 >> 2] = 40;
var $19 = HEAP32[(24 | 0) >> 2];
HEAP32[(444 | 0) >> 2] = $19;
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($info, $adjustedPtr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $info + 16 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = ($2 | 0) == 0;
if ($3) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
HEAP32[$1 >> 2] = $adjustedPtr;
var $5 = $info + 24 | 0;
HEAP32[$5 >> 2] = $path_below;
var $6 = $info + 36 | 0;
HEAP32[$6 >> 2] = 1;
label = 7;
break;
case 3:
var $8 = ($2 | 0) == ($adjustedPtr | 0);
if ($8) {
label = 4;
break;
} else {
label = 6;
break;
}
case 4:
var $10 = $info + 24 | 0;
var $11 = HEAP32[$10 >> 2];
var $12 = ($11 | 0) == 2;
if ($12) {
label = 5;
break;
} else {
label = 7;
break;
}
case 5:
HEAP32[$10 >> 2] = $path_below;
label = 7;
break;
case 6:
var $15 = $info + 36 | 0;
var $16 = HEAP32[$15 >> 2];
var $17 = $16 + 1 | 0;
HEAP32[$15 >> 2] = $17;
var $18 = $info + 24 | 0;
HEAP32[$18 >> 2] = 2;
var $19 = $info + 54 | 0;
HEAP8[$19] = 1;
label = 7;
break;
case 7:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($info, $dst_ptr, $current_ptr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $info + 53 | 0;
HEAP8[$1] = 1;
var $2 = $info + 4 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = ($3 | 0) == ($current_ptr | 0);
if ($4) {
label = 2;
break;
} else {
label = 11;
break;
}
case 2:
var $6 = $info + 52 | 0;
HEAP8[$6] = 1;
var $7 = $info + 16 | 0;
var $8 = HEAP32[$7 >> 2];
var $9 = ($8 | 0) == 0;
if ($9) {
label = 3;
break;
} else {
label = 5;
break;
}
case 3:
HEAP32[$7 >> 2] = $dst_ptr;
var $11 = $info + 24 | 0;
HEAP32[$11 >> 2] = $path_below;
var $12 = $info + 36 | 0;
HEAP32[$12 >> 2] = 1;
var $13 = $info + 48 | 0;
var $14 = HEAP32[$13 >> 2];
var $15 = ($14 | 0) == 1;
var $16 = ($path_below | 0) == 1;
var $or_cond = $15 & $16;
if ($or_cond) {
label = 4;
break;
} else {
label = 11;
break;
}
case 4:
var $18 = $info + 54 | 0;
HEAP8[$18] = 1;
label = 11;
break;
case 5:
var $20 = ($8 | 0) == ($dst_ptr | 0);
if ($20) {
label = 6;
break;
} else {
label = 10;
break;
}
case 6:
var $22 = $info + 24 | 0;
var $23 = HEAP32[$22 >> 2];
var $24 = ($23 | 0) == 2;
if ($24) {
label = 7;
break;
} else {
var $27 = $23;
label = 8;
break;
}
case 7:
HEAP32[$22 >> 2] = $path_below;
var $27 = $path_below;
label = 8;
break;
case 8:
var $27;
var $28 = $info + 48 | 0;
var $29 = HEAP32[$28 >> 2];
var $30 = ($29 | 0) == 1;
var $31 = ($27 | 0) == 1;
var $or_cond23 = $30 & $31;
if ($or_cond23) {
label = 9;
break;
} else {
label = 11;
break;
}
case 9:
var $33 = $info + 54 | 0;
HEAP8[$33] = 1;
label = 11;
break;
case 10:
var $35 = $info + 36 | 0;
var $36 = HEAP32[$35 >> 2];
var $37 = $36 + 1 | 0;
HEAP32[$35 >> 2] = $37;
var $38 = $info + 54 | 0;
HEAP8[$38] = 1;
label = 11;
break;
case 11:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $info + 8 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = ($2 | 0) == ($this | 0);
if ($3) {
label = 2;
break;
} else {
label = 5;
break;
}
case 2:
var $5 = $info + 4 | 0;
var $6 = HEAP32[$5 >> 2];
var $7 = ($6 | 0) == ($current_ptr | 0);
if ($7) {
label = 3;
break;
} else {
label = 14;
break;
}
case 3:
var $9 = $info + 28 | 0;
var $10 = HEAP32[$9 >> 2];
var $11 = ($10 | 0) == 1;
if ($11) {
label = 14;
break;
} else {
label = 4;
break;
}
case 4:
HEAP32[$9 >> 2] = $path_below;
label = 14;
break;
case 5:
var $14 = $info | 0;
var $15 = HEAP32[$14 >> 2];
var $16 = ($15 | 0) == ($this | 0);
if ($16) {
label = 6;
break;
} else {
label = 14;
break;
}
case 6:
var $18 = $info + 16 | 0;
var $19 = HEAP32[$18 >> 2];
var $20 = ($19 | 0) == ($current_ptr | 0);
if ($20) {
label = 8;
break;
} else {
label = 7;
break;
}
case 7:
var $22 = $info + 20 | 0;
var $23 = HEAP32[$22 >> 2];
var $24 = ($23 | 0) == ($current_ptr | 0);
if ($24) {
label = 8;
break;
} else {
label = 10;
break;
}
case 8:
var $26 = ($path_below | 0) == 1;
if ($26) {
label = 9;
break;
} else {
label = 14;
break;
}
case 9:
var $28 = $info + 32 | 0;
HEAP32[$28 >> 2] = 1;
label = 14;
break;
case 10:
var $30 = $info + 32 | 0;
HEAP32[$30 >> 2] = $path_below;
HEAP32[$22 >> 2] = $current_ptr;
var $31 = $info + 40 | 0;
var $32 = HEAP32[$31 >> 2];
var $33 = $32 + 1 | 0;
HEAP32[$31 >> 2] = $33;
var $34 = $info + 36 | 0;
var $35 = HEAP32[$34 >> 2];
var $36 = ($35 | 0) == 1;
if ($36) {
label = 11;
break;
} else {
label = 13;
break;
}
case 11:
var $38 = $info + 24 | 0;
var $39 = HEAP32[$38 >> 2];
var $40 = ($39 | 0) == 2;
if ($40) {
label = 12;
break;
} else {
label = 13;
break;
}
case 12:
var $42 = $info + 54 | 0;
HEAP8[$42] = 1;
label = 13;
break;
case 13:
var $44 = $info + 44 | 0;
HEAP32[$44 >> 2] = 4;
label = 14;
break;
case 14:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this + 4 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = $2 >> 8;
var $4 = $2 & 1;
var $5 = ($4 | 0) == 0;
if ($5) {
var $offset_to_base_0 = $3;
label = 3;
break;
} else {
label = 2;
break;
}
case 2:
var $7 = $current_ptr;
var $8 = HEAP32[$7 >> 2];
var $9 = $8 + $3 | 0;
var $10 = $9;
var $11 = HEAP32[$10 >> 2];
var $offset_to_base_0 = $11;
label = 3;
break;
case 3:
var $offset_to_base_0;
var $13 = $this | 0;
var $14 = HEAP32[$13 >> 2];
var $15 = $14;
var $16 = HEAP32[$15 >> 2];
var $17 = $16 + 20 | 0;
var $18 = HEAP32[$17 >> 2];
var $19 = $current_ptr + $offset_to_base_0 | 0;
var $20 = $2 & 2;
var $21 = ($20 | 0) != 0;
var $22 = $21 ? $path_below : 2;
FUNCTION_TABLE[$18]($14, $info, $dst_ptr, $19, $22, $use_strcmp);
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this + 4 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = $2 >> 8;
var $4 = $2 & 1;
var $5 = ($4 | 0) == 0;
if ($5) {
var $offset_to_base_0 = $3;
label = 3;
break;
} else {
label = 2;
break;
}
case 2:
var $7 = $current_ptr;
var $8 = HEAP32[$7 >> 2];
var $9 = $8 + $3 | 0;
var $10 = $9;
var $11 = HEAP32[$10 >> 2];
var $offset_to_base_0 = $11;
label = 3;
break;
case 3:
var $offset_to_base_0;
var $13 = $this | 0;
var $14 = HEAP32[$13 >> 2];
var $15 = $14;
var $16 = HEAP32[$15 >> 2];
var $17 = $16 + 24 | 0;
var $18 = HEAP32[$17 >> 2];
var $19 = $current_ptr + $offset_to_base_0 | 0;
var $20 = $2 & 2;
var $21 = ($20 | 0) != 0;
var $22 = $21 ? $path_below : 2;
FUNCTION_TABLE[$18]($14, $info, $19, $22, $use_strcmp);
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this + 4 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = $2 >> 8;
var $4 = $2 & 1;
var $5 = ($4 | 0) == 0;
if ($5) {
var $offset_to_base_0 = $3;
label = 3;
break;
} else {
label = 2;
break;
}
case 2:
var $7 = $adjustedPtr;
var $8 = HEAP32[$7 >> 2];
var $9 = $8 + $3 | 0;
var $10 = $9;
var $11 = HEAP32[$10 >> 2];
var $offset_to_base_0 = $11;
label = 3;
break;
case 3:
var $offset_to_base_0;
var $13 = $this | 0;
var $14 = HEAP32[$13 >> 2];
var $15 = $14;
var $16 = HEAP32[$15 >> 2];
var $17 = $16 + 28 | 0;
var $18 = HEAP32[$17 >> 2];
var $19 = $adjustedPtr + $offset_to_base_0 | 0;
var $20 = $2 & 2;
var $21 = ($20 | 0) != 0;
var $22 = $21 ? $path_below : 2;
FUNCTION_TABLE[$18]($14, $info, $19, $22);
return;
default:
assert(0, "bad label: " + label);
}
}
function ___getTypeName($ti) {
var label = 0;
var $1 = $ti + 4 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = _strdup($2);
return $3;
}
function __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE($a, $b, $s) {
var label = 0;
var __stackBase__ = STACKTOP;
assert((STACKTOP | 0) < (STACK_MAX | 0));
label = 1;
while (1) switch (label) {
case 1:
var $1 = $b;
var $2 = $s;
var $3 = HEAP8[$2];
var $4 = $3 & 1;
var $5 = $4 << 24 >> 24 == 0;
if ($5) {
label = 3;
break;
} else {
label = 2;
break;
}
case 2:
var $7 = $s + 8 | 0;
var $8 = HEAP32[$7 >> 2];
var $12 = $8;
label = 4;
break;
case 3:
var $10 = $s;
var $11 = $10 + 1 | 0;
var $12 = $11;
label = 4;
break;
case 4:
var $12;
var $13 = _printf(384 | 0, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, assert((STACKTOP | 0) < (STACK_MAX | 0)), HEAP32[tempInt >> 2] = $a, HEAPF64[tempInt + 8 >> 3] = $1, HEAP32[tempInt + 16 >> 2] = $12, tempInt));
STACKTOP = __stackBase__;
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZN10__cxxabiv116__shim_type_infoD2Ev($this) {
var label = 0;
var $1 = $this | 0;
return;
}
function __ZN10__cxxabiv117__class_type_infoD0Ev($this) {
var label = 0;
var $1 = $this | 0;
var $2 = $this;
__ZdlPv($2);
return;
}
function __ZN10__cxxabiv120__si_class_type_infoD0Ev($this) {
var label = 0;
var $1 = $this | 0;
var $2 = $this;
__ZdlPv($2);
return;
}
function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev($this) {
var label = 0;
var $1 = $this | 0;
var $2 = $this;
__ZdlPv($2);
return;
}
function __ZN10__cxxabiv123__fundamental_type_infoD0Ev($this) {
var label = 0;
var $1 = $this | 0;
var $2 = $this;
__ZdlPv($2);
return;
}
function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $info + 8 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = ($2 | 0) == ($this | 0);
if ($3) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($info, $dst_ptr, $current_ptr, $path_below);
label = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $info + 8 | 0;
var $2 = HEAP32[$1 >> 2];
var $3 = ($2 | 0) == ($this | 0);
if ($3) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($info, $adjustedPtr, $path_below);
label = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($info, $dst_ptr, $current_ptr, $path_below);
label = 4;
break;
case 3:
var $8 = $this + 8 | 0;
var $9 = HEAP32[$8 >> 2];
var $10 = $9;
var $11 = HEAP32[$10 >> 2];
var $12 = $11 + 20 | 0;
var $13 = HEAP32[$12 >> 2];
FUNCTION_TABLE[$13]($9, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
label = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 5;
break;
}
case 2:
var $7 = $info + 4 | 0;
var $8 = HEAP32[$7 >> 2];
var $9 = ($8 | 0) == ($current_ptr | 0);
if ($9) {
label = 3;
break;
} else {
label = 20;
break;
}
case 3:
var $11 = $info + 28 | 0;
var $12 = HEAP32[$11 >> 2];
var $13 = ($12 | 0) == 1;
if ($13) {
label = 20;
break;
} else {
label = 4;
break;
}
case 4:
HEAP32[$11 >> 2] = $path_below;
label = 20;
break;
case 5:
var $16 = $info | 0;
var $17 = HEAP32[$16 >> 2];
var $18 = $17 | 0;
var $19 = ($1 | 0) == ($18 | 0);
if ($19) {
label = 6;
break;
} else {
label = 19;
break;
}
case 6:
var $21 = $info + 16 | 0;
var $22 = HEAP32[$21 >> 2];
var $23 = ($22 | 0) == ($current_ptr | 0);
if ($23) {
label = 8;
break;
} else {
label = 7;
break;
}
case 7:
var $25 = $info + 20 | 0;
var $26 = HEAP32[$25 >> 2];
var $27 = ($26 | 0) == ($current_ptr | 0);
if ($27) {
label = 8;
break;
} else {
label = 10;
break;
}
case 8:
var $29 = ($path_below | 0) == 1;
if ($29) {
label = 9;
break;
} else {
label = 20;
break;
}
case 9:
var $31 = $info + 32 | 0;
HEAP32[$31 >> 2] = 1;
label = 20;
break;
case 10:
var $33 = $info + 32 | 0;
HEAP32[$33 >> 2] = $path_below;
var $34 = $info + 44 | 0;
var $35 = HEAP32[$34 >> 2];
var $36 = ($35 | 0) == 4;
if ($36) {
label = 20;
break;
} else {
label = 11;
break;
}
case 11:
var $38 = $info + 52 | 0;
HEAP8[$38] = 0;
var $39 = $info + 53 | 0;
HEAP8[$39] = 0;
var $40 = $this + 8 | 0;
var $41 = HEAP32[$40 >> 2];
var $42 = $41;
var $43 = HEAP32[$42 >> 2];
var $44 = $43 + 20 | 0;
var $45 = HEAP32[$44 >> 2];
FUNCTION_TABLE[$45]($41, $info, $current_ptr, $current_ptr, 1, $use_strcmp);
var $46 = HEAP8[$39];
var $47 = $46 << 24 >> 24 == 0;
if ($47) {
var $is_dst_type_derived_from_static_type_0_off036 = 0;
label = 13;
break;
} else {
label = 12;
break;
}
case 12:
var $49 = HEAP8[$38];
var $not_ = $49 << 24 >> 24 == 0;
if ($not_) {
var $is_dst_type_derived_from_static_type_0_off036 = 1;
label = 13;
break;
} else {
label = 17;
break;
}
case 13:
var $is_dst_type_derived_from_static_type_0_off036;
HEAP32[$25 >> 2] = $current_ptr;
var $50 = $info + 40 | 0;
var $51 = HEAP32[$50 >> 2];
var $52 = $51 + 1 | 0;
HEAP32[$50 >> 2] = $52;
var $53 = $info + 36 | 0;
var $54 = HEAP32[$53 >> 2];
var $55 = ($54 | 0) == 1;
if ($55) {
label = 14;
break;
} else {
label = 16;
break;
}
case 14:
var $57 = $info + 24 | 0;
var $58 = HEAP32[$57 >> 2];
var $59 = ($58 | 0) == 2;
if ($59) {
label = 15;
break;
} else {
label = 16;
break;
}
case 15:
var $61 = $info + 54 | 0;
HEAP8[$61] = 1;
if ($is_dst_type_derived_from_static_type_0_off036) {
label = 17;
break;
} else {
label = 18;
break;
}
case 16:
if ($is_dst_type_derived_from_static_type_0_off036) {
label = 17;
break;
} else {
label = 18;
break;
}
case 17:
HEAP32[$34 >> 2] = 3;
label = 20;
break;
case 18:
HEAP32[$34 >> 2] = 4;
label = 20;
break;
case 19:
var $65 = $this + 8 | 0;
var $66 = HEAP32[$65 >> 2];
var $67 = $66;
var $68 = HEAP32[$67 >> 2];
var $69 = $68 + 24 | 0;
var $70 = HEAP32[$69 >> 2];
FUNCTION_TABLE[$70]($66, $info, $current_ptr, $path_below, $use_strcmp);
label = 20;
break;
case 20:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($info, $adjustedPtr, $path_below);
label = 4;
break;
case 3:
var $8 = $this + 8 | 0;
var $9 = HEAP32[$8 >> 2];
var $10 = $9;
var $11 = HEAP32[$10 >> 2];
var $12 = $11 + 28 | 0;
var $13 = HEAP32[$12 >> 2];
FUNCTION_TABLE[$13]($9, $info, $adjustedPtr, $path_below);
label = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($info, $dst_ptr, $current_ptr, $path_below);
label = 13;
break;
case 3:
var $8 = $info + 52 | 0;
var $9 = HEAP8[$8];
var $10 = $info + 53 | 0;
var $11 = HEAP8[$10];
var $12 = $this + 16 | 0;
var $13 = $this + 12 | 0;
var $14 = HEAP32[$13 >> 2];
var $15 = $this + 16 + ($14 << 3) | 0;
HEAP8[$8] = 0;
HEAP8[$10] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($12, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
var $16 = ($14 | 0) > 1;
if ($16) {
label = 4;
break;
} else {
label = 12;
break;
}
case 4:
var $17 = $this + 24 | 0;
var $18 = $info + 24 | 0;
var $19 = $this + 8 | 0;
var $20 = $info + 54 | 0;
var $p_0 = $17;
label = 5;
break;
case 5:
var $p_0;
var $22 = HEAP8[$20];
var $23 = $22 << 24 >> 24 == 0;
if ($23) {
label = 6;
break;
} else {
label = 12;
break;
}
case 6:
var $25 = HEAP8[$8];
var $26 = $25 << 24 >> 24 == 0;
if ($26) {
label = 9;
break;
} else {
label = 7;
break;
}
case 7:
var $28 = HEAP32[$18 >> 2];
var $29 = ($28 | 0) == 1;
if ($29) {
label = 12;
break;
} else {
label = 8;
break;
}
case 8:
var $31 = HEAP32[$19 >> 2];
var $32 = $31 & 2;
var $33 = ($32 | 0) == 0;
if ($33) {
label = 12;
break;
} else {
label = 11;
break;
}
case 9:
var $35 = HEAP8[$10];
var $36 = $35 << 24 >> 24 == 0;
if ($36) {
label = 11;
break;
} else {
label = 10;
break;
}
case 10:
var $38 = HEAP32[$19 >> 2];
var $39 = $38 & 1;
var $40 = ($39 | 0) == 0;
if ($40) {
label = 12;
break;
} else {
label = 11;
break;
}
case 11:
HEAP8[$8] = 0;
HEAP8[$10] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p_0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
var $42 = $p_0 + 8 | 0;
var $43 = $42 >>> 0 < $15 >>> 0;
if ($43) {
var $p_0 = $42;
label = 5;
break;
} else {
label = 12;
break;
}
case 12:
HEAP8[$8] = $9;
HEAP8[$10] = $11;
label = 13;
break;
case 13:
return;
default:
assert(0, "bad label: " + label);
}
}
function _init_mparams() {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = HEAP32[(8 | 0) >> 2];
var $2 = ($1 | 0) == 0;
if ($2) {
label = 2;
break;
} else {
label = 5;
break;
}
case 2:
var $4 = _sysconf(8);
var $5 = $4 - 1 | 0;
var $6 = $5 & $4;
var $7 = ($6 | 0) == 0;
if ($7) {
label = 4;
break;
} else {
label = 3;
break;
}
case 3:
_abort();
throw "Reached an unreachable!";
case 4:
HEAP32[(16 | 0) >> 2] = $4;
HEAP32[(12 | 0) >> 2] = $4;
HEAP32[(20 | 0) >> 2] = -1;
HEAP32[(24 | 0) >> 2] = 2097152;
HEAP32[(28 | 0) >> 2] = 0;
HEAP32[(860 | 0) >> 2] = 0;
var $10 = _time(0);
var $11 = $10 & -16;
var $12 = $11 ^ 1431655768;
HEAP32[(8 | 0) >> 2] = $12;
label = 5;
break;
case 5:
return;
default:
assert(0, "bad label: " + label);
}
}
function ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_($fn, $args, $args1, $args2) {
var label = 0;
var __stackBase__ = STACKTOP;
STACKTOP = STACKTOP + 16 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
label = 1;
while (1) switch (label) {
case 1:
var $1 = __stackBase__;
var $2 = $args2 + 4 | 0;
var $3 = $args2 | 0;
var $4 = HEAP32[$3 >> 2];
var $5 = ($4 | 0) == -1;
if ($5) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
___assert_func(200 | 0, 1014, 888 | 0, 304 | 0);
throw "Reached an unreachable!";
case 3:
var $8 = $4 >>> 0 < 11;
if ($8) {
label = 4;
break;
} else {
label = 5;
break;
}
case 4:
var $10 = $4 << 1;
var $11 = $10 & 255;
var $12 = $1;
HEAP8[$12] = $11;
var $13 = $1;
var $14 = $13 + 1 | 0;
var $__p_0_i = $14;
var $_pre_phi = $12;
label = 6;
break;
case 5:
var $15 = $4 + 16 | 0;
var $16 = $15 & -16;
var $17 = __Znwj($16);
var $18 = $1 + 8 | 0;
HEAP32[$18 >> 2] = $17;
var $19 = $16 | 1;
var $20 = $1 | 0;
HEAP32[$20 >> 2] = $19;
var $21 = $1 + 4 | 0;
HEAP32[$21 >> 2] = $4;
var $_pre = $1;
var $__p_0_i = $17;
var $_pre_phi = $_pre;
label = 6;
break;
case 6:
var $_pre_phi;
var $__p_0_i;
assert($4 % 1 === 0);
_memcpy($__p_0_i, $2, $4);
var $22 = $__p_0_i + $4 | 0;
HEAP8[$22] = 0;
FUNCTION_TABLE[$fn]($args, $args1, $1);
var $23 = HEAP8[$_pre_phi];
var $24 = $23 & 1;
var $25 = $24 << 24 >> 24 == 0;
if ($25) {
label = 8;
break;
} else {
label = 7;
break;
}
case 7:
var $27 = $1 + 8 | 0;
var $28 = HEAP32[$27 >> 2];
__ZdlPv($28);
label = 8;
break;
case 8:
STACKTOP = __stackBase__;
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $0) {
var label = 0;
var $2 = $this | 0;
var $3 = $thrown_type | 0;
var $4 = ($2 | 0) == ($3 | 0);
return $4;
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 5;
break;
}
case 2:
var $7 = $info + 4 | 0;
var $8 = HEAP32[$7 >> 2];
var $9 = ($8 | 0) == ($current_ptr | 0);
if ($9) {
label = 3;
break;
} else {
label = 43;
break;
}
case 3:
var $11 = $info + 28 | 0;
var $12 = HEAP32[$11 >> 2];
var $13 = ($12 | 0) == 1;
if ($13) {
label = 43;
break;
} else {
label = 4;
break;
}
case 4:
HEAP32[$11 >> 2] = $path_below;
label = 43;
break;
case 5:
var $16 = $info | 0;
var $17 = HEAP32[$16 >> 2];
var $18 = $17 | 0;
var $19 = ($1 | 0) == ($18 | 0);
if ($19) {
label = 6;
break;
} else {
label = 27;
break;
}
case 6:
var $21 = $info + 16 | 0;
var $22 = HEAP32[$21 >> 2];
var $23 = ($22 | 0) == ($current_ptr | 0);
if ($23) {
label = 8;
break;
} else {
label = 7;
break;
}
case 7:
var $25 = $info + 20 | 0;
var $26 = HEAP32[$25 >> 2];
var $27 = ($26 | 0) == ($current_ptr | 0);
if ($27) {
label = 8;
break;
} else {
label = 10;
break;
}
case 8:
var $29 = ($path_below | 0) == 1;
if ($29) {
label = 9;
break;
} else {
label = 43;
break;
}
case 9:
var $31 = $info + 32 | 0;
HEAP32[$31 >> 2] = 1;
label = 43;
break;
case 10:
var $33 = $info + 32 | 0;
HEAP32[$33 >> 2] = $path_below;
var $34 = $info + 44 | 0;
var $35 = HEAP32[$34 >> 2];
var $36 = ($35 | 0) == 4;
if ($36) {
label = 43;
break;
} else {
label = 11;
break;
}
case 11:
var $38 = $this + 12 | 0;
var $39 = HEAP32[$38 >> 2];
var $40 = $this + 16 + ($39 << 3) | 0;
var $41 = ($39 | 0) > 0;
if ($41) {
label = 12;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off093 = 0;
label = 21;
break;
}
case 12:
var $42 = $this + 16 | 0;
var $43 = $info + 52 | 0;
var $44 = $info + 53 | 0;
var $45 = $info + 54 | 0;
var $46 = $this + 8 | 0;
var $47 = $info + 24 | 0;
var $does_dst_type_point_to_our_static_type_0_off082 = 0;
var $p_083 = $42;
var $is_dst_type_derived_from_static_type_0_off084 = 0;
label = 13;
break;
case 13:
var $is_dst_type_derived_from_static_type_0_off084;
var $p_083;
var $does_dst_type_point_to_our_static_type_0_off082;
HEAP8[$43] = 0;
HEAP8[$44] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p_083, $info, $current_ptr, $current_ptr, 1, $use_strcmp);
var $49 = HEAP8[$45];
var $50 = $49 << 24 >> 24 == 0;
if ($50) {
label = 14;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off0 = $is_dst_type_derived_from_static_type_0_off084;
var $does_dst_type_point_to_our_static_type_0_off0_lcssa = $does_dst_type_point_to_our_static_type_0_off082;
label = 20;
break;
}
case 14:
var $52 = HEAP8[$44];
var $53 = $52 << 24 >> 24 == 0;
if ($53) {
var $is_dst_type_derived_from_static_type_1_off0 = $is_dst_type_derived_from_static_type_0_off084;
var $does_dst_type_point_to_our_static_type_1_off0 = $does_dst_type_point_to_our_static_type_0_off082;
label = 19;
break;
} else {
label = 15;
break;
}
case 15:
var $55 = HEAP8[$43];
var $56 = $55 << 24 >> 24 == 0;
if ($56) {
label = 18;
break;
} else {
label = 16;
break;
}
case 16:
var $58 = HEAP32[$47 >> 2];
var $59 = ($58 | 0) == 1;
if ($59) {
label = 25;
break;
} else {
label = 17;
break;
}
case 17:
var $61 = HEAP32[$46 >> 2];
var $62 = $61 & 2;
var $63 = ($62 | 0) == 0;
if ($63) {
label = 25;
break;
} else {
var $is_dst_type_derived_from_static_type_1_off0 = 1;
var $does_dst_type_point_to_our_static_type_1_off0 = 1;
label = 19;
break;
}
case 18:
var $65 = HEAP32[$46 >> 2];
var $66 = $65 & 1;
var $67 = ($66 | 0) == 0;
if ($67) {
var $is_dst_type_derived_from_static_type_2_off0 = 1;
var $does_dst_type_point_to_our_static_type_0_off0_lcssa = $does_dst_type_point_to_our_static_type_0_off082;
label = 20;
break;
} else {
var $is_dst_type_derived_from_static_type_1_off0 = 1;
var $does_dst_type_point_to_our_static_type_1_off0 = $does_dst_type_point_to_our_static_type_0_off082;
label = 19;
break;
}
case 19:
var $does_dst_type_point_to_our_static_type_1_off0;
var $is_dst_type_derived_from_static_type_1_off0;
var $69 = $p_083 + 8 | 0;
var $70 = $69 >>> 0 < $40 >>> 0;
if ($70) {
var $does_dst_type_point_to_our_static_type_0_off082 = $does_dst_type_point_to_our_static_type_1_off0;
var $p_083 = $69;
var $is_dst_type_derived_from_static_type_0_off084 = $is_dst_type_derived_from_static_type_1_off0;
label = 13;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off0 = $is_dst_type_derived_from_static_type_1_off0;
var $does_dst_type_point_to_our_static_type_0_off0_lcssa = $does_dst_type_point_to_our_static_type_1_off0;
label = 20;
break;
}
case 20:
var $does_dst_type_point_to_our_static_type_0_off0_lcssa;
var $is_dst_type_derived_from_static_type_2_off0;
if ($does_dst_type_point_to_our_static_type_0_off0_lcssa) {
var $is_dst_type_derived_from_static_type_2_off094 = $is_dst_type_derived_from_static_type_2_off0;
label = 24;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off093 = $is_dst_type_derived_from_static_type_2_off0;
label = 21;
break;
}
case 21:
var $is_dst_type_derived_from_static_type_2_off093;
HEAP32[$25 >> 2] = $current_ptr;
var $71 = $info + 40 | 0;
var $72 = HEAP32[$71 >> 2];
var $73 = $72 + 1 | 0;
HEAP32[$71 >> 2] = $73;
var $74 = $info + 36 | 0;
var $75 = HEAP32[$74 >> 2];
var $76 = ($75 | 0) == 1;
if ($76) {
label = 22;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off094 = $is_dst_type_derived_from_static_type_2_off093;
label = 24;
break;
}
case 22:
var $78 = $info + 24 | 0;
var $79 = HEAP32[$78 >> 2];
var $80 = ($79 | 0) == 2;
if ($80) {
label = 23;
break;
} else {
var $is_dst_type_derived_from_static_type_2_off094 = $is_dst_type_derived_from_static_type_2_off093;
label = 24;
break;
}
case 23:
var $82 = $info + 54 | 0;
HEAP8[$82] = 1;
if ($is_dst_type_derived_from_static_type_2_off093) {
label = 25;
break;
} else {
label = 26;
break;
}
case 24:
var $is_dst_type_derived_from_static_type_2_off094;
if ($is_dst_type_derived_from_static_type_2_off094) {
label = 25;
break;
} else {
label = 26;
break;
}
case 25:
HEAP32[$34 >> 2] = 3;
label = 43;
break;
case 26:
HEAP32[$34 >> 2] = 4;
label = 43;
break;
case 27:
var $86 = $this + 16 | 0;
var $87 = $this + 12 | 0;
var $88 = HEAP32[$87 >> 2];
var $89 = $this + 16 + ($88 << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($86, $info, $current_ptr, $path_below, $use_strcmp);
var $90 = $this + 24 | 0;
var $91 = ($88 | 0) > 1;
if ($91) {
label = 28;
break;
} else {
label = 43;
break;
}
case 28:
var $93 = $this + 8 | 0;
var $94 = HEAP32[$93 >> 2];
var $95 = $94 & 2;
var $96 = ($95 | 0) == 0;
if ($96) {
label = 29;
break;
} else {
label = 30;
break;
}
case 29:
var $98 = $info + 36 | 0;
var $99 = HEAP32[$98 >> 2];
var $100 = ($99 | 0) == 1;
if ($100) {
label = 30;
break;
} else {
label = 33;
break;
}
case 30:
var $101 = $info + 54 | 0;
var $p2_0 = $90;
label = 31;
break;
case 31:
var $p2_0;
var $103 = HEAP8[$101];
var $104 = $103 << 24 >> 24 == 0;
if ($104) {
label = 32;
break;
} else {
label = 43;
break;
}
case 32:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2_0, $info, $current_ptr, $path_below, $use_strcmp);
var $106 = $p2_0 + 8 | 0;
var $107 = $106 >>> 0 < $89 >>> 0;
if ($107) {
var $p2_0 = $106;
label = 31;
break;
} else {
label = 43;
break;
}
case 33:
var $109 = $94 & 1;
var $110 = ($109 | 0) == 0;
if ($110) {
label = 35;
break;
} else {
label = 34;
break;
}
case 34:
var $111 = $info + 24 | 0;
var $112 = $info + 54 | 0;
var $p2_1 = $90;
label = 36;
break;
case 35:
var $113 = $info + 54 | 0;
var $p2_2 = $90;
label = 40;
break;
case 36:
var $p2_1;
var $115 = HEAP8[$112];
var $116 = $115 << 24 >> 24 == 0;
if ($116) {
label = 37;
break;
} else {
label = 43;
break;
}
case 37:
var $118 = HEAP32[$98 >> 2];
var $119 = ($118 | 0) == 1;
if ($119) {
label = 38;
break;
} else {
label = 39;
break;
}
case 38:
var $121 = HEAP32[$111 >> 2];
var $122 = ($121 | 0) == 1;
if ($122) {
label = 43;
break;
} else {
label = 39;
break;
}
case 39:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2_1, $info, $current_ptr, $path_below, $use_strcmp);
var $124 = $p2_1 + 8 | 0;
var $125 = $124 >>> 0 < $89 >>> 0;
if ($125) {
var $p2_1 = $124;
label = 36;
break;
} else {
label = 43;
break;
}
case 40:
var $p2_2;
var $127 = HEAP8[$113];
var $128 = $127 << 24 >> 24 == 0;
if ($128) {
label = 41;
break;
} else {
label = 43;
break;
}
case 41:
var $130 = HEAP32[$98 >> 2];
var $131 = ($130 | 0) == 1;
if ($131) {
label = 43;
break;
} else {
label = 42;
break;
}
case 42:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2_2, $info, $current_ptr, $path_below, $use_strcmp);
var $133 = $p2_2 + 8 | 0;
var $134 = $133 >>> 0 < $89 >>> 0;
if ($134) {
var $p2_2 = $133;
label = 40;
break;
} else {
label = 43;
break;
}
case 43:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
var label = 0;
label = 1;
while (1) switch (label) {
case 1:
var $1 = $this | 0;
var $2 = $info + 8 | 0;
var $3 = HEAP32[$2 >> 2];
var $4 = $3 | 0;
var $5 = ($1 | 0) == ($4 | 0);
if ($5) {
label = 2;
break;
} else {
label = 3;
break;
}
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($info, $adjustedPtr, $path_below);
label = 7;
break;
case 3:
var $8 = $this + 16 | 0;
var $9 = $this + 12 | 0;
var $10 = HEAP32[$9 >> 2];
var $11 = $this + 16 + ($10 << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($8, $info, $adjustedPtr, $path_below);
var $12 = ($10 | 0) > 1;
if ($12) {
label = 4;
break;
} else {
label = 7;
break;
}
case 4:
var $13 = $this + 24 | 0;
var $14 = $info + 54 | 0;
var $p_0 = $13;
label = 5;
break;
case 5:
var $p_0;
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($p_0, $info, $adjustedPtr, $path_below);
var $16 = HEAP8[$14];
var $17 = $16 << 24 >> 24 == 0;
if ($17) {
label = 6;
break;
} else {
label = 7;
break;
}
case 6:
var $19 = $p_0 + 8 | 0;
var $20 = $19 >>> 0 < $11 >>> 0;
if ($20) {
var $p_0 = $19;
label = 5;
break;
} else {
label = 7;
break;
}
case 7:
return;
default:
assert(0, "bad label: " + label);
}
}
function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $adjustedPtr) {
var label = 0;
var __stackBase__ = STACKTOP;
STACKTOP = STACKTOP + 112 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
label = 1;
while (1) switch (label) {
case 1:
var $info_i = __stackBase__;
var $info = __stackBase__ + 56;
var $1 = $this | 0;
var $2 = $thrown_type | 0;
var $3 = ($1 | 0) == ($2 | 0);
if ($3) {
var $_0 = 1;
label = 17;
break;
} else {
label = 2;
break;
}
case 2:
var $5 = ($thrown_type | 0) == 0;
if ($5) {
var $_0 = 0;
label = 17;
break;
} else {
label = 3;
break;
}
case 3:
var $7 = $thrown_type;
var $8 = $info_i;
var $9 = $thrown_type;
var $10 = HEAP32[$9 >> 2];
var $11 = $10 - 8 | 0;
var $12 = HEAP32[$11 >> 2];
var $13 = $12;
var $14 = $7 + $13 | 0;
var $15 = $10 - 4 | 0;
var $16 = HEAP32[$15 >> 2];
var $17 = $16;
var $18 = $info_i | 0;
HEAP32[$18 >> 2] = 1744;
var $19 = $info_i + 4 | 0;
HEAP32[$19 >> 2] = $7;
var $20 = $info_i + 8 | 0;
HEAP32[$20 >> 2] = 1760;
var $21 = $info_i + 12 | 0;
HEAP32[$21 >> 2] = -1;
var $22 = $info_i + 16 | 0;
var $23 = $info_i + 20 | 0;
var $24 = $info_i + 24 | 0;
var $25 = $info_i + 28 | 0;
var $26 = $info_i + 32 | 0;
var $27 = $info_i + 40 | 0;
var $28 = ($16 | 0) == 1744;
var $29 = $22;
_memset($29, 0, 39);
if ($28) {
label = 4;
break;
} else {
label = 5;
break;
}
case 4:
var $31 = $info_i + 48 | 0;
HEAP32[$31 >> 2] = 1;
var $32 = HEAP32[1744 >> 2];
var $33 = $32 + 20 | 0;
var $34 = HEAP32[$33 >> 2];
FUNCTION_TABLE[$34]($17, $info_i, $14, $14, 1, 0);
var $35 = HEAP32[$24 >> 2];
var $36 = ($35 | 0) == 1;
var $__i = $36 ? $14 : 0;
var $68 = $__i;
label = 14;
break;
case 5:
var $38 = $info_i + 36 | 0;
var $39 = $16;
var $40 = HEAP32[$39 >> 2];
var $41 = $40 + 24 | 0;
var $42 = HEAP32[$41 >> 2];
FUNCTION_TABLE[$42]($17, $info_i, $14, 1, 0);
var $43 = HEAP32[$38 >> 2];
if (($43 | 0) == 0) {
label = 6;
break;
} else if (($43 | 0) == 1) {
label = 9;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 6:
var $45 = HEAP32[$27 >> 2];
var $46 = ($45 | 0) == 1;
if ($46) {
label = 7;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 7:
var $48 = HEAP32[$25 >> 2];
var $49 = ($48 | 0) == 1;
if ($49) {
label = 8;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 8:
var $51 = HEAP32[$26 >> 2];
var $52 = ($51 | 0) == 1;
var $53 = HEAP32[$23 >> 2];
var $_13_i = $52 ? $53 : 0;
var $68 = $_13_i;
label = 14;
break;
case 9:
var $55 = HEAP32[$24 >> 2];
var $56 = ($55 | 0) == 1;
if ($56) {
label = 13;
break;
} else {
label = 10;
break;
}
case 10:
var $58 = HEAP32[$27 >> 2];
var $59 = ($58 | 0) == 0;
if ($59) {
label = 11;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 11:
var $61 = HEAP32[$25 >> 2];
var $62 = ($61 | 0) == 1;
if ($62) {
label = 12;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 12:
var $64 = HEAP32[$26 >> 2];
var $65 = ($64 | 0) == 1;
if ($65) {
label = 13;
break;
} else {
var $68 = 0;
label = 14;
break;
}
case 13:
var $67 = HEAP32[$22 >> 2];
var $68 = $67;
label = 14;
break;
case 14:
var $68;
var $69 = $68;
var $70 = ($68 | 0) == 0;
if ($70) {
var $_0 = 0;
label = 17;
break;
} else {
label = 15;
break;
}
case 15:
var $72 = $info;
_memset($72, 0, 56);
var $73 = $info | 0;
HEAP32[$73 >> 2] = $69;
var $74 = $info + 8 | 0;
HEAP32[$74 >> 2] = $this;
var $75 = $info + 12 | 0;
HEAP32[$75 >> 2] = -1;
var $76 = $info + 48 | 0;
HEAP32[$76 >> 2] = 1;
var $77 = $68;
var $78 = HEAP32[$77 >> 2];
var $79 = $78 + 28 | 0;
var $80 = HEAP32[$79 >> 2];
var $81 = HEAP32[$adjustedPtr >> 2];
FUNCTION_TABLE[$80]($69, $info, $81, 1);
var $82 = $info + 24 | 0;
var $83 = HEAP32[$82 >> 2];
var $84 = ($83 | 0) == 1;
if ($84) {
label = 16;
break;
} else {
var $_0 = 0;
label = 17;
break;
}
case 16:
var $86 = $info + 16 | 0;
var $87 = HEAP32[$86 >> 2];
HEAP32[$adjustedPtr >> 2] = $87;
var $_0 = 1;
label = 17;
break;
case 17:
var $_0;
STACKTOP = __stackBase__;
return $_0;
default:
assert(0, "bad label: " + label);
}
}
function __GLOBAL__I_a() {
var label = 0;
var __stackBase__ = STACKTOP;
STACKTOP = STACKTOP + 24 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
var $args_i_i_i = __stackBase__;
var $1 = $args_i_i_i;
var $2 = $args_i_i_i | 0;
HEAP32[$2 >> 2] = 4;
var $3 = $args_i_i_i + 4 | 0;
HEAP32[$3 >> 2] = 1600;
var $4 = $args_i_i_i + 8 | 0;
HEAP32[$4 >> 2] = __ZTIi;
var $5 = $args_i_i_i + 12 | 0;
HEAP32[$5 >> 2] = __ZTIf;
var $6 = $args_i_i_i + 16 | 0;
HEAP32[$6 >> 2] = 1656;
__embind_register_function(360 | 0, 4, $3, 32, 26);
STACKTOP = __stackBase__;
return;
}
function __GLOBAL__I_a7() {
var label = 0;
__embind_register_void(1600, 136 | 0);
__embind_register_bool(1608, 288 | 0, 1, 0);
__embind_register_integer(__ZTIc, 128 | 0, -128, 127);
__embind_register_integer(__ZTIa, 112 | 0, -128, 127);
__embind_register_integer(__ZTIh, 96 | 0, 0, 255);
__embind_register_integer(__ZTIs, 88 | 0, -32768, 32767);
__embind_register_integer(__ZTIt, 72 | 0, 0, 65535);
__embind_register_integer(__ZTIi, 64 | 0, -2147483648, 2147483647);
__embind_register_integer(__ZTIj, 48 | 0, 0, -1);
__embind_register_integer(__ZTIl, 40 | 0, -2147483648, 2147483647);
__embind_register_integer(__ZTIm, 344 | 0, 0, -1);
__embind_register_float(__ZTIf, 336 | 0);
__embind_register_float(__ZTId, 296 | 0);
__embind_register_std_string(1656, 272 | 0);
__embind_register_std_wstring(1632, 4, 184 | 0);
__embind_register_emval(1680, 168 | 0);
__embind_register_memory_view(1688, 144 | 0);
return;
}
var i64Math = null;
Module.callMain = function callMain(args) {
assert(runDependencies == 0, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
assert(!Module["preRun"] || Module["preRun"].length == 0, "cannot call main when preRun functions remain to be called");
args = args || [];
ensureInitRuntime();
var argc = args.length + 1;
function pad() {
for (var i = 0; i < 4 - 1; i++) {
argv.push(0);
}
}
var argv = [ allocate(intArrayFromString("/bin/this.program"), "i8", ALLOC_NORMAL) ];
pad();
for (var i = 0; i < argc - 1; i = i + 1) {
argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL));
pad();
}
argv.push(0);
argv = allocate(argv, "i32", ALLOC_NORMAL);
var ret;
var initialStackTop = STACKTOP;
try {
ret = Module["_main"](argc, argv, 0);
} catch (e) {
if (e.name == "ExitStatus") {
return e.status;
} else if (e == "SimulateInfiniteLoop") {
Module["noExitRuntime"] = true;
} else {
throw e;
}
} finally {
STACKTOP = initialStackTop;
}
return ret;
};
function run(args) {
args = args || Module["arguments"];
if (runDependencies > 0) {
Module.printErr("run() called, but dependencies remain, so not running");
return 0;
}
if (Module["preRun"]) {
if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
var toRun = Module["preRun"];
Module["preRun"] = [];
for (var i = toRun.length - 1; i >= 0; i--) {
toRun[i]();
}
if (runDependencies > 0) {
return 0;
}
}
function doRun() {
ensureInitRuntime();
preMain();
var ret = 0;
calledRun = true;
if (Module["_main"] && shouldRunNow) {
ret = Module.callMain(args);
if (!Module["noExitRuntime"]) {
exitRuntime();
}
}
if (Module["postRun"]) {
if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ];
while (Module["postRun"].length > 0) {
Module["postRun"].pop()();
}
}
return ret;
}
if (Module["setStatus"]) {
Module["setStatus"]("Running...");
setTimeout((function() {
setTimeout((function() {
Module["setStatus"]("");
}), 1);
doRun();
}), 1);
return 0;
} else {
return doRun();
}
}
Module["run"] = Module.run = run;
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;
}
run();
var Module = Module || {}, _emval_handle_array = [{}], _emval_free_list = [];
Module.count_emval_handles = function() {
for(var b = 0, a = 1;a < _emval_handle_array.length;++a) {
void 0 !== _emval_handle_array[a] && ++b
}
return b
};
Module.get_first_emval = function() {
for(var b = 1;b < _emval_handle_array.length;++b) {
if(void 0 !== _emval_handle_array[b]) {
return _emval_handle_array[b]
}
}
return null
};
var _emval_symbols = {};
function __emval_register_symbol(b) {
_emval_symbols[b] = readLatin1String(b)
}
function getStringOrSymbol(b) {
var a = _emval_symbols[b];
return void 0 === a ? readLatin1String(b) : a
}
function requireHandle(b) {
b || throwBindingError("Cannot use deleted val. handle = " + b)
}
function __emval_register(b) {
var a = _emval_free_list.length ? _emval_free_list.pop() : _emval_handle_array.length;
_emval_handle_array[a] = {refcount:1, value:b};
return a
}
function __emval_incref(b) {
b && (_emval_handle_array[b].refcount += 1)
}
function __emval_decref(b) {
b && 0 === --_emval_handle_array[b].refcount && (_emval_handle_array[b] = void 0, _emval_free_list.push(b))
}
function __emval_new_array() {
return __emval_register([])
}
function __emval_new_object() {
return __emval_register({})
}
function __emval_undefined() {
return __emval_register(void 0)
}
function __emval_null() {
return __emval_register(null)
}
function __emval_new_cstring(b) {
return __emval_register(getStringOrSymbol(b))
}
function __emval_take_value(b, a) {
b = requireRegisteredType(b, "_emval_take_value");
a = b.fromWireType(a);
return __emval_register(a)
}
var __newers = {};
function craftEmvalAllocator(b) {
for(var a = ["requireRegisteredType", "HEAP32", "_emval_handle_array", "__emval_register"], c = [requireRegisteredType, HEAP32, _emval_handle_array, __emval_register], d = "", f = "", e = 0;e < b;++e) {
d += (0 !== e ? ", " : "") + "arg" + e, f += ", arg" + e + "Wired"
}
f = "return function emval_allocator_" + b + "(handle, argTypes " + f + ") {\n";
for(e = 0;e < b;++e) {
f += "var argType" + e + " = requireRegisteredType(HEAP32[(argTypes >> 2) + " + e + '], "parameter ' + e + '");\nvar arg' + e + " = argType" + e + ".fromWireType(arg" + e + "Wired);\n"
}
a.push(f + ("var constructor = _emval_handle_array[handle].value;\nvar obj = new constructor(" + d + ");\nreturn __emval_register(obj);\n}\n"));
return new_(Function, a).apply(null, c)
}
function __emval_new(b, a, c) {
requireHandle(b);
var d = __newers[a];
d || (d = craftEmvalAllocator(a), __newers[a] = d);
return 0 === a ? d(b, c) : 1 === a ? d(b, c, arguments[3]) : 2 === a ? d(b, c, arguments[3], arguments[4]) : 3 === a ? d(b, c, arguments[3], arguments[4], arguments[5]) : 4 === a ? d(b, c, arguments[3], arguments[4], arguments[5], arguments[6]) : d.apply(null, arguments.splice(1))
}
var global = function() {
return Function
}()("return this")();
function __emval_get_global(b) {
b = getStringOrSymbol(b);
return __emval_register(global[b])
}
function __emval_get_module_property(b) {
b = getStringOrSymbol(b);
return __emval_register(Module[b])
}
function __emval_get_property(b, a) {
requireHandle(b);
return __emval_register(_emval_handle_array[b].value[_emval_handle_array[a].value])
}
function __emval_set_property(b, a, c) {
requireHandle(b);
_emval_handle_array[b].value[_emval_handle_array[a].value] = _emval_handle_array[c].value
}
function __emval_as(b, a) {
requireHandle(b);
a = requireRegisteredType(a, "emval::as");
return a.toWireType([], _emval_handle_array[b].value)
}
function parseParameters(b, a, c) {
for(var d = Array(b), f = 0;f < b;++f) {
var e = requireRegisteredType(HEAP32[(a >> 2) + f], "parameter " + f);
d[f] = e.fromWireType(c[f])
}
return d
}
function __emval_call(b, a, c) {
requireHandle(b);
for(var d = lookupTypes(a, c), f = Array(a), e = 0;e < a;++e) {
f[e] = d[e].fromWireType(arguments[3 + e])
}
d = _emval_handle_array[b].value.apply(void 0, f);
return __emval_register(d)
}
function lookupTypes(b, a) {
for(var c = Array(b), d = 0;d < b;++d) {
c[d] = requireRegisteredType(HEAP32[(a >> 2) + d], "parameter " + d)
}
return c
}
function __emval_get_method_caller(b, a) {
for(var c = lookupTypes(b, a), d = c[0], f = d.name + "_$" + c.slice(1).map(function(a) {
return a.name
}).join("_") + "$", e = "Runtime createNamedFunction requireHandle getStringOrSymbol _emval_handle_array retType".split(" "), d = [Runtime, createNamedFunction, requireHandle, getStringOrSymbol, _emval_handle_array, d], g = "", h = "", i = 0;i < b - 1;++i) {
g += (0 !== i ? ", " : "") + "arg" + i, h += ", arg" + i + "Wired", e.push("argType" + i), d.push(c[1 + i])
}
c = "return Runtime.addFunction(createNamedFunction('" + f + "', function (handle, name" + h + ") {\nrequireHandle(handle);\nname = getStringOrSymbol(name);\n";
for(i = 0;i < b - 1;++i) {
c += "var arg" + i + " = argType" + i + ".fromWireType(arg" + i + "Wired);\n"
}
e.push(c + ("var obj = _emval_handle_array[handle].value;\nreturn retType.toWireType(null, obj[name](" + g + "));\n}));\n"));
return new_(Function, e).apply(null, d)
}
function __emval_has_function(b, a) {
a = getStringOrSymbol(a);
return _emval_handle_array[b].value[a] instanceof Function
}
var InternalError = Module.InternalError = extendError(Error, "InternalError"), BindingError = Module.BindingError = extendError(Error, "BindingError"), UnboundTypeError = Module.UnboundTypeError = extendError(BindingError, "UnboundTypeError");
function throwInternalError(b) {
throw new InternalError(b);
}
function throwBindingError(b) {
throw new BindingError(b);
}
function throwUnboundTypeError(b, a) {
function c(a) {
!f[a] && !registeredTypes[a] && (typeDependencies[a] ? typeDependencies[a].forEach(c) : (d.push(a), f[a] = !0))
}
var d = [], f = {};
a.forEach(c);
throw new UnboundTypeError(b + ": " + d.map(getTypeName).join([", "]));
}
function ensureOverloadTable(b, a, c) {
if(void 0 === b[a].overloadTable) {
var d = b[a];
b[a] = function() {
b[a].overloadTable.hasOwnProperty(arguments.length) || throwBindingError("Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + b[a].overloadTable + ")!");
return b[a].overloadTable[arguments.length].apply(this, arguments)
};
b[a].overloadTable = [];
b[a].overloadTable[d.argCount] = d
}
}
function exposePublicSymbol(b, a, c) {
Module.hasOwnProperty(b) ? ((void 0 === c || void 0 !== Module[b].overloadTable && void 0 !== Module[b].overloadTable[c]) && throwBindingError("Cannot register public name '" + b + "' twice"), ensureOverloadTable(Module, b, b), Module.hasOwnProperty(c) && throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + c + ")!"), Module[b].overloadTable[c] = a) : (Module[b] = a, void 0 !== c && (Module[b].numArguments = c))
}
function replacePublicSymbol(b, a, c) {
Module.hasOwnProperty(b) || throwInternalError("Replacing nonexistant public symbol");
void 0 !== Module[b].overloadTable && void 0 !== c ? Module[b].overloadTable[c] = a : Module[b] = a
}
function extendError(b, a) {
var c = createNamedFunction(a, function(b) {
this.name = a;
this.message = b;
b = Error(b).stack;
void 0 !== b && (this.stack = this.toString() + "\n" + b.replace(/^Error(:[^\n]*)?\n/, ""))
});
c.prototype = Object.create(b.prototype);
c.prototype.constructor = c;
c.prototype.toString = function() {
return void 0 === this.message ? this.name : this.name + ": " + this.message
};
return c
}
function createNamedFunction(b, a) {
b = makeLegalFunctionName(b);
return(new Function("body", "return function " + b + '() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(a)
}
function _embind_repr(b) {
var a = typeof b;
return"object" === a || "array" === a || "function" === a ? b.toString() : "" + b
}
var registeredTypes = {}, awaitingDependencies = {}, typeDependencies = {}, registeredPointers = {};
function registerType(b, a) {
var c = a.name;
b || throwBindingError('type "' + c + '" must have a positive integer typeid pointer');
registeredTypes.hasOwnProperty(b) && throwBindingError("Cannot register type '" + c + "' twice");
registeredTypes[b] = a;
delete typeDependencies[b];
awaitingDependencies.hasOwnProperty(b) && (c = awaitingDependencies[b], delete awaitingDependencies[b], c.forEach(function(a) {
a()
}))
}
function whenDependentTypesAreResolved(b, a, c) {
function d(a) {
a = c(a);
a.length !== b.length && throwInternalError("Mismatched type converter count");
for(var d = 0;d < b.length;++d) {
registerType(b[d], a[d])
}
}
b.forEach(function(b) {
typeDependencies[b] = a
});
var f = Array(a.length), e = [], g = 0;
a.forEach(function(a, b) {
registeredTypes.hasOwnProperty(a) ? f[b] = registeredTypes[a] : (e.push(a), awaitingDependencies.hasOwnProperty(a) || (awaitingDependencies[a] = []), awaitingDependencies[a].push(function() {
f[b] = registeredTypes[a];
++g;
g === e.length && d(f)
}))
});
0 === e.length && d(f)
}
var __charCodes = function() {
for(var b = Array(256), a = 0;256 > a;++a) {
b[a] = String.fromCharCode(a)
}
return b
}();
function readLatin1String(b) {
for(var a = "";HEAPU8[b];) {
a += __charCodes[HEAPU8[b++]]
}
return a
}
function getTypeName(b) {
var b = ___getTypeName(b), a = readLatin1String(b);
_free(b);
return a
}
function heap32VectorToArray(b, a) {
for(var c = [], d = 0;d < b;d++) {
c.push(HEAP32[(a >> 2) + d])
}
return c
}
function requireRegisteredType(b, a) {
var c = registeredTypes[b];
void 0 === c && throwBindingError(a + " has unknown type " + getTypeName(b));
return c
}
function __embind_register_void(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function() {
}, toWireType:function() {
}})
}
function __embind_register_bool(b, a, c, d) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return!!a
}, toWireType:function(a, b) {
return b ? c : d
}, destructorFunction:null})
}
function __embind_register_integer(b, a, c, d) {
a = readLatin1String(a);
-1 === d && (d = 4294967295);
registerType(b, {name:a, minRange:c, maxRange:d, fromWireType:function(a) {
return a
}, toWireType:function(b, e) {
if("number" !== typeof e && "boolean" !== typeof e) {
throw new TypeError('Cannot convert "' + _embind_repr(e) + '" to ' + this.name);
}
if(e < c || e > d) {
throw new TypeError('Passing a number "' + _embind_repr(e) + '" from JS side to C/C++ side to an argument of type "' + a + '", which is outside the valid range [' + c + ", " + d + "]!");
}
return e | 0
}, destructorFunction:null})
}
function __embind_register_float(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return a
}, toWireType:function(a, b) {
if("number" !== typeof b && "boolean" !== typeof b) {
throw new TypeError('Cannot convert "' + _embind_repr(b) + '" to ' + this.name);
}
return b
}, destructorFunction:null})
}
function __embind_register_std_string(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
for(var b = HEAPU32[a >> 2], f = Array(b), e = 0;e < b;++e) {
f[e] = String.fromCharCode(HEAPU8[a + 4 + e])
}
_free(a);
return f.join("")
}, toWireType:function(a, b) {
function f(a, b) {
return a[b]
}
function e(a, b) {
return a.charCodeAt(b)
}
b instanceof ArrayBuffer && (b = new Uint8Array(b));
var g;
b instanceof Uint8Array ? g = f : b instanceof Int8Array ? g = f : "string" === typeof b ? g = e : throwBindingError("Cannot pass non-string to std::string");
var h = b.length, i = _malloc(4 + h);
HEAPU32[i >> 2] = h;
for(var j = 0;j < h;++j) {
var k = g(b, j);
255 < k && (_free(i), throwBindingError("String has UTF-16 code units that do not fit in 8 bits"));
HEAPU8[i + 4 + j] = k
}
null !== a && a.push(_free, i);
return i
}, destructorFunction:function(a) {
_free(a)
}})
}
function __embind_register_std_wstring(b, a, c) {
var c = readLatin1String(c), d, f;
2 === a ? (d = HEAPU16, f = 1) : 4 === a && (d = HEAPU32, f = 2);
registerType(b, {name:c, fromWireType:function(a) {
for(var b = HEAPU32[a >> 2], c = Array(b), i = a + 4 >> f, j = 0;j < b;++j) {
c[j] = String.fromCharCode(d[i + j])
}
_free(a);
return c.join("")
}, toWireType:function(b, c) {
var h = c.length, i = _malloc(4 + h * a);
HEAPU32[i >> 2] = h;
for(var j = i + 4 >> f, k = 0;k < h;++k) {
d[j + k] = c.charCodeAt(k)
}
null !== b && b.push(_free, i);
return i
}, destructorFunction:function(a) {
_free(a)
}})
}
function __embind_register_emval(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
var b = _emval_handle_array[a].value;
__emval_decref(a);
return b
}, toWireType:function(a, b) {
return __emval_register(b)
}, destructorFunction:null})
}
function __embind_register_memory_view(b, a) {
var c = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return new c[HEAPU32[a >> 2]](HEAP8.buffer, HEAPU32[(a >> 2) + 2], HEAPU32[(a >> 2) + 1])
}})
}
function runDestructors(b) {
for(;b.length;) {
var a = b.pop();
b.pop()(a)
}
}
function new_(b, a) {
if(!(b instanceof Function)) {
throw new TypeError("new_ called with constructor type " + typeof b + " which is not a function");
}
var c = createNamedFunction(b.name, function() {
});
c.prototype = b.prototype;
var c = new c, d = b.apply(c, a);
return d instanceof Object ? d : c
}
function craftInvokerFunction(b, a, c, d, f) {
var e = a.length;
2 > e && throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");
var g = null !== a[1] && null !== c;
!g && !FUNCTION_TABLE[f] && throwBindingError("Global function " + b + " is not defined!");
for(var h = "", i = "", j = 0;j < e - 2;++j) {
h += (0 !== j ? ", " : "") + "arg" + j, i += (0 !== j ? ", " : "") + "arg" + j + "Wired"
}
for(var b = "return function " + makeLegalFunctionName(b) + "(" + h + ") {\nif (arguments.length !== " + (e - 2) + ") {\nthrowBindingError('function " + b + " called with ' + arguments.length + ' arguments, expected " + (e - 2) + " args!');\n}\n", k = !1, j = 1;j < a.length;++j) {
if(null !== a[j] && void 0 === a[j].destructorFunction) {
k = !0;
break
}
}
k && (b += "var destructors = [];\n");
var l = k ? "destructors" : "null", h = "throwBindingError classType invoker fn runDestructors retType classParam".split(" "), c = [throwBindingError, c, d, f, runDestructors, a[0], a[1]];
g && (b += "var thisWired = classParam.toWireType(" + l + ", this);\n");
for(j = 0;j < e - 2;++j) {
b += "var arg" + j + "Wired = argType" + j + ".toWireType(" + l + ", arg" + j + "); // " + a[j + 2].name + "\n", h.push("argType" + j), c.push(a[j + 2])
}
g && (i = "thisWired" + (0 < i.length ? ", " : "") + i);
e = "void" !== a[0].name;
b += (e ? "var rv = " : "") + "invoker(fn" + (0 < i.length ? ", " : "") + i + ");\n";
if(k) {
b += "runDestructors(destructors);\n"
}else {
for(j = g ? 1 : 2;j < a.length;++j) {
g = 1 === j ? "thisWired" : "arg" + (j - 2) + "Wired", null !== a[j].destructorFunction && (b += g + "_dtor(" + g + "); // " + a[j].name + "\n", h.push(g + "_dtor"), c.push(a[j].destructorFunction))
}
}
e && (b += "return retType.fromWireType(rv);\n");
h.push(b + "}\n");
return new_(Function, h).apply(null, c)
}
function __embind_register_function(b, a, c, d, f) {
var e = heap32VectorToArray(a, c), b = readLatin1String(b), d = FUNCTION_TABLE[d];
exposePublicSymbol(b, function() {
throwUnboundTypeError("Cannot call " + b + " due to unbound types", e)
}, a - 1);
whenDependentTypesAreResolved([], e, function(c) {
c = [c[0], null].concat(c.slice(1));
replacePublicSymbol(b, craftInvokerFunction(b, c, null, d, f), a - 1);
return[]
})
}
var tupleRegistrations = {};
function __embind_register_tuple(b, a, c, d) {
tupleRegistrations[b] = {name:readLatin1String(a), rawConstructor:FUNCTION_TABLE[c], rawDestructor:FUNCTION_TABLE[d], elements:[]}
}
function __embind_register_tuple_element(b, a, c, d, f, e, g) {
tupleRegistrations[b].elements.push({getterReturnType:a, getter:FUNCTION_TABLE[c], getterContext:d, setterArgumentType:f, setter:FUNCTION_TABLE[e], setterContext:g})
}
function __embind_finalize_tuple(b) {
var a = tupleRegistrations[b];
delete tupleRegistrations[b];
var c = a.elements, d = c.length, f = c.map(function(a) {
return a.getterReturnType
}).concat(c.map(function(a) {
return a.setterArgumentType
})), e = a.rawConstructor, g = a.rawDestructor;
whenDependentTypesAreResolved([b], f, function(b) {
c.forEach(function(a, c) {
var e = b[c], f = a.getter, g = a.getterContext, t = b[c + d], v = a.setter, q = a.setterContext;
a.read = function(a) {
return e.fromWireType(f(g, a))
};
a.write = function(a, b) {
var c = [];
v(q, a, t.toWireType(c, b));
runDestructors(c)
}
});
return[{name:a.name, fromWireType:function(a) {
for(var b = Array(d), e = 0;e < d;++e) {
b[e] = c[e].read(a)
}
g(a);
return b
}, toWireType:function(b, f) {
if(d !== f.length) {
throw new TypeError("Incorrect number of tuple elements for " + a.name + ": expected=" + d + ", actual=" + f.length);
}
for(var h = e(), l = 0;l < d;++l) {
c[l].write(h, f[l])
}
null !== b && b.push(g, h);
return h
}, destructorFunction:g}]
})
}
var structRegistrations = {};
function __embind_register_struct(b, a, c, d) {
structRegistrations[b] = {name:readLatin1String(a), rawConstructor:FUNCTION_TABLE[c], rawDestructor:FUNCTION_TABLE[d], fields:[]}
}
function __embind_register_struct_field(b, a, c, d, f, e, g, h) {
structRegistrations[b].fields.push({fieldName:readLatin1String(a), getterReturnType:c, getter:FUNCTION_TABLE[d], getterContext:f, setterArgumentType:e, setter:FUNCTION_TABLE[g], setterContext:h})
}
function __embind_finalize_struct(b) {
var a = structRegistrations[b];
delete structRegistrations[b];
var c = a.rawConstructor, d = a.rawDestructor, f = a.fields, e = f.map(function(a) {
return a.getterReturnType
}).concat(f.map(function(a) {
return a.setterArgumentType
}));
whenDependentTypesAreResolved([b], e, function(b) {
var e = {};
f.forEach(function(a, c) {
var d = b[c], l = a.getter, s = a.getterContext, t = b[c + f.length], v = a.setter, q = a.setterContext;
e[a.fieldName] = {read:function(a) {
return d.fromWireType(l(s, a))
}, write:function(a, b) {
var c = [];
v(q, a, t.toWireType(c, b));
runDestructors(c)
}}
});
return[{name:a.name, fromWireType:function(a) {
var b = {}, c;
for(c in e) {
b[c] = e[c].read(a)
}
d(a);
return b
}, toWireType:function(a, b) {
for(var f in e) {
if(!(f in b)) {
throw new TypeError("Missing field");
}
}
var g = c();
for(f in e) {
e[f].write(g, b[f])
}
null !== a && a.push(d, g);
return g
}, destructorFunction:d}]
})
}
var genericPointerToWireType = function(b, a) {
if(null === a) {
this.isReference && throwBindingError("null is not a valid " + this.name);
if(this.isSmartPointer) {
var c = this.rawConstructor();
null !== b && b.push(this.rawDestructor, c);
return c
}
return 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
!this.isConst && a.$$.ptrType.isConst && throwBindingError("Cannot convert argument of type " + (a.$$.smartPtrType ? a.$$.smartPtrType.name : a.$$.ptrType.name) + " to parameter type " + this.name);
c = upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass);
if(this.isSmartPointer) {
switch(void 0 === a.$$.smartPtr && throwBindingError("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) {
case 0:
a.$$.smartPtrType === this ? c = a.$$.smartPtr : throwBindingError("Cannot convert argument of type " + (a.$$.smartPtrType ? a.$$.smartPtrType.name : a.$$.ptrType.name) + " to parameter type " + this.name);
break;
case 1:
c = a.$$.smartPtr;
break;
case 2:
if(a.$$.smartPtrType === this) {
c = a.$$.smartPtr
}else {
var d = a.clone(), c = this.rawShare(c, __emval_register(function() {
d.delete()
}));
null !== b && b.push(this.rawDestructor, c)
}
break;
default:
throwBindingError("Unsupporting sharing policy")
}
}
return c
}, constNoSmartPtrRawPointerToWireType = function(b, a) {
if(null === a) {
return this.isReference && throwBindingError("null is not a valid " + this.name), 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
return upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass)
}, nonConstNoSmartPtrRawPointerToWireType = function(b, a) {
if(null === a) {
return this.isReference && throwBindingError("null is not a valid " + this.name), 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
a.$$.ptrType.isConst && throwBindingError("Cannot convert argument of type " + a.$$.ptrType.name + " to parameter type " + this.name);
return upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass)
};
function RegisteredPointer(b, a, c, d, f, e, g, h, i, j, k) {
this.name = b;
this.registeredClass = a;
this.isReference = c;
this.isConst = d;
this.isSmartPointer = f;
this.pointeeType = e;
this.sharingPolicy = g;
this.rawGetPointee = h;
this.rawConstructor = i;
this.rawShare = j;
this.rawDestructor = k;
!f && void 0 === a.baseClass ? (this.toWireType = d ? constNoSmartPtrRawPointerToWireType : nonConstNoSmartPtrRawPointerToWireType, this.destructorFunction = null) : this.toWireType = genericPointerToWireType
}
RegisteredPointer.prototype.getPointee = function(b) {
this.rawGetPointee && (b = this.rawGetPointee(b));
return b
};
RegisteredPointer.prototype.destructor = function(b) {
this.rawDestructor && this.rawDestructor(b)
};
RegisteredPointer.prototype.fromWireType = function(b) {
function a() {
return this.isSmartPointer ? makeClassHandle(this.registeredClass.instancePrototype, {ptrType:this.pointeeType, ptr:c, smartPtrType:this, smartPtr:b}) : makeClassHandle(this.registeredClass.instancePrototype, {ptrType:this, ptr:b})
}
var c = this.getPointee(b);
if(!c) {
return this.destructor(b), null
}
var d = this.registeredClass.getActualType(c), d = registeredPointers[d];
if(!d) {
return a.call(this)
}
var d = this.isConst ? d.constPointerType : d.pointerType, f = downcastPointer(c, this.registeredClass, d.registeredClass);
return null === f ? a.call(this) : this.isSmartPointer ? makeClassHandle(d.registeredClass.instancePrototype, {ptrType:d, ptr:f, smartPtrType:this, smartPtr:b}) : makeClassHandle(d.registeredClass.instancePrototype, {ptrType:d, ptr:f})
};
function makeClassHandle(b, a) {
(!a.ptrType || !a.ptr) && throwInternalError("makeClassHandle requires ptr and ptrType");
!!a.smartPtrType !== !!a.smartPtr && throwInternalError("Both smartPtrType and smartPtr must be specified");
a.count = {value:1};
return Object.create(b, {$$:{value:a}})
}
function ClassHandle() {
}
function getInstanceTypeName(b) {
return b.$$.ptrType.registeredClass.name
}
ClassHandle.prototype.isAliasOf = function(b) {
if(!(this instanceof ClassHandle) || !(b instanceof ClassHandle)) {
return!1
}
for(var a = this.$$.ptrType.registeredClass, c = this.$$.ptr, d = b.$$.ptrType.registeredClass, b = b.$$.ptr;a.baseClass;) {
c = a.upcast(c), a = a.baseClass
}
for(;d.baseClass;) {
b = d.upcast(b), d = d.baseClass
}
return a === d && c === b
};
function throwInstanceAlreadyDeleted(b) {
throwBindingError(getInstanceTypeName(b) + " instance already deleted")
}
ClassHandle.prototype.clone = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
var b = Object.create(Object.getPrototypeOf(this), {$$:{value:shallowCopy(this.$$)}});
b.$$.count.value += 1;
return b
};
function runDestructor(b) {
b = b.$$;
b.smartPtr ? b.smartPtrType.rawDestructor(b.smartPtr) : b.ptrType.registeredClass.rawDestructor(b.ptr)
}
ClassHandle.prototype["delete"] = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
this.$$.deleteScheduled && throwBindingError("Object already scheduled for deletion");
this.$$.count.value -= 1;
0 === this.$$.count.value && runDestructor(this);
this.$$.smartPtr = void 0;
this.$$.ptr = void 0
};
var deletionQueue = [];
ClassHandle.prototype.isDeleted = function() {
return!this.$$.ptr
};
ClassHandle.prototype.deleteLater = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
this.$$.deleteScheduled && throwBindingError("Object already scheduled for deletion");
deletionQueue.push(this);
1 === deletionQueue.length && delayFunction && delayFunction(flushPendingDeletes);
this.$$.deleteScheduled = !0;
return this
};
function flushPendingDeletes() {
for(;deletionQueue.length;) {
var b = deletionQueue.pop();
b.$$.deleteScheduled = !1;
b["delete"]()
}
}
Module.flushPendingDeletes = flushPendingDeletes;
var delayFunction;
Module.setDelayFunction = function(b) {
delayFunction = b;
deletionQueue.length && delayFunction && delayFunction(flushPendingDeletes)
};
function RegisteredClass(b, a, c, d, f, e, g, h) {
this.name = b;
this.constructor = a;
this.instancePrototype = c;
this.rawDestructor = d;
this.baseClass = f;
this.getActualType = e;
this.upcast = g;
this.downcast = h
}
function shallowCopy(b) {
var a = {}, c;
for(c in b) {
a[c] = b[c]
}
return a
}
function __embind_register_class(b, a, c, d, f, e, g, h, i) {
var h = readLatin1String(h), i = FUNCTION_TABLE[i], f = FUNCTION_TABLE[f], e = FUNCTION_TABLE[e], g = FUNCTION_TABLE[g], j = makeLegalFunctionName(h);
exposePublicSymbol(j, function() {
throwUnboundTypeError("Cannot construct " + h + " due to unbound types", [d])
});
whenDependentTypesAreResolved([b, a, c], d ? [d] : [], function(a) {
var a = a[0], c, s;
d ? (c = a.registeredClass, s = c.instancePrototype) : s = ClassHandle.prototype;
var a = createNamedFunction(j, function() {
if(Object.getPrototypeOf(this) !== t) {
throw new BindingError("Use 'new' to construct " + h);
}
if(void 0 === v.constructor_body) {
throw new BindingError(h + " has no accessible constructor");
}
var a = v.constructor_body[arguments.length];
if(void 0 === a) {
throw new BindingError("Tried to invoke ctor of " + h + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(v.constructor_body).toString() + ") parameters instead!");
}
return a.apply(this, arguments)
}), t = Object.create(s, {constructor:{value:a}});
a.prototype = t;
var v = new RegisteredClass(h, a, t, i, c, f, e, g);
c = new RegisteredPointer(h, v, !0, !1, !1);
s = new RegisteredPointer(h + "*", v, !1, !1, !1);
var q = new RegisteredPointer(h + " const*", v, !1, !0, !1);
registeredPointers[b] = {pointerType:s, constPointerType:q};
replacePublicSymbol(j, a);
return[c, s, q]
})
}
function __embind_register_class_constructor(b, a, c, d, f) {
var e = heap32VectorToArray(a, c), d = FUNCTION_TABLE[d];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], c = "constructor " + b.name;
void 0 === b.registeredClass.constructor_body && (b.registeredClass.constructor_body = []);
if(void 0 !== b.registeredClass.constructor_body[a - 1]) {
throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (a - 1) + ") for class '" + b.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
}
b.registeredClass.constructor_body[a - 1] = function() {
throwUnboundTypeError("Cannot construct " + b.name + " due to unbound types", e)
};
whenDependentTypesAreResolved([], e, function(e) {
b.registeredClass.constructor_body[a - 1] = function() {
arguments.length !== a - 1 && throwBindingError(c + " called with " + arguments.length + " arguments, expected " + (a - 1));
var b = [], g = Array(a);
g[0] = f;
for(var l = 1;l < a;++l) {
g[l] = e[l].toWireType(b, arguments[l - 1])
}
g = d.apply(null, g);
runDestructors(b);
return e[0].fromWireType(g)
};
return[]
});
return[]
})
}
function downcastPointer(b, a, c) {
return a === c ? b : void 0 === c.baseClass ? null : c.downcast(downcastPointer(b, a, c.baseClass))
}
function upcastPointer(b, a, c) {
for(;a !== c;) {
a.upcast || throwBindingError("Expected null or instance of " + c.name + ", got an instance of " + a.name), b = a.upcast(b), a = a.baseClass
}
return b
}
function validateThis(b, a, c) {
b instanceof Object || throwBindingError(c + ' with invalid "this": ' + b);
b instanceof a.registeredClass.constructor || throwBindingError(c + ' incompatible with "this" of type ' + b.constructor.name);
b.$$.ptr || throwBindingError("cannot call emscripten binding method " + c + " on deleted object");
return upcastPointer(b.$$.ptr, b.$$.ptrType.registeredClass, a.registeredClass)
}
function __embind_register_class_function(b, a, c, d, f, e) {
var g = heap32VectorToArray(c, d), a = readLatin1String(a), f = FUNCTION_TABLE[f];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], d = b.name + "." + a, j = function() {
throwUnboundTypeError("Cannot call " + d + " due to unbound types", g)
}, k = b.registeredClass.instancePrototype, l = k[a];
void 0 === l || void 0 === l.overloadTable && l.className !== b.name && l.argCount === c - 2 ? (j.argCount = c - 2, j.className = b.name, k[a] = j) : (ensureOverloadTable(k, a, d), k[a].overloadTable[c - 2] = j);
whenDependentTypesAreResolved([], g, function(g) {
g = craftInvokerFunction(d, g, b, f, e);
void 0 === k[a].overloadTable ? k[a] = g : k[a].overloadTable[c - 2] = g;
return[]
});
return[]
})
}
function __embind_register_class_class_function(b, a, c, d, f, e) {
var g = heap32VectorToArray(c, d), a = readLatin1String(a), f = FUNCTION_TABLE[f];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], d = b.name + "." + a, j = function() {
throwUnboundTypeError("Cannot call " + d + " due to unbound types", g)
}, k = b.registeredClass.constructor;
void 0 === k[a] ? (j.argCount = c - 1, k[a] = j) : (ensureOverloadTable(k, a, d), k[a].overloadTable[c - 1] = j);
whenDependentTypesAreResolved([], g, function(b) {
b = [b[0], null].concat(b.slice(1));
b = craftInvokerFunction(d, b, null, f, e);
void 0 === k[a].overloadTable ? k[a] = b : k[a].overloadTable[c - 1] = b;
return[]
});
return[]
})
}
function __embind_register_class_property(b, a, c, d, f, e, g, h) {
a = readLatin1String(a);
d = FUNCTION_TABLE[d];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], j = b.name + "." + a, k = {get:function() {
throwUnboundTypeError("Cannot access " + j + " due to unbound types", [c, e])
}, enumerable:!0, configurable:!0};
k.set = g ? function() {
throwUnboundTypeError("Cannot access " + j + " due to unbound types", [c, e])
} : function() {
throwBindingError(j + " is a read-only property")
};
Object.defineProperty(b.registeredClass.instancePrototype, a, k);
whenDependentTypesAreResolved([], g ? [c, e] : [c], function(c) {
var e = c[0], k = {get:function() {
var a = validateThis(this, b, j + " getter");
return e.fromWireType(d(f, a))
}, enumerable:!0};
if(g) {
g = FUNCTION_TABLE[g];
var v = c[1];
k.set = function(a) {
var c = validateThis(this, b, j + " setter"), d = [];
g(h, c, v.toWireType(d, a));
runDestructors(d)
}
}
Object.defineProperty(b.registeredClass.instancePrototype, a, k);
return[]
});
return[]
})
}
var char_0 = 48, char_9 = 57;
function makeLegalFunctionName(b) {
var b = b.replace(/[^a-zA-Z0-9_]/g, "$"), a = b.charCodeAt(0);
return a >= char_0 && a <= char_9 ? "_" + b : b
}
function __embind_register_smart_ptr(b, a, c, d, f, e, g, h) {
c = readLatin1String(c);
f = FUNCTION_TABLE[f];
e = FUNCTION_TABLE[e];
g = FUNCTION_TABLE[g];
h = FUNCTION_TABLE[h];
whenDependentTypesAreResolved([b], [a], function(a) {
a = a[0];
return[new RegisteredPointer(c, a.registeredClass, !1, !1, !0, a, d, f, e, g, h)]
})
}
function __embind_register_enum(b, a) {
function c() {
}
a = readLatin1String(a);
c.values = {};
registerType(b, {name:a, constructor:c, fromWireType:function(a) {
return this.constructor.values[a]
}, toWireType:function(a, b) {
return b.value
}, destructorFunction:null});
exposePublicSymbol(a, c)
}
function __embind_register_enum_value(b, a, c) {
var d = requireRegisteredType(b, "enum"), a = readLatin1String(a), b = d.constructor, d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:createNamedFunction(d.name + "_" + a, function() {
})}});
b.values[c] = d;
b[a] = d
}
function __embind_register_constant(b, a, c) {
b = readLatin1String(b);
whenDependentTypesAreResolved([], [a], function(a) {
a = a[0];
Module[b] = a.fromWireType(c);
return[]
})
}
try {
this.Module = Module
}catch(e$$10) {
this.Module = Module = {}
}
var ENVIRONMENT_IS_NODE = "object" === typeof process && "function" === typeof require, ENVIRONMENT_IS_WEB = "object" === typeof window, ENVIRONMENT_IS_WORKER = "function" === typeof importScripts, ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if(ENVIRONMENT_IS_NODE) {
Module.print = function(b) {
process.stdout.write(b + "\n")
};
Module.printErr = function(b) {
process.stderr.write(b + "\n")
};
var nodeFS = require("fs"), nodePath = require("path");
Module.read = function(b, a) {
var b = nodePath.normalize(b), c = nodeFS.readFileSync(b);
!c && b != nodePath.resolve(b) && (b = path.join(__dirname, "..", "src", b), c = nodeFS.readFileSync(b));
c && !a && (c = c.toString());
return c
};
Module.readBinary = function(b) {
return Module.read(b, !0)
};
Module.load = function(b) {
globalEval(read(b))
};
Module.arguments || (Module.arguments = process.argv.slice(2))
}
ENVIRONMENT_IS_SHELL && (Module.print = print, "undefined" != typeof printErr && (Module.printErr = printErr), Module.read = read, Module.readBinary = function(b) {
return read(b, "binary")
}, Module.arguments || ("undefined" != typeof scriptArgs ? Module.arguments = scriptArgs : "undefined" != typeof arguments && (Module.arguments = arguments)));
ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER && (Module.print || (Module.print = function(b) {
console.log(b)
}), Module.printErr || (Module.printErr = function(b) {
console.log(b)
}));
if(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module.read = function(b) {
var a = new XMLHttpRequest;
a.open("GET", b, !1);
a.send(null);
return a.responseText
}, Module.arguments || "undefined" != typeof arguments && (Module.arguments = arguments)
}
if(ENVIRONMENT_IS_WORKER) {
var TRY_USE_DUMP = !1;
Module.print || (Module.print = TRY_USE_DUMP && "undefined" !== typeof dump ? function(b) {
dump(b)
} : function() {
});
Module.load = importScripts
}
if(!ENVIRONMENT_IS_WORKER && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL) {
throw"Unknown runtime environment. Where are we?";
}
function globalEval(b) {
eval.call(null, b)
}
"undefined" == !Module.load && Module.read && (Module.load = function(b) {
globalEval(Module.read(b))
});
Module.print || (Module.print = function() {
});
Module.printErr || (Module.printErr = Module.print);
Module.arguments || (Module.arguments = []);
Module.print = Module.print;
Module.printErr = Module.printErr;
Module.preRun || (Module.preRun = []);
Module.postRun || (Module.postRun = []);
var Runtime = {stackSave:function() {
return STACKTOP
}, stackRestore:function(b) {
STACKTOP = b
}, forceAlign:function(b, a) {
a = a || 4;
if(1 == a) {
return b
}
if(isNumber(b) && isNumber(a)) {
return Math.ceil(b / a) * a
}
if(isNumber(a) && isPowerOfTwo(a)) {
var c = log2(a);
return"((((" + b + ")+" + (a - 1) + ")>>" + c + ")<<" + c + ")"
}
return"Math.ceil((" + b + ")/" + a + ")*" + a
}, isNumberType:function(b) {
return b in Runtime.INT_TYPES || b in Runtime.FLOAT_TYPES
}, isPointerType:function(b) {
return"*" == b[b.length - 1]
}, isStructType:function(b) {
return isPointerType(b) ? !1 : /^\[\d+\ x\ (.*)\]/.test(b) || /<?{ ?[^}]* ?}>?/.test(b) ? !0 : "%" == b[0]
}, INT_TYPES:{i1:0, i8:0, i16:0, i32:0, i64:0}, FLOAT_TYPES:{"float":0, "double":0}, or64:function(b, a) {
var c = b | 0 | a | 0, d = 4294967296 * (Math.round(b / 4294967296) | Math.round(a / 4294967296));
return c + d
}, and64:function(b, a) {
var c = (b | 0) & (a | 0), d = 4294967296 * (Math.round(b / 4294967296) & Math.round(a / 4294967296));
return c + d
}, xor64:function(b, a) {
var c = (b | 0) ^ (a | 0), d = 4294967296 * (Math.round(b / 4294967296) ^ Math.round(a / 4294967296));
return c + d
}, getNativeTypeSize:function(b) {
if(1 == Runtime.QUANTUM_SIZE) {
return 1
}
var a = {"%i1":1, "%i8":1, "%i16":2, "%i32":4, "%i64":8, "%float":4, "%double":8}["%" + b];
a || ("*" == b.charAt(b.length - 1) ? a = Runtime.QUANTUM_SIZE : "i" == b[0] && (b = parseInt(b.substr(1)), assert(0 == b % 8), a = b / 8));
return a
}, getNativeFieldSize:function(b) {
return Math.max(Runtime.getNativeTypeSize(b), Runtime.QUANTUM_SIZE)
}, dedup:function(b, a) {
var c = {};
return a ? b.filter(function(b) {
return c[b[a]] ? !1 : c[b[a]] = !0
}) : b.filter(function(a) {
return c[a] ? !1 : c[a] = !0
})
}, set:function() {
for(var b = "object" === typeof arguments[0] ? arguments[0] : arguments, a = {}, c = 0;c < b.length;c++) {
a[b[c]] = 0
}
return a
}, STACK_ALIGN:8, getAlignSize:function(b, a, c) {
return"i64" == b || "double" == b || c ? 8 : !b ? Math.min(a, 8) : Math.min(a || (b ? Runtime.getNativeFieldSize(b) : 0), Runtime.QUANTUM_SIZE)
}, calculateStructAlignment:function(b) {
b.flatSize = 0;
b.alignSize = 0;
var a = [], c = -1;
b.flatIndexes = b.fields.map(function(d) {
var f;
if(Runtime.isNumberType(d) || Runtime.isPointerType(d)) {
f = Runtime.getNativeTypeSize(d), d = Runtime.getAlignSize(d, f)
}else {
if(Runtime.isStructType(d)) {
f = Types.types[d].flatSize, d = Runtime.getAlignSize(null, Types.types[d].alignSize)
}else {
if("b" == d[0]) {
f = d.substr(1) | 0, d = 1
}else {
throw"Unclear type in struct: " + d + ", in " + b.name_ + " :: " + dump(Types.types[b.name_]);
}
}
}
b.packed && (d = 1);
b.alignSize = Math.max(b.alignSize, d);
d = Runtime.alignMemory(b.flatSize, d);
b.flatSize = d + f;
0 <= c && a.push(d - c);
return c = d
});
b.flatSize = Runtime.alignMemory(b.flatSize, b.alignSize);
0 == a.length ? b.flatFactor = b.flatSize : 1 == Runtime.dedup(a).length && (b.flatFactor = a[0]);
b.needsFlattening = 1 != b.flatFactor;
return b.flatIndexes
}, generateStructInfo:function(b, a, c) {
var d, f;
if(a) {
c = c || 0;
d = ("undefined" === typeof Types ? Runtime.typeInfo : Types.types)[a];
if(!d) {
return null
}
if(d.fields.length != b.length) {
return printErr("Number of named fields must match the type for " + a + ": possibly duplicate struct names. Cannot return structInfo"), null
}
f = d.flatIndexes
}else {
d = {fields:b.map(function(a) {
return a[0]
})}, f = Runtime.calculateStructAlignment(d)
}
var e = {__size__:d.flatSize};
a ? b.forEach(function(a, b) {
if("string" === typeof a) {
e[a] = f[b] + c
}else {
var i, j;
for(j in a) {
i = j
}
e[i] = Runtime.generateStructInfo(a[i], d.fields[b], f[b])
}
}) : b.forEach(function(a, b) {
e[a[1]] = f[b]
});
return e
}, dynCall:function(b, a, c) {
if(c && c.length) {
return assert(c.length == b.length - 1), FUNCTION_TABLE[a].apply(null, c)
}
assert(1 == b.length);
return FUNCTION_TABLE[a]()
}, addFunction:function(b) {
var a = FUNCTION_TABLE, c = a.length;
a.push(b);
a.push(0);
return c
}, removeFunction:function(b) {
FUNCTION_TABLE[b] = null
}, warnOnce:function(b) {
Runtime.warnOnce.shown || (Runtime.warnOnce.shown = {});
Runtime.warnOnce.shown[b] || (Runtime.warnOnce.shown[b] = 1, Module.printErr(b))
}, funcWrappers:{}, getFuncWrapper:function(b, a) {
assert(a);
Runtime.funcWrappers[b] || (Runtime.funcWrappers[b] = function() {
return Runtime.dynCall(a, b, arguments)
});
return Runtime.funcWrappers[b]
}, UTF8Processor:function() {
var b = [], a = 0;
this.processCChar = function(c) {
c &= 255;
a && (b.push(c), a--);
if(0 == b.length) {
if(128 > c) {
return String.fromCharCode(c)
}
b.push(c);
a = 191 < c && 224 > c ? 1 : 2;
return""
}
if(0 < a) {
return""
}
var c = b[0], d = b[1], f = b[2], c = 191 < c && 224 > c ? String.fromCharCode((c & 31) << 6 | d & 63) : String.fromCharCode((c & 15) << 12 | (d & 63) << 6 | f & 63);
b.length = 0;
return c
};
this.processJSString = function(a) {
for(var a = unescape(encodeURIComponent(a)), b = [], f = 0;f < a.length;f++) {
b.push(a.charCodeAt(f))
}
return b
}
}, stackAlloc:function(b) {
var a = STACKTOP;
STACKTOP = STACKTOP + b | 0;
STACKTOP = STACKTOP + 7 >> 3 << 3;
assert((STACKTOP | 0) < (STACK_MAX | 0));
return a
}, staticAlloc:function(b) {
var a = STATICTOP;
STATICTOP = STATICTOP + (assert(!staticSealed), b) | 0;
STATICTOP = STATICTOP + 7 >> 3 << 3;
return a
}, dynamicAlloc:function(b) {
var a = DYNAMICTOP;
DYNAMICTOP = DYNAMICTOP + (assert(0 < DYNAMICTOP), b) | 0;
DYNAMICTOP = DYNAMICTOP + 7 >> 3 << 3;
DYNAMICTOP >= TOTAL_MEMORY && enlargeMemory();
return a
}, alignMemory:function(b, a) {
return Math.ceil(b / (a ? a : 8)) * (a ? a : 8)
}, makeBigInt:function(b, a, c) {
return c ? (b >>> 0) + 4294967296 * (a >>> 0) : (b >>> 0) + 4294967296 * (a | 0)
}, GLOBAL_BASE:8, QUANTUM_SIZE:4, __dummy__:0}, __THREW__ = 0, setjmpId = 1, setjmpLabels = {}, ABORT = !1, undef = 0, tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempI64, tempI64b, tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function abort(b) {
Module.print(b + ":\n" + Error().stack);
ABORT = !0;
throw"Assertion: " + b;
}
function assert(b, a) {
b || abort("Assertion failed: " + a)
}
var globalScope = this;
function ccall(b, a, c, d) {
return ccallFunc(getCFunc(b), a, c, d)
}
Module.ccall = ccall;
function getCFunc(b) {
try {
var a = globalScope.Module["_" + b];
a || (a = eval("_" + b))
}catch(c) {
}
assert(a, "Cannot call unknown function " + b + " (perhaps LLVM optimizations or closure removed it?)");
return a
}
function ccallFunc(b, a, c, d) {
function f(a, b) {
if("string" == b) {
if(null === a || void 0 === a || 0 === a) {
return 0
}
e || (e = Runtime.stackSave());
var c = Runtime.stackAlloc(a.length + 1);
writeStringToMemory(a, c);
return c
}
return"array" == b ? (e || (e = Runtime.stackSave()), c = Runtime.stackAlloc(a.length), writeArrayToMemory(a, c), c) : a
}
var e = 0, g = 0, d = d ? d.map(function(a) {
return f(a, c[g++])
}) : [];
b = b.apply(null, d);
"string" == a ? a = Pointer_stringify(b) : (assert("array" != a), a = b);
e && Runtime.stackRestore(e);
return a
}
function cwrap(b, a, c) {
var d = getCFunc(b);
return function() {
return ccallFunc(d, a, c, Array.prototype.slice.call(arguments))
}
}
Module.cwrap = cwrap;
function setValue(b, a, c) {
c = c || "i8";
"*" === c.charAt(c.length - 1) && (c = "i32");
switch(c) {
case "i1":
HEAP8[b] = a;
break;
case "i8":
HEAP8[b] = a;
break;
case "i16":
HEAP16[b >> 1] = a;
break;
case "i32":
HEAP32[b >> 2] = a;
break;
case "i64":
tempI64 = [a >>> 0, Math.min(Math.floor(a / 4294967296), 4294967295) >>> 0];
HEAP32[b >> 2] = tempI64[0];
HEAP32[b + 4 >> 2] = tempI64[1];
break;
case "float":
HEAPF32[b >> 2] = a;
break;
case "double":
HEAPF64[b >> 3] = a;
break;
default:
abort("invalid type for setValue: " + c)
}
}
Module.setValue = setValue;
function getValue(b, a) {
a = a || "i8";
"*" === a.charAt(a.length - 1) && (a = "i32");
switch(a) {
case "i1":
return HEAP8[b];
case "i8":
return HEAP8[b];
case "i16":
return HEAP16[b >> 1];
case "i32":
return HEAP32[b >> 2];
case "i64":
return HEAP32[b >> 2];
case "float":
return HEAPF32[b >> 2];
case "double":
return HEAPF64[b >> 3];
default:
abort("invalid type for setValue: " + a)
}
return null
}
Module.getValue = getValue;
var ALLOC_NORMAL = 0, ALLOC_STACK = 1, ALLOC_STATIC = 2, ALLOC_DYNAMIC = 3, ALLOC_NONE = 4;
Module.ALLOC_NORMAL = ALLOC_NORMAL;
Module.ALLOC_STACK = ALLOC_STACK;
Module.ALLOC_STATIC = ALLOC_STATIC;
Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC;
Module.ALLOC_NONE = ALLOC_NONE;
function allocate(b, a, c, d) {
var f, e;
"number" === typeof b ? (f = !0, e = b) : (f = !1, e = b.length);
var g = "string" === typeof a ? a : null, c = c == ALLOC_NONE ? d : [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][void 0 === c ? ALLOC_STATIC : c](Math.max(e, g ? 1 : a.length));
if(f) {
d = c;
assert(0 == (c & 3));
for(b = c + (e & -4);d < b;d += 4) {
HEAP32[d >> 2] = 0
}
for(b = c + e;d < b;) {
HEAP8[d++ | 0] = 0
}
return c
}
if("i8" === g) {
return HEAPU8.set(new Uint8Array(b), c), c
}
for(var d = 0, h, i;d < e;) {
var j = b[d];
"function" === typeof j && (j = Runtime.getFunctionIndex(j));
f = g || a[d];
0 === f ? d++ : (assert(f, "Must know what type to store in allocate!"), "i64" == f && (f = "i32"), setValue(c + d, j, f), i !== f && (h = Runtime.getNativeTypeSize(f), i = f), d += h)
}
return c
}
Module.allocate = allocate;
function Pointer_stringify(b, a) {
for(var c = !1, d, f = 0;;) {
d = HEAPU8[b + f | 0];
if(128 <= d) {
c = !0
}else {
if(0 == d && !a) {
break
}
}
f++;
if(a && f == a) {
break
}
}
a || (a = f);
var e = "";
if(!c) {
for(;0 < a;) {
d = String.fromCharCode.apply(String, HEAPU8.subarray(b, b + Math.min(a, 1024))), e = e ? e + d : d, b += 1024, a -= 1024
}
return e
}
c = new Runtime.UTF8Processor;
for(f = 0;f < a;f++) {
assert(b + f < TOTAL_MEMORY), d = HEAPU8[b + f | 0], e += c.processCChar(d)
}
return e
}
Module.Pointer_stringify = Pointer_stringify;
var PAGE_SIZE = 4096;
function alignMemoryPage(b) {
return b + 4095 >> 12 << 12
}
var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64, STATIC_BASE = 0, STATICTOP = 0, staticSealed = !1, STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0, DYNAMIC_BASE = 0, DYNAMICTOP = 0;
function enlargeMemory() {
abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")
}
var TOTAL_STACK = Module.TOTAL_STACK || 5242880, TOTAL_MEMORY = Module.TOTAL_MEMORY || 16777216, FAST_MEMORY = Module.FAST_MEMORY || 2097152;
assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)).subarray && !!(new Int32Array(1)).set, "Cannot fallback to non-typed array case: Code is too specialized");
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
HEAP32[0] = 255;
assert(255 === HEAPU8[0] && 0 === HEAPU8[3], "Typed arrays 2 must be run on a little-endian system");
Module.HEAP = HEAP;
Module.HEAP8 = HEAP8;
Module.HEAP16 = HEAP16;
Module.HEAP32 = HEAP32;
Module.HEAPU8 = HEAPU8;
Module.HEAPU16 = HEAPU16;
Module.HEAPU32 = HEAPU32;
Module.HEAPF32 = HEAPF32;
Module.HEAPF64 = HEAPF64;
function callRuntimeCallbacks(b) {
for(;0 < b.length;) {
var a = b.shift();
if("function" == typeof a) {
a()
}else {
var c = a.func;
"number" === typeof c ? void 0 === a.arg ? Runtime.dynCall("v", c) : Runtime.dynCall("vi", c, [a.arg]) : c(void 0 === a.arg ? null : a.arg)
}
}
}
var __ATINIT__ = [], __ATMAIN__ = [], __ATEXIT__ = [], runtimeInitialized = !1;
function ensureInitRuntime() {
runtimeInitialized || (runtimeInitialized = !0, callRuntimeCallbacks(__ATINIT__))
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__)
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__)
}
function intArrayFromString(b, a, c) {
b = (new Runtime.UTF8Processor).processJSString(b);
c && (b.length = c);
a || b.push(0);
return b
}
Module.intArrayFromString = intArrayFromString;
function intArrayToString(b) {
for(var a = [], c = 0;c < b.length;c++) {
var d = b[c];
255 < d && (assert(!1, "Character code " + d + " (" + String.fromCharCode(d) + ") at offset " + c + " not in 0x00-0xFF."), d &= 255);
a.push(String.fromCharCode(d))
}
return a.join("")
}
Module.intArrayToString = intArrayToString;
function writeStringToMemory(b, a, c) {
b = intArrayFromString(b, c);
for(c = 0;c < b.length;) {
HEAP8[a + c | 0] = b[c], c += 1
}
}
Module.writeStringToMemory = writeStringToMemory;
function writeArrayToMemory(b, a) {
for(var c = 0;c < b.length;c++) {
HEAP8[a + c | 0] = b[c]
}
}
Module.writeArrayToMemory = writeArrayToMemory;
function unSign(b, a) {
return 0 <= b ? b : 32 >= a ? 2 * Math.abs(1 << a - 1) + b : Math.pow(2, a) + b
}
function reSign(b, a) {
if(0 >= b) {
return b
}
var c = 32 >= a ? Math.abs(1 << a - 1) : Math.pow(2, a - 1);
if(b >= c && (32 >= a || b > c)) {
b = -2 * c + b
}
return b
}
Math.imul || (Math.imul = function(b, a) {
var c = b & 65535, d = a & 65535;
return c * d + ((b >>> 16) * d + c * (a >>> 16) << 16) | 0
});
var runDependencies = 0, runDependencyTracking = {}, calledInit = !1, calledRun = !1, runDependencyWatcher = null;
function addRunDependency(b) {
runDependencies++;
Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies);
b ? (assert(!runDependencyTracking[b]), runDependencyTracking[b] = 1, null === runDependencyWatcher && "undefined" !== typeof setInterval && (runDependencyWatcher = setInterval(function() {
var a = !1, b;
for(b in runDependencyTracking) {
a || (a = !0, Module.printErr("still waiting on run dependencies:")), Module.printErr("dependency: " + b)
}
a && Module.printErr("(end of list)")
}, 6E3))) : Module.printErr("warning: run dependency added without ID")
}
Module.addRunDependency = addRunDependency;
function removeRunDependency(b) {
runDependencies--;
Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies);
b ? (assert(runDependencyTracking[b]), delete runDependencyTracking[b]) : Module.printErr("warning: run dependency removed without ID");
0 == runDependencies && (null !== runDependencyWatcher && (clearInterval(runDependencyWatcher), runDependencyWatcher = null), !calledRun && shouldRunNow && run())
}
Module.removeRunDependency = removeRunDependency;
Module.preloadedImages = {};
Module.preloadedAudios = {};
function addPreRun(b) {
Module.preRun ? "function" == typeof Module.preRun && (Module.preRun = [Module.preRun]) : Module.preRun = [];
Module.preRun.push(b)
}
var awaitingMemoryInitializer = !1;
function loadMemoryInitializer(b) {
addPreRun(function() {
if(ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
var a = Module.readBinary(b);
HEAPU8.set(a, STATIC_BASE);
runPostSets()
}else {
Browser.asyncLoad(b, function(a) {
HEAPU8.set(a, STATIC_BASE);
runPostSets()
}, function() {
throw"could not load memory initializer " + b;
})
}
});
awaitingMemoryInitializer = !1
}
var STATIC_BASE = 8, STATICTOP = STATIC_BASE + 1776, __ATINIT__ = __ATINIT__.concat([{func:function() {
__GLOBAL__I_a()
}}, {func:function() {
__GLOBAL__I_a7()
}}]), __ZTVN10__cxxabiv120__si_class_type_infoE, __ZTVN10__cxxabiv117__class_type_infoE, __ZTIt, __ZTIs, __ZTIm, __ZTIl, __ZTIj, __ZTIi, __ZTIh, __ZTIf, __ZTId, __ZTIc, __ZTIa;
__ZTVN10__cxxabiv120__si_class_type_infoE = allocate([0, 0, 0, 0, 192, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTVN10__cxxabiv117__class_type_infoE = allocate([0, 0, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIt = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIs = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIm = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIl = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIj = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIi = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIh = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIf = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTId = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIc = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIa = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
allocate([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 108, 111, 110, 103, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 105, 110, 116, 0, 0, 0, 0, 105, 110, 116, 0, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 115, 104, 111, 114, 116, 0, 0, 115, 104, 111, 114, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 0, 0, 99, 104, 97, 114,
0, 0, 0, 0, 118, 111, 105, 100, 0, 0, 0, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 118, 97, 108, 0, 115, 116, 100, 58, 58, 119, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 47, 118, 111, 108, 47, 98, 105, 103, 50, 52, 48, 47, 115, 110, 97, 112, 47, 106, 105, 109, 47, 119, 111, 114, 107, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 115, 121, 115, 116, 101, 109,
47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 98, 111, 111, 108, 0, 0, 0, 0, 100, 111, 117, 98, 108, 101, 0, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 0, 0, 0, 102, 108, 111, 97, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 0,
0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 58, 32, 37, 100, 44, 32, 37, 102, 44, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 111, 105, 100, 32, 115, 116, 100, 58, 58, 95, 95, 49, 58, 58, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 60, 116, 114, 117, 101, 62, 58, 58, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 40, 41, 32, 99, 111, 110, 115, 116, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 6, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0,
102, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 50, 49, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 73, 76, 98, 49, 69, 69, 69, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97,
114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 119, 69, 69, 69, 69, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 51, 118, 97, 108, 69,
0, 0, 0, 0, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 49, 49, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 69, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 51, 95, 95, 102, 117, 110, 100, 97, 109, 101, 110, 116, 97, 108, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111,
69, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0,
0, 0, 0, 0, 0, 0, 0, 208, 3, 0, 0, 32, 4, 0, 0, 208, 3, 0, 0, 120, 4, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 0, 0, 0, 0, 152, 4, 0, 0, 248, 3, 0, 0, 192, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 248, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 88, 5, 0, 0, 0, 0, 0, 0, 120, 5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240,
5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 80, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
function runPostSets() {
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 12 >> 2] = 22;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 28 >> 2] = 12;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 32 >> 2] = 10;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 36 >> 2] = 6;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 12 >> 2] = 36;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 28 >> 2] = 40;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 32 >> 2] = 30;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 36 >> 2] = 8;
HEAP32[__ZTIt >> 2] = 976;
HEAP32[__ZTIt + 4 >> 2] = 1064;
HEAP32[__ZTIs >> 2] = 976;
HEAP32[__ZTIs + 4 >> 2] = 1072;
HEAP32[__ZTIm >> 2] = 976;
HEAP32[__ZTIm + 4 >> 2] = 1080;
HEAP32[__ZTIl >> 2] = 976;
HEAP32[__ZTIl + 4 >> 2] = 1088;
HEAP32[__ZTIj >> 2] = 976;
HEAP32[__ZTIj + 4 >> 2] = 1096;
HEAP32[__ZTIi >> 2] = 976;
HEAP32[__ZTIi + 4 >> 2] = 1104;
HEAP32[__ZTIh >> 2] = 976;
HEAP32[__ZTIh + 4 >> 2] = 1112;
HEAP32[__ZTIf >> 2] = 976;
HEAP32[__ZTIf + 4 >> 2] = 1120;
HEAP32[__ZTId >> 2] = 976;
HEAP32[__ZTId + 4 >> 2] = 1128;
HEAP32[__ZTIc >> 2] = 976;
HEAP32[__ZTIc + 4 >> 2] = 1136;
HEAP32[__ZTIa >> 2] = 976;
HEAP32[__ZTIa + 4 >> 2] = 1152;
HEAP32[404] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[406] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[420] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[422] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[424] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[428] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[432] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[436] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[440] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0
}
awaitingMemoryInitializer || runPostSets();
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(0 == tempDoublePtr % 8);
function copyTempFloat(b) {
HEAP8[tempDoublePtr] = HEAP8[b];
HEAP8[tempDoublePtr + 1] = HEAP8[b + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[b + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[b + 3]
}
function copyTempDouble(b) {
HEAP8[tempDoublePtr] = HEAP8[b];
HEAP8[tempDoublePtr + 1] = HEAP8[b + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[b + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[b + 3];
HEAP8[tempDoublePtr + 4] = HEAP8[b + 4];
HEAP8[tempDoublePtr + 5] = HEAP8[b + 5];
HEAP8[tempDoublePtr + 6] = HEAP8[b + 6];
HEAP8[tempDoublePtr + 7] = HEAP8[b + 7]
}
var ERRNO_CODES = {E2BIG:7, EACCES:13, EADDRINUSE:98, EADDRNOTAVAIL:99, EAFNOSUPPORT:97, EAGAIN:11, EALREADY:114, EBADF:9, EBADMSG:74, EBUSY:16, ECANCELED:125, ECHILD:10, ECONNABORTED:103, ECONNREFUSED:111, ECONNRESET:104, EDEADLK:35, EDESTADDRREQ:89, EDOM:33, EDQUOT:122, EEXIST:17, EFAULT:14, EFBIG:27, EHOSTUNREACH:113, EIDRM:43, EILSEQ:84, EINPROGRESS:115, EINTR:4, EINVAL:22, EIO:5, EISCONN:106, EISDIR:21, ELOOP:40, EMFILE:24, EMLINK:31, EMSGSIZE:90, EMULTIHOP:72, ENAMETOOLONG:36, ENETDOWN:100,
ENETRESET:102, ENETUNREACH:101, ENFILE:23, ENOBUFS:105, ENODATA:61, ENODEV:19, ENOENT:2, ENOEXEC:8, ENOLCK:37, ENOLINK:67, ENOMEM:12, ENOMSG:42, ENOPROTOOPT:92, ENOSPC:28, ENOSR:63, ENOSTR:60, ENOSYS:38, ENOTCONN:107, ENOTDIR:20, ENOTEMPTY:39, ENOTRECOVERABLE:131, ENOTSOCK:88, ENOTSUP:95, ENOTTY:25, ENXIO:6, EOPNOTSUPP:45, EOVERFLOW:75, EOWNERDEAD:130, EPERM:1, EPIPE:32, EPROTO:71, EPROTONOSUPPORT:93, EPROTOTYPE:91, ERANGE:34, EROFS:30, ESPIPE:29, ESRCH:3, ESTALE:116, ETIME:62, ETIMEDOUT:110, ETXTBSY:26,
EWOULDBLOCK:11, EXDEV:18}, ___errno_state = 0;
function ___setErrNo(b) {
return HEAP32[___errno_state >> 2] = b
}
var _stdin = allocate(1, "i32*", ALLOC_STATIC), _stdout = allocate(1, "i32*", ALLOC_STATIC), _stderr = allocate(1, "i32*", ALLOC_STATIC), __impure_ptr = allocate(1, "i32*", ALLOC_STATIC), FS = {currentPath:"/", nextInode:2, streams:[null], checkStreams:function() {
for(var b in FS.streams) {
FS.streams.hasOwnProperty(b) && assert(0 <= b && b < FS.streams.length)
}
for(b = 0;b < FS.streams.length;b++) {
assert("object" == typeof FS.streams[b])
}
}, ignorePermissions:!0, joinPath:function(b, a) {
for(var c = b[0], d = 1;d < b.length;d++) {
"/" != c[c.length - 1] && (c += "/"), c += b[d]
}
a && "/" == c[0] && (c = c.substr(1));
return c
}, absolutePath:function(b, a) {
if("string" !== typeof b) {
return null
}
void 0 === a && (a = FS.currentPath);
b && "/" == b[0] && (a = "");
for(var c = (a + "/" + b).split("/").reverse(), d = [""];c.length;) {
var f = c.pop();
"" == f || "." == f || (".." == f ? 1 < d.length && d.pop() : d.push(f))
}
return 1 == d.length ? "/" : d.join("/")
}, analyzePath:function(b, a, c) {
var d = {isRoot:!1, exists:!1, error:0, name:null, path:null, object:null, parentExists:!1, parentPath:null, parentObject:null}, b = FS.absolutePath(b);
if("/" == b) {
d.isRoot = !0, d.exists = d.parentExists = !0, d.name = "/", d.path = d.parentPath = "/", d.object = d.parentObject = FS.root
}else {
if(null !== b) {
for(var c = c || 0, b = b.slice(1).split("/"), f = FS.root, e = [""];b.length;) {
1 == b.length && f.isFolder && (d.parentExists = !0, d.parentPath = 1 == e.length ? "/" : e.join("/"), d.parentObject = f, d.name = b[0]);
var g = b.shift();
if(f.isFolder) {
if(f.read) {
if(!f.contents.hasOwnProperty(g)) {
d.error = ERRNO_CODES.ENOENT;
break
}
}else {
d.error = ERRNO_CODES.EACCES;
break
}
}else {
d.error = ERRNO_CODES.ENOTDIR;
break
}
f = f.contents[g];
if(f.link && !(a && 0 == b.length)) {
if(40 < c) {
d.error = ERRNO_CODES.ELOOP;
break
}
d = FS.absolutePath(f.link, e.join("/"));
d = FS.analyzePath([d].concat(b).join("/"), a, c + 1);
break
}
e.push(g);
0 == b.length && (d.exists = !0, d.path = e.join("/"), d.object = f)
}
}
}
return d
}, findObject:function(b, a) {
FS.ensureRoot();
var c = FS.analyzePath(b, a);
if(c.exists) {
return c.object
}
___setErrNo(c.error);
return null
}, createObject:function(b, a, c, d, f) {
b || (b = "/");
"string" === typeof b && (b = FS.findObject(b));
if(!b) {
throw ___setErrNo(ERRNO_CODES.EACCES), Error("Parent path must exist.");
}
if(!b.isFolder) {
throw ___setErrNo(ERRNO_CODES.ENOTDIR), Error("Parent must be a folder.");
}
if(!b.write && !FS.ignorePermissions) {
throw ___setErrNo(ERRNO_CODES.EACCES), Error("Parent folder must be writeable.");
}
if(!a || "." == a || ".." == a) {
throw ___setErrNo(ERRNO_CODES.ENOENT), Error("Name must not be empty.");
}
if(b.contents.hasOwnProperty(a)) {
throw ___setErrNo(ERRNO_CODES.EEXIST), Error("Can't overwrite object.");
}
b.contents[a] = {read:void 0 === d ? !0 : d, write:void 0 === f ? !1 : f, timestamp:Date.now(), inodeNumber:FS.nextInode++};
for(var e in c) {
c.hasOwnProperty(e) && (b.contents[a][e] = c[e])
}
return b.contents[a]
}, createFolder:function(b, a, c, d) {
return FS.createObject(b, a, {isFolder:!0, isDevice:!1, contents:{}}, c, d)
}, createPath:function(b, a, c, d) {
b = FS.findObject(b);
if(null === b) {
throw Error("Invalid parent.");
}
for(a = a.split("/").reverse();a.length;) {
var f = a.pop();
f && (b.contents.hasOwnProperty(f) || FS.createFolder(b, f, c, d), b = b.contents[f])
}
return b
}, createFile:function(b, a, c, d, f) {
c.isFolder = !1;
return FS.createObject(b, a, c, d, f)
}, createDataFile:function(b, a, c, d, f) {
if("string" === typeof c) {
for(var e = Array(c.length), g = 0, h = c.length;g < h;++g) {
e[g] = c.charCodeAt(g)
}
c = e
}
c = {isDevice:!1, contents:c.subarray ? c.subarray(0) : c};
return FS.createFile(b, a, c, d, f)
}, createLazyFile:function(b, a, c, d, f) {
if("undefined" !== typeof XMLHttpRequest) {
if(!ENVIRONMENT_IS_WORKER) {
throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
}
var e = function() {
this.lengthKnown = !1;
this.chunks = []
};
e.prototype.get = function(a) {
if(!(a > this.length - 1 || 0 > a)) {
var b = a % this.chunkSize;
return this.getter(Math.floor(a / this.chunkSize))[b]
}
};
e.prototype.setDataGetter = function(a) {
this.getter = a
};
e.prototype.cacheLength = function() {
var a = new XMLHttpRequest;
a.open("HEAD", c, !1);
a.send(null);
if(!(200 <= a.status && 300 > a.status || 304 === a.status)) {
throw Error("Couldn't load " + c + ". Status: " + a.status);
}
var b = Number(a.getResponseHeader("Content-length")), d, e = 1048576;
if(!((d = a.getResponseHeader("Accept-Ranges")) && "bytes" === d)) {
e = b
}
var f = this;
f.setDataGetter(function(a) {
var d = a * e, g = (a + 1) * e - 1, g = Math.min(g, b - 1);
if("undefined" === typeof f.chunks[a]) {
var i = f.chunks;
if(d > g) {
throw Error("invalid range (" + d + ", " + g + ") or no bytes requested!");
}
if(g > b - 1) {
throw Error("only " + b + " bytes available! programmer error!");
}
var q = new XMLHttpRequest;
q.open("GET", c, !1);
b !== e && q.setRequestHeader("Range", "bytes=" + d + "-" + g);
"undefined" != typeof Uint8Array && (q.responseType = "arraybuffer");
q.overrideMimeType && q.overrideMimeType("text/plain; charset=x-user-defined");
q.send(null);
if(!(200 <= q.status && 300 > q.status || 304 === q.status)) {
throw Error("Couldn't load " + c + ". Status: " + q.status);
}
d = void 0 !== q.response ? new Uint8Array(q.response || []) : intArrayFromString(q.responseText || "", !0);
i[a] = d
}
if("undefined" === typeof f.chunks[a]) {
throw Error("doXHR failed!");
}
return f.chunks[a]
});
this._length = b;
this._chunkSize = e;
this.lengthKnown = !0
};
e = new e;
Object.defineProperty(e, "length", {get:function() {
this.lengthKnown || this.cacheLength();
return this._length
}});
Object.defineProperty(e, "chunkSize", {get:function() {
this.lengthKnown || this.cacheLength();
return this._chunkSize
}});
e = {isDevice:!1, contents:e}
}else {
e = {isDevice:!1, url:c}
}
return FS.createFile(b, a, e, d, f)
}, createPreloadedFile:function(b, a, c, d, f, e, g, h) {
function i(c) {
function i(c) {
h || FS.createDataFile(b, a, c, d, f);
e && e();
removeRunDependency("cp " + j)
}
var s = !1;
Module.preloadPlugins.forEach(function(a) {
!s && a.canHandle(j) && (a.handle(c, j, i, function() {
g && g();
removeRunDependency("cp " + j)
}), s = !0)
});
s || i(c)
}
Browser.init();
var j = FS.joinPath([b, a], !0);
addRunDependency("cp " + j);
"string" == typeof c ? Browser.asyncLoad(c, function(a) {
i(a)
}, g) : i(c)
}, createLink:function(b, a, c, d, f) {
return FS.createFile(b, a, {isDevice:!1, link:c}, d, f)
}, createDevice:function(b, a, c, d) {
if(!c && !d) {
throw Error("A device must have at least one callback defined.");
}
return FS.createFile(b, a, {isDevice:!0, input:c, output:d}, Boolean(c), Boolean(d))
}, forceLoadFile:function(b) {
if(b.isDevice || b.isFolder || b.link || b.contents) {
return!0
}
var a = !0;
if("undefined" !== typeof XMLHttpRequest) {
throw 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(Module.read) {
try {
b.contents = intArrayFromString(Module.read(b.url), !0)
}catch(c) {
a = !1
}
}else {
throw Error("Cannot load without read() or XMLHttpRequest.");
}
a || ___setErrNo(ERRNO_CODES.EIO);
return a
}, ensureRoot:function() {
FS.root || (FS.root = {read:!0, write:!0, isFolder:!0, isDevice:!1, timestamp:Date.now(), inodeNumber:1, contents:{}})
}, init:function(b, a, c) {
function d(b) {
null === b || 10 === b ? (a.printer(a.buffer.join("")), a.buffer = []) : a.buffer.push(h.processCChar(b))
}
assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
FS.init.initialized = !0;
FS.ensureRoot();
var b = b || Module.stdin, a = a || Module.stdout, c = c || Module.stderr, f = !0, e = !0, g = !0;
b || (f = !1, b = function() {
if(!b.cache || !b.cache.length) {
var a;
"undefined" != typeof window && "function" == typeof window.prompt ? (a = window.prompt("Input: "), null === a && (a = String.fromCharCode(0))) : "function" == typeof readline && (a = readline());
a || (a = "");
b.cache = intArrayFromString(a + "\n", !0)
}
return b.cache.shift()
});
var h = new Runtime.UTF8Processor;
a || (e = !1, a = d);
a.printer || (a.printer = Module.print);
a.buffer || (a.buffer = []);
c || (g = !1, c = d);
c.printer || (c.printer = Module.print);
c.buffer || (c.buffer = []);
try {
FS.createFolder("/", "tmp", !0, !0)
}catch(i) {
}
var j = FS.createFolder("/", "dev", !0, !0), k = FS.createDevice(j, "stdin", b), l = FS.createDevice(j, "stdout", null, a), c = FS.createDevice(j, "stderr", null, c);
FS.createDevice(j, "tty", b, a);
FS.streams[1] = {path:"/dev/stdin", object:k, position:0, isRead:!0, isWrite:!1, isAppend:!1, isTerminal:!f, error:!1, eof:!1, ungotten:[]};
FS.streams[2] = {path:"/dev/stdout", object:l, position:0, isRead:!1, isWrite:!0, isAppend:!1, isTerminal:!e, error:!1, eof:!1, ungotten:[]};
FS.streams[3] = {path:"/dev/stderr", object:c, position:0, isRead:!1, isWrite:!0, isAppend:!1, isTerminal:!g, error:!1, eof:!1, ungotten:[]};
HEAP32[_stdin >> 2] = 1;
HEAP32[_stdout >> 2] = 2;
HEAP32[_stderr >> 2] = 3;
FS.createPath("/", "dev/shm/tmp", !0, !0);
for(f = FS.streams.length;f < Math.max(_stdin, _stdout, _stderr) + 4;f++) {
FS.streams[f] = null
}
FS.streams[_stdin] = FS.streams[1];
FS.streams[_stdout] = FS.streams[2];
FS.streams[_stderr] = FS.streams[3];
FS.checkStreams();
allocate([allocate([0, 0, 0, 0, _stdin, 0, 0, 0, _stdout, 0, 0, 0, _stderr, 0, 0, 0], "void*", ALLOC_DYNAMIC)], "void*", ALLOC_NONE, __impure_ptr)
}, quit:function() {
FS.init.initialized && (FS.streams[2] && 0 < FS.streams[2].object.output.buffer.length && FS.streams[2].object.output(10), FS.streams[3] && 0 < FS.streams[3].object.output.buffer.length && FS.streams[3].object.output(10))
}, standardizePath:function(b) {
"./" == b.substr(0, 2) && (b = b.substr(2));
return b
}, deleteFile:function(b) {
b = FS.analyzePath(b);
if(!b.parentExists || !b.exists) {
throw"Invalid path " + b;
}
delete b.parentObject.contents[b.name]
}};
function _pwrite(b, a, c, d) {
b = FS.streams[b];
if(!b || b.object.isDevice) {
return ___setErrNo(ERRNO_CODES.EBADF), -1
}
if(b.isWrite) {
if(b.object.isFolder) {
return ___setErrNo(ERRNO_CODES.EISDIR), -1
}
if(0 > c || 0 > d) {
return ___setErrNo(ERRNO_CODES.EINVAL), -1
}
for(var f = b.object.contents;f.length < d;) {
f.push(0)
}
for(var e = 0;e < c;e++) {
f[d + e] = HEAPU8[a + e | 0]
}
b.object.timestamp = Date.now();
return e
}
___setErrNo(ERRNO_CODES.EACCES);
return-1
}
function _write(b, a, c) {
var d = FS.streams[b];
if(d) {
if(d.isWrite) {
if(0 > c) {
return ___setErrNo(ERRNO_CODES.EINVAL), -1
}
if(d.object.isDevice) {
if(d.object.output) {
for(b = 0;b < c;b++) {
try {
d.object.output(HEAP8[a + b | 0])
}catch(f) {
return ___setErrNo(ERRNO_CODES.EIO), -1
}
}
d.object.timestamp = Date.now();
return b
}
___setErrNo(ERRNO_CODES.ENXIO);
return-1
}
a = _pwrite(b, a, c, d.position);
-1 != a && (d.position += a);
return a
}
___setErrNo(ERRNO_CODES.EACCES);
return-1
}
___setErrNo(ERRNO_CODES.EBADF);
return-1
}
function _fwrite(b, a, c, d) {
c *= a;
if(0 == c) {
return 0
}
b = _write(d, b, c);
return-1 == b ? (FS.streams[d] && (FS.streams[d].error = !0), 0) : Math.floor(b / a)
}
function _strlen(b) {
for(var b = b | 0, a = 0, a = b;HEAP8[a];) {
a = a + 1 | 0
}
return a - b | 0
}
function __reallyNegative(b) {
return 0 > b || 0 === b && -Infinity === 1 / b
}
function __formatString(b, a) {
function c(b) {
var c;
"double" === b ? c = HEAPF64[a + f >> 3] : "i64" == b ? (c = [HEAP32[a + f >> 2], HEAP32[a + (f + 8) >> 2]], f += 8) : (b = "i32", c = HEAP32[a + f >> 2]);
f += Math.max(Runtime.getNativeFieldSize(b), Runtime.getAlignSize(b, null, !0));
return c
}
for(var d = b, f = 0, e = [], g, h;;) {
var i = d;
g = HEAP8[d];
if(0 === g) {
break
}
h = HEAP8[d + 1 | 0];
if(37 == g) {
var j = !1, k = !1, l = !1, s = !1;
a:for(;;) {
switch(h) {
case 43:
j = !0;
break;
case 45:
k = !0;
break;
case 35:
l = !0;
break;
case 48:
if(s) {
break a
}else {
s = !0;
break
}
;
default:
break a
}
d++;
h = HEAP8[d + 1 | 0]
}
var t = 0;
if(42 == h) {
t = c("i32"), d++, h = HEAP8[d + 1 | 0]
}else {
for(;48 <= h && 57 >= h;) {
t = 10 * t + (h - 48), d++, h = HEAP8[d + 1 | 0]
}
}
var v = !1;
if(46 == h) {
var q = 0, v = !0;
d++;
h = HEAP8[d + 1 | 0];
if(42 == h) {
q = c("i32"), d++
}else {
for(;;) {
h = HEAP8[d + 1 | 0];
if(48 > h || 57 < h) {
break
}
q = 10 * q + (h - 48);
d++
}
}
h = HEAP8[d + 1 | 0]
}else {
q = 6
}
var p;
switch(String.fromCharCode(h)) {
case "h":
h = HEAP8[d + 2 | 0];
104 == h ? (d++, p = 1) : p = 2;
break;
case "l":
h = HEAP8[d + 2 | 0];
108 == h ? (d++, p = 8) : p = 4;
break;
case "L":
;
case "q":
;
case "j":
p = 8;
break;
case "z":
;
case "t":
;
case "I":
p = 4;
break;
default:
p = null
}
p && d++;
h = HEAP8[d + 1 | 0];
switch(String.fromCharCode(h)) {
case "d":
;
case "i":
;
case "u":
;
case "o":
;
case "x":
;
case "X":
;
case "p":
i = 100 == h || 105 == h;
p = p || 4;
var n = g = c("i" + 8 * p), m;
8 == p && (g = Runtime.makeBigInt(g[0], g[1], 117 == h));
if(4 >= p) {
var z = Math.pow(256, p) - 1;
g = (i ? reSign : unSign)(g & z, 8 * p)
}
z = Math.abs(g);
i = "";
if(100 == h || 105 == h) {
m = 8 == p && i64Math ? i64Math.stringify(n[0], n[1], null) : reSign(g, 8 * p, 1).toString(10)
}else {
if(117 == h) {
m = 8 == p && i64Math ? i64Math.stringify(n[0], n[1], !0) : unSign(g, 8 * p, 1).toString(10), g = Math.abs(g)
}else {
if(111 == h) {
m = (l ? "0" : "") + z.toString(8)
}else {
if(120 == h || 88 == h) {
i = l && 0 != g ? "0x" : "";
if(8 == p && i64Math) {
if(n[1]) {
m = (n[1] >>> 0).toString(16);
for(l = (n[0] >>> 0).toString(16);8 > l.length;) {
l = "0" + l
}
m += l
}else {
m = (n[0] >>> 0).toString(16)
}
}else {
if(0 > g) {
g = -g;
m = (z - 1).toString(16);
n = [];
for(l = 0;l < m.length;l++) {
n.push((15 - parseInt(m[l], 16)).toString(16))
}
for(m = n.join("");m.length < 2 * p;) {
m = "f" + m
}
}else {
m = z.toString(16)
}
}
88 == h && (i = i.toUpperCase(), m = m.toUpperCase())
}else {
112 == h && (0 === z ? m = "(nil)" : (i = "0x", m = z.toString(16)))
}
}
}
}
if(v) {
for(;m.length < q;) {
m = "0" + m
}
}
for(j && (i = 0 > g ? "-" + i : "+" + i);i.length + m.length < t;) {
k ? m += " " : s ? m = "0" + m : i = " " + i
}
m = i + m;
m.split("").forEach(function(a) {
e.push(a.charCodeAt(0))
});
break;
case "f":
;
case "F":
;
case "e":
;
case "E":
;
case "g":
;
case "G":
g = c("double");
if(isNaN(g)) {
m = "nan", s = !1
}else {
if(isFinite(g)) {
v = !1;
p = Math.min(q, 20);
if(103 == h || 71 == h) {
v = !0, q = q || 1, p = parseInt(g.toExponential(p).split("e")[1], 10), q > p && -4 <= p ? (h = (103 == h ? "f" : "F").charCodeAt(0), q -= p + 1) : (h = (103 == h ? "e" : "E").charCodeAt(0), q--), p = Math.min(q, 20)
}
if(101 == h || 69 == h) {
m = g.toExponential(p), /[eE][-+]\d$/.test(m) && (m = m.slice(0, -1) + "0" + m.slice(-1))
}else {
if(102 == h || 70 == h) {
m = g.toFixed(p), 0 === g && __reallyNegative(g) && (m = "-" + m)
}
}
i = m.split("e");
if(v && !l) {
for(;1 < i[0].length && -1 != i[0].indexOf(".") && ("0" == i[0].slice(-1) || "." == i[0].slice(-1));) {
i[0] = i[0].slice(0, -1)
}
}else {
for(l && -1 == m.indexOf(".") && (i[0] += ".");q > p++;) {
i[0] += "0"
}
}
m = i[0] + (1 < i.length ? "e" + i[1] : "");
69 == h && (m = m.toUpperCase());
j && 0 <= g && (m = "+" + m)
}else {
m = (0 > g ? "-" : "") + "inf", s = !1
}
}
for(;m.length < t;) {
m = k ? m + " " : s && ("-" == m[0] || "+" == m[0]) ? m[0] + "0" + m.slice(1) : (s ? "0" : " ") + m
}
97 > h && (m = m.toUpperCase());
m.split("").forEach(function(a) {
e.push(a.charCodeAt(0))
});
break;
case "s":
s = (j = c("i8*")) ? _strlen(j) : 6;
v && (s = Math.min(s, q));
if(!k) {
for(;s < t--;) {
e.push(32)
}
}
if(j) {
for(l = 0;l < s;l++) {
e.push(HEAPU8[j++ | 0])
}
}else {
e = e.concat(intArrayFromString("(null)".substr(0, s), !0))
}
if(k) {
for(;s < t--;) {
e.push(32)
}
}
break;
case "c":
for(k && e.push(c("i8"));0 < --t;) {
e.push(32)
}
k || e.push(c("i8"));
break;
case "n":
k = c("i32*");
HEAP32[k >> 2] = e.length;
break;
case "%":
e.push(g);
break;
default:
for(l = i;l < d + 2;l++) {
e.push(HEAP8[l])
}
}
d += 2
}else {
e.push(g), d += 1
}
}
return e
}
function _fprintf(b, a, c) {
c = __formatString(a, c);
a = Runtime.stackSave();
b = _fwrite(allocate(c, "i8", ALLOC_STACK), 1, c.length, b);
Runtime.stackRestore(a);
return b
}
function _printf(b, a) {
return _fprintf(HEAP32[_stdout >> 2], b, a)
}
function _llvm_lifetime_start() {
}
function _llvm_lifetime_end() {
}
function _strdup(b) {
var a = _strlen(b), c = _malloc(a + 1);
_memcpy(c, b, a);
HEAP8[c + a | 0] = 0;
return c
}
function _abort() {
ABORT = !0;
throw"abort() at " + Error().stack;
}
function ___errno_location() {
___setErrNo.ret || (___setErrNo.ret = allocate([0], "i32", ALLOC_NORMAL), HEAP32[___setErrNo.ret >> 2] = 0);
return ___setErrNo.ret
}
var ___errno = ___errno_location;
function _memcpy(b, a, c) {
var b = b | 0, a = a | 0, c = c | 0, d = 0, d = b | 0;
if((b & 3) == (a & 3)) {
for(;b & 3;) {
if(0 == (c | 0)) {
return d | 0
}
HEAP8[b] = HEAP8[a];
b = b + 1 | 0;
a = a + 1 | 0;
c = c - 1 | 0
}
for(;4 <= (c | 0);) {
HEAP32[b >> 2] = HEAP32[a >> 2], b = b + 4 | 0, a = a + 4 | 0, c = c - 4 | 0
}
}
for(;0 < (c | 0);) {
HEAP8[b] = HEAP8[a], b = b + 1 | 0, a = a + 1 | 0, c = c - 1 | 0
}
return d | 0
}
var _llvm_memcpy_p0i8_p0i8_i32 = _memcpy;
function _sysconf(b) {
switch(b) {
case 8:
return PAGE_SIZE;
case 54:
;
case 56:
;
case 21:
;
case 61:
;
case 63:
;
case 22:
;
case 67:
;
case 23:
;
case 24:
;
case 25:
;
case 26:
;
case 27:
;
case 69:
;
case 28:
;
case 101:
;
case 70:
;
case 71:
;
case 29:
;
case 30:
;
case 199:
;
case 75:
;
case 76:
;
case 32:
;
case 43:
;
case 44:
;
case 80:
;
case 46:
;
case 47:
;
case 45:
;
case 48:
;
case 49:
;
case 42:
;
case 82:
;
case 33:
;
case 7:
;
case 108:
;
case 109:
;
case 107:
;
case 112:
;
case 119:
;
case 121:
return 200809;
case 13:
;
case 104:
;
case 94:
;
case 95:
;
case 34:
;
case 35:
;
case 77:
;
case 81:
;
case 83:
;
case 84:
;
case 85:
;
case 86:
;
case 87:
;
case 88:
;
case 89:
;
case 90:
;
case 91:
;
case 94:
;
case 95:
;
case 110:
;
case 111:
;
case 113:
;
case 114:
;
case 115:
;
case 116:
;
case 117:
;
case 118:
;
case 120:
;
case 40:
;
case 16:
;
case 79:
;
case 19:
return-1;
case 92:
;
case 93:
;
case 5:
;
case 72:
;
case 6:
;
case 74:
;
case 92:
;
case 93:
;
case 96:
;
case 97:
;
case 98:
;
case 99:
;
case 102:
;
case 103:
;
case 105:
return 1;
case 38:
;
case 66:
;
case 50:
;
case 51:
;
case 4:
return 1024;
case 15:
;
case 64:
;
case 41:
return 32;
case 55:
;
case 37:
;
case 17:
return 2147483647;
case 18:
;
case 1:
return 47839;
case 59:
;
case 57:
return 99;
case 68:
;
case 58:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 14:
return 32768;
case 73:
return 32767;
case 39:
return 16384;
case 60:
return 1E3;
case 106:
return 700;
case 52:
return 256;
case 62:
return 255;
case 2:
return 100;
case 65:
return 64;
case 36:
return 20;
case 100:
return 16;
case 20:
return 6;
case 53:
return 4;
case 10:
return 1
}
___setErrNo(ERRNO_CODES.EINVAL);
return-1
}
function _time(b) {
var a = Math.floor(Date.now() / 1E3);
b && (HEAP32[b >> 2] = a);
return a
}
function _sbrk(b) {
var a = _sbrk;
a.called || (DYNAMICTOP = alignMemoryPage(DYNAMICTOP), a.called = !0, assert(Runtime.dynamicAlloc), a.alloc = Runtime.dynamicAlloc, Runtime.dynamicAlloc = function() {
abort("cannot dynamically allocate, sbrk now has control")
});
var c = DYNAMICTOP;
0 != b && a.alloc(b);
return c
}
function __ZNSt9type_infoD2Ev() {
}
function _memset(b, a, c) {
var b = b | 0, a = a | 0, c = c | 0, d = 0, f = 0, e = 0, g = 0, d = b + c | 0;
if(20 <= (c | 0)) {
a &= 255;
g = b & 3;
f = a | a << 8 | a << 16 | a << 24;
e = d & -4;
if(g) {
for(g = b + 4 - g | 0;(b | 0) < (g | 0);) {
HEAP8[b] = a, b = b + 1 | 0
}
}
for(;(b | 0) < (e | 0);) {
HEAP32[b >> 2] = f, b = b + 4 | 0
}
}
for(;(b | 0) < (d | 0);) {
HEAP8[b] = a, b = b + 1 | 0
}
}
var _llvm_memset_p0i8_i64 = _memset;
function ___assert_func(b, a, c, d) {
throw"Assertion failed: " + (d ? Pointer_stringify(d) : "unknown condition") + ", at: " + [b ? Pointer_stringify(b) : "unknown filename", a, c ? Pointer_stringify(c) : "unknown function"] + " at " + Error().stack;
}
function _free() {
Runtime.warnOnce("using stub free (reference it from C to have the real one included)")
}
var Browser = {mainLoop:{scheduler:null, shouldPause:!1, paused:!1, queue:[], pause:function() {
Browser.mainLoop.shouldPause = !0
}, resume:function() {
Browser.mainLoop.paused && (Browser.mainLoop.paused = !1, Browser.mainLoop.scheduler());
Browser.mainLoop.shouldPause = !1
}, updateStatus:function() {
if(Module.setStatus) {
var b = Module.statusMessage || "Please wait...", a = Browser.mainLoop.remainingBlockers, c = Browser.mainLoop.expectedBlockers;
a ? a < c ? Module.setStatus(b + " (" + (c - a) + "/" + c + ")") : Module.setStatus(b) : Module.setStatus("")
}
}}, isFullScreen:!1, pointerLock:!1, moduleContextCreatedCallbacks:[], workers:[], init:function() {
function b(a) {
return{jpg:"image/jpeg", jpeg:"image/jpeg", png:"image/png", bmp:"image/bmp", ogg:"audio/ogg", wav:"audio/wav", mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".") + 1)]
}
function a() {
Browser.pointerLock = document.pointerLockElement === d || document.mozPointerLockElement === d || document.webkitPointerLockElement === d
}
if(!Browser.initted) {
Browser.initted = !0;
try {
new Blob, Browser.hasBlobConstructor = !0
}catch(c) {
Browser.hasBlobConstructor = !1, console.log("warning: no blob constructor, cannot create blobs with mimetypes")
}
Browser.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null;
Browser.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : console.log("warning: cannot create object URLs");
Module.preloadPlugins || (Module.preloadPlugins = []);
Module.preloadPlugins.push({canHandle:function(a) {
return!Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/.exec(a)
}, handle:function(a, c, d, h) {
var i = null;
if(Browser.hasBlobConstructor) {
try {
i = new Blob([a], {type:b(c)})
}catch(j) {
Runtime.warnOnce("Blob constructor present but fails: " + j + "; falling back to blob builder")
}
}
i || (i = new Browser.BlobBuilder, i.append((new Uint8Array(a)).buffer), i = i.getBlob());
var k = Browser.URLObject.createObjectURL(i);
assert("string" == typeof k, "createObjectURL must return a url as a string");
var l = new Image;
l.onload = function() {
assert(l.complete, "Image " + c + " could not be decoded");
var b = document.createElement("canvas");
b.width = l.width;
b.height = l.height;
b.getContext("2d").drawImage(l, 0, 0);
Module.preloadedImages[c] = b;
Browser.URLObject.revokeObjectURL(k);
d && d(a)
};
l.onerror = function() {
console.log("Image " + k + " could not be decoded");
h && h()
};
l.src = k
}});
Module.preloadPlugins.push({canHandle:function(a) {
return!Module.noAudioDecoding && a.substr(-4) in {".ogg":1, ".wav":1, ".mp3":1}
}, handle:function(a, c, d, h) {
function i(b) {
k || (k = !0, Module.preloadedAudios[c] = b, d && d(a))
}
function j() {
k || (k = !0, Module.preloadedAudios[c] = new Audio, h && h())
}
var k = !1;
if(Browser.hasBlobConstructor) {
try {
var l = new Blob([a], {type:b(c)})
}catch(s) {
return j()
}
l = Browser.URLObject.createObjectURL(l);
assert("string" == typeof l, "createObjectURL must return a url as a string");
var t = new Audio;
t.addEventListener("canplaythrough", function() {
i(t)
}, !1);
t.onerror = function() {
if(!k) {
console.log("warning: browser could not fully decode audio " + c + ", trying slower base64 approach");
for(var b = "data:audio/x-" + c.substr(-3) + ";base64,", d = "", g = 0, h = 0, j = 0;j < a.length;j++) {
g = g << 8 | a[j];
for(h += 8;6 <= h;) {
var l = g >> h - 6 & 63, h = h - 6, d = d + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[l]
}
}
2 == h ? (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 3) << 4], d += "==") : 4 == h && (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 15) << 2], d += "=");
t.src = b + d;
i(t)
}
};
t.src = l;
setTimeout(function() {
i(t)
}, 1E4)
}else {
return j()
}
}});
var d = Module.canvas;
d.requestPointerLock = d.requestPointerLock || d.mozRequestPointerLock || d.webkitRequestPointerLock;
d.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
d.exitPointerLock = d.exitPointerLock.bind(document);
document.addEventListener("pointerlockchange", a, !1);
document.addEventListener("mozpointerlockchange", a, !1);
document.addEventListener("webkitpointerlockchange", a, !1);
Module.elementPointerLock && d.addEventListener("click", function(a) {
!Browser.pointerLock && d.requestPointerLock && (d.requestPointerLock(), a.preventDefault())
}, !1)
}
}, createContext:function(b, a, c) {
var d;
try {
if(d = a ? b.getContext("experimental-webgl", {alpha:!1}) : b.getContext("2d"), !d) {
throw":(";
}
}catch(f) {
return Module.print("Could not create canvas - " + f), null
}
a && (b.style.backgroundColor = "black", b.addEventListener("webglcontextlost", function() {
alert("WebGL context lost. You will need to reload the page.")
}, !1));
c && (Module.ctx = d, Module.useWebGL = a, Browser.moduleContextCreatedCallbacks.forEach(function(a) {
a()
}), Browser.init());
return d
}, destroyContext:function() {
}, fullScreenHandlersInstalled:!1, lockPointer:void 0, resizeCanvas:void 0, requestFullScreen:function(b, a) {
function c() {
Browser.isFullScreen = !1;
(document.webkitFullScreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.mozFullscreenElement || document.fullScreenElement || document.fullscreenElement) === d ? (d.cancelFullScreen = document.cancelFullScreen || document.mozCancelFullScreen || document.webkitCancelFullScreen, d.cancelFullScreen = d.cancelFullScreen.bind(document), Browser.lockPointer && d.requestPointerLock(), Browser.isFullScreen = !0, Browser.resizeCanvas && Browser.setFullScreenCanvasSize()) :
Browser.resizeCanvas && Browser.setWindowedCanvasSize();
if(Module.onFullScreen) {
Module.onFullScreen(Browser.isFullScreen)
}
}
this.lockPointer = b;
this.resizeCanvas = a;
"undefined" === typeof this.lockPointer && (this.lockPointer = !0);
"undefined" === typeof this.resizeCanvas && (this.resizeCanvas = !1);
var d = Module.canvas;
this.fullScreenHandlersInstalled || (this.fullScreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", c, !1), document.addEventListener("mozfullscreenchange", c, !1), document.addEventListener("webkitfullscreenchange", c, !1));
d.requestFullScreen = d.requestFullScreen || d.mozRequestFullScreen || (d.webkitRequestFullScreen ? function() {
d.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
} : null);
d.requestFullScreen()
}, requestAnimationFrame:function(b) {
window.requestAnimationFrame || (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || window.setTimeout);
window.requestAnimationFrame(b)
}, getMovementX:function(b) {
return b.movementX || b.mozMovementX || b.webkitMovementX || 0
}, getMovementY:function(b) {
return b.movementY || b.mozMovementY || b.webkitMovementY || 0
}, mouseX:0, mouseY:0, mouseMovementX:0, mouseMovementY:0, calculateMouseEvent:function(b) {
if(Browser.pointerLock) {
"mousemove" != b.type && "mozMovementX" in b ? Browser.mouseMovementX = Browser.mouseMovementY = 0 : (Browser.mouseMovementX = Browser.getMovementX(b), Browser.mouseMovementY = Browser.getMovementY(b)), Browser.mouseX = SDL.mouseX + Browser.mouseMovementX, Browser.mouseY = SDL.mouseY + Browser.mouseMovementY
}else {
var a = Module.canvas.getBoundingClientRect(), c = b.pageX - (window.scrollX + a.left), b = b.pageY - (window.scrollY + a.top), d = Module.canvas.height, c = c * (Module.canvas.width / a.width), b = b * (d / a.height);
Browser.mouseMovementX = c - Browser.mouseX;
Browser.mouseMovementY = b - Browser.mouseY;
Browser.mouseX = c;
Browser.mouseY = b
}
}, xhrLoad:function(b, a, c) {
var d = new XMLHttpRequest;
d.open("GET", b, !0);
d.responseType = "arraybuffer";
d.onload = function() {
200 == d.status || 0 == d.status && d.response ? a(d.response) : c()
};
d.onerror = c;
d.send(null)
}, asyncLoad:function(b, a, c, d) {
Browser.xhrLoad(b, function(c) {
assert(c, 'Loading data file "' + b + '" failed (no arrayBuffer).');
a(new Uint8Array(c));
d || removeRunDependency("al " + b)
}, function() {
if(c) {
c()
}else {
throw'Loading data file "' + b + '" failed.';
}
});
d || addRunDependency("al " + b)
}, resizeListeners:[], updateResizeListeners:function() {
var b = Module.canvas;
Browser.resizeListeners.forEach(function(a) {
a(b.width, b.height)
})
}, setCanvasSize:function(b, a, c) {
var d = Module.canvas;
d.width = b;
d.height = a;
c || Browser.updateResizeListeners()
}, windowedWidth:0, windowedHeight:0, setFullScreenCanvasSize:function() {
var b = Module.canvas;
this.windowedWidth = b.width;
this.windowedHeight = b.height;
b.width = screen.width;
b.height = screen.height;
b = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = b | 8388608;
Browser.updateResizeListeners()
}, setWindowedCanvasSize:function() {
var b = Module.canvas;
b.width = this.windowedWidth;
b.height = this.windowedHeight;
b = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = b & -8388609;
Browser.updateResizeListeners()
}};
__ATINIT__.unshift({func:function() {
!Module.noFSInit && !FS.init.initialized && FS.init()
}});
__ATMAIN__.push({func:function() {
FS.ignorePermissions = !1
}});
__ATEXIT__.push({func:function() {
FS.quit()
}});
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;
___errno_state = Runtime.staticAlloc(4);
Module.requestFullScreen = function(b, a) {
Browser.requestFullScreen(b, a)
};
Module.requestAnimationFrame = function(b) {
Browser.requestAnimationFrame(b)
};
Module.pauseMainLoop = function() {
Browser.mainLoop.pause()
};
Module.resumeMainLoop = function() {
Browser.mainLoop.resume()
};
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = !0;
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY);
var FUNCTION_TABLE = [0, 0, __ZN10__cxxabiv121__vmi_class_type_infoD0Ev, 0, __ZN10__cxxabiv123__fundamental_type_infoD0Ev, 0, __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,
0, __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv116__shim_type_info5noop1Ev, 0, __ZN10__cxxabiv120__si_class_type_infoD0Ev, 0, __ZN10__cxxabiv116__shim_type_infoD2Ev, 0, __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE,
0, ___getTypeName, 0, __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib, 0, __ZN10__cxxabiv117__class_type_infoD0Ev, 0, __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,
0, __ZNK10__cxxabiv116__shim_type_info5noop2Ev];
function __Znwj(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
var c = 0 == (b | 0) ? 1 : b, a = _malloc(c);
if(0 == (a | 0)) {
a = 2
}else {
var d = a, a = 4
}
break;
case 2:
var f = (tempValue = HEAP32[444], HEAP32[444] = tempValue + 0, tempValue);
0 == (f | 0) ? (d = 0, a = 4) : a = 3;
break;
case 3:
FUNCTION_TABLE[f]();
a = _malloc(c);
0 == (a | 0) ? a = 2 : (d = a, a = 4);
break;
case 4:
return d;
default:
assert(0, "bad label: " + a)
}
}
}
function _malloc(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 245 > b >>> 0 ? 2 : 78;
break;
case 2:
if(11 > b >>> 0) {
var c = 16, a = 4
}else {
a = 3
}
break;
case 3:
c = (b + 11 | 0) & -8;
a = 4;
break;
case 4:
var d = c >>> 3, f = HEAP32[104], e = f >>> (d >>> 0), a = 0 == (e & 3 | 0) ? 12 : 5;
break;
case 5:
var g = (e & 1 ^ 1) + d | 0, h = g << 1, i = 456 + (h << 2) | 0, j = 456 + ((h + 2 | 0) << 2) | 0, k = HEAP32[j >> 2], l = k + 8 | 0, s = HEAP32[l >> 2], a = (i | 0) == (s | 0) ? 6 : 7;
break;
case 6:
HEAP32[104] = f & (1 << g ^ -1);
a = 11;
break;
case 7:
a = s >>> 0 < HEAP32[108] >>> 0 ? 10 : 8;
break;
case 8:
var t = s + 12 | 0, a = (HEAP32[t >> 2] | 0) == (k | 0) ? 9 : 10;
break;
case 9:
HEAP32[t >> 2] = i;
HEAP32[j >> 2] = s;
a = 11;
break;
case 10:
throw _abort(), "Reached an unreachable!";;
case 11:
var v = g << 3;
HEAP32[(k + 4 | 0) >> 2] = v | 3;
var q = k + (v | 4) | 0;
HEAP32[q >> 2] |= 1;
var p = l, a = 333;
break;
case 12:
if(c >>> 0 > HEAP32[106] >>> 0) {
a = 13
}else {
var n = c, a = 160
}
break;
case 13:
a = 0 == (e | 0) ? 27 : 14;
break;
case 14:
var m = 2 << d, z = e << d & (m | -m | 0), W = (z & (-z | 0)) - 1 | 0, aa = W >>> 12 & 16, X = W >>> (aa >>> 0), I = X >>> 5 & 8, L = X >>> (I >>> 0), P = L >>> 2 & 4, Y = L >>> (P >>> 0), ja = Y >>> 1 & 2, ba = Y >>> (ja >>> 0), E = ba >>> 1 & 1, Z = (I | aa | P | ja | E) + (ba >>> (E >>> 0)) | 0, ta = Z << 1, Q = 456 + (ta << 2) | 0, M = 456 + ((ta + 2 | 0) << 2) | 0, ca = HEAP32[M >> 2], da = ca + 8 | 0, ua = HEAP32[da >> 2], a = (Q | 0) == (ua | 0) ? 15 : 16;
break;
case 15:
HEAP32[104] = f & (1 << Z ^ -1);
a = 20;
break;
case 16:
a = ua >>> 0 < HEAP32[108] >>> 0 ? 19 : 17;
break;
case 17:
var sb = ua + 12 | 0, a = (HEAP32[sb >> 2] | 0) == (ca | 0) ? 18 : 19;
break;
case 18:
HEAP32[sb >> 2] = Q;
HEAP32[M >> 2] = ua;
a = 20;
break;
case 19:
throw _abort(), "Reached an unreachable!";;
case 20:
var tb = Z << 3, Wa = tb - c | 0;
HEAP32[(ca + 4 | 0) >> 2] = c | 3;
var Xa = ca, mc = Xa + c | 0;
HEAP32[(Xa + (c | 4) | 0) >> 2] = Wa | 1;
HEAP32[(Xa + tb | 0) >> 2] = Wa;
var ub = HEAP32[106], a = 0 == (ub | 0) ? 26 : 21;
break;
case 21:
var ea = HEAP32[109], va = ub >>> 3, wa = va << 1, xa = 456 + (wa << 2) | 0, vb = HEAP32[104], fa = 1 << va, a = 0 == (vb & fa | 0) ? 22 : 23;
break;
case 22:
HEAP32[104] = vb | fa;
var ya = xa, Ya = 456 + ((wa + 2 | 0) << 2) | 0, a = 25;
break;
case 23:
var wb = 456 + ((wa + 2 | 0) << 2) | 0, za = HEAP32[wb >> 2];
za >>> 0 < HEAP32[108] >>> 0 ? a = 24 : (ya = za, Ya = wb, a = 25);
break;
case 24:
throw _abort(), "Reached an unreachable!";;
case 25:
HEAP32[Ya >> 2] = ea;
HEAP32[(ya + 12 | 0) >> 2] = ea;
HEAP32[(ea + 8 | 0) >> 2] = ya;
HEAP32[(ea + 12 | 0) >> 2] = xa;
a = 26;
break;
case 26:
HEAP32[106] = Wa;
HEAP32[109] = mc;
p = da;
a = 333;
break;
case 27:
var Za = HEAP32[105];
0 == (Za | 0) ? (n = c, a = 160) : a = 28;
break;
case 28:
var xb = (Za & (-Za | 0)) - 1 | 0, ka = xb >>> 12 & 16, yb = xb >>> (ka >>> 0), Aa = yb >>> 5 & 8, zb = yb >>> (Aa >>> 0), Ba = zb >>> 2 & 4, $a = zb >>> (Ba >>> 0), nc = $a >>> 1 & 2, oc = $a >>> (nc >>> 0), ab = oc >>> 1 & 1, Ca = HEAP32[(720 + (((Aa | ka | Ba | nc | ab) + (oc >>> (ab >>> 0)) | 0) << 2) | 0) >> 2], la = Ca, x = Ca, N = (HEAP32[(Ca + 4 | 0) >> 2] & -8) - c | 0, a = 29;
break;
case 29:
var ga = HEAP32[(la + 16 | 0) >> 2];
if(0 == (ga | 0)) {
a = 30
}else {
var R = ga, a = 31
}
break;
case 30:
var Ab = HEAP32[(la + 20 | 0) >> 2];
0 == (Ab | 0) ? a = 32 : (R = Ab, a = 31);
break;
case 31:
var Bb = (HEAP32[(R + 4 | 0) >> 2] & -8) - c | 0, Cb = Bb >>> 0 < N >>> 0, Da = Cb ? Bb : N, Ea = Cb ? R : x, la = R, x = Ea, N = Da, a = 29;
break;
case 32:
var S = x, Fa = HEAP32[108], a = S >>> 0 < Fa >>> 0 ? 76 : 33;
break;
case 33:
var Db = S + c | 0, pc = Db, a = S >>> 0 < Db >>> 0 ? 34 : 76;
break;
case 34:
var C = HEAP32[(x + 24 | 0) >> 2], Ga = HEAP32[(x + 12 | 0) >> 2], a = (Ga | 0) == (x | 0) ? 40 : 35;
break;
case 35:
var bb = HEAP32[(x + 8 | 0) >> 2], a = bb >>> 0 < Fa >>> 0 ? 39 : 36;
break;
case 36:
var ha = bb + 12 | 0, a = (HEAP32[ha >> 2] | 0) == (x | 0) ? 37 : 39;
break;
case 37:
var ma = Ga + 8 | 0, a = (HEAP32[ma >> 2] | 0) == (x | 0) ? 38 : 39;
break;
case 38:
HEAP32[ha >> 2] = Ga;
HEAP32[ma >> 2] = bb;
var F = Ga, a = 47;
break;
case 39:
throw _abort(), "Reached an unreachable!";;
case 40:
var Eb = x + 20 | 0, Fb = HEAP32[Eb >> 2];
if(0 == (Fb | 0)) {
a = 41
}else {
var ia = Fb, na = Eb, a = 42
}
break;
case 41:
var Gb = x + 16 | 0, Hb = HEAP32[Gb >> 2];
0 == (Hb | 0) ? (F = 0, a = 47) : (ia = Hb, na = Gb, a = 42);
break;
case 42:
var Ib = ia + 20 | 0, Jb = HEAP32[Ib >> 2];
0 == (Jb | 0) ? a = 43 : (ia = Jb, na = Ib, a = 42);
break;
case 43:
var Ha = ia + 16 | 0, Ia = HEAP32[Ha >> 2];
0 == (Ia | 0) ? a = 44 : (ia = Ia, na = Ha, a = 42);
break;
case 44:
a = na >>> 0 < Fa >>> 0 ? 46 : 45;
break;
case 45:
HEAP32[na >> 2] = 0;
F = ia;
a = 47;
break;
case 46:
throw _abort(), "Reached an unreachable!";;
case 47:
a = 0 == (C | 0) ? 67 : 48;
break;
case 48:
var T = HEAP32[(x + 28 | 0) >> 2], Kb = 720 + (T << 2) | 0, a = (x | 0) == (HEAP32[Kb >> 2] | 0) ? 49 : 51;
break;
case 49:
HEAP32[Kb >> 2] = F;
a = 0 == (F | 0) ? 50 : 57;
break;
case 50:
HEAP32[105] &= 1 << T ^ -1;
a = 67;
break;
case 51:
a = C >>> 0 < HEAP32[108] >>> 0 ? 55 : 52;
break;
case 52:
var cb = C + 16 | 0, a = (HEAP32[cb >> 2] | 0) == (x | 0) ? 53 : 54;
break;
case 53:
HEAP32[cb >> 2] = F;
a = 56;
break;
case 54:
HEAP32[(C + 20 | 0) >> 2] = F;
a = 56;
break;
case 55:
throw _abort(), "Reached an unreachable!";;
case 56:
a = 0 == (F | 0) ? 67 : 57;
break;
case 57:
a = F >>> 0 < HEAP32[108] >>> 0 ? 66 : 58;
break;
case 58:
HEAP32[(F + 24 | 0) >> 2] = C;
var Ja = HEAP32[(x + 16 | 0) >> 2], a = 0 == (Ja | 0) ? 62 : 59;
break;
case 59:
a = Ja >>> 0 < HEAP32[108] >>> 0 ? 61 : 60;
break;
case 60:
HEAP32[(F + 16 | 0) >> 2] = Ja;
HEAP32[(Ja + 24 | 0) >> 2] = F;
a = 62;
break;
case 61:
throw _abort(), "Reached an unreachable!";;
case 62:
var Ka = HEAP32[(x + 20 | 0) >> 2], a = 0 == (Ka | 0) ? 67 : 63;
break;
case 63:
a = Ka >>> 0 < HEAP32[108] >>> 0 ? 65 : 64;
break;
case 64:
HEAP32[(F + 20 | 0) >> 2] = Ka;
HEAP32[(Ka + 24 | 0) >> 2] = F;
a = 67;
break;
case 65:
throw _abort(), "Reached an unreachable!";;
case 66:
throw _abort(), "Reached an unreachable!";;
case 67:
a = 16 > N >>> 0 ? 68 : 69;
break;
case 68:
var Lb = N + c | 0;
HEAP32[(x + 4 | 0) >> 2] = Lb | 3;
var db = S + (Lb + 4 | 0) | 0;
HEAP32[db >> 2] |= 1;
a = 77;
break;
case 69:
HEAP32[(x + 4 | 0) >> 2] = c | 3;
HEAP32[(S + (c | 4) | 0) >> 2] = N | 1;
HEAP32[(S + (N + c | 0) | 0) >> 2] = N;
var Mb = HEAP32[106], a = 0 == (Mb | 0) ? 75 : 70;
break;
case 70:
var La = HEAP32[109], Nb = Mb >>> 3, oa = Nb << 1, eb = 456 + (oa << 2) | 0, $ = HEAP32[104], Ob = 1 << Nb, a = 0 == ($ & Ob | 0) ? 71 : 72;
break;
case 71:
HEAP32[104] = $ | Ob;
var fb = eb, Pb = 456 + ((oa + 2 | 0) << 2) | 0, a = 74;
break;
case 72:
var Qb = 456 + ((oa + 2 | 0) << 2) | 0, Rb = HEAP32[Qb >> 2];
Rb >>> 0 < HEAP32[108] >>> 0 ? a = 73 : (fb = Rb, Pb = Qb, a = 74);
break;
case 73:
throw _abort(), "Reached an unreachable!";;
case 74:
HEAP32[Pb >> 2] = La;
HEAP32[(fb + 12 | 0) >> 2] = La;
HEAP32[(La + 8 | 0) >> 2] = fb;
HEAP32[(La + 12 | 0) >> 2] = eb;
a = 75;
break;
case 75:
HEAP32[106] = N;
HEAP32[109] = pc;
a = 77;
break;
case 76:
throw _abort(), "Reached an unreachable!";;
case 77:
var Sb = x + 8 | 0, Tb = Sb;
0 == (Sb | 0) ? (n = c, a = 160) : (p = Tb, a = 333);
break;
case 78:
4294967231 < b >>> 0 ? (n = -1, a = 160) : a = 79;
break;
case 79:
var Ub = b + 11 | 0, u = Ub & -8, qc = HEAP32[105];
0 == (qc | 0) ? (n = u, a = 160) : a = 80;
break;
case 80:
var Vb = -u | 0, Ma = Ub >>> 8;
if(0 == (Ma | 0)) {
var G = 0, a = 83
}else {
a = 81
}
break;
case 81:
16777215 < u >>> 0 ? (G = 31, a = 83) : a = 82;
break;
case 82:
var gb = (Ma + 1048320 | 0) >>> 16 & 8, Wb = Ma << gb, rc = (Wb + 520192 | 0) >>> 16 & 4, Xb = Wb << rc, hb = (Xb + 245760 | 0) >>> 16 & 2, Yb = (14 - (rc | gb | hb) | 0) + (Xb << hb >>> 15) | 0, G = u >>> ((Yb + 7 | 0) >>> 0) & 1 | Yb << 1, a = 83;
break;
case 83:
var Zb = HEAP32[(720 + (G << 2) | 0) >> 2];
if(0 == (Zb | 0)) {
var pa = 0, Na = Vb, ib = 0, a = 90
}else {
a = 84
}
break;
case 84:
if(31 == (G | 0)) {
var Nd = 0, a = 86
}else {
a = 85
}
break;
case 85:
Nd = 25 - (G >>> 1) | 0;
a = 86;
break;
case 86:
var Od = 0, Mc = Vb, Oa = Zb, Nc = u << Nd, Pd = 0, a = 87;
break;
case 87:
var Qd = HEAP32[(Oa + 4 | 0) >> 2] & -8, Oc = Qd - u | 0;
if(Oc >>> 0 < Mc >>> 0) {
a = 88
}else {
var Pc = Od, Qc = Mc, a = 89
}
break;
case 88:
(Qd | 0) == (u | 0) ? (pa = Oa, Na = Oc, ib = Oa, a = 90) : (Pc = Oa, Qc = Oc, a = 89);
break;
case 89:
var Rc = HEAP32[(Oa + 20 | 0) >> 2], Sc = HEAP32[(Oa + 16 + (Nc >>> 31 << 2) | 0) >> 2], Rd = 0 == (Rc | 0) | (Rc | 0) == (Sc | 0) ? Pd : Rc, Zg = Nc << 1;
0 == (Sc | 0) ? (pa = Pc, Na = Qc, ib = Rd, a = 90) : (Od = Pc, Mc = Qc, Oa = Sc, Nc = Zg, Pd = Rd, a = 87);
break;
case 90:
if(0 == (ib | 0) & 0 == (pa | 0)) {
a = 91
}else {
var Tc = ib, a = 93
}
break;
case 91:
var Sd = 2 << G, Uc = (Sd | -Sd | 0) & qc;
0 == (Uc | 0) ? (n = u, a = 160) : a = 92;
break;
case 92:
var Td = (Uc & (-Uc | 0)) - 1 | 0, Ud = Td >>> 12 & 16, Vd = Td >>> (Ud >>> 0), Wd = Vd >>> 5 & 8, Xd = Vd >>> (Wd >>> 0), Yd = Xd >>> 2 & 4, Zd = Xd >>> (Yd >>> 0), $d = Zd >>> 1 & 2, ae = Zd >>> ($d >>> 0), be = ae >>> 1 & 1, Tc = HEAP32[(720 + (((Wd | Ud | Yd | $d | be) + (ae >>> (be >>> 0)) | 0) << 2) | 0) >> 2], a = 93;
break;
case 93:
if(0 == (Tc | 0)) {
var H = Na, D = pa, a = 96
}else {
var jb = Tc, sc = Na, Vc = pa, a = 94
}
break;
case 94:
var ce = (HEAP32[(jb + 4 | 0) >> 2] & -8) - u | 0, de = ce >>> 0 < sc >>> 0, Wc = de ? ce : sc, Xc = de ? jb : Vc, ee = HEAP32[(jb + 16 | 0) >> 2];
0 == (ee | 0) ? a = 95 : (jb = ee, sc = Wc, Vc = Xc, a = 94);
break;
case 95:
var fe = HEAP32[(jb + 20 | 0) >> 2];
0 == (fe | 0) ? (H = Wc, D = Xc, a = 96) : (jb = fe, sc = Wc, Vc = Xc, a = 94);
break;
case 96:
0 == (D | 0) ? (n = u, a = 160) : a = 97;
break;
case 97:
H >>> 0 < (HEAP32[106] - u | 0) >>> 0 ? a = 98 : (n = u, a = 160);
break;
case 98:
var A = D, Yc = HEAP32[108], a = A >>> 0 < Yc >>> 0 ? 158 : 99;
break;
case 99:
var Zc = A + u | 0, ge = Zc, a = A >>> 0 < Zc >>> 0 ? 100 : 158;
break;
case 100:
var $b = HEAP32[(D + 24 | 0) >> 2], tc = HEAP32[(D + 12 | 0) >> 2], a = (tc | 0) == (D | 0) ? 106 : 101;
break;
case 101:
var $c = HEAP32[(D + 8 | 0) >> 2], a = $c >>> 0 < Yc >>> 0 ? 105 : 102;
break;
case 102:
var he = $c + 12 | 0, a = (HEAP32[he >> 2] | 0) == (D | 0) ? 103 : 105;
break;
case 103:
var ie = tc + 8 | 0, a = (HEAP32[ie >> 2] | 0) == (D | 0) ? 104 : 105;
break;
case 104:
HEAP32[he >> 2] = tc;
HEAP32[ie >> 2] = $c;
var J = tc, a = 113;
break;
case 105:
throw _abort(), "Reached an unreachable!";;
case 106:
var je = D + 20 | 0, ke = HEAP32[je >> 2];
if(0 == (ke | 0)) {
a = 107
}else {
var kb = ke, ac = je, a = 108
}
break;
case 107:
var le = D + 16 | 0, me = HEAP32[le >> 2];
0 == (me | 0) ? (J = 0, a = 113) : (kb = me, ac = le, a = 108);
break;
case 108:
var ne = kb + 20 | 0, oe = HEAP32[ne >> 2];
0 == (oe | 0) ? a = 109 : (kb = oe, ac = ne, a = 108);
break;
case 109:
var pe = kb + 16 | 0, qe = HEAP32[pe >> 2];
0 == (qe | 0) ? a = 110 : (kb = qe, ac = pe, a = 108);
break;
case 110:
a = ac >>> 0 < Yc >>> 0 ? 112 : 111;
break;
case 111:
HEAP32[ac >> 2] = 0;
J = kb;
a = 113;
break;
case 112:
throw _abort(), "Reached an unreachable!";;
case 113:
a = 0 == ($b | 0) ? 133 : 114;
break;
case 114:
var re = HEAP32[(D + 28 | 0) >> 2], se = 720 + (re << 2) | 0, a = (D | 0) == (HEAP32[se >> 2] | 0) ? 115 : 117;
break;
case 115:
HEAP32[se >> 2] = J;
a = 0 == (J | 0) ? 116 : 123;
break;
case 116:
HEAP32[105] &= 1 << re ^ -1;
a = 133;
break;
case 117:
a = $b >>> 0 < HEAP32[108] >>> 0 ? 121 : 118;
break;
case 118:
var te = $b + 16 | 0, a = (HEAP32[te >> 2] | 0) == (D | 0) ? 119 : 120;
break;
case 119:
HEAP32[te >> 2] = J;
a = 122;
break;
case 120:
HEAP32[($b + 20 | 0) >> 2] = J;
a = 122;
break;
case 121:
throw _abort(), "Reached an unreachable!";;
case 122:
a = 0 == (J | 0) ? 133 : 123;
break;
case 123:
a = J >>> 0 < HEAP32[108] >>> 0 ? 132 : 124;
break;
case 124:
HEAP32[(J + 24 | 0) >> 2] = $b;
var uc = HEAP32[(D + 16 | 0) >> 2], a = 0 == (uc | 0) ? 128 : 125;
break;
case 125:
a = uc >>> 0 < HEAP32[108] >>> 0 ? 127 : 126;
break;
case 126:
HEAP32[(J + 16 | 0) >> 2] = uc;
HEAP32[(uc + 24 | 0) >> 2] = J;
a = 128;
break;
case 127:
throw _abort(), "Reached an unreachable!";;
case 128:
var vc = HEAP32[(D + 20 | 0) >> 2], a = 0 == (vc | 0) ? 133 : 129;
break;
case 129:
a = vc >>> 0 < HEAP32[108] >>> 0 ? 131 : 130;
break;
case 130:
HEAP32[(J + 20 | 0) >> 2] = vc;
HEAP32[(vc + 24 | 0) >> 2] = J;
a = 133;
break;
case 131:
throw _abort(), "Reached an unreachable!";;
case 132:
throw _abort(), "Reached an unreachable!";;
case 133:
a = 16 > H >>> 0 ? 134 : 135;
break;
case 134:
var ue = H + u | 0;
HEAP32[(D + 4 | 0) >> 2] = ue | 3;
var ve = A + (ue + 4 | 0) | 0;
HEAP32[ve >> 2] |= 1;
a = 159;
break;
case 135:
HEAP32[(D + 4 | 0) >> 2] = u | 3;
HEAP32[(A + (u | 4) | 0) >> 2] = H | 1;
HEAP32[(A + (H + u | 0) | 0) >> 2] = H;
var we = H >>> 3, a = 256 > H >>> 0 ? 136 : 141;
break;
case 136:
var ad = we << 1, xe = 456 + (ad << 2) | 0, ye = HEAP32[104], ze = 1 << we, a = 0 == (ye & ze | 0) ? 137 : 138;
break;
case 137:
HEAP32[104] = ye | ze;
var bd = xe, Ae = 456 + ((ad + 2 | 0) << 2) | 0, a = 140;
break;
case 138:
var Be = 456 + ((ad + 2 | 0) << 2) | 0, Ce = HEAP32[Be >> 2];
Ce >>> 0 < HEAP32[108] >>> 0 ? a = 139 : (bd = Ce, Ae = Be, a = 140);
break;
case 139:
throw _abort(), "Reached an unreachable!";;
case 140:
HEAP32[Ae >> 2] = ge;
HEAP32[(bd + 12 | 0) >> 2] = ge;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = bd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = xe;
a = 159;
break;
case 141:
var qa = Zc, cd = H >>> 8;
if(0 == (cd | 0)) {
var Pa = 0, a = 144
}else {
a = 142
}
break;
case 142:
16777215 < H >>> 0 ? (Pa = 31, a = 144) : a = 143;
break;
case 143:
var De = (cd + 1048320 | 0) >>> 16 & 8, Ee = cd << De, Fe = (Ee + 520192 | 0) >>> 16 & 4, Ge = Ee << Fe, He = (Ge + 245760 | 0) >>> 16 & 2, Ie = (14 - (Fe | De | He) | 0) + (Ge << He >>> 15) | 0, Pa = H >>> ((Ie + 7 | 0) >>> 0) & 1 | Ie << 1, a = 144;
break;
case 144:
var dd = 720 + (Pa << 2) | 0;
HEAP32[(A + (u + 28 | 0) | 0) >> 2] = Pa;
var $g = A + (u + 16 | 0) | 0;
HEAP32[(A + (u + 20 | 0) | 0) >> 2] = 0;
HEAP32[$g >> 2] = 0;
var Je = HEAP32[105], Ke = 1 << Pa, a = 0 == (Je & Ke | 0) ? 145 : 146;
break;
case 145:
HEAP32[105] = Je | Ke;
HEAP32[dd >> 2] = qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = dd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = qa;
a = 159;
break;
case 146:
var ah = HEAP32[dd >> 2];
if(31 == (Pa | 0)) {
var Le = 0, a = 148
}else {
a = 147
}
break;
case 147:
Le = 25 - (Pa >>> 1) | 0;
a = 148;
break;
case 148:
var ed = H << Le, Qa = ah, a = 149;
break;
case 149:
a = (HEAP32[(Qa + 4 | 0) >> 2] & -8 | 0) == (H | 0) ? 154 : 150;
break;
case 150:
var fd = Qa + 16 + (ed >>> 31 << 2) | 0, Me = HEAP32[fd >> 2], bh = ed << 1;
0 == (Me | 0) ? a = 151 : (ed = bh, Qa = Me, a = 149);
break;
case 151:
a = fd >>> 0 < HEAP32[108] >>> 0 ? 153 : 152;
break;
case 152:
HEAP32[fd >> 2] = qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = Qa;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = qa;
a = 159;
break;
case 153:
throw _abort(), "Reached an unreachable!";;
case 154:
var Ne = Qa + 8 | 0, gd = HEAP32[Ne >> 2], Oe = HEAP32[108], a = Qa >>> 0 < Oe >>> 0 ? 157 : 155;
break;
case 155:
a = gd >>> 0 < Oe >>> 0 ? 157 : 156;
break;
case 156:
HEAP32[(gd + 12 | 0) >> 2] = qa;
HEAP32[Ne >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = gd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = Qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = 0;
a = 159;
break;
case 157:
throw _abort(), "Reached an unreachable!";;
case 158:
throw _abort(), "Reached an unreachable!";;
case 159:
var Pe = D + 8 | 0, ch = Pe;
0 == (Pe | 0) ? (n = u, a = 160) : (p = ch, a = 333);
break;
case 160:
var bc = HEAP32[106], a = n >>> 0 > bc >>> 0 ? 165 : 161;
break;
case 161:
var wc = bc - n | 0, cc = HEAP32[109], a = 15 < wc >>> 0 ? 162 : 163;
break;
case 162:
var hd = cc;
HEAP32[109] = hd + n | 0;
HEAP32[106] = wc;
HEAP32[(hd + (n + 4 | 0) | 0) >> 2] = wc | 1;
HEAP32[(hd + bc | 0) >> 2] = wc;
HEAP32[(cc + 4 | 0) >> 2] = n | 3;
a = 164;
break;
case 163:
HEAP32[106] = 0;
HEAP32[109] = 0;
HEAP32[(cc + 4 | 0) >> 2] = bc | 3;
var Qe = cc + (bc + 4 | 0) | 0;
HEAP32[Qe >> 2] |= 1;
a = 164;
break;
case 164:
p = cc + 8 | 0;
a = 333;
break;
case 165:
var Re = HEAP32[107], a = n >>> 0 < Re >>> 0 ? 166 : 167;
break;
case 166:
var Se = Re - n | 0;
HEAP32[107] = Se;
var id = HEAP32[110], Te = id;
HEAP32[110] = Te + n | 0;
HEAP32[(Te + (n + 4 | 0) | 0) >> 2] = Se | 1;
HEAP32[(id + 4 | 0) >> 2] = n | 3;
p = id + 8 | 0;
a = 333;
break;
case 167:
a = 0 == (HEAP32[2] | 0) ? 168 : 169;
break;
case 168:
_init_mparams();
a = 169;
break;
case 169:
var dh = n + 48 | 0, Ue = HEAP32[4], Ve = n + 47 | 0, We = Ue + Ve | 0, Xe = -Ue | 0, lb = We & Xe;
lb >>> 0 > n >>> 0 ? a = 170 : (p = 0, a = 333);
break;
case 170:
var Ye = HEAP32[214], a = 0 == (Ye | 0) ? 172 : 171;
break;
case 171:
var Ze = HEAP32[212], $e = Ze + lb | 0;
$e >>> 0 <= Ze >>> 0 | $e >>> 0 > Ye >>> 0 ? (p = 0, a = 333) : a = 172;
break;
case 172:
if(0 == (HEAP32[215] & 4 | 0)) {
a = 173
}else {
var af = 0, a = 196
}
break;
case 173:
var bf = HEAP32[110], a = 0 == (bf | 0) ? 179 : 174;
break;
case 174:
var cf = bf, dc = 864, a = 175;
break;
case 175:
var df = dc | 0, ef = HEAP32[df >> 2], a = ef >>> 0 > cf >>> 0 ? 177 : 176;
break;
case 176:
var ff = dc + 4 | 0, a = (ef + HEAP32[ff >> 2] | 0) >>> 0 > cf >>> 0 ? 178 : 177;
break;
case 177:
var gf = HEAP32[(dc + 8 | 0) >> 2];
0 == (gf | 0) ? a = 179 : (dc = gf, a = 175);
break;
case 178:
a = 0 == (dc | 0) ? 179 : 186;
break;
case 179:
var xc = _sbrk(0);
if(-1 == (xc | 0)) {
var mb = 0, a = 195
}else {
a = 180
}
break;
case 180:
var jd = xc, hf = HEAP32[3], jf = hf - 1 | 0;
if(0 == (jf & jd | 0)) {
var Ra = lb, a = 182
}else {
a = 181
}
break;
case 181:
Ra = (lb - jd | 0) + ((jf + jd | 0) & (-hf | 0)) | 0;
a = 182;
break;
case 182:
var kf = HEAP32[212], lf = kf + Ra | 0;
Ra >>> 0 > n >>> 0 & 2147483647 > Ra >>> 0 ? a = 183 : (mb = 0, a = 195);
break;
case 183:
var mf = HEAP32[214], a = 0 == (mf | 0) ? 185 : 184;
break;
case 184:
lf >>> 0 <= kf >>> 0 | lf >>> 0 > mf >>> 0 ? (mb = 0, a = 195) : a = 185;
break;
case 185:
var nf = _sbrk(Ra), of = (nf | 0) == (xc | 0), kd = of ? xc : -1, yc = of ? Ra : 0, zc = nf, ra = Ra, a = 188;
break;
case 186:
var Ac = (We - HEAP32[107] | 0) & Xe;
2147483647 > Ac >>> 0 ? a = 187 : (mb = 0, a = 195);
break;
case 187:
var ld = _sbrk(Ac), pf = (ld | 0) == (HEAP32[df >> 2] + HEAP32[ff >> 2] | 0), eh = pf ? Ac : 0, kd = pf ? ld : -1, yc = eh, zc = ld, ra = Ac, a = 188;
break;
case 188:
var fh = -ra | 0;
if(-1 == (kd | 0)) {
a = 189
}else {
var y = yc, r = kd, a = 199
}
break;
case 189:
if(-1 != (zc | 0) & 2147483647 > ra >>> 0 & ra >>> 0 < dh >>> 0) {
a = 190
}else {
var md = ra, a = 194
}
break;
case 190:
var qf = HEAP32[4], nd = ((Ve - ra | 0) + qf | 0) & (-qf | 0);
2147483647 > nd >>> 0 ? a = 191 : (md = ra, a = 194);
break;
case 191:
a = -1 == (_sbrk(nd) | 0) ? 193 : 192;
break;
case 192:
md = nd + ra | 0;
a = 194;
break;
case 193:
_sbrk(fh);
mb = yc;
a = 195;
break;
case 194:
-1 == (zc | 0) ? (mb = yc, a = 195) : (y = md, r = zc, a = 199);
break;
case 195:
HEAP32[215] |= 4;
af = mb;
a = 196;
break;
case 196:
a = 2147483647 > lb >>> 0 ? 197 : 332;
break;
case 197:
var Bc = _sbrk(lb), od = _sbrk(0), a = -1 != (od | 0) & -1 != (Bc | 0) & Bc >>> 0 < od >>> 0 ? 198 : 332;
break;
case 198:
var rf = od - Bc | 0, sf = rf >>> 0 > (n + 40 | 0) >>> 0, gh = sf ? rf : af, tf = sf ? Bc : -1;
-1 == (tf | 0) ? a = 332 : (y = gh, r = tf, a = 199);
break;
case 199:
var pd = HEAP32[212] + y | 0;
HEAP32[212] = pd;
a = pd >>> 0 > HEAP32[213] >>> 0 ? 200 : 201;
break;
case 200:
HEAP32[213] = pd;
a = 201;
break;
case 201:
var w = HEAP32[110];
if(0 == (w | 0)) {
a = 202
}else {
var ec = 864, a = 207
}
break;
case 202:
var uf = HEAP32[108], a = 0 == (uf | 0) | r >>> 0 < uf >>> 0 ? 203 : 204;
break;
case 203:
HEAP32[108] = r;
a = 204;
break;
case 204:
HEAP32[216] = r;
HEAP32[217] = y;
HEAP32[219] = 0;
HEAP32[113] = HEAP32[2];
HEAP32[112] = -1;
var qd = 0, a = 205;
break;
case 205:
var rd = qd << 1, vf = 456 + (rd << 2) | 0;
HEAP32[(456 + ((rd + 3 | 0) << 2) | 0) >> 2] = vf;
HEAP32[(456 + ((rd + 2 | 0) << 2) | 0) >> 2] = vf;
var wf = qd + 1 | 0;
32 > wf >>> 0 ? (qd = wf, a = 205) : a = 206;
break;
case 206:
_init_top(r, y - 40 | 0);
a = 330;
break;
case 207:
var xf = HEAP32[(ec | 0) >> 2], yf = ec + 4 | 0, zf = HEAP32[yf >> 2], a = (r | 0) == (xf + zf | 0) ? 209 : 208;
break;
case 208:
var Af = HEAP32[(ec + 8 | 0) >> 2];
0 == (Af | 0) ? a = 212 : (ec = Af, a = 207);
break;
case 209:
a = 0 == (HEAP32[(ec + 12 | 0) >> 2] & 8 | 0) ? 210 : 212;
break;
case 210:
var Bf = w, a = Bf >>> 0 >= xf >>> 0 & Bf >>> 0 < r >>> 0 ? 211 : 212;
break;
case 211:
HEAP32[yf >> 2] = zf + y | 0;
_init_top(w, HEAP32[107] + y | 0);
a = 330;
break;
case 212:
a = r >>> 0 < HEAP32[108] >>> 0 ? 213 : 214;
break;
case 213:
HEAP32[108] = r;
a = 214;
break;
case 214:
var hh = r + y | 0, fc = 864, a = 215;
break;
case 215:
var Cf = fc | 0, a = (HEAP32[Cf >> 2] | 0) == (hh | 0) ? 217 : 216;
break;
case 216:
var Df = HEAP32[(fc + 8 | 0) >> 2];
0 == (Df | 0) ? a = 298 : (fc = Df, a = 215);
break;
case 217:
a = 0 == (HEAP32[(fc + 12 | 0) >> 2] & 8 | 0) ? 218 : 298;
break;
case 218:
HEAP32[Cf >> 2] = r;
var Ef = fc + 4 | 0;
HEAP32[Ef >> 2] = HEAP32[Ef >> 2] + y | 0;
var Ff = r + 8 | 0;
if(0 == (Ff & 7 | 0)) {
var gc = 0, a = 220
}else {
a = 219
}
break;
case 219:
gc = (-Ff | 0) & 7;
a = 220;
break;
case 220:
var ih = r + gc | 0, Gf = r + (y + 8 | 0) | 0;
if(0 == (Gf & 7 | 0)) {
var O = 0, a = 222
}else {
a = 221
}
break;
case 221:
O = (-Gf | 0) & 7;
a = 222;
break;
case 222:
var sd = r + (O + y | 0) | 0, hc = sd, B = gc + n | 0, Hf = r + B | 0, Cc = Hf, Dc = (sd - ih | 0) - n | 0;
HEAP32[(r + (gc + 4 | 0) | 0) >> 2] = n | 3;
a = (hc | 0) == (HEAP32[110] | 0) ? 223 : 224;
break;
case 223:
var If = HEAP32[107] + Dc | 0;
HEAP32[107] = If;
HEAP32[110] = Cc;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = If | 1;
a = 297;
break;
case 224:
a = (hc | 0) == (HEAP32[109] | 0) ? 225 : 226;
break;
case 225:
var Ec = HEAP32[106] + Dc | 0;
HEAP32[106] = Ec;
HEAP32[109] = Cc;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = Ec | 1;
HEAP32[(r + (Ec + B | 0) | 0) >> 2] = Ec;
a = 297;
break;
case 226:
var td = y + 4 | 0, Fc = HEAP32[(r + (O + td | 0) | 0) >> 2];
if(1 == (Fc & 3 | 0)) {
a = 227
}else {
var Jf = hc, U = Dc, a = 274
}
break;
case 227:
var Kf = Fc & -8, Lf = Fc >>> 3, a = 256 > Fc >>> 0 ? 228 : 240;
break;
case 228:
var nb = HEAP32[(r + ((O | 8) + y | 0) | 0) >> 2], ob = HEAP32[(r + ((y + 12 | 0) + O | 0) | 0) >> 2], Mf = 456 + (Lf << 1 << 2) | 0, a = (nb | 0) == (Mf | 0) ? 231 : 229;
break;
case 229:
a = nb >>> 0 < HEAP32[108] >>> 0 ? 239 : 230;
break;
case 230:
a = (HEAP32[(nb + 12 | 0) >> 2] | 0) == (hc | 0) ? 231 : 239;
break;
case 231:
a = (ob | 0) == (nb | 0) ? 232 : 233;
break;
case 232:
HEAP32[104] &= 1 << Lf ^ -1;
a = 273;
break;
case 233:
a = (ob | 0) == (Mf | 0) ? 234 : 235;
break;
case 234:
var Nf = ob + 8 | 0, a = 237;
break;
case 235:
a = ob >>> 0 < HEAP32[108] >>> 0 ? 238 : 236;
break;
case 236:
var Of = ob + 8 | 0;
(HEAP32[Of >> 2] | 0) == (hc | 0) ? (Nf = Of, a = 237) : a = 238;
break;
case 237:
HEAP32[(nb + 12 | 0) >> 2] = ob;
HEAP32[Nf >> 2] = nb;
a = 273;
break;
case 238:
throw _abort(), "Reached an unreachable!";;
case 239:
throw _abort(), "Reached an unreachable!";;
case 240:
var ic = sd, jc = HEAP32[(r + ((O | 24) + y | 0) | 0) >> 2], Gc = HEAP32[(r + ((y + 12 | 0) + O | 0) | 0) >> 2], a = (Gc | 0) == (ic | 0) ? 246 : 241;
break;
case 241:
var ud = HEAP32[(r + ((O | 8) + y | 0) | 0) >> 2], a = ud >>> 0 < HEAP32[108] >>> 0 ? 245 : 242;
break;
case 242:
var Pf = ud + 12 | 0, a = (HEAP32[Pf >> 2] | 0) == (ic | 0) ? 243 : 245;
break;
case 243:
var Qf = Gc + 8 | 0, a = (HEAP32[Qf >> 2] | 0) == (ic | 0) ? 244 : 245;
break;
case 244:
HEAP32[Pf >> 2] = Gc;
HEAP32[Qf >> 2] = ud;
var K = Gc, a = 253;
break;
case 245:
throw _abort(), "Reached an unreachable!";;
case 246:
var Rf = O | 16, Sf = r + (Rf + td | 0) | 0, Tf = HEAP32[Sf >> 2];
if(0 == (Tf | 0)) {
a = 247
}else {
var pb = Tf, kc = Sf, a = 248
}
break;
case 247:
var Uf = r + (Rf + y | 0) | 0, Vf = HEAP32[Uf >> 2];
0 == (Vf | 0) ? (K = 0, a = 253) : (pb = Vf, kc = Uf, a = 248);
break;
case 248:
var Wf = pb + 20 | 0, Xf = HEAP32[Wf >> 2];
0 == (Xf | 0) ? a = 249 : (pb = Xf, kc = Wf, a = 248);
break;
case 249:
var Yf = pb + 16 | 0, Zf = HEAP32[Yf >> 2];
0 == (Zf | 0) ? a = 250 : (pb = Zf, kc = Yf, a = 248);
break;
case 250:
a = kc >>> 0 < HEAP32[108] >>> 0 ? 252 : 251;
break;
case 251:
HEAP32[kc >> 2] = 0;
K = pb;
a = 253;
break;
case 252:
throw _abort(), "Reached an unreachable!";;
case 253:
a = 0 == (jc | 0) ? 273 : 254;
break;
case 254:
var $f = HEAP32[(r + ((y + 28 | 0) + O | 0) | 0) >> 2], ag = 720 + ($f << 2) | 0, a = (ic | 0) == (HEAP32[ag >> 2] | 0) ? 255 : 257;
break;
case 255:
HEAP32[ag >> 2] = K;
a = 0 == (K | 0) ? 256 : 263;
break;
case 256:
HEAP32[105] &= 1 << $f ^ -1;
a = 273;
break;
case 257:
a = jc >>> 0 < HEAP32[108] >>> 0 ? 261 : 258;
break;
case 258:
var bg = jc + 16 | 0, a = (HEAP32[bg >> 2] | 0) == (ic | 0) ? 259 : 260;
break;
case 259:
HEAP32[bg >> 2] = K;
a = 262;
break;
case 260:
HEAP32[(jc + 20 | 0) >> 2] = K;
a = 262;
break;
case 261:
throw _abort(), "Reached an unreachable!";;
case 262:
a = 0 == (K | 0) ? 273 : 263;
break;
case 263:
a = K >>> 0 < HEAP32[108] >>> 0 ? 272 : 264;
break;
case 264:
HEAP32[(K + 24 | 0) >> 2] = jc;
var cg = O | 16, Hc = HEAP32[(r + (cg + y | 0) | 0) >> 2], a = 0 == (Hc | 0) ? 268 : 265;
break;
case 265:
a = Hc >>> 0 < HEAP32[108] >>> 0 ? 267 : 266;
break;
case 266:
HEAP32[(K + 16 | 0) >> 2] = Hc;
HEAP32[(Hc + 24 | 0) >> 2] = K;
a = 268;
break;
case 267:
throw _abort(), "Reached an unreachable!";;
case 268:
var Ic = HEAP32[(r + (cg + td | 0) | 0) >> 2], a = 0 == (Ic | 0) ? 273 : 269;
break;
case 269:
a = Ic >>> 0 < HEAP32[108] >>> 0 ? 271 : 270;
break;
case 270:
HEAP32[(K + 20 | 0) >> 2] = Ic;
HEAP32[(Ic + 24 | 0) >> 2] = K;
a = 273;
break;
case 271:
throw _abort(), "Reached an unreachable!";;
case 272:
throw _abort(), "Reached an unreachable!";;
case 273:
var jh = Kf + Dc | 0, Jf = r + ((Kf | O) + y | 0) | 0, U = jh, a = 274;
break;
case 274:
var dg = Jf + 4 | 0;
HEAP32[dg >> 2] &= -2;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = U | 1;
HEAP32[(r + (U + B | 0) | 0) >> 2] = U;
var eg = U >>> 3, a = 256 > U >>> 0 ? 275 : 280;
break;
case 275:
var vd = eg << 1, fg = 456 + (vd << 2) | 0, gg = HEAP32[104], hg = 1 << eg, a = 0 == (gg & hg | 0) ? 276 : 277;
break;
case 276:
HEAP32[104] = gg | hg;
var wd = fg, ig = 456 + ((vd + 2 | 0) << 2) | 0, a = 279;
break;
case 277:
var jg = 456 + ((vd + 2 | 0) << 2) | 0, kg = HEAP32[jg >> 2];
kg >>> 0 < HEAP32[108] >>> 0 ? a = 278 : (wd = kg, ig = jg, a = 279);
break;
case 278:
throw _abort(), "Reached an unreachable!";;
case 279:
HEAP32[ig >> 2] = Cc;
HEAP32[(wd + 12 | 0) >> 2] = Cc;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = wd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = fg;
a = 297;
break;
case 280:
var sa = Hf, xd = U >>> 8;
if(0 == (xd | 0)) {
var Sa = 0, a = 283
}else {
a = 281
}
break;
case 281:
16777215 < U >>> 0 ? (Sa = 31, a = 283) : a = 282;
break;
case 282:
var lg = (xd + 1048320 | 0) >>> 16 & 8, mg = xd << lg, ng = (mg + 520192 | 0) >>> 16 & 4, og = mg << ng, pg = (og + 245760 | 0) >>> 16 & 2, qg = (14 - (ng | lg | pg) | 0) + (og << pg >>> 15) | 0, Sa = U >>> ((qg + 7 | 0) >>> 0) & 1 | qg << 1, a = 283;
break;
case 283:
var yd = 720 + (Sa << 2) | 0;
HEAP32[(r + (B + 28 | 0) | 0) >> 2] = Sa;
var kh = r + (B + 16 | 0) | 0;
HEAP32[(r + (B + 20 | 0) | 0) >> 2] = 0;
HEAP32[kh >> 2] = 0;
var rg = HEAP32[105], sg = 1 << Sa, a = 0 == (rg & sg | 0) ? 284 : 285;
break;
case 284:
HEAP32[105] = rg | sg;
HEAP32[yd >> 2] = sa;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = yd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = sa;
a = 297;
break;
case 285:
var lh = HEAP32[yd >> 2];
if(31 == (Sa | 0)) {
var tg = 0, a = 287
}else {
a = 286
}
break;
case 286:
tg = 25 - (Sa >>> 1) | 0;
a = 287;
break;
case 287:
var zd = U << tg, Ta = lh, a = 288;
break;
case 288:
a = (HEAP32[(Ta + 4 | 0) >> 2] & -8 | 0) == (U | 0) ? 293 : 289;
break;
case 289:
var Ad = Ta + 16 + (zd >>> 31 << 2) | 0, ug = HEAP32[Ad >> 2], mh = zd << 1;
0 == (ug | 0) ? a = 290 : (zd = mh, Ta = ug, a = 288);
break;
case 290:
a = Ad >>> 0 < HEAP32[108] >>> 0 ? 292 : 291;
break;
case 291:
HEAP32[Ad >> 2] = sa;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = Ta;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = sa;
a = 297;
break;
case 292:
throw _abort(), "Reached an unreachable!";;
case 293:
var vg = Ta + 8 | 0, Bd = HEAP32[vg >> 2], wg = HEAP32[108], a = Ta >>> 0 < wg >>> 0 ? 296 : 294;
break;
case 294:
a = Bd >>> 0 < wg >>> 0 ? 296 : 295;
break;
case 295:
HEAP32[(Bd + 12 | 0) >> 2] = sa;
HEAP32[vg >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = Bd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = Ta;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = 0;
a = 297;
break;
case 296:
throw _abort(), "Reached an unreachable!";;
case 297:
p = r + (gc | 8) | 0;
a = 333;
break;
case 298:
var qb = w, Jc = 864, a = 299;
break;
case 299:
var Kc = HEAP32[(Jc | 0) >> 2], a = Kc >>> 0 > qb >>> 0 ? 301 : 300;
break;
case 300:
var Cd = HEAP32[(Jc + 4 | 0) >> 2], Dd = Kc + Cd | 0, a = Dd >>> 0 > qb >>> 0 ? 302 : 301;
break;
case 301:
Jc = HEAP32[(Jc + 8 | 0) >> 2];
a = 299;
break;
case 302:
var nh = Cd - 47 | 0, xg = Kc + (Cd - 39 | 0) | 0;
if(0 == (xg & 7 | 0)) {
var yg = 0, a = 304
}else {
a = 303
}
break;
case 303:
yg = (-xg | 0) & 7;
a = 304;
break;
case 304:
var zg = Kc + (nh + yg | 0) | 0, rb = zg >>> 0 < (w + 16 | 0) >>> 0 ? qb : zg, lc = rb + 8 | 0, oh = lc;
_init_top(r, y - 40 | 0);
HEAP32[(rb + 4 | 0) >> 2] = 27;
assert(!0);
HEAP32[lc >> 2] = HEAP32[216];
HEAP32[lc + 4 >> 2] = HEAP32[217];
HEAP32[lc + 8 >> 2] = HEAP32[218];
HEAP32[lc + 12 >> 2] = HEAP32[219];
HEAP32[216] = r;
HEAP32[217] = y;
HEAP32[219] = 0;
HEAP32[218] = oh;
var Ag = rb + 28 | 0;
HEAP32[Ag >> 2] = 7;
if((rb + 32 | 0) >>> 0 < Dd >>> 0) {
var Ed = Ag, a = 305
}else {
a = 306
}
break;
case 305:
var Bg = Ed + 4 | 0;
HEAP32[Bg >> 2] = 7;
(Ed + 8 | 0) >>> 0 < Dd >>> 0 ? (Ed = Bg, a = 305) : a = 306;
break;
case 306:
a = (rb | 0) == (qb | 0) ? 330 : 307;
break;
case 307:
var V = rb - w | 0, ph = qb + V | 0, Cg = qb + (V + 4 | 0) | 0;
HEAP32[Cg >> 2] &= -2;
HEAP32[(w + 4 | 0) >> 2] = V | 1;
HEAP32[ph >> 2] = V;
var Dg = V >>> 3, a = 256 > V >>> 0 ? 308 : 313;
break;
case 308:
var Fd = Dg << 1, Eg = 456 + (Fd << 2) | 0, Fg = HEAP32[104], Gg = 1 << Dg, a = 0 == (Fg & Gg | 0) ? 309 : 310;
break;
case 309:
HEAP32[104] = Fg | Gg;
var Gd = Eg, Hg = 456 + ((Fd + 2 | 0) << 2) | 0, a = 312;
break;
case 310:
var Ig = 456 + ((Fd + 2 | 0) << 2) | 0, Jg = HEAP32[Ig >> 2];
Jg >>> 0 < HEAP32[108] >>> 0 ? a = 311 : (Gd = Jg, Hg = Ig, a = 312);
break;
case 311:
throw _abort(), "Reached an unreachable!";;
case 312:
HEAP32[Hg >> 2] = w;
HEAP32[(Gd + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = Gd;
HEAP32[(w + 12 | 0) >> 2] = Eg;
a = 330;
break;
case 313:
var Lc = w, Hd = V >>> 8;
if(0 == (Hd | 0)) {
var Ua = 0, a = 316
}else {
a = 314
}
break;
case 314:
16777215 < V >>> 0 ? (Ua = 31, a = 316) : a = 315;
break;
case 315:
var Kg = (Hd + 1048320 | 0) >>> 16 & 8, Lg = Hd << Kg, Mg = (Lg + 520192 | 0) >>> 16 & 4, Ng = Lg << Mg, Og = (Ng + 245760 | 0) >>> 16 & 2, Pg = (14 - (Mg | Kg | Og) | 0) + (Ng << Og >>> 15) | 0, Ua = V >>> ((Pg + 7 | 0) >>> 0) & 1 | Pg << 1, a = 316;
break;
case 316:
var Id = 720 + (Ua << 2) | 0;
HEAP32[(w + 28 | 0) >> 2] = Ua;
HEAP32[(w + 20 | 0) >> 2] = 0;
HEAP32[(w + 16 | 0) >> 2] = 0;
var Qg = HEAP32[105], Rg = 1 << Ua, a = 0 == (Qg & Rg | 0) ? 317 : 318;
break;
case 317:
HEAP32[105] = Qg | Rg;
HEAP32[Id >> 2] = Lc;
HEAP32[(w + 24 | 0) >> 2] = Id;
HEAP32[(w + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = w;
a = 330;
break;
case 318:
var qh = HEAP32[Id >> 2];
if(31 == (Ua | 0)) {
var Sg = 0, a = 320
}else {
a = 319
}
break;
case 319:
Sg = 25 - (Ua >>> 1) | 0;
a = 320;
break;
case 320:
var Jd = V << Sg, Va = qh, a = 321;
break;
case 321:
a = (HEAP32[(Va + 4 | 0) >> 2] & -8 | 0) == (V | 0) ? 326 : 322;
break;
case 322:
var Kd = Va + 16 + (Jd >>> 31 << 2) | 0, Tg = HEAP32[Kd >> 2], rh = Jd << 1;
0 == (Tg | 0) ? a = 323 : (Jd = rh, Va = Tg, a = 321);
break;
case 323:
a = Kd >>> 0 < HEAP32[108] >>> 0 ? 325 : 324;
break;
case 324:
HEAP32[Kd >> 2] = Lc;
HEAP32[(w + 24 | 0) >> 2] = Va;
HEAP32[(w + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = w;
a = 330;
break;
case 325:
throw _abort(), "Reached an unreachable!";;
case 326:
var Ug = Va + 8 | 0, Ld = HEAP32[Ug >> 2], Vg = HEAP32[108], a = Va >>> 0 < Vg >>> 0 ? 329 : 327;
break;
case 327:
a = Ld >>> 0 < Vg >>> 0 ? 329 : 328;
break;
case 328:
HEAP32[(Ld + 12 | 0) >> 2] = Lc;
HEAP32[Ug >> 2] = Lc;
HEAP32[(w + 8 | 0) >> 2] = Ld;
HEAP32[(w + 12 | 0) >> 2] = Va;
HEAP32[(w + 24 | 0) >> 2] = 0;
a = 330;
break;
case 329:
throw _abort(), "Reached an unreachable!";;
case 330:
var Wg = HEAP32[107], a = Wg >>> 0 > n >>> 0 ? 331 : 332;
break;
case 331:
var Xg = Wg - n | 0;
HEAP32[107] = Xg;
var Md = HEAP32[110], Yg = Md;
HEAP32[110] = Yg + n | 0;
HEAP32[(Yg + (n + 4 | 0) | 0) >> 2] = Xg | 1;
HEAP32[(Md + 4 | 0) >> 2] = n | 3;
p = Md + 8 | 0;
a = 333;
break;
case 332:
var sh = ___errno_location();
HEAP32[sh >> 2] = 12;
p = 0;
a = 333;
break;
case 333:
return p;
default:
assert(0, "bad label: " + a)
}
}
}
function __ZdlPv(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 0 == (b | 0) ? 156 : 2;
break;
case 2:
var c = b - 8 | 0, d = c, f = HEAP32[108], a = c >>> 0 < f >>> 0 ? 155 : 3;
break;
case 3:
var e = HEAP32[(b - 4 | 0) >> 2], g = e & 3, a = 1 == (g | 0) ? 155 : 4;
break;
case 4:
var h = e & -8, i = b + (h - 8 | 0) | 0, j = i;
if(0 == (e & 1 | 0)) {
a = 5
}else {
var k = d, l = h, a = 56
}
break;
case 5:
var s = HEAP32[c >> 2], a = 0 == (g | 0) ? 156 : 6;
break;
case 6:
var t = -8 - s | 0, v = b + t | 0, q = v, p = s + h | 0, a = v >>> 0 < f >>> 0 ? 155 : 7;
break;
case 7:
a = (q | 0) == (HEAP32[109] | 0) ? 54 : 8;
break;
case 8:
var n = s >>> 3, a = 256 > s >>> 0 ? 9 : 21;
break;
case 9:
var m = HEAP32[(b + (t + 8 | 0) | 0) >> 2], z = HEAP32[(b + (t + 12 | 0) | 0) >> 2], W = 456 + (n << 1 << 2) | 0, a = (m | 0) == (W | 0) ? 12 : 10;
break;
case 10:
a = m >>> 0 < f >>> 0 ? 20 : 11;
break;
case 11:
a = (HEAP32[(m + 12 | 0) >> 2] | 0) == (q | 0) ? 12 : 20;
break;
case 12:
a = (z | 0) == (m | 0) ? 13 : 14;
break;
case 13:
HEAP32[104] &= 1 << n ^ -1;
k = q;
l = p;
a = 56;
break;
case 14:
a = (z | 0) == (W | 0) ? 15 : 16;
break;
case 15:
var aa = z + 8 | 0, a = 18;
break;
case 16:
a = z >>> 0 < f >>> 0 ? 19 : 17;
break;
case 17:
var X = z + 8 | 0;
(HEAP32[X >> 2] | 0) == (q | 0) ? (aa = X, a = 18) : a = 19;
break;
case 18:
HEAP32[(m + 12 | 0) >> 2] = z;
HEAP32[aa >> 2] = m;
k = q;
l = p;
a = 56;
break;
case 19:
throw _abort(), "Reached an unreachable!";;
case 20:
throw _abort(), "Reached an unreachable!";;
case 21:
var I = v, L = HEAP32[(b + (t + 24 | 0) | 0) >> 2], P = HEAP32[(b + (t + 12 | 0) | 0) >> 2], a = (P | 0) == (I | 0) ? 27 : 22;
break;
case 22:
var Y = HEAP32[(b + (t + 8 | 0) | 0) >> 2], a = Y >>> 0 < f >>> 0 ? 26 : 23;
break;
case 23:
var ja = Y + 12 | 0, a = (HEAP32[ja >> 2] | 0) == (I | 0) ? 24 : 26;
break;
case 24:
var ba = P + 8 | 0, a = (HEAP32[ba >> 2] | 0) == (I | 0) ? 25 : 26;
break;
case 25:
HEAP32[ja >> 2] = P;
HEAP32[ba >> 2] = Y;
var E = P, a = 34;
break;
case 26:
throw _abort(), "Reached an unreachable!";;
case 27:
var Z = b + (t + 20 | 0) | 0, ta = HEAP32[Z >> 2];
if(0 == (ta | 0)) {
a = 28
}else {
var Q = ta, M = Z, a = 29
}
break;
case 28:
var ca = b + (t + 16 | 0) | 0, da = HEAP32[ca >> 2];
0 == (da | 0) ? (E = 0, a = 34) : (Q = da, M = ca, a = 29);
break;
case 29:
var ua = Q + 20 | 0, sb = HEAP32[ua >> 2];
0 == (sb | 0) ? a = 30 : (Q = sb, M = ua, a = 29);
break;
case 30:
var tb = Q + 16 | 0, Wa = HEAP32[tb >> 2];
0 == (Wa | 0) ? a = 31 : (Q = Wa, M = tb, a = 29);
break;
case 31:
a = M >>> 0 < f >>> 0 ? 33 : 32;
break;
case 32:
HEAP32[M >> 2] = 0;
E = Q;
a = 34;
break;
case 33:
throw _abort(), "Reached an unreachable!";;
case 34:
0 == (L | 0) ? (k = q, l = p, a = 56) : a = 35;
break;
case 35:
var Xa = HEAP32[(b + (t + 28 | 0) | 0) >> 2], mc = 720 + (Xa << 2) | 0, a = (I | 0) == (HEAP32[mc >> 2] | 0) ? 36 : 38;
break;
case 36:
HEAP32[mc >> 2] = E;
a = 0 == (E | 0) ? 37 : 44;
break;
case 37:
HEAP32[105] &= 1 << Xa ^ -1;
k = q;
l = p;
a = 56;
break;
case 38:
a = L >>> 0 < HEAP32[108] >>> 0 ? 42 : 39;
break;
case 39:
var ub = L + 16 | 0, a = (HEAP32[ub >> 2] | 0) == (I | 0) ? 40 : 41;
break;
case 40:
HEAP32[ub >> 2] = E;
a = 43;
break;
case 41:
HEAP32[(L + 20 | 0) >> 2] = E;
a = 43;
break;
case 42:
throw _abort(), "Reached an unreachable!";;
case 43:
0 == (E | 0) ? (k = q, l = p, a = 56) : a = 44;
break;
case 44:
a = E >>> 0 < HEAP32[108] >>> 0 ? 53 : 45;
break;
case 45:
HEAP32[(E + 24 | 0) >> 2] = L;
var ea = HEAP32[(b + (t + 16 | 0) | 0) >> 2], a = 0 == (ea | 0) ? 49 : 46;
break;
case 46:
a = ea >>> 0 < HEAP32[108] >>> 0 ? 48 : 47;
break;
case 47:
HEAP32[(E + 16 | 0) >> 2] = ea;
HEAP32[(ea + 24 | 0) >> 2] = E;
a = 49;
break;
case 48:
throw _abort(), "Reached an unreachable!";;
case 49:
var va = HEAP32[(b + (t + 20 | 0) | 0) >> 2];
0 == (va | 0) ? (k = q, l = p, a = 56) : a = 50;
break;
case 50:
a = va >>> 0 < HEAP32[108] >>> 0 ? 52 : 51;
break;
case 51:
HEAP32[(E + 20 | 0) >> 2] = va;
HEAP32[(va + 24 | 0) >> 2] = E;
k = q;
l = p;
a = 56;
break;
case 52:
throw _abort(), "Reached an unreachable!";;
case 53:
throw _abort(), "Reached an unreachable!";;
case 54:
var wa = b + (h - 4 | 0) | 0;
3 == (HEAP32[wa >> 2] & 3 | 0) ? a = 55 : (k = q, l = p, a = 56);
break;
case 55:
HEAP32[106] = p;
HEAP32[wa >> 2] &= -2;
HEAP32[(b + (t + 4 | 0) | 0) >> 2] = p | 1;
HEAP32[i >> 2] = p;
a = 156;
break;
case 56:
var xa = k, a = xa >>> 0 < i >>> 0 ? 57 : 155;
break;
case 57:
var vb = b + (h - 4 | 0) | 0, fa = HEAP32[vb >> 2], a = 0 == (fa & 1 | 0) ? 155 : 58;
break;
case 58:
a = 0 == (fa & 2 | 0) ? 59 : 128;
break;
case 59:
a = (j | 0) == (HEAP32[110] | 0) ? 60 : 78;
break;
case 60:
var ya = HEAP32[107] + l | 0;
HEAP32[107] = ya;
HEAP32[110] = k;
HEAP32[(k + 4 | 0) >> 2] = ya | 1;
a = (k | 0) == (HEAP32[109] | 0) ? 61 : 62;
break;
case 61:
HEAP32[109] = 0;
HEAP32[106] = 0;
a = 62;
break;
case 62:
a = ya >>> 0 > HEAP32[111] >>> 0 ? 63 : 156;
break;
case 63:
if(0 == (HEAP32[2] | 0)) {
a = 64
}else {
var Ya = k, a = 65
}
break;
case 64:
_init_mparams();
Ya = HEAP32[110];
a = 65;
break;
case 65:
a = 0 == (Ya | 0) ? 156 : 66;
break;
case 66:
var wb = HEAP32[107], a = 40 < wb >>> 0 ? 67 : 76;
break;
case 67:
var za = HEAP32[4], Za = Math.imul(Math.floor((((wb - 41 | 0) + za | 0) >>> 0) / (za >>> 0)) - 1 | 0, za), xb = Ya, ka = 864, a = 68;
break;
case 68:
var yb = HEAP32[(ka | 0) >> 2], a = yb >>> 0 > xb >>> 0 ? 70 : 69;
break;
case 69:
if((yb + HEAP32[(ka + 4 | 0) >> 2] | 0) >>> 0 > xb >>> 0) {
var Aa = ka, a = 71
}else {
a = 70
}
break;
case 70:
var zb = HEAP32[(ka + 8 | 0) >> 2];
0 == (zb | 0) ? (Aa = 0, a = 71) : (ka = zb, a = 68);
break;
case 71:
a = 0 == (HEAP32[(Aa + 12 | 0) >> 2] & 8 | 0) ? 72 : 76;
break;
case 72:
var Ba = _sbrk(0), $a = Aa + 4 | 0, a = (Ba | 0) == (HEAP32[(Aa | 0) >> 2] + HEAP32[$a >> 2] | 0) ? 73 : 76;
break;
case 73:
var nc = -2147483648 - za | 0, oc = _sbrk(-(2147483646 < Za >>> 0 ? nc : Za) | 0), ab = _sbrk(0), a = -1 != (oc | 0) & ab >>> 0 < Ba >>> 0 ? 74 : 76;
break;
case 74:
var Ca = Ba - ab | 0, a = (Ba | 0) == (ab | 0) ? 76 : 75;
break;
case 75:
HEAP32[$a >> 2] = HEAP32[$a >> 2] - Ca | 0;
HEAP32[212] = HEAP32[212] - Ca | 0;
_init_top(HEAP32[110], HEAP32[107] - Ca | 0);
a = 156;
break;
case 76:
a = HEAP32[107] >>> 0 > HEAP32[111] >>> 0 ? 77 : 156;
break;
case 77:
HEAP32[111] = -1;
a = 156;
break;
case 78:
a = (j | 0) == (HEAP32[109] | 0) ? 79 : 80;
break;
case 79:
var la = HEAP32[106] + l | 0;
HEAP32[106] = la;
HEAP32[109] = k;
HEAP32[(k + 4 | 0) >> 2] = la | 1;
HEAP32[(xa + la | 0) >> 2] = la;
a = 156;
break;
case 80:
var x = (fa & -8) + l | 0, N = fa >>> 3, a = 256 > fa >>> 0 ? 81 : 93;
break;
case 81:
var ga = HEAP32[(b + h | 0) >> 2], R = HEAP32[(b + (h | 4) | 0) >> 2], Ab = 456 + (N << 1 << 2) | 0, a = (ga | 0) == (Ab | 0) ? 84 : 82;
break;
case 82:
a = ga >>> 0 < HEAP32[108] >>> 0 ? 92 : 83;
break;
case 83:
a = (HEAP32[(ga + 12 | 0) >> 2] | 0) == (j | 0) ? 84 : 92;
break;
case 84:
a = (R | 0) == (ga | 0) ? 85 : 86;
break;
case 85:
HEAP32[104] &= 1 << N ^ -1;
a = 126;
break;
case 86:
a = (R | 0) == (Ab | 0) ? 87 : 88;
break;
case 87:
var Bb = R + 8 | 0, a = 90;
break;
case 88:
a = R >>> 0 < HEAP32[108] >>> 0 ? 91 : 89;
break;
case 89:
var Cb = R + 8 | 0;
(HEAP32[Cb >> 2] | 0) == (j | 0) ? (Bb = Cb, a = 90) : a = 91;
break;
case 90:
HEAP32[(ga + 12 | 0) >> 2] = R;
HEAP32[Bb >> 2] = ga;
a = 126;
break;
case 91:
throw _abort(), "Reached an unreachable!";;
case 92:
throw _abort(), "Reached an unreachable!";;
case 93:
var Da = i, Ea = HEAP32[(b + (h + 16 | 0) | 0) >> 2], S = HEAP32[(b + (h | 4) | 0) >> 2], a = (S | 0) == (Da | 0) ? 99 : 94;
break;
case 94:
var Fa = HEAP32[(b + h | 0) >> 2], a = Fa >>> 0 < HEAP32[108] >>> 0 ? 98 : 95;
break;
case 95:
var Db = Fa + 12 | 0, a = (HEAP32[Db >> 2] | 0) == (Da | 0) ? 96 : 98;
break;
case 96:
var pc = S + 8 | 0, a = (HEAP32[pc >> 2] | 0) == (Da | 0) ? 97 : 98;
break;
case 97:
HEAP32[Db >> 2] = S;
HEAP32[pc >> 2] = Fa;
var C = S, a = 106;
break;
case 98:
throw _abort(), "Reached an unreachable!";;
case 99:
var Ga = b + (h + 12 | 0) | 0, bb = HEAP32[Ga >> 2];
if(0 == (bb | 0)) {
a = 100
}else {
var ha = bb, ma = Ga, a = 101
}
break;
case 100:
var F = b + (h + 8 | 0) | 0, Eb = HEAP32[F >> 2];
0 == (Eb | 0) ? (C = 0, a = 106) : (ha = Eb, ma = F, a = 101);
break;
case 101:
var Fb = ha + 20 | 0, ia = HEAP32[Fb >> 2];
0 == (ia | 0) ? a = 102 : (ha = ia, ma = Fb, a = 101);
break;
case 102:
var na = ha + 16 | 0, Gb = HEAP32[na >> 2];
0 == (Gb | 0) ? a = 103 : (ha = Gb, ma = na, a = 101);
break;
case 103:
a = ma >>> 0 < HEAP32[108] >>> 0 ? 105 : 104;
break;
case 104:
HEAP32[ma >> 2] = 0;
C = ha;
a = 106;
break;
case 105:
throw _abort(), "Reached an unreachable!";;
case 106:
a = 0 == (Ea | 0) ? 126 : 107;
break;
case 107:
var Hb = HEAP32[(b + (h + 20 | 0) | 0) >> 2], Ib = 720 + (Hb << 2) | 0, a = (Da | 0) == (HEAP32[Ib >> 2] | 0) ? 108 : 110;
break;
case 108:
HEAP32[Ib >> 2] = C;
a = 0 == (C | 0) ? 109 : 116;
break;
case 109:
HEAP32[105] &= 1 << Hb ^ -1;
a = 126;
break;
case 110:
a = Ea >>> 0 < HEAP32[108] >>> 0 ? 114 : 111;
break;
case 111:
var Jb = Ea + 16 | 0, a = (HEAP32[Jb >> 2] | 0) == (Da | 0) ? 112 : 113;
break;
case 112:
HEAP32[Jb >> 2] = C;
a = 115;
break;
case 113:
HEAP32[(Ea + 20 | 0) >> 2] = C;
a = 115;
break;
case 114:
throw _abort(), "Reached an unreachable!";;
case 115:
a = 0 == (C | 0) ? 126 : 116;
break;
case 116:
a = C >>> 0 < HEAP32[108] >>> 0 ? 125 : 117;
break;
case 117:
HEAP32[(C + 24 | 0) >> 2] = Ea;
var Ha = HEAP32[(b + (h + 8 | 0) | 0) >> 2], a = 0 == (Ha | 0) ? 121 : 118;
break;
case 118:
a = Ha >>> 0 < HEAP32[108] >>> 0 ? 120 : 119;
break;
case 119:
HEAP32[(C + 16 | 0) >> 2] = Ha;
HEAP32[(Ha + 24 | 0) >> 2] = C;
a = 121;
break;
case 120:
throw _abort(), "Reached an unreachable!";;
case 121:
var Ia = HEAP32[(b + (h + 12 | 0) | 0) >> 2], a = 0 == (Ia | 0) ? 126 : 122;
break;
case 122:
a = Ia >>> 0 < HEAP32[108] >>> 0 ? 124 : 123;
break;
case 123:
HEAP32[(C + 20 | 0) >> 2] = Ia;
HEAP32[(Ia + 24 | 0) >> 2] = C;
a = 126;
break;
case 124:
throw _abort(), "Reached an unreachable!";;
case 125:
throw _abort(), "Reached an unreachable!";;
case 126:
HEAP32[(k + 4 | 0) >> 2] = x | 1;
HEAP32[(xa + x | 0) >> 2] = x;
if((k | 0) == (HEAP32[109] | 0)) {
a = 127
}else {
var T = x, a = 129
}
break;
case 127:
HEAP32[106] = x;
a = 156;
break;
case 128:
HEAP32[vb >> 2] = fa & -2;
HEAP32[(k + 4 | 0) >> 2] = l | 1;
T = HEAP32[(xa + l | 0) >> 2] = l;
a = 129;
break;
case 129:
var Kb = T >>> 3, a = 256 > T >>> 0 ? 130 : 135;
break;
case 130:
var cb = Kb << 1, Ja = 456 + (cb << 2) | 0, Ka = HEAP32[104], Lb = 1 << Kb, a = 0 == (Ka & Lb | 0) ? 131 : 132;
break;
case 131:
HEAP32[104] = Ka | Lb;
var db = Ja, Mb = 456 + ((cb + 2 | 0) << 2) | 0, a = 134;
break;
case 132:
var La = 456 + ((cb + 2 | 0) << 2) | 0, Nb = HEAP32[La >> 2];
Nb >>> 0 < HEAP32[108] >>> 0 ? a = 133 : (db = Nb, Mb = La, a = 134);
break;
case 133:
throw _abort(), "Reached an unreachable!";;
case 134:
HEAP32[Mb >> 2] = k;
HEAP32[(db + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = db;
HEAP32[(k + 12 | 0) >> 2] = Ja;
a = 156;
break;
case 135:
var oa = k, eb = T >>> 8;
if(0 == (eb | 0)) {
var $ = 0, a = 138
}else {
a = 136
}
break;
case 136:
16777215 < T >>> 0 ? ($ = 31, a = 138) : a = 137;
break;
case 137:
var Ob = (eb + 1048320 | 0) >>> 16 & 8, fb = eb << Ob, Pb = (fb + 520192 | 0) >>> 16 & 4, Qb = fb << Pb, Rb = (Qb + 245760 | 0) >>> 16 & 2, Sb = (14 - (Pb | Ob | Rb) | 0) + (Qb << Rb >>> 15) | 0, $ = T >>> ((Sb + 7 | 0) >>> 0) & 1 | Sb << 1, a = 138;
break;
case 138:
var Tb = 720 + ($ << 2) | 0;
HEAP32[(k + 28 | 0) >> 2] = $;
HEAP32[(k + 20 | 0) >> 2] = 0;
HEAP32[(k + 16 | 0) >> 2] = 0;
var Ub = HEAP32[105], u = 1 << $, a = 0 == (Ub & u | 0) ? 139 : 140;
break;
case 139:
HEAP32[105] = Ub | u;
HEAP32[Tb >> 2] = oa;
HEAP32[(k + 24 | 0) >> 2] = Tb;
HEAP32[(k + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = k;
a = 152;
break;
case 140:
var qc = HEAP32[Tb >> 2];
if(31 == ($ | 0)) {
var Vb = 0, a = 142
}else {
a = 141
}
break;
case 141:
Vb = 25 - ($ >>> 1) | 0;
a = 142;
break;
case 142:
var Ma = T << Vb, G = qc, a = 143;
break;
case 143:
a = (HEAP32[(G + 4 | 0) >> 2] & -8 | 0) == (T | 0) ? 148 : 144;
break;
case 144:
var gb = G + 16 + (Ma >>> 31 << 2) | 0, Wb = HEAP32[gb >> 2], rc = Ma << 1;
0 == (Wb | 0) ? a = 145 : (Ma = rc, G = Wb, a = 143);
break;
case 145:
a = gb >>> 0 < HEAP32[108] >>> 0 ? 147 : 146;
break;
case 146:
HEAP32[gb >> 2] = oa;
HEAP32[(k + 24 | 0) >> 2] = G;
HEAP32[(k + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = k;
a = 152;
break;
case 147:
throw _abort(), "Reached an unreachable!";;
case 148:
var Xb = G + 8 | 0, hb = HEAP32[Xb >> 2], Yb = HEAP32[108], a = G >>> 0 < Yb >>> 0 ? 151 : 149;
break;
case 149:
a = hb >>> 0 < Yb >>> 0 ? 151 : 150;
break;
case 150:
HEAP32[(hb + 12 | 0) >> 2] = oa;
HEAP32[Xb >> 2] = oa;
HEAP32[(k + 8 | 0) >> 2] = hb;
HEAP32[(k + 12 | 0) >> 2] = G;
HEAP32[(k + 24 | 0) >> 2] = 0;
a = 152;
break;
case 151:
throw _abort(), "Reached an unreachable!";;
case 152:
var Zb = HEAP32[112] - 1 | 0;
HEAP32[112] = Zb;
if(0 == (Zb | 0)) {
var pa = 872, a = 153
}else {
a = 156
}
break;
case 153:
var Na = HEAP32[pa >> 2], ib = Na + 8 | 0;
0 == (Na | 0) ? a = 154 : (pa = ib, a = 153);
break;
case 154:
HEAP32[112] = -1;
a = 156;
break;
case 155:
throw _abort(), "Reached an unreachable!";;
case 156:
return;
default:
assert(0, "bad label: " + a)
}
}
}
function __ZNK10__cxxabiv116__shim_type_info5noop1Ev() {
}
function __ZNK10__cxxabiv116__shim_type_info5noop2Ev() {
}
function _init_top(b, a) {
for(var c = 0, c = 1;;) {
switch(c) {
case 1:
var d = b, f = b + 8 | 0;
if(0 == (f & 7 | 0)) {
var e = 0, c = 3
}else {
c = 2
}
break;
case 2:
e = (-f | 0) & 7;
c = 3;
break;
case 3:
c = a - e | 0;
HEAP32[110] = d + e | 0;
HEAP32[107] = c;
HEAP32[(d + (e + 4 | 0) | 0) >> 2] = c | 1;
HEAP32[(d + (a + 4 | 0) | 0) >> 2] = 40;
HEAP32[111] = HEAP32[6];
return;
default:
assert(0, "bad label: " + c)
}
}
}
function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(b, a, c) {
for(var d = 0, d = 1;;) {
switch(d) {
case 1:
var f = b + 16 | 0, e = HEAP32[f >> 2], d = 0 == (e | 0) ? 2 : 3;
break;
case 2:
HEAP32[f >> 2] = a;
HEAP32[(b + 24 | 0) >> 2] = c;
HEAP32[(b + 36 | 0) >> 2] = 1;
d = 7;
break;
case 3:
d = (e | 0) == (a | 0) ? 4 : 6;
break;
case 4:
var g = b + 24 | 0, d = 2 == (HEAP32[g >> 2] | 0) ? 5 : 7;
break;
case 5:
HEAP32[g >> 2] = c;
d = 7;
break;
case 6:
d = b + 36 | 0;
HEAP32[d >> 2] = HEAP32[d >> 2] + 1 | 0;
HEAP32[(b + 24 | 0) >> 2] = 2;
HEAP8[b + 54 | 0] = 1;
d = 7;
break;
case 7:
return;
default:
assert(0, "bad label: " + d)
}
}
}
function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
HEAP8[b + 53 | 0] = 1;
f = (HEAP32[(b + 4 | 0) >> 2] | 0) == (c | 0) ? 2 : 11;
break;
case 2:
HEAP8[b + 52 | 0] = 1;
var e = b + 16 | 0, g = HEAP32[e >> 2], f = 0 == (g | 0) ? 3 : 5;
break;
case 3:
HEAP32[e >> 2] = a;
HEAP32[(b + 24 | 0) >> 2] = d;
HEAP32[(b + 36 | 0) >> 2] = 1;
f = 1 == (HEAP32[(b + 48 | 0) >> 2] | 0) & 1 == (d | 0) ? 4 : 11;
break;
case 4:
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 5:
f = (g | 0) == (a | 0) ? 6 : 10;
break;
case 6:
var h = b + 24 | 0, f = HEAP32[h >> 2];
if(2 == (f | 0)) {
f = 7
}else {
var i = f, f = 8
}
break;
case 7:
i = HEAP32[h >> 2] = d;
f = 8;
break;
case 8:
f = 1 == (HEAP32[(b + 48 | 0) >> 2] | 0) & 1 == (i | 0) ? 9 : 11;
break;
case 9:
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 10:
f = b + 36 | 0;
HEAP32[f >> 2] = HEAP32[f >> 2] + 1 | 0;
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 11:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 5;
break;
case 2:
f = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 14;
break;
case 3:
var e = a + 28 | 0, f = 1 == (HEAP32[e >> 2] | 0) ? 14 : 4;
break;
case 4:
HEAP32[e >> 2] = d;
f = 14;
break;
case 5:
f = (HEAP32[(a | 0) >> 2] | 0) == (b | 0) ? 6 : 14;
break;
case 6:
f = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var g = a + 20 | 0, f = (HEAP32[g >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
f = 1 == (d | 0) ? 9 : 14;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
f = 14;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
HEAP32[g >> 2] = c;
f = a + 40 | 0;
HEAP32[f >> 2] = HEAP32[f >> 2] + 1 | 0;
f = 1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? 11 : 13;
break;
case 11:
f = 2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? 12 : 13;
break;
case 12:
HEAP8[a + 54 | 0] = 1;
f = 13;
break;
case 13:
HEAP32[(a + 44 | 0) >> 2] = 4;
f = 14;
break;
case 14:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
var h = HEAP32[(b + 4 | 0) >> 2], i = h >> 8;
if(0 == (h & 1 | 0)) {
var j = i, g = 3
}else {
g = 2
}
break;
case 2:
j = HEAP32[(HEAP32[d >> 2] + i | 0) >> 2];
g = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 20 | 0) >> 2]](b, a, c, d + j | 0, 0 != (h & 2 | 0) ? f : 2, e);
return;
default:
assert(0, "bad label: " + g)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = HEAP32[(b + 4 | 0) >> 2], h = g >> 8;
if(0 == (g & 1 | 0)) {
var i = h, e = 3
}else {
e = 2
}
break;
case 2:
i = HEAP32[(HEAP32[c >> 2] + h | 0) >> 2];
e = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 24 | 0) >> 2]](b, a, c + i | 0, 0 != (g & 2 | 0) ? d : 2, f);
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
var e = HEAP32[(b + 4 | 0) >> 2], g = e >> 8;
if(0 == (e & 1 | 0)) {
var h = g, f = 3
}else {
f = 2
}
break;
case 2:
h = HEAP32[(HEAP32[c >> 2] + g | 0) >> 2];
f = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 28 | 0) >> 2]](b, a, c + h | 0, 0 != (e & 2 | 0) ? d : 2);
return;
default:
assert(0, "bad label: " + f)
}
}
}
function ___getTypeName(b) {
return _strdup(HEAP32[(b + 4 | 0) >> 2])
}
function __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(b, a, c) {
var d = 0, f = STACKTOP;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(d = 1;;) {
switch(d) {
case 1:
var e = a, d = 0 == (HEAP8[c] & 1) << 24 >> 24 ? 3 : 2;
break;
case 2:
var g = HEAP32[(c + 8 | 0) >> 2], d = 4;
break;
case 3:
g = c + 1 | 0;
d = 4;
break;
case 4:
_printf(384, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, assert((STACKTOP | 0) < (STACK_MAX | 0)), HEAP32[tempInt >> 2] = b, HEAPF64[tempInt + 8 >> 3] = e, HEAP32[tempInt + 16 >> 2] = g, tempInt));
STACKTOP = f;
return;
default:
assert(0, "bad label: " + d)
}
}
}
function __ZN10__cxxabiv116__shim_type_infoD2Ev() {
}
function __ZN10__cxxabiv117__class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv120__si_class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv123__fundamental_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
e = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
e = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
g = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
g = 4;
break;
case 3:
g = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[g >> 2] + 20 | 0) >> 2]](g, a, c, d, f, e);
g = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + g)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = b | 0, e = (g | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
e = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 20;
break;
case 3:
var h = a + 28 | 0, e = 1 == (HEAP32[h >> 2] | 0) ? 20 : 4;
break;
case 4:
HEAP32[h >> 2] = d;
e = 20;
break;
case 5:
e = (g | 0) == (HEAP32[(a | 0) >> 2] | 0) ? 6 : 19;
break;
case 6:
e = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var i = a + 20 | 0, e = (HEAP32[i >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
e = 1 == (d | 0) ? 9 : 20;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
e = 20;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
var j = a + 44 | 0, e = 4 == (HEAP32[j >> 2] | 0) ? 20 : 11;
break;
case 11:
var k = a + 52 | 0;
HEAP8[k] = 0;
e = a + 53 | 0;
HEAP8[e] = 0;
var l = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[l >> 2] + 20 | 0) >> 2]](l, a, c, c, 1, f);
if(0 == HEAP8[e] << 24 >> 24) {
var s = 0, e = 13
}else {
e = 12
}
break;
case 12:
0 == HEAP8[k] << 24 >> 24 ? (s = 1, e = 13) : e = 17;
break;
case 13:
HEAP32[i >> 2] = c;
e = a + 40 | 0;
HEAP32[e >> 2] = HEAP32[e >> 2] + 1 | 0;
e = 1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? 14 : 16;
break;
case 14:
e = 2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? 15 : 16;
break;
case 15:
HEAP8[a + 54 | 0] = 1;
e = s ? 17 : 18;
break;
case 16:
e = s ? 17 : 18;
break;
case 17:
HEAP32[j >> 2] = 3;
e = 20;
break;
case 18:
HEAP32[j >> 2] = 4;
e = 20;
break;
case 19:
e = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[e >> 2] + 24 | 0) >> 2]](e, a, c, d, f);
e = 20;
break;
case 20:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 4;
break;
case 3:
f = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[f >> 2] + 28 | 0) >> 2]](f, a, c, d);
f = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
g = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
g = 13;
break;
case 3:
var h = a + 52 | 0, i = HEAP8[h], j = a + 53 | 0, k = HEAP8[j], g = b + 16 | 0, l = HEAP32[(b + 12 | 0) >> 2], s = b + 16 + (l << 3) | 0;
HEAP8[h] = 0;
HEAP8[j] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(g, a, c, d, f, e);
g = 1 < (l | 0) ? 4 : 12;
break;
case 4:
var t = a + 24 | 0, v = b + 8 | 0, q = a + 54 | 0, p = b + 24 | 0, g = 5;
break;
case 5:
g = 0 == HEAP8[q] << 24 >> 24 ? 6 : 12;
break;
case 6:
g = 0 == HEAP8[h] << 24 >> 24 ? 9 : 7;
break;
case 7:
g = 1 == (HEAP32[t >> 2] | 0) ? 12 : 8;
break;
case 8:
g = 0 == (HEAP32[v >> 2] & 2 | 0) ? 12 : 11;
break;
case 9:
g = 0 == HEAP8[j] << 24 >> 24 ? 11 : 10;
break;
case 10:
g = 0 == (HEAP32[v >> 2] & 1 | 0) ? 12 : 11;
break;
case 11:
HEAP8[h] = 0;
HEAP8[j] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(p, a, c, d, f, e);
g = p + 8 | 0;
g >>> 0 < s >>> 0 ? (p = g, g = 5) : g = 12;
break;
case 12:
HEAP8[h] = i;
HEAP8[j] = k;
g = 13;
break;
case 13:
return;
default:
assert(0, "bad label: " + g)
}
}
}
function _init_mparams() {
for(var b = 0, b = 1;;) {
switch(b) {
case 1:
b = 0 == (HEAP32[2] | 0) ? 2 : 5;
break;
case 2:
var a = _sysconf(8), b = 0 == ((a - 1 | 0) & a | 0) ? 4 : 3;
break;
case 3:
throw _abort(), "Reached an unreachable!";;
case 4:
HEAP32[4] = a;
HEAP32[3] = a;
HEAP32[5] = -1;
HEAP32[6] = 2097152;
HEAP32[7] = 0;
HEAP32[215] = 0;
b = _time(0) & -16 ^ 1431655768;
HEAP32[2] = b;
b = 5;
break;
case 5:
return;
default:
assert(0, "bad label: " + b)
}
}
}
function ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_(b, a, c, d) {
var f = 0, e = STACKTOP;
STACKTOP = STACKTOP + 16 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(f = 1;;) {
switch(f) {
case 1:
var g = e, h = d + 4 | 0, i = HEAP32[(d | 0) >> 2], f = -1 == (i | 0) ? 2 : 3;
break;
case 2:
throw ___assert_func(200, 1014, 888, 304), "Reached an unreachable!";;
case 3:
f = 11 > i >>> 0 ? 4 : 5;
break;
case 4:
f = g;
HEAP8[f] = i << 1 & 255;
var j = g + 1 | 0, k = f, f = 6;
break;
case 5:
f = (i + 16 | 0) & -16;
j = __Znwj(f);
HEAP32[(g + 8 | 0) >> 2] = j;
HEAP32[(g | 0) >> 2] = f | 1;
HEAP32[(g + 4 | 0) >> 2] = i;
k = f = g;
f = 6;
break;
case 6:
assert(0 === i % 1);
_memcpy(j, h, i);
HEAP8[j + i | 0] = 0;
FUNCTION_TABLE[b](a, c, g);
f = 0 == (HEAP8[k] & 1) << 24 >> 24 ? 8 : 7;
break;
case 7:
__ZdlPv(HEAP32[(g + 8 | 0) >> 2]);
f = 8;
break;
case 8:
STACKTOP = e;
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv(b, a) {
return(b | 0) == (a | 0)
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = b | 0, e = (g | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
e = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 43;
break;
case 3:
var h = a + 28 | 0, e = 1 == (HEAP32[h >> 2] | 0) ? 43 : 4;
break;
case 4:
HEAP32[h >> 2] = d;
e = 43;
break;
case 5:
e = (g | 0) == (HEAP32[(a | 0) >> 2] | 0) ? 6 : 27;
break;
case 6:
e = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var i = a + 20 | 0, e = (HEAP32[i >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
e = 1 == (d | 0) ? 9 : 43;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
e = 43;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
var j = a + 44 | 0, e = 4 == (HEAP32[j >> 2] | 0) ? 43 : 11;
break;
case 11:
var e = HEAP32[(b + 12 | 0) >> 2], k = b + 16 + (e << 3) | 0;
if(0 < (e | 0)) {
e = 12
}else {
var l = 0, e = 21
}
break;
case 12:
var s = a + 52 | 0, t = a + 53 | 0, v = a + 54 | 0, q = b + 8 | 0, p = a + 24 | 0, n = 0, m = b + 16 | 0, z = 0, e = 13;
break;
case 13:
HEAP8[s] = 0;
HEAP8[t] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(m, a, c, c, 1, f);
if(0 == HEAP8[v] << 24 >> 24) {
e = 14
}else {
var W = z, aa = n, e = 20
}
break;
case 14:
if(0 == HEAP8[t] << 24 >> 24) {
var X = z, I = n, e = 19
}else {
e = 15
}
break;
case 15:
e = 0 == HEAP8[s] << 24 >> 24 ? 18 : 16;
break;
case 16:
e = 1 == (HEAP32[p >> 2] | 0) ? 25 : 17;
break;
case 17:
0 == (HEAP32[q >> 2] & 2 | 0) ? e = 25 : (I = X = 1, e = 19);
break;
case 18:
0 == (HEAP32[q >> 2] & 1 | 0) ? (W = 1, aa = n, e = 20) : (X = 1, I = n, e = 19);
break;
case 19:
e = m + 8 | 0;
e >>> 0 < k >>> 0 ? (n = I, m = e, z = X, e = 13) : (W = X, aa = I, e = 20);
break;
case 20:
if(aa) {
var L = W, e = 24
}else {
l = W, e = 21
}
break;
case 21:
HEAP32[i >> 2] = c;
e = a + 40 | 0;
HEAP32[e >> 2] = HEAP32[e >> 2] + 1 | 0;
1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? e = 22 : (L = l, e = 24);
break;
case 22:
2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? e = 23 : (L = l, e = 24);
break;
case 23:
HEAP8[a + 54 | 0] = 1;
e = l ? 25 : 26;
break;
case 24:
e = L ? 25 : 26;
break;
case 25:
HEAP32[j >> 2] = 3;
e = 43;
break;
case 26:
HEAP32[j >> 2] = 4;
e = 43;
break;
case 27:
var e = HEAP32[(b + 12 | 0) >> 2], P = b + 16 + (e << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b + 16 | 0, a, c, d, f);
var Y = b + 24 | 0, e = 1 < (e | 0) ? 28 : 43;
break;
case 28:
var ja = HEAP32[(b + 8 | 0) >> 2], e = 0 == (ja & 2 | 0) ? 29 : 30;
break;
case 29:
var ba = a + 36 | 0, e = 1 == (HEAP32[ba >> 2] | 0) ? 30 : 33;
break;
case 30:
var E = a + 54 | 0, Z = Y, e = 31;
break;
case 31:
e = 0 == HEAP8[E] << 24 >> 24 ? 32 : 43;
break;
case 32:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(Z, a, c, d, f);
e = Z + 8 | 0;
e >>> 0 < P >>> 0 ? (Z = e, e = 31) : e = 43;
break;
case 33:
e = 0 == (ja & 1 | 0) ? 35 : 34;
break;
case 34:
var ta = a + 24 | 0, Q = a + 54 | 0, M = Y, e = 36;
break;
case 35:
var ca = a + 54 | 0, da = Y, e = 40;
break;
case 36:
e = 0 == HEAP8[Q] << 24 >> 24 ? 37 : 43;
break;
case 37:
e = 1 == (HEAP32[ba >> 2] | 0) ? 38 : 39;
break;
case 38:
e = 1 == (HEAP32[ta >> 2] | 0) ? 43 : 39;
break;
case 39:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(M, a, c, d, f);
e = M + 8 | 0;
e >>> 0 < P >>> 0 ? (M = e, e = 36) : e = 43;
break;
case 40:
e = 0 == HEAP8[ca] << 24 >> 24 ? 41 : 43;
break;
case 41:
e = 1 == (HEAP32[ba >> 2] | 0) ? 43 : 42;
break;
case 42:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(da, a, c, d, f);
e = da + 8 | 0;
e >>> 0 < P >>> 0 ? (da = e, e = 40) : e = 43;
break;
case 43:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 7;
break;
case 3:
var f = HEAP32[(b + 12 | 0) >> 2], e = b + 16 + (f << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b + 16 | 0, a, c, d);
f = 1 < (f | 0) ? 4 : 7;
break;
case 4:
var g = a + 54 | 0, h = b + 24 | 0, f = 5;
break;
case 5:
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(h, a, c, d);
f = 0 == HEAP8[g] << 24 >> 24 ? 6 : 7;
break;
case 6:
f = h + 8 | 0;
f >>> 0 < e >>> 0 ? (h = f, f = 5) : f = 7;
break;
case 7:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv(b, a, c) {
var d = 0, f = STACKTOP;
STACKTOP = STACKTOP + 112 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(d = 1;;) {
switch(d) {
case 1:
var e = f, g = f + 56;
if((b | 0) == (a | 0)) {
var h = 1, d = 17
}else {
d = 2
}
break;
case 2:
0 == (a | 0) ? (h = 0, d = 17) : d = 3;
break;
case 3:
var i = a, j = HEAP32[a >> 2], k = i + HEAP32[(j - 8 | 0) >> 2] | 0, l = j = HEAP32[(j - 4 | 0) >> 2];
HEAP32[(e | 0) >> 2] = 1744;
HEAP32[(e + 4 | 0) >> 2] = i;
HEAP32[(e + 8 | 0) >> 2] = 1760;
HEAP32[(e + 12 | 0) >> 2] = -1;
var i = e + 16 | 0, s = e + 20 | 0, t = e + 24 | 0, v = e + 28 | 0, q = e + 32 | 0, p = e + 40 | 0, d = 1744 == (j | 0);
_memset(i, 0, 39);
d = d ? 4 : 5;
break;
case 4:
HEAP32[(e + 48 | 0) >> 2] = 1;
FUNCTION_TABLE[HEAP32[(HEAP32[436] + 20 | 0) >> 2]](l, e, k, k, 1, 0);
var n = 1 == (HEAP32[t >> 2] | 0) ? k : 0, d = 14;
break;
case 5:
d = e + 36 | 0;
FUNCTION_TABLE[HEAP32[(HEAP32[j >> 2] + 24 | 0) >> 2]](l, e, k, 1, 0);
d = HEAP32[d >> 2];
0 == (d | 0) ? d = 6 : 1 == (d | 0) ? d = 9 : (n = 0, d = 14);
break;
case 6:
1 == (HEAP32[p >> 2] | 0) ? d = 7 : (n = 0, d = 14);
break;
case 7:
1 == (HEAP32[v >> 2] | 0) ? d = 8 : (n = 0, d = 14);
break;
case 8:
n = HEAP32[s >> 2];
n = 1 == (HEAP32[q >> 2] | 0) ? n : 0;
d = 14;
break;
case 9:
d = 1 == (HEAP32[t >> 2] | 0) ? 13 : 10;
break;
case 10:
0 == (HEAP32[p >> 2] | 0) ? d = 11 : (n = 0, d = 14);
break;
case 11:
1 == (HEAP32[v >> 2] | 0) ? d = 12 : (n = 0, d = 14);
break;
case 12:
1 == (HEAP32[q >> 2] | 0) ? d = 13 : (n = 0, d = 14);
break;
case 13:
n = HEAP32[i >> 2];
d = 14;
break;
case 14:
var m = n;
0 == (n | 0) ? (h = 0, d = 17) : d = 15;
break;
case 15:
_memset(g, 0, 56);
HEAP32[(g | 0) >> 2] = m;
HEAP32[(g + 8 | 0) >> 2] = b;
HEAP32[(g + 12 | 0) >> 2] = -1;
HEAP32[(g + 48 | 0) >> 2] = 1;
FUNCTION_TABLE[HEAP32[(HEAP32[n >> 2] + 28 | 0) >> 2]](m, g, HEAP32[c >> 2], 1);
1 == (HEAP32[(g + 24 | 0) >> 2] | 0) ? d = 16 : (h = 0, d = 17);
break;
case 16:
HEAP32[c >> 2] = HEAP32[(g + 16 | 0) >> 2];
h = 1;
d = 17;
break;
case 17:
return STACKTOP = f, h;
default:
assert(0, "bad label: " + d)
}
}
}
function __GLOBAL__I_a() {
var b = STACKTOP;
STACKTOP = STACKTOP + 24 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
HEAP32[(b | 0) >> 2] = 4;
var a = b + 4 | 0;
HEAP32[a >> 2] = 1600;
HEAP32[(b + 8 | 0) >> 2] = __ZTIi;
HEAP32[(b + 12 | 0) >> 2] = __ZTIf;
HEAP32[(b + 16 | 0) >> 2] = 1656;
__embind_register_function(360, 4, a, 32, 26);
STACKTOP = b
}
function __GLOBAL__I_a7() {
__embind_register_void(1600, 136);
__embind_register_bool(1608, 288, 1, 0);
__embind_register_integer(__ZTIc, 128, -128, 127);
__embind_register_integer(__ZTIa, 112, -128, 127);
__embind_register_integer(__ZTIh, 96, 0, 255);
__embind_register_integer(__ZTIs, 88, -32768, 32767);
__embind_register_integer(__ZTIt, 72, 0, 65535);
__embind_register_integer(__ZTIi, 64, -2147483648, 2147483647);
__embind_register_integer(__ZTIj, 48, 0, -1);
__embind_register_integer(__ZTIl, 40, -2147483648, 2147483647);
__embind_register_integer(__ZTIm, 344, 0, -1);
__embind_register_float(__ZTIf, 336);
__embind_register_float(__ZTId, 296);
__embind_register_std_string(1656, 272);
__embind_register_std_wstring(1632, 4, 184);
__embind_register_emval(1680, 168);
__embind_register_memory_view(1688, 144)
}
var i64Math = null;
Module.callMain = function(b) {
function a() {
for(var a = 0;3 > a;a++) {
d.push(0)
}
}
assert(0 == runDependencies, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
assert(!Module.preRun || 0 == Module.preRun.length, "cannot call main when preRun functions remain to be called");
b = b || [];
ensureInitRuntime();
var c = b.length + 1, d = [allocate(intArrayFromString("/bin/this.program"), "i8", ALLOC_NORMAL)];
a();
for(var f = 0;f < c - 1;f += 1) {
d.push(allocate(intArrayFromString(b[f]), "i8", ALLOC_NORMAL)), a()
}
d.push(0);
var d = allocate(d, "i32", ALLOC_NORMAL), e, b = STACKTOP;
try {
e = Module._main(c, d, 0)
}catch(g) {
if("ExitStatus" == g.name) {
return g.status
}
if("SimulateInfiniteLoop" == g) {
Module.noExitRuntime = !0
}else {
throw g;
}
}finally {
STACKTOP = b
}
return e
};
function run(b) {
function a() {
ensureInitRuntime();
preMain();
var a = 0;
calledRun = !0;
Module._main && shouldRunNow && (a = Module.callMain(b), Module.noExitRuntime || exitRuntime());
if(Module.postRun) {
for("function" == typeof Module.postRun && (Module.postRun = [Module.postRun]);0 < Module.postRun.length;) {
Module.postRun.pop()()
}
}
return a
}
b = b || Module.arguments;
if(0 < runDependencies) {
return Module.printErr("run() called, but dependencies remain, so not running"), 0
}
if(Module.preRun) {
"function" == typeof Module.preRun && (Module.preRun = [Module.preRun]);
var c = Module.preRun;
Module.preRun = [];
for(var d = c.length - 1;0 <= d;d--) {
c[d]()
}
if(0 < runDependencies) {
return 0
}
}
return Module.setStatus ? (Module.setStatus("Running..."), setTimeout(function() {
setTimeout(function() {
Module.setStatus("")
}, 1);
a()
}, 1), 0) : a()
}
Module.run = Module.run = run;
if(Module.preInit) {
for("function" == typeof Module.preInit && (Module.preInit = [Module.preInit]);0 < Module.preInit.length;) {
Module.preInit.pop()()
}
}
var shouldRunNow = !0;
Module.noInitialRun && (shouldRunNow = !1);
run();
var Module = Module || {}, _emval_handle_array = [{}], _emval_free_list = [];
Module.count_emval_handles = function() {
for(var b = 0, a = 1;a < _emval_handle_array.length;++a) {
void 0 !== _emval_handle_array[a] && ++b
}
return b
};
Module.get_first_emval = function() {
for(var b = 1;b < _emval_handle_array.length;++b) {
if(void 0 !== _emval_handle_array[b]) {
return _emval_handle_array[b]
}
}
return null
};
var _emval_symbols = {};
function __emval_register_symbol(b) {
_emval_symbols[b] = readLatin1String(b)
}
function getStringOrSymbol(b) {
var a = _emval_symbols[b];
return void 0 === a ? readLatin1String(b) : a
}
function requireHandle(b) {
b || throwBindingError("Cannot use deleted val. handle = " + b)
}
function __emval_register(b) {
var a = _emval_free_list.length ? _emval_free_list.pop() : _emval_handle_array.length;
_emval_handle_array[a] = {refcount:1, value:b};
return a
}
function __emval_incref(b) {
b && (_emval_handle_array[b].refcount += 1)
}
function __emval_decref(b) {
b && 0 === --_emval_handle_array[b].refcount && (_emval_handle_array[b] = void 0, _emval_free_list.push(b))
}
function __emval_new_array() {
return __emval_register([])
}
function __emval_new_object() {
return __emval_register({})
}
function __emval_undefined() {
return __emval_register(void 0)
}
function __emval_null() {
return __emval_register(null)
}
function __emval_new_cstring(b) {
return __emval_register(getStringOrSymbol(b))
}
function __emval_take_value(b, a) {
b = requireRegisteredType(b, "_emval_take_value");
a = b.fromWireType(a);
return __emval_register(a)
}
var __newers = {};
function craftEmvalAllocator(b) {
for(var a = ["requireRegisteredType", "HEAP32", "_emval_handle_array", "__emval_register"], c = [requireRegisteredType, HEAP32, _emval_handle_array, __emval_register], d = "", f = "", e = 0;e < b;++e) {
d += (0 !== e ? ", " : "") + "arg" + e, f += ", arg" + e + "Wired"
}
f = "return function emval_allocator_" + b + "(handle, argTypes " + f + ") {\n";
for(e = 0;e < b;++e) {
f += "var argType" + e + " = requireRegisteredType(HEAP32[(argTypes >> 2) + " + e + '], "parameter ' + e + '");\nvar arg' + e + " = argType" + e + ".fromWireType(arg" + e + "Wired);\n"
}
a.push(f + ("var constructor = _emval_handle_array[handle].value;\nvar obj = new constructor(" + d + ");\nreturn __emval_register(obj);\n}\n"));
return new_(Function, a).apply(null, c)
}
function __emval_new(b, a, c) {
requireHandle(b);
var d = __newers[a];
d || (d = craftEmvalAllocator(a), __newers[a] = d);
return 0 === a ? d(b, c) : 1 === a ? d(b, c, arguments[3]) : 2 === a ? d(b, c, arguments[3], arguments[4]) : 3 === a ? d(b, c, arguments[3], arguments[4], arguments[5]) : 4 === a ? d(b, c, arguments[3], arguments[4], arguments[5], arguments[6]) : d.apply(null, arguments.splice(1))
}
var global = function() {
return Function
}()("return this")();
function __emval_get_global(b) {
b = getStringOrSymbol(b);
return __emval_register(global[b])
}
function __emval_get_module_property(b) {
b = getStringOrSymbol(b);
return __emval_register(Module[b])
}
function __emval_get_property(b, a) {
requireHandle(b);
return __emval_register(_emval_handle_array[b].value[_emval_handle_array[a].value])
}
function __emval_set_property(b, a, c) {
requireHandle(b);
_emval_handle_array[b].value[_emval_handle_array[a].value] = _emval_handle_array[c].value
}
function __emval_as(b, a) {
requireHandle(b);
a = requireRegisteredType(a, "emval::as");
return a.toWireType([], _emval_handle_array[b].value)
}
function parseParameters(b, a, c) {
for(var d = Array(b), f = 0;f < b;++f) {
var e = requireRegisteredType(HEAP32[(a >> 2) + f], "parameter " + f);
d[f] = e.fromWireType(c[f])
}
return d
}
function __emval_call(b, a, c) {
requireHandle(b);
for(var d = lookupTypes(a, c), f = Array(a), e = 0;e < a;++e) {
f[e] = d[e].fromWireType(arguments[3 + e])
}
d = _emval_handle_array[b].value.apply(void 0, f);
return __emval_register(d)
}
function lookupTypes(b, a) {
for(var c = Array(b), d = 0;d < b;++d) {
c[d] = requireRegisteredType(HEAP32[(a >> 2) + d], "parameter " + d)
}
return c
}
function __emval_get_method_caller(b, a) {
for(var c = lookupTypes(b, a), d = c[0], f = d.name + "_$" + c.slice(1).map(function(a) {
return a.name
}).join("_") + "$", e = "Runtime createNamedFunction requireHandle getStringOrSymbol _emval_handle_array retType".split(" "), d = [Runtime, createNamedFunction, requireHandle, getStringOrSymbol, _emval_handle_array, d], g = "", h = "", i = 0;i < b - 1;++i) {
g += (0 !== i ? ", " : "") + "arg" + i, h += ", arg" + i + "Wired", e.push("argType" + i), d.push(c[1 + i])
}
c = "return Runtime.addFunction(createNamedFunction('" + f + "', function (handle, name" + h + ") {\nrequireHandle(handle);\nname = getStringOrSymbol(name);\n";
for(i = 0;i < b - 1;++i) {
c += "var arg" + i + " = argType" + i + ".fromWireType(arg" + i + "Wired);\n"
}
e.push(c + ("var obj = _emval_handle_array[handle].value;\nreturn retType.toWireType(null, obj[name](" + g + "));\n}));\n"));
return new_(Function, e).apply(null, d)
}
function __emval_has_function(b, a) {
a = getStringOrSymbol(a);
return _emval_handle_array[b].value[a] instanceof Function
}
var InternalError = Module.InternalError = extendError(Error, "InternalError"), BindingError = Module.BindingError = extendError(Error, "BindingError"), UnboundTypeError = Module.UnboundTypeError = extendError(BindingError, "UnboundTypeError");
function throwInternalError(b) {
throw new InternalError(b);
}
function throwBindingError(b) {
throw new BindingError(b);
}
function throwUnboundTypeError(b, a) {
function c(a) {
!f[a] && !registeredTypes[a] && (typeDependencies[a] ? typeDependencies[a].forEach(c) : (d.push(a), f[a] = !0))
}
var d = [], f = {};
a.forEach(c);
throw new UnboundTypeError(b + ": " + d.map(getTypeName).join([", "]));
}
function ensureOverloadTable(b, a, c) {
if(void 0 === b[a].overloadTable) {
var d = b[a];
b[a] = function() {
b[a].overloadTable.hasOwnProperty(arguments.length) || throwBindingError("Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + b[a].overloadTable + ")!");
return b[a].overloadTable[arguments.length].apply(this, arguments)
};
b[a].overloadTable = [];
b[a].overloadTable[d.argCount] = d
}
}
function exposePublicSymbol(b, a, c) {
Module.hasOwnProperty(b) ? ((void 0 === c || void 0 !== Module[b].overloadTable && void 0 !== Module[b].overloadTable[c]) && throwBindingError("Cannot register public name '" + b + "' twice"), ensureOverloadTable(Module, b, b), Module.hasOwnProperty(c) && throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + c + ")!"), Module[b].overloadTable[c] = a) : (Module[b] = a, void 0 !== c && (Module[b].numArguments = c))
}
function replacePublicSymbol(b, a, c) {
Module.hasOwnProperty(b) || throwInternalError("Replacing nonexistant public symbol");
void 0 !== Module[b].overloadTable && void 0 !== c ? Module[b].overloadTable[c] = a : Module[b] = a
}
function extendError(b, a) {
var c = createNamedFunction(a, function(b) {
this.name = a;
this.message = b;
b = Error(b).stack;
void 0 !== b && (this.stack = this.toString() + "\n" + b.replace(/^Error(:[^\n]*)?\n/, ""))
});
c.prototype = Object.create(b.prototype);
c.prototype.constructor = c;
c.prototype.toString = function() {
return void 0 === this.message ? this.name : this.name + ": " + this.message
};
return c
}
function createNamedFunction(b, a) {
b = makeLegalFunctionName(b);
return(new Function("body", "return function " + b + '() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(a)
}
function _embind_repr(b) {
var a = typeof b;
return"object" === a || "array" === a || "function" === a ? b.toString() : "" + b
}
var registeredTypes = {}, awaitingDependencies = {}, typeDependencies = {}, registeredPointers = {};
function registerType(b, a) {
var c = a.name;
b || throwBindingError('type "' + c + '" must have a positive integer typeid pointer');
registeredTypes.hasOwnProperty(b) && throwBindingError("Cannot register type '" + c + "' twice");
registeredTypes[b] = a;
delete typeDependencies[b];
awaitingDependencies.hasOwnProperty(b) && (c = awaitingDependencies[b], delete awaitingDependencies[b], c.forEach(function(a) {
a()
}))
}
function whenDependentTypesAreResolved(b, a, c) {
function d(a) {
a = c(a);
a.length !== b.length && throwInternalError("Mismatched type converter count");
for(var d = 0;d < b.length;++d) {
registerType(b[d], a[d])
}
}
b.forEach(function(b) {
typeDependencies[b] = a
});
var f = Array(a.length), e = [], g = 0;
a.forEach(function(a, b) {
registeredTypes.hasOwnProperty(a) ? f[b] = registeredTypes[a] : (e.push(a), awaitingDependencies.hasOwnProperty(a) || (awaitingDependencies[a] = []), awaitingDependencies[a].push(function() {
f[b] = registeredTypes[a];
++g;
g === e.length && d(f)
}))
});
0 === e.length && d(f)
}
var __charCodes = function() {
for(var b = Array(256), a = 0;256 > a;++a) {
b[a] = String.fromCharCode(a)
}
return b
}();
function readLatin1String(b) {
for(var a = "";HEAPU8[b];) {
a += __charCodes[HEAPU8[b++]]
}
return a
}
function getTypeName(b) {
var b = ___getTypeName(b), a = readLatin1String(b);
_free(b);
return a
}
function heap32VectorToArray(b, a) {
for(var c = [], d = 0;d < b;d++) {
c.push(HEAP32[(a >> 2) + d])
}
return c
}
function requireRegisteredType(b, a) {
var c = registeredTypes[b];
void 0 === c && throwBindingError(a + " has unknown type " + getTypeName(b));
return c
}
function __embind_register_void(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function() {
}, toWireType:function() {
}})
}
function __embind_register_bool(b, a, c, d) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return!!a
}, toWireType:function(a, b) {
return b ? c : d
}, destructorFunction:null})
}
function __embind_register_integer(b, a, c, d) {
a = readLatin1String(a);
-1 === d && (d = 4294967295);
registerType(b, {name:a, minRange:c, maxRange:d, fromWireType:function(a) {
return a
}, toWireType:function(b, e) {
if("number" !== typeof e && "boolean" !== typeof e) {
throw new TypeError('Cannot convert "' + _embind_repr(e) + '" to ' + this.name);
}
if(e < c || e > d) {
throw new TypeError('Passing a number "' + _embind_repr(e) + '" from JS side to C/C++ side to an argument of type "' + a + '", which is outside the valid range [' + c + ", " + d + "]!");
}
return e | 0
}, destructorFunction:null})
}
function __embind_register_float(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return a
}, toWireType:function(a, b) {
if("number" !== typeof b && "boolean" !== typeof b) {
throw new TypeError('Cannot convert "' + _embind_repr(b) + '" to ' + this.name);
}
return b
}, destructorFunction:null})
}
function __embind_register_std_string(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
for(var b = HEAPU32[a >> 2], f = Array(b), e = 0;e < b;++e) {
f[e] = String.fromCharCode(HEAPU8[a + 4 + e])
}
_free(a);
return f.join("")
}, toWireType:function(a, b) {
function f(a, b) {
return a[b]
}
function e(a, b) {
return a.charCodeAt(b)
}
b instanceof ArrayBuffer && (b = new Uint8Array(b));
var g;
b instanceof Uint8Array ? g = f : b instanceof Int8Array ? g = f : "string" === typeof b ? g = e : throwBindingError("Cannot pass non-string to std::string");
var h = b.length, i = _malloc(4 + h);
HEAPU32[i >> 2] = h;
for(var j = 0;j < h;++j) {
var k = g(b, j);
255 < k && (_free(i), throwBindingError("String has UTF-16 code units that do not fit in 8 bits"));
HEAPU8[i + 4 + j] = k
}
null !== a && a.push(_free, i);
return i
}, destructorFunction:function(a) {
_free(a)
}})
}
function __embind_register_std_wstring(b, a, c) {
var c = readLatin1String(c), d, f;
2 === a ? (d = HEAPU16, f = 1) : 4 === a && (d = HEAPU32, f = 2);
registerType(b, {name:c, fromWireType:function(a) {
for(var b = HEAPU32[a >> 2], c = Array(b), i = a + 4 >> f, j = 0;j < b;++j) {
c[j] = String.fromCharCode(d[i + j])
}
_free(a);
return c.join("")
}, toWireType:function(b, c) {
var h = c.length, i = _malloc(4 + h * a);
HEAPU32[i >> 2] = h;
for(var j = i + 4 >> f, k = 0;k < h;++k) {
d[j + k] = c.charCodeAt(k)
}
null !== b && b.push(_free, i);
return i
}, destructorFunction:function(a) {
_free(a)
}})
}
function __embind_register_emval(b, a) {
a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
var b = _emval_handle_array[a].value;
__emval_decref(a);
return b
}, toWireType:function(a, b) {
return __emval_register(b)
}, destructorFunction:null})
}
function __embind_register_memory_view(b, a) {
var c = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array], a = readLatin1String(a);
registerType(b, {name:a, fromWireType:function(a) {
return new c[HEAPU32[a >> 2]](HEAP8.buffer, HEAPU32[(a >> 2) + 2], HEAPU32[(a >> 2) + 1])
}})
}
function runDestructors(b) {
for(;b.length;) {
var a = b.pop();
b.pop()(a)
}
}
function new_(b, a) {
if(!(b instanceof Function)) {
throw new TypeError("new_ called with constructor type " + typeof b + " which is not a function");
}
var c = createNamedFunction(b.name, function() {
});
c.prototype = b.prototype;
var c = new c, d = b.apply(c, a);
return d instanceof Object ? d : c
}
function craftInvokerFunction(b, a, c, d, f) {
var e = a.length;
2 > e && throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");
var g = null !== a[1] && null !== c;
!g && !FUNCTION_TABLE[f] && throwBindingError("Global function " + b + " is not defined!");
for(var h = "", i = "", j = 0;j < e - 2;++j) {
h += (0 !== j ? ", " : "") + "arg" + j, i += (0 !== j ? ", " : "") + "arg" + j + "Wired"
}
for(var b = "return function " + makeLegalFunctionName(b) + "(" + h + ") {\nif (arguments.length !== " + (e - 2) + ") {\nthrowBindingError('function " + b + " called with ' + arguments.length + ' arguments, expected " + (e - 2) + " args!');\n}\n", k = !1, j = 1;j < a.length;++j) {
if(null !== a[j] && void 0 === a[j].destructorFunction) {
k = !0;
break
}
}
k && (b += "var destructors = [];\n");
var l = k ? "destructors" : "null", h = "throwBindingError classType invoker fn runDestructors retType classParam".split(" "), c = [throwBindingError, c, d, f, runDestructors, a[0], a[1]];
g && (b += "var thisWired = classParam.toWireType(" + l + ", this);\n");
for(j = 0;j < e - 2;++j) {
b += "var arg" + j + "Wired = argType" + j + ".toWireType(" + l + ", arg" + j + "); // " + a[j + 2].name + "\n", h.push("argType" + j), c.push(a[j + 2])
}
g && (i = "thisWired" + (0 < i.length ? ", " : "") + i);
e = "void" !== a[0].name;
b += (e ? "var rv = " : "") + "invoker(fn" + (0 < i.length ? ", " : "") + i + ");\n";
if(k) {
b += "runDestructors(destructors);\n"
}else {
for(j = g ? 1 : 2;j < a.length;++j) {
g = 1 === j ? "thisWired" : "arg" + (j - 2) + "Wired", null !== a[j].destructorFunction && (b += g + "_dtor(" + g + "); // " + a[j].name + "\n", h.push(g + "_dtor"), c.push(a[j].destructorFunction))
}
}
e && (b += "return retType.fromWireType(rv);\n");
h.push(b + "}\n");
return new_(Function, h).apply(null, c)
}
function __embind_register_function(b, a, c, d, f) {
var e = heap32VectorToArray(a, c), b = readLatin1String(b), d = FUNCTION_TABLE[d];
exposePublicSymbol(b, function() {
throwUnboundTypeError("Cannot call " + b + " due to unbound types", e)
}, a - 1);
whenDependentTypesAreResolved([], e, function(c) {
c = [c[0], null].concat(c.slice(1));
replacePublicSymbol(b, craftInvokerFunction(b, c, null, d, f), a - 1);
return[]
})
}
var tupleRegistrations = {};
function __embind_register_tuple(b, a, c, d) {
tupleRegistrations[b] = {name:readLatin1String(a), rawConstructor:FUNCTION_TABLE[c], rawDestructor:FUNCTION_TABLE[d], elements:[]}
}
function __embind_register_tuple_element(b, a, c, d, f, e, g) {
tupleRegistrations[b].elements.push({getterReturnType:a, getter:FUNCTION_TABLE[c], getterContext:d, setterArgumentType:f, setter:FUNCTION_TABLE[e], setterContext:g})
}
function __embind_finalize_tuple(b) {
var a = tupleRegistrations[b];
delete tupleRegistrations[b];
var c = a.elements, d = c.length, f = c.map(function(a) {
return a.getterReturnType
}).concat(c.map(function(a) {
return a.setterArgumentType
})), e = a.rawConstructor, g = a.rawDestructor;
whenDependentTypesAreResolved([b], f, function(b) {
c.forEach(function(a, c) {
var e = b[c], f = a.getter, g = a.getterContext, t = b[c + d], v = a.setter, q = a.setterContext;
a.read = function(a) {
return e.fromWireType(f(g, a))
};
a.write = function(a, b) {
var c = [];
v(q, a, t.toWireType(c, b));
runDestructors(c)
}
});
return[{name:a.name, fromWireType:function(a) {
for(var b = Array(d), e = 0;e < d;++e) {
b[e] = c[e].read(a)
}
g(a);
return b
}, toWireType:function(b, f) {
if(d !== f.length) {
throw new TypeError("Incorrect number of tuple elements for " + a.name + ": expected=" + d + ", actual=" + f.length);
}
for(var h = e(), l = 0;l < d;++l) {
c[l].write(h, f[l])
}
null !== b && b.push(g, h);
return h
}, destructorFunction:g}]
})
}
var structRegistrations = {};
function __embind_register_struct(b, a, c, d) {
structRegistrations[b] = {name:readLatin1String(a), rawConstructor:FUNCTION_TABLE[c], rawDestructor:FUNCTION_TABLE[d], fields:[]}
}
function __embind_register_struct_field(b, a, c, d, f, e, g, h) {
structRegistrations[b].fields.push({fieldName:readLatin1String(a), getterReturnType:c, getter:FUNCTION_TABLE[d], getterContext:f, setterArgumentType:e, setter:FUNCTION_TABLE[g], setterContext:h})
}
function __embind_finalize_struct(b) {
var a = structRegistrations[b];
delete structRegistrations[b];
var c = a.rawConstructor, d = a.rawDestructor, f = a.fields, e = f.map(function(a) {
return a.getterReturnType
}).concat(f.map(function(a) {
return a.setterArgumentType
}));
whenDependentTypesAreResolved([b], e, function(b) {
var e = {};
f.forEach(function(a, c) {
var d = b[c], l = a.getter, s = a.getterContext, t = b[c + f.length], v = a.setter, q = a.setterContext;
e[a.fieldName] = {read:function(a) {
return d.fromWireType(l(s, a))
}, write:function(a, b) {
var c = [];
v(q, a, t.toWireType(c, b));
runDestructors(c)
}}
});
return[{name:a.name, fromWireType:function(a) {
var b = {}, c;
for(c in e) {
b[c] = e[c].read(a)
}
d(a);
return b
}, toWireType:function(a, b) {
for(var f in e) {
if(!(f in b)) {
throw new TypeError("Missing field");
}
}
var g = c();
for(f in e) {
e[f].write(g, b[f])
}
null !== a && a.push(d, g);
return g
}, destructorFunction:d}]
})
}
var genericPointerToWireType = function(b, a) {
if(null === a) {
this.isReference && throwBindingError("null is not a valid " + this.name);
if(this.isSmartPointer) {
var c = this.rawConstructor();
null !== b && b.push(this.rawDestructor, c);
return c
}
return 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
!this.isConst && a.$$.ptrType.isConst && throwBindingError("Cannot convert argument of type " + (a.$$.smartPtrType ? a.$$.smartPtrType.name : a.$$.ptrType.name) + " to parameter type " + this.name);
c = upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass);
if(this.isSmartPointer) {
switch(void 0 === a.$$.smartPtr && throwBindingError("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) {
case 0:
a.$$.smartPtrType === this ? c = a.$$.smartPtr : throwBindingError("Cannot convert argument of type " + (a.$$.smartPtrType ? a.$$.smartPtrType.name : a.$$.ptrType.name) + " to parameter type " + this.name);
break;
case 1:
c = a.$$.smartPtr;
break;
case 2:
if(a.$$.smartPtrType === this) {
c = a.$$.smartPtr
}else {
var d = a.clone(), c = this.rawShare(c, __emval_register(function() {
d.delete()
}));
null !== b && b.push(this.rawDestructor, c)
}
break;
default:
throwBindingError("Unsupporting sharing policy")
}
}
return c
}, constNoSmartPtrRawPointerToWireType = function(b, a) {
if(null === a) {
return this.isReference && throwBindingError("null is not a valid " + this.name), 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
return upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass)
}, nonConstNoSmartPtrRawPointerToWireType = function(b, a) {
if(null === a) {
return this.isReference && throwBindingError("null is not a valid " + this.name), 0
}
a.$$ || throwBindingError('Cannot pass "' + _embind_repr(a) + '" as a ' + this.name);
a.$$.ptr || throwBindingError("Cannot pass deleted object as a pointer of type " + this.name);
a.$$.ptrType.isConst && throwBindingError("Cannot convert argument of type " + a.$$.ptrType.name + " to parameter type " + this.name);
return upcastPointer(a.$$.ptr, a.$$.ptrType.registeredClass, this.registeredClass)
};
function RegisteredPointer(b, a, c, d, f, e, g, h, i, j, k) {
this.name = b;
this.registeredClass = a;
this.isReference = c;
this.isConst = d;
this.isSmartPointer = f;
this.pointeeType = e;
this.sharingPolicy = g;
this.rawGetPointee = h;
this.rawConstructor = i;
this.rawShare = j;
this.rawDestructor = k;
!f && void 0 === a.baseClass ? (this.toWireType = d ? constNoSmartPtrRawPointerToWireType : nonConstNoSmartPtrRawPointerToWireType, this.destructorFunction = null) : this.toWireType = genericPointerToWireType
}
RegisteredPointer.prototype.getPointee = function(b) {
this.rawGetPointee && (b = this.rawGetPointee(b));
return b
};
RegisteredPointer.prototype.destructor = function(b) {
this.rawDestructor && this.rawDestructor(b)
};
RegisteredPointer.prototype.fromWireType = function(b) {
function a() {
return this.isSmartPointer ? makeClassHandle(this.registeredClass.instancePrototype, {ptrType:this.pointeeType, ptr:c, smartPtrType:this, smartPtr:b}) : makeClassHandle(this.registeredClass.instancePrototype, {ptrType:this, ptr:b})
}
var c = this.getPointee(b);
if(!c) {
return this.destructor(b), null
}
var d = this.registeredClass.getActualType(c), d = registeredPointers[d];
if(!d) {
return a.call(this)
}
var d = this.isConst ? d.constPointerType : d.pointerType, f = downcastPointer(c, this.registeredClass, d.registeredClass);
return null === f ? a.call(this) : this.isSmartPointer ? makeClassHandle(d.registeredClass.instancePrototype, {ptrType:d, ptr:f, smartPtrType:this, smartPtr:b}) : makeClassHandle(d.registeredClass.instancePrototype, {ptrType:d, ptr:f})
};
function makeClassHandle(b, a) {
(!a.ptrType || !a.ptr) && throwInternalError("makeClassHandle requires ptr and ptrType");
!!a.smartPtrType !== !!a.smartPtr && throwInternalError("Both smartPtrType and smartPtr must be specified");
a.count = {value:1};
return Object.create(b, {$$:{value:a}})
}
function ClassHandle() {
}
function getInstanceTypeName(b) {
return b.$$.ptrType.registeredClass.name
}
ClassHandle.prototype.isAliasOf = function(b) {
if(!(this instanceof ClassHandle) || !(b instanceof ClassHandle)) {
return!1
}
for(var a = this.$$.ptrType.registeredClass, c = this.$$.ptr, d = b.$$.ptrType.registeredClass, b = b.$$.ptr;a.baseClass;) {
c = a.upcast(c), a = a.baseClass
}
for(;d.baseClass;) {
b = d.upcast(b), d = d.baseClass
}
return a === d && c === b
};
function throwInstanceAlreadyDeleted(b) {
throwBindingError(getInstanceTypeName(b) + " instance already deleted")
}
ClassHandle.prototype.clone = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
var b = Object.create(Object.getPrototypeOf(this), {$$:{value:shallowCopy(this.$$)}});
b.$$.count.value += 1;
return b
};
function runDestructor(b) {
b = b.$$;
b.smartPtr ? b.smartPtrType.rawDestructor(b.smartPtr) : b.ptrType.registeredClass.rawDestructor(b.ptr)
}
ClassHandle.prototype["delete"] = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
this.$$.deleteScheduled && throwBindingError("Object already scheduled for deletion");
this.$$.count.value -= 1;
0 === this.$$.count.value && runDestructor(this);
this.$$.smartPtr = void 0;
this.$$.ptr = void 0
};
var deletionQueue = [];
ClassHandle.prototype.isDeleted = function() {
return!this.$$.ptr
};
ClassHandle.prototype.deleteLater = function() {
this.$$.ptr || throwInstanceAlreadyDeleted(this);
this.$$.deleteScheduled && throwBindingError("Object already scheduled for deletion");
deletionQueue.push(this);
1 === deletionQueue.length && delayFunction && delayFunction(flushPendingDeletes);
this.$$.deleteScheduled = !0;
return this
};
function flushPendingDeletes() {
for(;deletionQueue.length;) {
var b = deletionQueue.pop();
b.$$.deleteScheduled = !1;
b["delete"]()
}
}
Module.flushPendingDeletes = flushPendingDeletes;
var delayFunction;
Module.setDelayFunction = function(b) {
delayFunction = b;
deletionQueue.length && delayFunction && delayFunction(flushPendingDeletes)
};
function RegisteredClass(b, a, c, d, f, e, g, h) {
this.name = b;
this.constructor = a;
this.instancePrototype = c;
this.rawDestructor = d;
this.baseClass = f;
this.getActualType = e;
this.upcast = g;
this.downcast = h
}
function shallowCopy(b) {
var a = {}, c;
for(c in b) {
a[c] = b[c]
}
return a
}
function __embind_register_class(b, a, c, d, f, e, g, h, i) {
var h = readLatin1String(h), i = FUNCTION_TABLE[i], f = FUNCTION_TABLE[f], e = FUNCTION_TABLE[e], g = FUNCTION_TABLE[g], j = makeLegalFunctionName(h);
exposePublicSymbol(j, function() {
throwUnboundTypeError("Cannot construct " + h + " due to unbound types", [d])
});
whenDependentTypesAreResolved([b, a, c], d ? [d] : [], function(a) {
var a = a[0], c, s;
d ? (c = a.registeredClass, s = c.instancePrototype) : s = ClassHandle.prototype;
var a = createNamedFunction(j, function() {
if(Object.getPrototypeOf(this) !== t) {
throw new BindingError("Use 'new' to construct " + h);
}
if(void 0 === v.constructor_body) {
throw new BindingError(h + " has no accessible constructor");
}
var a = v.constructor_body[arguments.length];
if(void 0 === a) {
throw new BindingError("Tried to invoke ctor of " + h + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(v.constructor_body).toString() + ") parameters instead!");
}
return a.apply(this, arguments)
}), t = Object.create(s, {constructor:{value:a}});
a.prototype = t;
var v = new RegisteredClass(h, a, t, i, c, f, e, g);
c = new RegisteredPointer(h, v, !0, !1, !1);
s = new RegisteredPointer(h + "*", v, !1, !1, !1);
var q = new RegisteredPointer(h + " const*", v, !1, !0, !1);
registeredPointers[b] = {pointerType:s, constPointerType:q};
replacePublicSymbol(j, a);
return[c, s, q]
})
}
function __embind_register_class_constructor(b, a, c, d, f) {
var e = heap32VectorToArray(a, c), d = FUNCTION_TABLE[d];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], c = "constructor " + b.name;
void 0 === b.registeredClass.constructor_body && (b.registeredClass.constructor_body = []);
if(void 0 !== b.registeredClass.constructor_body[a - 1]) {
throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (a - 1) + ") for class '" + b.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
}
b.registeredClass.constructor_body[a - 1] = function() {
throwUnboundTypeError("Cannot construct " + b.name + " due to unbound types", e)
};
whenDependentTypesAreResolved([], e, function(e) {
b.registeredClass.constructor_body[a - 1] = function() {
arguments.length !== a - 1 && throwBindingError(c + " called with " + arguments.length + " arguments, expected " + (a - 1));
var b = [], g = Array(a);
g[0] = f;
for(var l = 1;l < a;++l) {
g[l] = e[l].toWireType(b, arguments[l - 1])
}
g = d.apply(null, g);
runDestructors(b);
return e[0].fromWireType(g)
};
return[]
});
return[]
})
}
function downcastPointer(b, a, c) {
return a === c ? b : void 0 === c.baseClass ? null : c.downcast(downcastPointer(b, a, c.baseClass))
}
function upcastPointer(b, a, c) {
for(;a !== c;) {
a.upcast || throwBindingError("Expected null or instance of " + c.name + ", got an instance of " + a.name), b = a.upcast(b), a = a.baseClass
}
return b
}
function validateThis(b, a, c) {
b instanceof Object || throwBindingError(c + ' with invalid "this": ' + b);
b instanceof a.registeredClass.constructor || throwBindingError(c + ' incompatible with "this" of type ' + b.constructor.name);
b.$$.ptr || throwBindingError("cannot call emscripten binding method " + c + " on deleted object");
return upcastPointer(b.$$.ptr, b.$$.ptrType.registeredClass, a.registeredClass)
}
function __embind_register_class_function(b, a, c, d, f, e) {
var g = heap32VectorToArray(c, d), a = readLatin1String(a), f = FUNCTION_TABLE[f];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], d = b.name + "." + a, j = function() {
throwUnboundTypeError("Cannot call " + d + " due to unbound types", g)
}, k = b.registeredClass.instancePrototype, l = k[a];
void 0 === l || void 0 === l.overloadTable && l.className !== b.name && l.argCount === c - 2 ? (j.argCount = c - 2, j.className = b.name, k[a] = j) : (ensureOverloadTable(k, a, d), k[a].overloadTable[c - 2] = j);
whenDependentTypesAreResolved([], g, function(g) {
g = craftInvokerFunction(d, g, b, f, e);
void 0 === k[a].overloadTable ? k[a] = g : k[a].overloadTable[c - 2] = g;
return[]
});
return[]
})
}
function __embind_register_class_class_function(b, a, c, d, f, e) {
var g = heap32VectorToArray(c, d), a = readLatin1String(a), f = FUNCTION_TABLE[f];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], d = b.name + "." + a, j = function() {
throwUnboundTypeError("Cannot call " + d + " due to unbound types", g)
}, k = b.registeredClass.constructor;
void 0 === k[a] ? (j.argCount = c - 1, k[a] = j) : (ensureOverloadTable(k, a, d), k[a].overloadTable[c - 1] = j);
whenDependentTypesAreResolved([], g, function(b) {
b = [b[0], null].concat(b.slice(1));
b = craftInvokerFunction(d, b, null, f, e);
void 0 === k[a].overloadTable ? k[a] = b : k[a].overloadTable[c - 1] = b;
return[]
});
return[]
})
}
function __embind_register_class_property(b, a, c, d, f, e, g, h) {
a = readLatin1String(a);
d = FUNCTION_TABLE[d];
whenDependentTypesAreResolved([], [b], function(b) {
var b = b[0], j = b.name + "." + a, k = {get:function() {
throwUnboundTypeError("Cannot access " + j + " due to unbound types", [c, e])
}, enumerable:!0, configurable:!0};
k.set = g ? function() {
throwUnboundTypeError("Cannot access " + j + " due to unbound types", [c, e])
} : function() {
throwBindingError(j + " is a read-only property")
};
Object.defineProperty(b.registeredClass.instancePrototype, a, k);
whenDependentTypesAreResolved([], g ? [c, e] : [c], function(c) {
var e = c[0], k = {get:function() {
var a = validateThis(this, b, j + " getter");
return e.fromWireType(d(f, a))
}, enumerable:!0};
if(g) {
g = FUNCTION_TABLE[g];
var v = c[1];
k.set = function(a) {
var c = validateThis(this, b, j + " setter"), d = [];
g(h, c, v.toWireType(d, a));
runDestructors(d)
}
}
Object.defineProperty(b.registeredClass.instancePrototype, a, k);
return[]
});
return[]
})
}
var char_0 = 48, char_9 = 57;
function makeLegalFunctionName(b) {
var b = b.replace(/[^a-zA-Z0-9_]/g, "$"), a = b.charCodeAt(0);
return a >= char_0 && a <= char_9 ? "_" + b : b
}
function __embind_register_smart_ptr(b, a, c, d, f, e, g, h) {
c = readLatin1String(c);
f = FUNCTION_TABLE[f];
e = FUNCTION_TABLE[e];
g = FUNCTION_TABLE[g];
h = FUNCTION_TABLE[h];
whenDependentTypesAreResolved([b], [a], function(a) {
a = a[0];
return[new RegisteredPointer(c, a.registeredClass, !1, !1, !0, a, d, f, e, g, h)]
})
}
function __embind_register_enum(b, a) {
function c() {
}
a = readLatin1String(a);
c.values = {};
registerType(b, {name:a, constructor:c, fromWireType:function(a) {
return this.constructor.values[a]
}, toWireType:function(a, b) {
return b.value
}, destructorFunction:null});
exposePublicSymbol(a, c)
}
function __embind_register_enum_value(b, a, c) {
var d = requireRegisteredType(b, "enum"), a = readLatin1String(a), b = d.constructor, d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:createNamedFunction(d.name + "_" + a, function() {
})}});
b.values[c] = d;
b[a] = d
}
function __embind_register_constant(b, a, c) {
b = readLatin1String(b);
whenDependentTypesAreResolved([], [a], function(a) {
a = a[0];
Module[b] = a.fromWireType(c);
return[]
})
}
try {
this.Module = Module
}catch(e$$10) {
this.Module = Module = {}
}
var ENVIRONMENT_IS_NODE = "object" === typeof process && "function" === typeof require, ENVIRONMENT_IS_WEB = "object" === typeof window, ENVIRONMENT_IS_WORKER = "function" === typeof importScripts, ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if(ENVIRONMENT_IS_NODE) {
Module.print = function(b) {
process.stdout.write(b + "\n")
};
Module.printErr = function(b) {
process.stderr.write(b + "\n")
};
var nodeFS = require("fs"), nodePath = require("path");
Module.read = function(b, a) {
var b = nodePath.normalize(b), c = nodeFS.readFileSync(b);
!c && b != nodePath.resolve(b) && (b = path.join(__dirname, "..", "src", b), c = nodeFS.readFileSync(b));
c && !a && (c = c.toString());
return c
};
Module.readBinary = function(b) {
return Module.read(b, !0)
};
Module.load = function(b) {
globalEval(read(b))
};
Module.arguments || (Module.arguments = process.argv.slice(2))
}
ENVIRONMENT_IS_SHELL && (Module.print = print, "undefined" != typeof printErr && (Module.printErr = printErr), Module.read = read, Module.readBinary = function(b) {
return read(b, "binary")
}, Module.arguments || ("undefined" != typeof scriptArgs ? Module.arguments = scriptArgs : "undefined" != typeof arguments && (Module.arguments = arguments)));
ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER && (Module.print || (Module.print = function(b) {
console.log(b)
}), Module.printErr || (Module.printErr = function(b) {
console.log(b)
}));
if(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module.read = function(b) {
var a = new XMLHttpRequest;
a.open("GET", b, !1);
a.send(null);
return a.responseText
}, Module.arguments || "undefined" != typeof arguments && (Module.arguments = arguments)
}
if(ENVIRONMENT_IS_WORKER) {
var TRY_USE_DUMP = !1;
Module.print || (Module.print = TRY_USE_DUMP && "undefined" !== typeof dump ? function(b) {
dump(b)
} : function() {
});
Module.load = importScripts
}
if(!ENVIRONMENT_IS_WORKER && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_SHELL) {
throw"Unknown runtime environment. Where are we?";
}
function globalEval(b) {
eval.call(null, b)
}
"undefined" == !Module.load && Module.read && (Module.load = function(b) {
globalEval(Module.read(b))
});
Module.print || (Module.print = function() {
});
Module.printErr || (Module.printErr = Module.print);
Module.arguments || (Module.arguments = []);
Module.print = Module.print;
Module.printErr = Module.printErr;
Module.preRun || (Module.preRun = []);
Module.postRun || (Module.postRun = []);
var Runtime = {stackSave:function() {
return STACKTOP
}, stackRestore:function(b) {
STACKTOP = b
}, forceAlign:function(b, a) {
a = a || 4;
if(1 == a) {
return b
}
if(isNumber(b) && isNumber(a)) {
return Math.ceil(b / a) * a
}
if(isNumber(a) && isPowerOfTwo(a)) {
var c = log2(a);
return"((((" + b + ")+" + (a - 1) + ")>>" + c + ")<<" + c + ")"
}
return"Math.ceil((" + b + ")/" + a + ")*" + a
}, isNumberType:function(b) {
return b in Runtime.INT_TYPES || b in Runtime.FLOAT_TYPES
}, isPointerType:function(b) {
return"*" == b[b.length - 1]
}, isStructType:function(b) {
return isPointerType(b) ? !1 : /^\[\d+\ x\ (.*)\]/.test(b) || /<?{ ?[^}]* ?}>?/.test(b) ? !0 : "%" == b[0]
}, INT_TYPES:{i1:0, i8:0, i16:0, i32:0, i64:0}, FLOAT_TYPES:{"float":0, "double":0}, or64:function(b, a) {
var c = b | 0 | a | 0, d = 4294967296 * (Math.round(b / 4294967296) | Math.round(a / 4294967296));
return c + d
}, and64:function(b, a) {
var c = (b | 0) & (a | 0), d = 4294967296 * (Math.round(b / 4294967296) & Math.round(a / 4294967296));
return c + d
}, xor64:function(b, a) {
var c = (b | 0) ^ (a | 0), d = 4294967296 * (Math.round(b / 4294967296) ^ Math.round(a / 4294967296));
return c + d
}, getNativeTypeSize:function(b) {
if(1 == Runtime.QUANTUM_SIZE) {
return 1
}
var a = {"%i1":1, "%i8":1, "%i16":2, "%i32":4, "%i64":8, "%float":4, "%double":8}["%" + b];
a || ("*" == b.charAt(b.length - 1) ? a = Runtime.QUANTUM_SIZE : "i" == b[0] && (b = parseInt(b.substr(1)), assert(0 == b % 8), a = b / 8));
return a
}, getNativeFieldSize:function(b) {
return Math.max(Runtime.getNativeTypeSize(b), Runtime.QUANTUM_SIZE)
}, dedup:function(b, a) {
var c = {};
return a ? b.filter(function(b) {
return c[b[a]] ? !1 : c[b[a]] = !0
}) : b.filter(function(a) {
return c[a] ? !1 : c[a] = !0
})
}, set:function() {
for(var b = "object" === typeof arguments[0] ? arguments[0] : arguments, a = {}, c = 0;c < b.length;c++) {
a[b[c]] = 0
}
return a
}, STACK_ALIGN:8, getAlignSize:function(b, a, c) {
return"i64" == b || "double" == b || c ? 8 : !b ? Math.min(a, 8) : Math.min(a || (b ? Runtime.getNativeFieldSize(b) : 0), Runtime.QUANTUM_SIZE)
}, calculateStructAlignment:function(b) {
b.flatSize = 0;
b.alignSize = 0;
var a = [], c = -1;
b.flatIndexes = b.fields.map(function(d) {
var f;
if(Runtime.isNumberType(d) || Runtime.isPointerType(d)) {
f = Runtime.getNativeTypeSize(d), d = Runtime.getAlignSize(d, f)
}else {
if(Runtime.isStructType(d)) {
f = Types.types[d].flatSize, d = Runtime.getAlignSize(null, Types.types[d].alignSize)
}else {
if("b" == d[0]) {
f = d.substr(1) | 0, d = 1
}else {
throw"Unclear type in struct: " + d + ", in " + b.name_ + " :: " + dump(Types.types[b.name_]);
}
}
}
b.packed && (d = 1);
b.alignSize = Math.max(b.alignSize, d);
d = Runtime.alignMemory(b.flatSize, d);
b.flatSize = d + f;
0 <= c && a.push(d - c);
return c = d
});
b.flatSize = Runtime.alignMemory(b.flatSize, b.alignSize);
0 == a.length ? b.flatFactor = b.flatSize : 1 == Runtime.dedup(a).length && (b.flatFactor = a[0]);
b.needsFlattening = 1 != b.flatFactor;
return b.flatIndexes
}, generateStructInfo:function(b, a, c) {
var d, f;
if(a) {
c = c || 0;
d = ("undefined" === typeof Types ? Runtime.typeInfo : Types.types)[a];
if(!d) {
return null
}
if(d.fields.length != b.length) {
return printErr("Number of named fields must match the type for " + a + ": possibly duplicate struct names. Cannot return structInfo"), null
}
f = d.flatIndexes
}else {
d = {fields:b.map(function(a) {
return a[0]
})}, f = Runtime.calculateStructAlignment(d)
}
var e = {__size__:d.flatSize};
a ? b.forEach(function(a, b) {
if("string" === typeof a) {
e[a] = f[b] + c
}else {
var i, j;
for(j in a) {
i = j
}
e[i] = Runtime.generateStructInfo(a[i], d.fields[b], f[b])
}
}) : b.forEach(function(a, b) {
e[a[1]] = f[b]
});
return e
}, dynCall:function(b, a, c) {
if(c && c.length) {
return assert(c.length == b.length - 1), FUNCTION_TABLE[a].apply(null, c)
}
assert(1 == b.length);
return FUNCTION_TABLE[a]()
}, addFunction:function(b) {
var a = FUNCTION_TABLE, c = a.length;
a.push(b);
a.push(0);
return c
}, removeFunction:function(b) {
FUNCTION_TABLE[b] = null
}, warnOnce:function(b) {
Runtime.warnOnce.shown || (Runtime.warnOnce.shown = {});
Runtime.warnOnce.shown[b] || (Runtime.warnOnce.shown[b] = 1, Module.printErr(b))
}, funcWrappers:{}, getFuncWrapper:function(b, a) {
assert(a);
Runtime.funcWrappers[b] || (Runtime.funcWrappers[b] = function() {
return Runtime.dynCall(a, b, arguments)
});
return Runtime.funcWrappers[b]
}, UTF8Processor:function() {
var b = [], a = 0;
this.processCChar = function(c) {
c &= 255;
a && (b.push(c), a--);
if(0 == b.length) {
if(128 > c) {
return String.fromCharCode(c)
}
b.push(c);
a = 191 < c && 224 > c ? 1 : 2;
return""
}
if(0 < a) {
return""
}
var c = b[0], d = b[1], f = b[2], c = 191 < c && 224 > c ? String.fromCharCode((c & 31) << 6 | d & 63) : String.fromCharCode((c & 15) << 12 | (d & 63) << 6 | f & 63);
b.length = 0;
return c
};
this.processJSString = function(a) {
for(var a = unescape(encodeURIComponent(a)), b = [], f = 0;f < a.length;f++) {
b.push(a.charCodeAt(f))
}
return b
}
}, stackAlloc:function(b) {
var a = STACKTOP;
STACKTOP = STACKTOP + b | 0;
STACKTOP = STACKTOP + 7 >> 3 << 3;
assert((STACKTOP | 0) < (STACK_MAX | 0));
return a
}, staticAlloc:function(b) {
var a = STATICTOP;
STATICTOP = STATICTOP + (assert(!staticSealed), b) | 0;
STATICTOP = STATICTOP + 7 >> 3 << 3;
return a
}, dynamicAlloc:function(b) {
var a = DYNAMICTOP;
DYNAMICTOP = DYNAMICTOP + (assert(0 < DYNAMICTOP), b) | 0;
DYNAMICTOP = DYNAMICTOP + 7 >> 3 << 3;
DYNAMICTOP >= TOTAL_MEMORY && enlargeMemory();
return a
}, alignMemory:function(b, a) {
return Math.ceil(b / (a ? a : 8)) * (a ? a : 8)
}, makeBigInt:function(b, a, c) {
return c ? (b >>> 0) + 4294967296 * (a >>> 0) : (b >>> 0) + 4294967296 * (a | 0)
}, GLOBAL_BASE:8, QUANTUM_SIZE:4, __dummy__:0}, __THREW__ = 0, setjmpId = 1, setjmpLabels = {}, ABORT = !1, undef = 0, tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempI64, tempI64b, tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function abort(b) {
Module.print(b + ":\n" + Error().stack);
ABORT = !0;
throw"Assertion: " + b;
}
function assert(b, a) {
b || abort("Assertion failed: " + a)
}
var globalScope = this;
function ccall(b, a, c, d) {
return ccallFunc(getCFunc(b), a, c, d)
}
Module.ccall = ccall;
function getCFunc(b) {
try {
var a = globalScope.Module["_" + b];
a || (a = eval("_" + b))
}catch(c) {
}
assert(a, "Cannot call unknown function " + b + " (perhaps LLVM optimizations or closure removed it?)");
return a
}
function ccallFunc(b, a, c, d) {
function f(a, b) {
if("string" == b) {
if(null === a || void 0 === a || 0 === a) {
return 0
}
e || (e = Runtime.stackSave());
var c = Runtime.stackAlloc(a.length + 1);
writeStringToMemory(a, c);
return c
}
return"array" == b ? (e || (e = Runtime.stackSave()), c = Runtime.stackAlloc(a.length), writeArrayToMemory(a, c), c) : a
}
var e = 0, g = 0, d = d ? d.map(function(a) {
return f(a, c[g++])
}) : [];
b = b.apply(null, d);
"string" == a ? a = Pointer_stringify(b) : (assert("array" != a), a = b);
e && Runtime.stackRestore(e);
return a
}
function cwrap(b, a, c) {
var d = getCFunc(b);
return function() {
return ccallFunc(d, a, c, Array.prototype.slice.call(arguments))
}
}
Module.cwrap = cwrap;
function setValue(b, a, c) {
c = c || "i8";
"*" === c.charAt(c.length - 1) && (c = "i32");
switch(c) {
case "i1":
HEAP8[b] = a;
break;
case "i8":
HEAP8[b] = a;
break;
case "i16":
HEAP16[b >> 1] = a;
break;
case "i32":
HEAP32[b >> 2] = a;
break;
case "i64":
tempI64 = [a >>> 0, Math.min(Math.floor(a / 4294967296), 4294967295) >>> 0];
HEAP32[b >> 2] = tempI64[0];
HEAP32[b + 4 >> 2] = tempI64[1];
break;
case "float":
HEAPF32[b >> 2] = a;
break;
case "double":
HEAPF64[b >> 3] = a;
break;
default:
abort("invalid type for setValue: " + c)
}
}
Module.setValue = setValue;
function getValue(b, a) {
a = a || "i8";
"*" === a.charAt(a.length - 1) && (a = "i32");
switch(a) {
case "i1":
return HEAP8[b];
case "i8":
return HEAP8[b];
case "i16":
return HEAP16[b >> 1];
case "i32":
return HEAP32[b >> 2];
case "i64":
return HEAP32[b >> 2];
case "float":
return HEAPF32[b >> 2];
case "double":
return HEAPF64[b >> 3];
default:
abort("invalid type for setValue: " + a)
}
return null
}
Module.getValue = getValue;
var ALLOC_NORMAL = 0, ALLOC_STACK = 1, ALLOC_STATIC = 2, ALLOC_DYNAMIC = 3, ALLOC_NONE = 4;
Module.ALLOC_NORMAL = ALLOC_NORMAL;
Module.ALLOC_STACK = ALLOC_STACK;
Module.ALLOC_STATIC = ALLOC_STATIC;
Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC;
Module.ALLOC_NONE = ALLOC_NONE;
function allocate(b, a, c, d) {
var f, e;
"number" === typeof b ? (f = !0, e = b) : (f = !1, e = b.length);
var g = "string" === typeof a ? a : null, c = c == ALLOC_NONE ? d : [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][void 0 === c ? ALLOC_STATIC : c](Math.max(e, g ? 1 : a.length));
if(f) {
d = c;
assert(0 == (c & 3));
for(b = c + (e & -4);d < b;d += 4) {
HEAP32[d >> 2] = 0
}
for(b = c + e;d < b;) {
HEAP8[d++ | 0] = 0
}
return c
}
if("i8" === g) {
return HEAPU8.set(new Uint8Array(b), c), c
}
for(var d = 0, h, i;d < e;) {
var j = b[d];
"function" === typeof j && (j = Runtime.getFunctionIndex(j));
f = g || a[d];
0 === f ? d++ : (assert(f, "Must know what type to store in allocate!"), "i64" == f && (f = "i32"), setValue(c + d, j, f), i !== f && (h = Runtime.getNativeTypeSize(f), i = f), d += h)
}
return c
}
Module.allocate = allocate;
function Pointer_stringify(b, a) {
for(var c = !1, d, f = 0;;) {
d = HEAPU8[b + f | 0];
if(128 <= d) {
c = !0
}else {
if(0 == d && !a) {
break
}
}
f++;
if(a && f == a) {
break
}
}
a || (a = f);
var e = "";
if(!c) {
for(;0 < a;) {
d = String.fromCharCode.apply(String, HEAPU8.subarray(b, b + Math.min(a, 1024))), e = e ? e + d : d, b += 1024, a -= 1024
}
return e
}
c = new Runtime.UTF8Processor;
for(f = 0;f < a;f++) {
assert(b + f < TOTAL_MEMORY), d = HEAPU8[b + f | 0], e += c.processCChar(d)
}
return e
}
Module.Pointer_stringify = Pointer_stringify;
var PAGE_SIZE = 4096;
function alignMemoryPage(b) {
return b + 4095 >> 12 << 12
}
var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64, STATIC_BASE = 0, STATICTOP = 0, staticSealed = !1, STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0, DYNAMIC_BASE = 0, DYNAMICTOP = 0;
function enlargeMemory() {
abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.")
}
var TOTAL_STACK = Module.TOTAL_STACK || 5242880, TOTAL_MEMORY = Module.TOTAL_MEMORY || 16777216, FAST_MEMORY = Module.FAST_MEMORY || 2097152;
assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)).subarray && !!(new Int32Array(1)).set, "Cannot fallback to non-typed array case: Code is too specialized");
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
HEAP32[0] = 255;
assert(255 === HEAPU8[0] && 0 === HEAPU8[3], "Typed arrays 2 must be run on a little-endian system");
Module.HEAP = HEAP;
Module.HEAP8 = HEAP8;
Module.HEAP16 = HEAP16;
Module.HEAP32 = HEAP32;
Module.HEAPU8 = HEAPU8;
Module.HEAPU16 = HEAPU16;
Module.HEAPU32 = HEAPU32;
Module.HEAPF32 = HEAPF32;
Module.HEAPF64 = HEAPF64;
function callRuntimeCallbacks(b) {
for(;0 < b.length;) {
var a = b.shift();
if("function" == typeof a) {
a()
}else {
var c = a.func;
"number" === typeof c ? void 0 === a.arg ? Runtime.dynCall("v", c) : Runtime.dynCall("vi", c, [a.arg]) : c(void 0 === a.arg ? null : a.arg)
}
}
}
var __ATINIT__ = [], __ATMAIN__ = [], __ATEXIT__ = [], runtimeInitialized = !1;
function ensureInitRuntime() {
runtimeInitialized || (runtimeInitialized = !0, callRuntimeCallbacks(__ATINIT__))
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__)
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__)
}
function intArrayFromString(b, a, c) {
b = (new Runtime.UTF8Processor).processJSString(b);
c && (b.length = c);
a || b.push(0);
return b
}
Module.intArrayFromString = intArrayFromString;
function intArrayToString(b) {
for(var a = [], c = 0;c < b.length;c++) {
var d = b[c];
255 < d && (assert(!1, "Character code " + d + " (" + String.fromCharCode(d) + ") at offset " + c + " not in 0x00-0xFF."), d &= 255);
a.push(String.fromCharCode(d))
}
return a.join("")
}
Module.intArrayToString = intArrayToString;
function writeStringToMemory(b, a, c) {
b = intArrayFromString(b, c);
for(c = 0;c < b.length;) {
HEAP8[a + c | 0] = b[c], c += 1
}
}
Module.writeStringToMemory = writeStringToMemory;
function writeArrayToMemory(b, a) {
for(var c = 0;c < b.length;c++) {
HEAP8[a + c | 0] = b[c]
}
}
Module.writeArrayToMemory = writeArrayToMemory;
function unSign(b, a) {
return 0 <= b ? b : 32 >= a ? 2 * Math.abs(1 << a - 1) + b : Math.pow(2, a) + b
}
function reSign(b, a) {
if(0 >= b) {
return b
}
var c = 32 >= a ? Math.abs(1 << a - 1) : Math.pow(2, a - 1);
if(b >= c && (32 >= a || b > c)) {
b = -2 * c + b
}
return b
}
Math.imul || (Math.imul = function(b, a) {
var c = b & 65535, d = a & 65535;
return c * d + ((b >>> 16) * d + c * (a >>> 16) << 16) | 0
});
var runDependencies = 0, runDependencyTracking = {}, calledInit = !1, calledRun = !1, runDependencyWatcher = null;
function addRunDependency(b) {
runDependencies++;
Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies);
b ? (assert(!runDependencyTracking[b]), runDependencyTracking[b] = 1, null === runDependencyWatcher && "undefined" !== typeof setInterval && (runDependencyWatcher = setInterval(function() {
var a = !1, b;
for(b in runDependencyTracking) {
a || (a = !0, Module.printErr("still waiting on run dependencies:")), Module.printErr("dependency: " + b)
}
a && Module.printErr("(end of list)")
}, 6E3))) : Module.printErr("warning: run dependency added without ID")
}
Module.addRunDependency = addRunDependency;
function removeRunDependency(b) {
runDependencies--;
Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies);
b ? (assert(runDependencyTracking[b]), delete runDependencyTracking[b]) : Module.printErr("warning: run dependency removed without ID");
0 == runDependencies && (null !== runDependencyWatcher && (clearInterval(runDependencyWatcher), runDependencyWatcher = null), !calledRun && shouldRunNow && run())
}
Module.removeRunDependency = removeRunDependency;
Module.preloadedImages = {};
Module.preloadedAudios = {};
function addPreRun(b) {
Module.preRun ? "function" == typeof Module.preRun && (Module.preRun = [Module.preRun]) : Module.preRun = [];
Module.preRun.push(b)
}
var awaitingMemoryInitializer = !1;
function loadMemoryInitializer(b) {
addPreRun(function() {
if(ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
var a = Module.readBinary(b);
HEAPU8.set(a, STATIC_BASE);
runPostSets()
}else {
Browser.asyncLoad(b, function(a) {
HEAPU8.set(a, STATIC_BASE);
runPostSets()
}, function() {
throw"could not load memory initializer " + b;
})
}
});
awaitingMemoryInitializer = !1
}
var STATIC_BASE = 8, STATICTOP = STATIC_BASE + 1776, __ATINIT__ = __ATINIT__.concat([{func:function() {
__GLOBAL__I_a()
}}, {func:function() {
__GLOBAL__I_a7()
}}]), __ZTVN10__cxxabiv120__si_class_type_infoE, __ZTVN10__cxxabiv117__class_type_infoE, __ZTIt, __ZTIs, __ZTIm, __ZTIl, __ZTIj, __ZTIi, __ZTIh, __ZTIf, __ZTId, __ZTIc, __ZTIa;
__ZTVN10__cxxabiv120__si_class_type_infoE = allocate([0, 0, 0, 0, 192, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTVN10__cxxabiv117__class_type_infoE = allocate([0, 0, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIt = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIs = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIm = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIl = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIj = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIi = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIh = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIf = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTId = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIc = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
__ZTIa = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
allocate([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 108, 111, 110, 103, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 105, 110, 116, 0, 0, 0, 0, 105, 110, 116, 0, 0, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 115, 104, 111, 114, 116, 0, 0, 115, 104, 111, 114, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 0, 0, 0, 0, 99, 104, 97, 114,
0, 0, 0, 0, 118, 111, 105, 100, 0, 0, 0, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 0, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 58, 58, 118, 97, 108, 0, 115, 116, 100, 58, 58, 119, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 47, 118, 111, 108, 47, 98, 105, 103, 50, 52, 48, 47, 115, 110, 97, 112, 47, 106, 105, 109, 47, 119, 111, 114, 107, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 115, 121, 115, 116, 101, 109,
47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 0, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 0, 0, 0, 0, 98, 111, 111, 108, 0, 0, 0, 0, 100, 111, 117, 98, 108, 101, 0, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 0, 0, 0, 102, 108, 111, 97, 116, 0, 0, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 0,
0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 0, 0, 0, 0, 0, 0, 0, 0, 112, 114, 105, 110, 116, 95, 115, 111, 109, 101, 95, 115, 116, 117, 102, 102, 58, 32, 37, 100, 44, 32, 37, 102, 44, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 111, 105, 100, 32, 115, 116, 100, 58, 58, 95, 95, 49, 58, 58, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 60, 116, 114, 117, 101, 62, 58, 58, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 40, 41, 32, 99, 111, 110, 115, 116, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 24, 0, 0, 0, 4, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 6, 0, 0, 24, 0, 0, 0, 2, 0, 0, 0, 20, 0, 0, 0, 42, 0, 0, 0, 38, 0, 0, 0, 34, 0, 0, 0, 18, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0,
102, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 50, 49, 95, 95, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 95, 99, 111, 109, 109, 111, 110, 73, 76, 98, 49, 69, 69, 69, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97,
114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 119, 69, 69, 69, 69, 0, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 51, 118, 97, 108, 69,
0, 0, 0, 0, 0, 0, 78, 49, 48, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 49, 49, 109, 101, 109, 111, 114, 121, 95, 118, 105, 101, 119, 69, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 51, 95, 95, 102, 117, 110, 100, 97, 109, 101, 110, 116, 97, 108, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111,
69, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 0, 0, 0, 0, 0, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0,
0, 0, 0, 0, 0, 0, 0, 208, 3, 0, 0, 32, 4, 0, 0, 208, 3, 0, 0, 120, 4, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 0, 0, 0, 0, 152, 4, 0, 0, 248, 3, 0, 0, 192, 4, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 248, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 88, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 0, 0, 0, 0, 0, 0, 88, 5, 0, 0, 0, 0, 0, 0, 120, 5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 5, 0, 0, 208, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240,
5, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 80, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
function runPostSets() {
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 12 >> 2] = 22;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 28 >> 2] = 12;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 32 >> 2] = 10;
HEAP32[__ZTVN10__cxxabiv120__si_class_type_infoE + 36 >> 2] = 6;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 8 >> 2] = 24;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 12 >> 2] = 36;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 16 >> 2] = 20;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 20 >> 2] = 42;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 24 >> 2] = 38;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 28 >> 2] = 40;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 32 >> 2] = 30;
HEAP32[__ZTVN10__cxxabiv117__class_type_infoE + 36 >> 2] = 8;
HEAP32[__ZTIt >> 2] = 976;
HEAP32[__ZTIt + 4 >> 2] = 1064;
HEAP32[__ZTIs >> 2] = 976;
HEAP32[__ZTIs + 4 >> 2] = 1072;
HEAP32[__ZTIm >> 2] = 976;
HEAP32[__ZTIm + 4 >> 2] = 1080;
HEAP32[__ZTIl >> 2] = 976;
HEAP32[__ZTIl + 4 >> 2] = 1088;
HEAP32[__ZTIj >> 2] = 976;
HEAP32[__ZTIj + 4 >> 2] = 1096;
HEAP32[__ZTIi >> 2] = 976;
HEAP32[__ZTIi + 4 >> 2] = 1104;
HEAP32[__ZTIh >> 2] = 976;
HEAP32[__ZTIh + 4 >> 2] = 1112;
HEAP32[__ZTIf >> 2] = 976;
HEAP32[__ZTIf + 4 >> 2] = 1120;
HEAP32[__ZTId >> 2] = 976;
HEAP32[__ZTId + 4 >> 2] = 1128;
HEAP32[__ZTIc >> 2] = 976;
HEAP32[__ZTIc + 4 >> 2] = 1136;
HEAP32[__ZTIa >> 2] = 976;
HEAP32[__ZTIa + 4 >> 2] = 1152;
HEAP32[404] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[406] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[420] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[422] = __ZTVN10__cxxabiv117__class_type_infoE + 8 | 0;
HEAP32[424] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[428] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[432] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[436] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0;
HEAP32[440] = __ZTVN10__cxxabiv120__si_class_type_infoE + 8 | 0
}
awaitingMemoryInitializer || runPostSets();
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(0 == tempDoublePtr % 8);
function copyTempFloat(b) {
HEAP8[tempDoublePtr] = HEAP8[b];
HEAP8[tempDoublePtr + 1] = HEAP8[b + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[b + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[b + 3]
}
function copyTempDouble(b) {
HEAP8[tempDoublePtr] = HEAP8[b];
HEAP8[tempDoublePtr + 1] = HEAP8[b + 1];
HEAP8[tempDoublePtr + 2] = HEAP8[b + 2];
HEAP8[tempDoublePtr + 3] = HEAP8[b + 3];
HEAP8[tempDoublePtr + 4] = HEAP8[b + 4];
HEAP8[tempDoublePtr + 5] = HEAP8[b + 5];
HEAP8[tempDoublePtr + 6] = HEAP8[b + 6];
HEAP8[tempDoublePtr + 7] = HEAP8[b + 7]
}
var ERRNO_CODES = {E2BIG:7, EACCES:13, EADDRINUSE:98, EADDRNOTAVAIL:99, EAFNOSUPPORT:97, EAGAIN:11, EALREADY:114, EBADF:9, EBADMSG:74, EBUSY:16, ECANCELED:125, ECHILD:10, ECONNABORTED:103, ECONNREFUSED:111, ECONNRESET:104, EDEADLK:35, EDESTADDRREQ:89, EDOM:33, EDQUOT:122, EEXIST:17, EFAULT:14, EFBIG:27, EHOSTUNREACH:113, EIDRM:43, EILSEQ:84, EINPROGRESS:115, EINTR:4, EINVAL:22, EIO:5, EISCONN:106, EISDIR:21, ELOOP:40, EMFILE:24, EMLINK:31, EMSGSIZE:90, EMULTIHOP:72, ENAMETOOLONG:36, ENETDOWN:100,
ENETRESET:102, ENETUNREACH:101, ENFILE:23, ENOBUFS:105, ENODATA:61, ENODEV:19, ENOENT:2, ENOEXEC:8, ENOLCK:37, ENOLINK:67, ENOMEM:12, ENOMSG:42, ENOPROTOOPT:92, ENOSPC:28, ENOSR:63, ENOSTR:60, ENOSYS:38, ENOTCONN:107, ENOTDIR:20, ENOTEMPTY:39, ENOTRECOVERABLE:131, ENOTSOCK:88, ENOTSUP:95, ENOTTY:25, ENXIO:6, EOPNOTSUPP:45, EOVERFLOW:75, EOWNERDEAD:130, EPERM:1, EPIPE:32, EPROTO:71, EPROTONOSUPPORT:93, EPROTOTYPE:91, ERANGE:34, EROFS:30, ESPIPE:29, ESRCH:3, ESTALE:116, ETIME:62, ETIMEDOUT:110, ETXTBSY:26,
EWOULDBLOCK:11, EXDEV:18}, ___errno_state = 0;
function ___setErrNo(b) {
return HEAP32[___errno_state >> 2] = b
}
var _stdin = allocate(1, "i32*", ALLOC_STATIC), _stdout = allocate(1, "i32*", ALLOC_STATIC), _stderr = allocate(1, "i32*", ALLOC_STATIC), __impure_ptr = allocate(1, "i32*", ALLOC_STATIC), FS = {currentPath:"/", nextInode:2, streams:[null], checkStreams:function() {
for(var b in FS.streams) {
FS.streams.hasOwnProperty(b) && assert(0 <= b && b < FS.streams.length)
}
for(b = 0;b < FS.streams.length;b++) {
assert("object" == typeof FS.streams[b])
}
}, ignorePermissions:!0, joinPath:function(b, a) {
for(var c = b[0], d = 1;d < b.length;d++) {
"/" != c[c.length - 1] && (c += "/"), c += b[d]
}
a && "/" == c[0] && (c = c.substr(1));
return c
}, absolutePath:function(b, a) {
if("string" !== typeof b) {
return null
}
void 0 === a && (a = FS.currentPath);
b && "/" == b[0] && (a = "");
for(var c = (a + "/" + b).split("/").reverse(), d = [""];c.length;) {
var f = c.pop();
"" == f || "." == f || (".." == f ? 1 < d.length && d.pop() : d.push(f))
}
return 1 == d.length ? "/" : d.join("/")
}, analyzePath:function(b, a, c) {
var d = {isRoot:!1, exists:!1, error:0, name:null, path:null, object:null, parentExists:!1, parentPath:null, parentObject:null}, b = FS.absolutePath(b);
if("/" == b) {
d.isRoot = !0, d.exists = d.parentExists = !0, d.name = "/", d.path = d.parentPath = "/", d.object = d.parentObject = FS.root
}else {
if(null !== b) {
for(var c = c || 0, b = b.slice(1).split("/"), f = FS.root, e = [""];b.length;) {
1 == b.length && f.isFolder && (d.parentExists = !0, d.parentPath = 1 == e.length ? "/" : e.join("/"), d.parentObject = f, d.name = b[0]);
var g = b.shift();
if(f.isFolder) {
if(f.read) {
if(!f.contents.hasOwnProperty(g)) {
d.error = ERRNO_CODES.ENOENT;
break
}
}else {
d.error = ERRNO_CODES.EACCES;
break
}
}else {
d.error = ERRNO_CODES.ENOTDIR;
break
}
f = f.contents[g];
if(f.link && !(a && 0 == b.length)) {
if(40 < c) {
d.error = ERRNO_CODES.ELOOP;
break
}
d = FS.absolutePath(f.link, e.join("/"));
d = FS.analyzePath([d].concat(b).join("/"), a, c + 1);
break
}
e.push(g);
0 == b.length && (d.exists = !0, d.path = e.join("/"), d.object = f)
}
}
}
return d
}, findObject:function(b, a) {
FS.ensureRoot();
var c = FS.analyzePath(b, a);
if(c.exists) {
return c.object
}
___setErrNo(c.error);
return null
}, createObject:function(b, a, c, d, f) {
b || (b = "/");
"string" === typeof b && (b = FS.findObject(b));
if(!b) {
throw ___setErrNo(ERRNO_CODES.EACCES), Error("Parent path must exist.");
}
if(!b.isFolder) {
throw ___setErrNo(ERRNO_CODES.ENOTDIR), Error("Parent must be a folder.");
}
if(!b.write && !FS.ignorePermissions) {
throw ___setErrNo(ERRNO_CODES.EACCES), Error("Parent folder must be writeable.");
}
if(!a || "." == a || ".." == a) {
throw ___setErrNo(ERRNO_CODES.ENOENT), Error("Name must not be empty.");
}
if(b.contents.hasOwnProperty(a)) {
throw ___setErrNo(ERRNO_CODES.EEXIST), Error("Can't overwrite object.");
}
b.contents[a] = {read:void 0 === d ? !0 : d, write:void 0 === f ? !1 : f, timestamp:Date.now(), inodeNumber:FS.nextInode++};
for(var e in c) {
c.hasOwnProperty(e) && (b.contents[a][e] = c[e])
}
return b.contents[a]
}, createFolder:function(b, a, c, d) {
return FS.createObject(b, a, {isFolder:!0, isDevice:!1, contents:{}}, c, d)
}, createPath:function(b, a, c, d) {
b = FS.findObject(b);
if(null === b) {
throw Error("Invalid parent.");
}
for(a = a.split("/").reverse();a.length;) {
var f = a.pop();
f && (b.contents.hasOwnProperty(f) || FS.createFolder(b, f, c, d), b = b.contents[f])
}
return b
}, createFile:function(b, a, c, d, f) {
c.isFolder = !1;
return FS.createObject(b, a, c, d, f)
}, createDataFile:function(b, a, c, d, f) {
if("string" === typeof c) {
for(var e = Array(c.length), g = 0, h = c.length;g < h;++g) {
e[g] = c.charCodeAt(g)
}
c = e
}
c = {isDevice:!1, contents:c.subarray ? c.subarray(0) : c};
return FS.createFile(b, a, c, d, f)
}, createLazyFile:function(b, a, c, d, f) {
if("undefined" !== typeof XMLHttpRequest) {
if(!ENVIRONMENT_IS_WORKER) {
throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
}
var e = function() {
this.lengthKnown = !1;
this.chunks = []
};
e.prototype.get = function(a) {
if(!(a > this.length - 1 || 0 > a)) {
var b = a % this.chunkSize;
return this.getter(Math.floor(a / this.chunkSize))[b]
}
};
e.prototype.setDataGetter = function(a) {
this.getter = a
};
e.prototype.cacheLength = function() {
var a = new XMLHttpRequest;
a.open("HEAD", c, !1);
a.send(null);
if(!(200 <= a.status && 300 > a.status || 304 === a.status)) {
throw Error("Couldn't load " + c + ". Status: " + a.status);
}
var b = Number(a.getResponseHeader("Content-length")), d, e = 1048576;
if(!((d = a.getResponseHeader("Accept-Ranges")) && "bytes" === d)) {
e = b
}
var f = this;
f.setDataGetter(function(a) {
var d = a * e, g = (a + 1) * e - 1, g = Math.min(g, b - 1);
if("undefined" === typeof f.chunks[a]) {
var i = f.chunks;
if(d > g) {
throw Error("invalid range (" + d + ", " + g + ") or no bytes requested!");
}
if(g > b - 1) {
throw Error("only " + b + " bytes available! programmer error!");
}
var q = new XMLHttpRequest;
q.open("GET", c, !1);
b !== e && q.setRequestHeader("Range", "bytes=" + d + "-" + g);
"undefined" != typeof Uint8Array && (q.responseType = "arraybuffer");
q.overrideMimeType && q.overrideMimeType("text/plain; charset=x-user-defined");
q.send(null);
if(!(200 <= q.status && 300 > q.status || 304 === q.status)) {
throw Error("Couldn't load " + c + ". Status: " + q.status);
}
d = void 0 !== q.response ? new Uint8Array(q.response || []) : intArrayFromString(q.responseText || "", !0);
i[a] = d
}
if("undefined" === typeof f.chunks[a]) {
throw Error("doXHR failed!");
}
return f.chunks[a]
});
this._length = b;
this._chunkSize = e;
this.lengthKnown = !0
};
e = new e;
Object.defineProperty(e, "length", {get:function() {
this.lengthKnown || this.cacheLength();
return this._length
}});
Object.defineProperty(e, "chunkSize", {get:function() {
this.lengthKnown || this.cacheLength();
return this._chunkSize
}});
e = {isDevice:!1, contents:e}
}else {
e = {isDevice:!1, url:c}
}
return FS.createFile(b, a, e, d, f)
}, createPreloadedFile:function(b, a, c, d, f, e, g, h) {
function i(c) {
function i(c) {
h || FS.createDataFile(b, a, c, d, f);
e && e();
removeRunDependency("cp " + j)
}
var s = !1;
Module.preloadPlugins.forEach(function(a) {
!s && a.canHandle(j) && (a.handle(c, j, i, function() {
g && g();
removeRunDependency("cp " + j)
}), s = !0)
});
s || i(c)
}
Browser.init();
var j = FS.joinPath([b, a], !0);
addRunDependency("cp " + j);
"string" == typeof c ? Browser.asyncLoad(c, function(a) {
i(a)
}, g) : i(c)
}, createLink:function(b, a, c, d, f) {
return FS.createFile(b, a, {isDevice:!1, link:c}, d, f)
}, createDevice:function(b, a, c, d) {
if(!c && !d) {
throw Error("A device must have at least one callback defined.");
}
return FS.createFile(b, a, {isDevice:!0, input:c, output:d}, Boolean(c), Boolean(d))
}, forceLoadFile:function(b) {
if(b.isDevice || b.isFolder || b.link || b.contents) {
return!0
}
var a = !0;
if("undefined" !== typeof XMLHttpRequest) {
throw 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(Module.read) {
try {
b.contents = intArrayFromString(Module.read(b.url), !0)
}catch(c) {
a = !1
}
}else {
throw Error("Cannot load without read() or XMLHttpRequest.");
}
a || ___setErrNo(ERRNO_CODES.EIO);
return a
}, ensureRoot:function() {
FS.root || (FS.root = {read:!0, write:!0, isFolder:!0, isDevice:!1, timestamp:Date.now(), inodeNumber:1, contents:{}})
}, init:function(b, a, c) {
function d(b) {
null === b || 10 === b ? (a.printer(a.buffer.join("")), a.buffer = []) : a.buffer.push(h.processCChar(b))
}
assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
FS.init.initialized = !0;
FS.ensureRoot();
var b = b || Module.stdin, a = a || Module.stdout, c = c || Module.stderr, f = !0, e = !0, g = !0;
b || (f = !1, b = function() {
if(!b.cache || !b.cache.length) {
var a;
"undefined" != typeof window && "function" == typeof window.prompt ? (a = window.prompt("Input: "), null === a && (a = String.fromCharCode(0))) : "function" == typeof readline && (a = readline());
a || (a = "");
b.cache = intArrayFromString(a + "\n", !0)
}
return b.cache.shift()
});
var h = new Runtime.UTF8Processor;
a || (e = !1, a = d);
a.printer || (a.printer = Module.print);
a.buffer || (a.buffer = []);
c || (g = !1, c = d);
c.printer || (c.printer = Module.print);
c.buffer || (c.buffer = []);
try {
FS.createFolder("/", "tmp", !0, !0)
}catch(i) {
}
var j = FS.createFolder("/", "dev", !0, !0), k = FS.createDevice(j, "stdin", b), l = FS.createDevice(j, "stdout", null, a), c = FS.createDevice(j, "stderr", null, c);
FS.createDevice(j, "tty", b, a);
FS.streams[1] = {path:"/dev/stdin", object:k, position:0, isRead:!0, isWrite:!1, isAppend:!1, isTerminal:!f, error:!1, eof:!1, ungotten:[]};
FS.streams[2] = {path:"/dev/stdout", object:l, position:0, isRead:!1, isWrite:!0, isAppend:!1, isTerminal:!e, error:!1, eof:!1, ungotten:[]};
FS.streams[3] = {path:"/dev/stderr", object:c, position:0, isRead:!1, isWrite:!0, isAppend:!1, isTerminal:!g, error:!1, eof:!1, ungotten:[]};
HEAP32[_stdin >> 2] = 1;
HEAP32[_stdout >> 2] = 2;
HEAP32[_stderr >> 2] = 3;
FS.createPath("/", "dev/shm/tmp", !0, !0);
for(f = FS.streams.length;f < Math.max(_stdin, _stdout, _stderr) + 4;f++) {
FS.streams[f] = null
}
FS.streams[_stdin] = FS.streams[1];
FS.streams[_stdout] = FS.streams[2];
FS.streams[_stderr] = FS.streams[3];
FS.checkStreams();
allocate([allocate([0, 0, 0, 0, _stdin, 0, 0, 0, _stdout, 0, 0, 0, _stderr, 0, 0, 0], "void*", ALLOC_DYNAMIC)], "void*", ALLOC_NONE, __impure_ptr)
}, quit:function() {
FS.init.initialized && (FS.streams[2] && 0 < FS.streams[2].object.output.buffer.length && FS.streams[2].object.output(10), FS.streams[3] && 0 < FS.streams[3].object.output.buffer.length && FS.streams[3].object.output(10))
}, standardizePath:function(b) {
"./" == b.substr(0, 2) && (b = b.substr(2));
return b
}, deleteFile:function(b) {
b = FS.analyzePath(b);
if(!b.parentExists || !b.exists) {
throw"Invalid path " + b;
}
delete b.parentObject.contents[b.name]
}};
function _pwrite(b, a, c, d) {
b = FS.streams[b];
if(!b || b.object.isDevice) {
return ___setErrNo(ERRNO_CODES.EBADF), -1
}
if(b.isWrite) {
if(b.object.isFolder) {
return ___setErrNo(ERRNO_CODES.EISDIR), -1
}
if(0 > c || 0 > d) {
return ___setErrNo(ERRNO_CODES.EINVAL), -1
}
for(var f = b.object.contents;f.length < d;) {
f.push(0)
}
for(var e = 0;e < c;e++) {
f[d + e] = HEAPU8[a + e | 0]
}
b.object.timestamp = Date.now();
return e
}
___setErrNo(ERRNO_CODES.EACCES);
return-1
}
function _write(b, a, c) {
var d = FS.streams[b];
if(d) {
if(d.isWrite) {
if(0 > c) {
return ___setErrNo(ERRNO_CODES.EINVAL), -1
}
if(d.object.isDevice) {
if(d.object.output) {
for(b = 0;b < c;b++) {
try {
d.object.output(HEAP8[a + b | 0])
}catch(f) {
return ___setErrNo(ERRNO_CODES.EIO), -1
}
}
d.object.timestamp = Date.now();
return b
}
___setErrNo(ERRNO_CODES.ENXIO);
return-1
}
a = _pwrite(b, a, c, d.position);
-1 != a && (d.position += a);
return a
}
___setErrNo(ERRNO_CODES.EACCES);
return-1
}
___setErrNo(ERRNO_CODES.EBADF);
return-1
}
function _fwrite(b, a, c, d) {
c *= a;
if(0 == c) {
return 0
}
b = _write(d, b, c);
return-1 == b ? (FS.streams[d] && (FS.streams[d].error = !0), 0) : Math.floor(b / a)
}
function _strlen(b) {
for(var b = b | 0, a = 0, a = b;HEAP8[a];) {
a = a + 1 | 0
}
return a - b | 0
}
function __reallyNegative(b) {
return 0 > b || 0 === b && -Infinity === 1 / b
}
function __formatString(b, a) {
function c(b) {
var c;
"double" === b ? c = HEAPF64[a + f >> 3] : "i64" == b ? (c = [HEAP32[a + f >> 2], HEAP32[a + (f + 8) >> 2]], f += 8) : (b = "i32", c = HEAP32[a + f >> 2]);
f += Math.max(Runtime.getNativeFieldSize(b), Runtime.getAlignSize(b, null, !0));
return c
}
for(var d = b, f = 0, e = [], g, h;;) {
var i = d;
g = HEAP8[d];
if(0 === g) {
break
}
h = HEAP8[d + 1 | 0];
if(37 == g) {
var j = !1, k = !1, l = !1, s = !1;
a:for(;;) {
switch(h) {
case 43:
j = !0;
break;
case 45:
k = !0;
break;
case 35:
l = !0;
break;
case 48:
if(s) {
break a
}else {
s = !0;
break
}
;
default:
break a
}
d++;
h = HEAP8[d + 1 | 0]
}
var t = 0;
if(42 == h) {
t = c("i32"), d++, h = HEAP8[d + 1 | 0]
}else {
for(;48 <= h && 57 >= h;) {
t = 10 * t + (h - 48), d++, h = HEAP8[d + 1 | 0]
}
}
var v = !1;
if(46 == h) {
var q = 0, v = !0;
d++;
h = HEAP8[d + 1 | 0];
if(42 == h) {
q = c("i32"), d++
}else {
for(;;) {
h = HEAP8[d + 1 | 0];
if(48 > h || 57 < h) {
break
}
q = 10 * q + (h - 48);
d++
}
}
h = HEAP8[d + 1 | 0]
}else {
q = 6
}
var p;
switch(String.fromCharCode(h)) {
case "h":
h = HEAP8[d + 2 | 0];
104 == h ? (d++, p = 1) : p = 2;
break;
case "l":
h = HEAP8[d + 2 | 0];
108 == h ? (d++, p = 8) : p = 4;
break;
case "L":
;
case "q":
;
case "j":
p = 8;
break;
case "z":
;
case "t":
;
case "I":
p = 4;
break;
default:
p = null
}
p && d++;
h = HEAP8[d + 1 | 0];
switch(String.fromCharCode(h)) {
case "d":
;
case "i":
;
case "u":
;
case "o":
;
case "x":
;
case "X":
;
case "p":
i = 100 == h || 105 == h;
p = p || 4;
var n = g = c("i" + 8 * p), m;
8 == p && (g = Runtime.makeBigInt(g[0], g[1], 117 == h));
if(4 >= p) {
var z = Math.pow(256, p) - 1;
g = (i ? reSign : unSign)(g & z, 8 * p)
}
z = Math.abs(g);
i = "";
if(100 == h || 105 == h) {
m = 8 == p && i64Math ? i64Math.stringify(n[0], n[1], null) : reSign(g, 8 * p, 1).toString(10)
}else {
if(117 == h) {
m = 8 == p && i64Math ? i64Math.stringify(n[0], n[1], !0) : unSign(g, 8 * p, 1).toString(10), g = Math.abs(g)
}else {
if(111 == h) {
m = (l ? "0" : "") + z.toString(8)
}else {
if(120 == h || 88 == h) {
i = l && 0 != g ? "0x" : "";
if(8 == p && i64Math) {
if(n[1]) {
m = (n[1] >>> 0).toString(16);
for(l = (n[0] >>> 0).toString(16);8 > l.length;) {
l = "0" + l
}
m += l
}else {
m = (n[0] >>> 0).toString(16)
}
}else {
if(0 > g) {
g = -g;
m = (z - 1).toString(16);
n = [];
for(l = 0;l < m.length;l++) {
n.push((15 - parseInt(m[l], 16)).toString(16))
}
for(m = n.join("");m.length < 2 * p;) {
m = "f" + m
}
}else {
m = z.toString(16)
}
}
88 == h && (i = i.toUpperCase(), m = m.toUpperCase())
}else {
112 == h && (0 === z ? m = "(nil)" : (i = "0x", m = z.toString(16)))
}
}
}
}
if(v) {
for(;m.length < q;) {
m = "0" + m
}
}
for(j && (i = 0 > g ? "-" + i : "+" + i);i.length + m.length < t;) {
k ? m += " " : s ? m = "0" + m : i = " " + i
}
m = i + m;
m.split("").forEach(function(a) {
e.push(a.charCodeAt(0))
});
break;
case "f":
;
case "F":
;
case "e":
;
case "E":
;
case "g":
;
case "G":
g = c("double");
if(isNaN(g)) {
m = "nan", s = !1
}else {
if(isFinite(g)) {
v = !1;
p = Math.min(q, 20);
if(103 == h || 71 == h) {
v = !0, q = q || 1, p = parseInt(g.toExponential(p).split("e")[1], 10), q > p && -4 <= p ? (h = (103 == h ? "f" : "F").charCodeAt(0), q -= p + 1) : (h = (103 == h ? "e" : "E").charCodeAt(0), q--), p = Math.min(q, 20)
}
if(101 == h || 69 == h) {
m = g.toExponential(p), /[eE][-+]\d$/.test(m) && (m = m.slice(0, -1) + "0" + m.slice(-1))
}else {
if(102 == h || 70 == h) {
m = g.toFixed(p), 0 === g && __reallyNegative(g) && (m = "-" + m)
}
}
i = m.split("e");
if(v && !l) {
for(;1 < i[0].length && -1 != i[0].indexOf(".") && ("0" == i[0].slice(-1) || "." == i[0].slice(-1));) {
i[0] = i[0].slice(0, -1)
}
}else {
for(l && -1 == m.indexOf(".") && (i[0] += ".");q > p++;) {
i[0] += "0"
}
}
m = i[0] + (1 < i.length ? "e" + i[1] : "");
69 == h && (m = m.toUpperCase());
j && 0 <= g && (m = "+" + m)
}else {
m = (0 > g ? "-" : "") + "inf", s = !1
}
}
for(;m.length < t;) {
m = k ? m + " " : s && ("-" == m[0] || "+" == m[0]) ? m[0] + "0" + m.slice(1) : (s ? "0" : " ") + m
}
97 > h && (m = m.toUpperCase());
m.split("").forEach(function(a) {
e.push(a.charCodeAt(0))
});
break;
case "s":
s = (j = c("i8*")) ? _strlen(j) : 6;
v && (s = Math.min(s, q));
if(!k) {
for(;s < t--;) {
e.push(32)
}
}
if(j) {
for(l = 0;l < s;l++) {
e.push(HEAPU8[j++ | 0])
}
}else {
e = e.concat(intArrayFromString("(null)".substr(0, s), !0))
}
if(k) {
for(;s < t--;) {
e.push(32)
}
}
break;
case "c":
for(k && e.push(c("i8"));0 < --t;) {
e.push(32)
}
k || e.push(c("i8"));
break;
case "n":
k = c("i32*");
HEAP32[k >> 2] = e.length;
break;
case "%":
e.push(g);
break;
default:
for(l = i;l < d + 2;l++) {
e.push(HEAP8[l])
}
}
d += 2
}else {
e.push(g), d += 1
}
}
return e
}
function _fprintf(b, a, c) {
c = __formatString(a, c);
a = Runtime.stackSave();
b = _fwrite(allocate(c, "i8", ALLOC_STACK), 1, c.length, b);
Runtime.stackRestore(a);
return b
}
function _printf(b, a) {
return _fprintf(HEAP32[_stdout >> 2], b, a)
}
function _llvm_lifetime_start() {
}
function _llvm_lifetime_end() {
}
function _strdup(b) {
var a = _strlen(b), c = _malloc(a + 1);
_memcpy(c, b, a);
HEAP8[c + a | 0] = 0;
return c
}
function _abort() {
ABORT = !0;
throw"abort() at " + Error().stack;
}
function ___errno_location() {
___setErrNo.ret || (___setErrNo.ret = allocate([0], "i32", ALLOC_NORMAL), HEAP32[___setErrNo.ret >> 2] = 0);
return ___setErrNo.ret
}
var ___errno = ___errno_location;
function _memcpy(b, a, c) {
var b = b | 0, a = a | 0, c = c | 0, d = 0, d = b | 0;
if((b & 3) == (a & 3)) {
for(;b & 3;) {
if(0 == (c | 0)) {
return d | 0
}
HEAP8[b] = HEAP8[a];
b = b + 1 | 0;
a = a + 1 | 0;
c = c - 1 | 0
}
for(;4 <= (c | 0);) {
HEAP32[b >> 2] = HEAP32[a >> 2], b = b + 4 | 0, a = a + 4 | 0, c = c - 4 | 0
}
}
for(;0 < (c | 0);) {
HEAP8[b] = HEAP8[a], b = b + 1 | 0, a = a + 1 | 0, c = c - 1 | 0
}
return d | 0
}
var _llvm_memcpy_p0i8_p0i8_i32 = _memcpy;
function _sysconf(b) {
switch(b) {
case 8:
return PAGE_SIZE;
case 54:
;
case 56:
;
case 21:
;
case 61:
;
case 63:
;
case 22:
;
case 67:
;
case 23:
;
case 24:
;
case 25:
;
case 26:
;
case 27:
;
case 69:
;
case 28:
;
case 101:
;
case 70:
;
case 71:
;
case 29:
;
case 30:
;
case 199:
;
case 75:
;
case 76:
;
case 32:
;
case 43:
;
case 44:
;
case 80:
;
case 46:
;
case 47:
;
case 45:
;
case 48:
;
case 49:
;
case 42:
;
case 82:
;
case 33:
;
case 7:
;
case 108:
;
case 109:
;
case 107:
;
case 112:
;
case 119:
;
case 121:
return 200809;
case 13:
;
case 104:
;
case 94:
;
case 95:
;
case 34:
;
case 35:
;
case 77:
;
case 81:
;
case 83:
;
case 84:
;
case 85:
;
case 86:
;
case 87:
;
case 88:
;
case 89:
;
case 90:
;
case 91:
;
case 94:
;
case 95:
;
case 110:
;
case 111:
;
case 113:
;
case 114:
;
case 115:
;
case 116:
;
case 117:
;
case 118:
;
case 120:
;
case 40:
;
case 16:
;
case 79:
;
case 19:
return-1;
case 92:
;
case 93:
;
case 5:
;
case 72:
;
case 6:
;
case 74:
;
case 92:
;
case 93:
;
case 96:
;
case 97:
;
case 98:
;
case 99:
;
case 102:
;
case 103:
;
case 105:
return 1;
case 38:
;
case 66:
;
case 50:
;
case 51:
;
case 4:
return 1024;
case 15:
;
case 64:
;
case 41:
return 32;
case 55:
;
case 37:
;
case 17:
return 2147483647;
case 18:
;
case 1:
return 47839;
case 59:
;
case 57:
return 99;
case 68:
;
case 58:
return 2048;
case 0:
return 2097152;
case 3:
return 65536;
case 14:
return 32768;
case 73:
return 32767;
case 39:
return 16384;
case 60:
return 1E3;
case 106:
return 700;
case 52:
return 256;
case 62:
return 255;
case 2:
return 100;
case 65:
return 64;
case 36:
return 20;
case 100:
return 16;
case 20:
return 6;
case 53:
return 4;
case 10:
return 1
}
___setErrNo(ERRNO_CODES.EINVAL);
return-1
}
function _time(b) {
var a = Math.floor(Date.now() / 1E3);
b && (HEAP32[b >> 2] = a);
return a
}
function _sbrk(b) {
var a = _sbrk;
a.called || (DYNAMICTOP = alignMemoryPage(DYNAMICTOP), a.called = !0, assert(Runtime.dynamicAlloc), a.alloc = Runtime.dynamicAlloc, Runtime.dynamicAlloc = function() {
abort("cannot dynamically allocate, sbrk now has control")
});
var c = DYNAMICTOP;
0 != b && a.alloc(b);
return c
}
function __ZNSt9type_infoD2Ev() {
}
function _memset(b, a, c) {
var b = b | 0, a = a | 0, c = c | 0, d = 0, f = 0, e = 0, g = 0, d = b + c | 0;
if(20 <= (c | 0)) {
a &= 255;
g = b & 3;
f = a | a << 8 | a << 16 | a << 24;
e = d & -4;
if(g) {
for(g = b + 4 - g | 0;(b | 0) < (g | 0);) {
HEAP8[b] = a, b = b + 1 | 0
}
}
for(;(b | 0) < (e | 0);) {
HEAP32[b >> 2] = f, b = b + 4 | 0
}
}
for(;(b | 0) < (d | 0);) {
HEAP8[b] = a, b = b + 1 | 0
}
}
var _llvm_memset_p0i8_i64 = _memset;
function ___assert_func(b, a, c, d) {
throw"Assertion failed: " + (d ? Pointer_stringify(d) : "unknown condition") + ", at: " + [b ? Pointer_stringify(b) : "unknown filename", a, c ? Pointer_stringify(c) : "unknown function"] + " at " + Error().stack;
}
function _free() {
Runtime.warnOnce("using stub free (reference it from C to have the real one included)")
}
var Browser = {mainLoop:{scheduler:null, shouldPause:!1, paused:!1, queue:[], pause:function() {
Browser.mainLoop.shouldPause = !0
}, resume:function() {
Browser.mainLoop.paused && (Browser.mainLoop.paused = !1, Browser.mainLoop.scheduler());
Browser.mainLoop.shouldPause = !1
}, updateStatus:function() {
if(Module.setStatus) {
var b = Module.statusMessage || "Please wait...", a = Browser.mainLoop.remainingBlockers, c = Browser.mainLoop.expectedBlockers;
a ? a < c ? Module.setStatus(b + " (" + (c - a) + "/" + c + ")") : Module.setStatus(b) : Module.setStatus("")
}
}}, isFullScreen:!1, pointerLock:!1, moduleContextCreatedCallbacks:[], workers:[], init:function() {
function b(a) {
return{jpg:"image/jpeg", jpeg:"image/jpeg", png:"image/png", bmp:"image/bmp", ogg:"audio/ogg", wav:"audio/wav", mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".") + 1)]
}
function a() {
Browser.pointerLock = document.pointerLockElement === d || document.mozPointerLockElement === d || document.webkitPointerLockElement === d
}
if(!Browser.initted) {
Browser.initted = !0;
try {
new Blob, Browser.hasBlobConstructor = !0
}catch(c) {
Browser.hasBlobConstructor = !1, console.log("warning: no blob constructor, cannot create blobs with mimetypes")
}
Browser.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null;
Browser.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : console.log("warning: cannot create object URLs");
Module.preloadPlugins || (Module.preloadPlugins = []);
Module.preloadPlugins.push({canHandle:function(a) {
return!Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/.exec(a)
}, handle:function(a, c, d, h) {
var i = null;
if(Browser.hasBlobConstructor) {
try {
i = new Blob([a], {type:b(c)})
}catch(j) {
Runtime.warnOnce("Blob constructor present but fails: " + j + "; falling back to blob builder")
}
}
i || (i = new Browser.BlobBuilder, i.append((new Uint8Array(a)).buffer), i = i.getBlob());
var k = Browser.URLObject.createObjectURL(i);
assert("string" == typeof k, "createObjectURL must return a url as a string");
var l = new Image;
l.onload = function() {
assert(l.complete, "Image " + c + " could not be decoded");
var b = document.createElement("canvas");
b.width = l.width;
b.height = l.height;
b.getContext("2d").drawImage(l, 0, 0);
Module.preloadedImages[c] = b;
Browser.URLObject.revokeObjectURL(k);
d && d(a)
};
l.onerror = function() {
console.log("Image " + k + " could not be decoded");
h && h()
};
l.src = k
}});
Module.preloadPlugins.push({canHandle:function(a) {
return!Module.noAudioDecoding && a.substr(-4) in {".ogg":1, ".wav":1, ".mp3":1}
}, handle:function(a, c, d, h) {
function i(b) {
k || (k = !0, Module.preloadedAudios[c] = b, d && d(a))
}
function j() {
k || (k = !0, Module.preloadedAudios[c] = new Audio, h && h())
}
var k = !1;
if(Browser.hasBlobConstructor) {
try {
var l = new Blob([a], {type:b(c)})
}catch(s) {
return j()
}
l = Browser.URLObject.createObjectURL(l);
assert("string" == typeof l, "createObjectURL must return a url as a string");
var t = new Audio;
t.addEventListener("canplaythrough", function() {
i(t)
}, !1);
t.onerror = function() {
if(!k) {
console.log("warning: browser could not fully decode audio " + c + ", trying slower base64 approach");
for(var b = "data:audio/x-" + c.substr(-3) + ";base64,", d = "", g = 0, h = 0, j = 0;j < a.length;j++) {
g = g << 8 | a[j];
for(h += 8;6 <= h;) {
var l = g >> h - 6 & 63, h = h - 6, d = d + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[l]
}
}
2 == h ? (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 3) << 4], d += "==") : 4 == h && (d += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(g & 15) << 2], d += "=");
t.src = b + d;
i(t)
}
};
t.src = l;
setTimeout(function() {
i(t)
}, 1E4)
}else {
return j()
}
}});
var d = Module.canvas;
d.requestPointerLock = d.requestPointerLock || d.mozRequestPointerLock || d.webkitRequestPointerLock;
d.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock;
d.exitPointerLock = d.exitPointerLock.bind(document);
document.addEventListener("pointerlockchange", a, !1);
document.addEventListener("mozpointerlockchange", a, !1);
document.addEventListener("webkitpointerlockchange", a, !1);
Module.elementPointerLock && d.addEventListener("click", function(a) {
!Browser.pointerLock && d.requestPointerLock && (d.requestPointerLock(), a.preventDefault())
}, !1)
}
}, createContext:function(b, a, c) {
var d;
try {
if(d = a ? b.getContext("experimental-webgl", {alpha:!1}) : b.getContext("2d"), !d) {
throw":(";
}
}catch(f) {
return Module.print("Could not create canvas - " + f), null
}
a && (b.style.backgroundColor = "black", b.addEventListener("webglcontextlost", function() {
alert("WebGL context lost. You will need to reload the page.")
}, !1));
c && (Module.ctx = d, Module.useWebGL = a, Browser.moduleContextCreatedCallbacks.forEach(function(a) {
a()
}), Browser.init());
return d
}, destroyContext:function() {
}, fullScreenHandlersInstalled:!1, lockPointer:void 0, resizeCanvas:void 0, requestFullScreen:function(b, a) {
function c() {
Browser.isFullScreen = !1;
(document.webkitFullScreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.mozFullscreenElement || document.fullScreenElement || document.fullscreenElement) === d ? (d.cancelFullScreen = document.cancelFullScreen || document.mozCancelFullScreen || document.webkitCancelFullScreen, d.cancelFullScreen = d.cancelFullScreen.bind(document), Browser.lockPointer && d.requestPointerLock(), Browser.isFullScreen = !0, Browser.resizeCanvas && Browser.setFullScreenCanvasSize()) :
Browser.resizeCanvas && Browser.setWindowedCanvasSize();
if(Module.onFullScreen) {
Module.onFullScreen(Browser.isFullScreen)
}
}
this.lockPointer = b;
this.resizeCanvas = a;
"undefined" === typeof this.lockPointer && (this.lockPointer = !0);
"undefined" === typeof this.resizeCanvas && (this.resizeCanvas = !1);
var d = Module.canvas;
this.fullScreenHandlersInstalled || (this.fullScreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", c, !1), document.addEventListener("mozfullscreenchange", c, !1), document.addEventListener("webkitfullscreenchange", c, !1));
d.requestFullScreen = d.requestFullScreen || d.mozRequestFullScreen || (d.webkitRequestFullScreen ? function() {
d.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
} : null);
d.requestFullScreen()
}, requestAnimationFrame:function(b) {
window.requestAnimationFrame || (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || window.setTimeout);
window.requestAnimationFrame(b)
}, getMovementX:function(b) {
return b.movementX || b.mozMovementX || b.webkitMovementX || 0
}, getMovementY:function(b) {
return b.movementY || b.mozMovementY || b.webkitMovementY || 0
}, mouseX:0, mouseY:0, mouseMovementX:0, mouseMovementY:0, calculateMouseEvent:function(b) {
if(Browser.pointerLock) {
"mousemove" != b.type && "mozMovementX" in b ? Browser.mouseMovementX = Browser.mouseMovementY = 0 : (Browser.mouseMovementX = Browser.getMovementX(b), Browser.mouseMovementY = Browser.getMovementY(b)), Browser.mouseX = SDL.mouseX + Browser.mouseMovementX, Browser.mouseY = SDL.mouseY + Browser.mouseMovementY
}else {
var a = Module.canvas.getBoundingClientRect(), c = b.pageX - (window.scrollX + a.left), b = b.pageY - (window.scrollY + a.top), d = Module.canvas.height, c = c * (Module.canvas.width / a.width), b = b * (d / a.height);
Browser.mouseMovementX = c - Browser.mouseX;
Browser.mouseMovementY = b - Browser.mouseY;
Browser.mouseX = c;
Browser.mouseY = b
}
}, xhrLoad:function(b, a, c) {
var d = new XMLHttpRequest;
d.open("GET", b, !0);
d.responseType = "arraybuffer";
d.onload = function() {
200 == d.status || 0 == d.status && d.response ? a(d.response) : c()
};
d.onerror = c;
d.send(null)
}, asyncLoad:function(b, a, c, d) {
Browser.xhrLoad(b, function(c) {
assert(c, 'Loading data file "' + b + '" failed (no arrayBuffer).');
a(new Uint8Array(c));
d || removeRunDependency("al " + b)
}, function() {
if(c) {
c()
}else {
throw'Loading data file "' + b + '" failed.';
}
});
d || addRunDependency("al " + b)
}, resizeListeners:[], updateResizeListeners:function() {
var b = Module.canvas;
Browser.resizeListeners.forEach(function(a) {
a(b.width, b.height)
})
}, setCanvasSize:function(b, a, c) {
var d = Module.canvas;
d.width = b;
d.height = a;
c || Browser.updateResizeListeners()
}, windowedWidth:0, windowedHeight:0, setFullScreenCanvasSize:function() {
var b = Module.canvas;
this.windowedWidth = b.width;
this.windowedHeight = b.height;
b.width = screen.width;
b.height = screen.height;
b = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = b | 8388608;
Browser.updateResizeListeners()
}, setWindowedCanvasSize:function() {
var b = Module.canvas;
b.width = this.windowedWidth;
b.height = this.windowedHeight;
b = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = b & -8388609;
Browser.updateResizeListeners()
}};
__ATINIT__.unshift({func:function() {
!Module.noFSInit && !FS.init.initialized && FS.init()
}});
__ATMAIN__.push({func:function() {
FS.ignorePermissions = !1
}});
__ATEXIT__.push({func:function() {
FS.quit()
}});
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;
___errno_state = Runtime.staticAlloc(4);
Module.requestFullScreen = function(b, a) {
Browser.requestFullScreen(b, a)
};
Module.requestAnimationFrame = function(b) {
Browser.requestAnimationFrame(b)
};
Module.pauseMainLoop = function() {
Browser.mainLoop.pause()
};
Module.resumeMainLoop = function() {
Browser.mainLoop.resume()
};
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = !0;
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY);
var FUNCTION_TABLE = [0, 0, __ZN10__cxxabiv121__vmi_class_type_infoD0Ev, 0, __ZN10__cxxabiv123__fundamental_type_infoD0Ev, 0, __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,
0, __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi, 0, __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, __ZNK10__cxxabiv116__shim_type_info5noop1Ev, 0, __ZN10__cxxabiv120__si_class_type_infoD0Ev, 0, __ZN10__cxxabiv116__shim_type_infoD2Ev, 0, __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE,
0, ___getTypeName, 0, __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib, 0, ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_, 0, __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib, 0, __ZN10__cxxabiv117__class_type_infoD0Ev, 0, __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv, 0, __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,
0, __ZNK10__cxxabiv116__shim_type_info5noop2Ev];
function __Znwj(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
var c = 0 == (b | 0) ? 1 : b, a = _malloc(c);
if(0 == (a | 0)) {
a = 2
}else {
var d = a, a = 4
}
break;
case 2:
var f = (tempValue = HEAP32[444], HEAP32[444] = tempValue + 0, tempValue);
0 == (f | 0) ? (d = 0, a = 4) : a = 3;
break;
case 3:
FUNCTION_TABLE[f]();
a = _malloc(c);
0 == (a | 0) ? a = 2 : (d = a, a = 4);
break;
case 4:
return d;
default:
assert(0, "bad label: " + a)
}
}
}
function _malloc(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 245 > b >>> 0 ? 2 : 78;
break;
case 2:
if(11 > b >>> 0) {
var c = 16, a = 4
}else {
a = 3
}
break;
case 3:
c = (b + 11 | 0) & -8;
a = 4;
break;
case 4:
var d = c >>> 3, f = HEAP32[104], e = f >>> (d >>> 0), a = 0 == (e & 3 | 0) ? 12 : 5;
break;
case 5:
var g = (e & 1 ^ 1) + d | 0, h = g << 1, i = 456 + (h << 2) | 0, j = 456 + ((h + 2 | 0) << 2) | 0, k = HEAP32[j >> 2], l = k + 8 | 0, s = HEAP32[l >> 2], a = (i | 0) == (s | 0) ? 6 : 7;
break;
case 6:
HEAP32[104] = f & (1 << g ^ -1);
a = 11;
break;
case 7:
a = s >>> 0 < HEAP32[108] >>> 0 ? 10 : 8;
break;
case 8:
var t = s + 12 | 0, a = (HEAP32[t >> 2] | 0) == (k | 0) ? 9 : 10;
break;
case 9:
HEAP32[t >> 2] = i;
HEAP32[j >> 2] = s;
a = 11;
break;
case 10:
throw _abort(), "Reached an unreachable!";;
case 11:
var v = g << 3;
HEAP32[(k + 4 | 0) >> 2] = v | 3;
var q = k + (v | 4) | 0;
HEAP32[q >> 2] |= 1;
var p = l, a = 333;
break;
case 12:
if(c >>> 0 > HEAP32[106] >>> 0) {
a = 13
}else {
var n = c, a = 160
}
break;
case 13:
a = 0 == (e | 0) ? 27 : 14;
break;
case 14:
var m = 2 << d, z = e << d & (m | -m | 0), W = (z & (-z | 0)) - 1 | 0, aa = W >>> 12 & 16, X = W >>> (aa >>> 0), I = X >>> 5 & 8, L = X >>> (I >>> 0), P = L >>> 2 & 4, Y = L >>> (P >>> 0), ja = Y >>> 1 & 2, ba = Y >>> (ja >>> 0), E = ba >>> 1 & 1, Z = (I | aa | P | ja | E) + (ba >>> (E >>> 0)) | 0, ta = Z << 1, Q = 456 + (ta << 2) | 0, M = 456 + ((ta + 2 | 0) << 2) | 0, ca = HEAP32[M >> 2], da = ca + 8 | 0, ua = HEAP32[da >> 2], a = (Q | 0) == (ua | 0) ? 15 : 16;
break;
case 15:
HEAP32[104] = f & (1 << Z ^ -1);
a = 20;
break;
case 16:
a = ua >>> 0 < HEAP32[108] >>> 0 ? 19 : 17;
break;
case 17:
var sb = ua + 12 | 0, a = (HEAP32[sb >> 2] | 0) == (ca | 0) ? 18 : 19;
break;
case 18:
HEAP32[sb >> 2] = Q;
HEAP32[M >> 2] = ua;
a = 20;
break;
case 19:
throw _abort(), "Reached an unreachable!";;
case 20:
var tb = Z << 3, Wa = tb - c | 0;
HEAP32[(ca + 4 | 0) >> 2] = c | 3;
var Xa = ca, mc = Xa + c | 0;
HEAP32[(Xa + (c | 4) | 0) >> 2] = Wa | 1;
HEAP32[(Xa + tb | 0) >> 2] = Wa;
var ub = HEAP32[106], a = 0 == (ub | 0) ? 26 : 21;
break;
case 21:
var ea = HEAP32[109], va = ub >>> 3, wa = va << 1, xa = 456 + (wa << 2) | 0, vb = HEAP32[104], fa = 1 << va, a = 0 == (vb & fa | 0) ? 22 : 23;
break;
case 22:
HEAP32[104] = vb | fa;
var ya = xa, Ya = 456 + ((wa + 2 | 0) << 2) | 0, a = 25;
break;
case 23:
var wb = 456 + ((wa + 2 | 0) << 2) | 0, za = HEAP32[wb >> 2];
za >>> 0 < HEAP32[108] >>> 0 ? a = 24 : (ya = za, Ya = wb, a = 25);
break;
case 24:
throw _abort(), "Reached an unreachable!";;
case 25:
HEAP32[Ya >> 2] = ea;
HEAP32[(ya + 12 | 0) >> 2] = ea;
HEAP32[(ea + 8 | 0) >> 2] = ya;
HEAP32[(ea + 12 | 0) >> 2] = xa;
a = 26;
break;
case 26:
HEAP32[106] = Wa;
HEAP32[109] = mc;
p = da;
a = 333;
break;
case 27:
var Za = HEAP32[105];
0 == (Za | 0) ? (n = c, a = 160) : a = 28;
break;
case 28:
var xb = (Za & (-Za | 0)) - 1 | 0, ka = xb >>> 12 & 16, yb = xb >>> (ka >>> 0), Aa = yb >>> 5 & 8, zb = yb >>> (Aa >>> 0), Ba = zb >>> 2 & 4, $a = zb >>> (Ba >>> 0), nc = $a >>> 1 & 2, oc = $a >>> (nc >>> 0), ab = oc >>> 1 & 1, Ca = HEAP32[(720 + (((Aa | ka | Ba | nc | ab) + (oc >>> (ab >>> 0)) | 0) << 2) | 0) >> 2], la = Ca, x = Ca, N = (HEAP32[(Ca + 4 | 0) >> 2] & -8) - c | 0, a = 29;
break;
case 29:
var ga = HEAP32[(la + 16 | 0) >> 2];
if(0 == (ga | 0)) {
a = 30
}else {
var R = ga, a = 31
}
break;
case 30:
var Ab = HEAP32[(la + 20 | 0) >> 2];
0 == (Ab | 0) ? a = 32 : (R = Ab, a = 31);
break;
case 31:
var Bb = (HEAP32[(R + 4 | 0) >> 2] & -8) - c | 0, Cb = Bb >>> 0 < N >>> 0, Da = Cb ? Bb : N, Ea = Cb ? R : x, la = R, x = Ea, N = Da, a = 29;
break;
case 32:
var S = x, Fa = HEAP32[108], a = S >>> 0 < Fa >>> 0 ? 76 : 33;
break;
case 33:
var Db = S + c | 0, pc = Db, a = S >>> 0 < Db >>> 0 ? 34 : 76;
break;
case 34:
var C = HEAP32[(x + 24 | 0) >> 2], Ga = HEAP32[(x + 12 | 0) >> 2], a = (Ga | 0) == (x | 0) ? 40 : 35;
break;
case 35:
var bb = HEAP32[(x + 8 | 0) >> 2], a = bb >>> 0 < Fa >>> 0 ? 39 : 36;
break;
case 36:
var ha = bb + 12 | 0, a = (HEAP32[ha >> 2] | 0) == (x | 0) ? 37 : 39;
break;
case 37:
var ma = Ga + 8 | 0, a = (HEAP32[ma >> 2] | 0) == (x | 0) ? 38 : 39;
break;
case 38:
HEAP32[ha >> 2] = Ga;
HEAP32[ma >> 2] = bb;
var F = Ga, a = 47;
break;
case 39:
throw _abort(), "Reached an unreachable!";;
case 40:
var Eb = x + 20 | 0, Fb = HEAP32[Eb >> 2];
if(0 == (Fb | 0)) {
a = 41
}else {
var ia = Fb, na = Eb, a = 42
}
break;
case 41:
var Gb = x + 16 | 0, Hb = HEAP32[Gb >> 2];
0 == (Hb | 0) ? (F = 0, a = 47) : (ia = Hb, na = Gb, a = 42);
break;
case 42:
var Ib = ia + 20 | 0, Jb = HEAP32[Ib >> 2];
0 == (Jb | 0) ? a = 43 : (ia = Jb, na = Ib, a = 42);
break;
case 43:
var Ha = ia + 16 | 0, Ia = HEAP32[Ha >> 2];
0 == (Ia | 0) ? a = 44 : (ia = Ia, na = Ha, a = 42);
break;
case 44:
a = na >>> 0 < Fa >>> 0 ? 46 : 45;
break;
case 45:
HEAP32[na >> 2] = 0;
F = ia;
a = 47;
break;
case 46:
throw _abort(), "Reached an unreachable!";;
case 47:
a = 0 == (C | 0) ? 67 : 48;
break;
case 48:
var T = HEAP32[(x + 28 | 0) >> 2], Kb = 720 + (T << 2) | 0, a = (x | 0) == (HEAP32[Kb >> 2] | 0) ? 49 : 51;
break;
case 49:
HEAP32[Kb >> 2] = F;
a = 0 == (F | 0) ? 50 : 57;
break;
case 50:
HEAP32[105] &= 1 << T ^ -1;
a = 67;
break;
case 51:
a = C >>> 0 < HEAP32[108] >>> 0 ? 55 : 52;
break;
case 52:
var cb = C + 16 | 0, a = (HEAP32[cb >> 2] | 0) == (x | 0) ? 53 : 54;
break;
case 53:
HEAP32[cb >> 2] = F;
a = 56;
break;
case 54:
HEAP32[(C + 20 | 0) >> 2] = F;
a = 56;
break;
case 55:
throw _abort(), "Reached an unreachable!";;
case 56:
a = 0 == (F | 0) ? 67 : 57;
break;
case 57:
a = F >>> 0 < HEAP32[108] >>> 0 ? 66 : 58;
break;
case 58:
HEAP32[(F + 24 | 0) >> 2] = C;
var Ja = HEAP32[(x + 16 | 0) >> 2], a = 0 == (Ja | 0) ? 62 : 59;
break;
case 59:
a = Ja >>> 0 < HEAP32[108] >>> 0 ? 61 : 60;
break;
case 60:
HEAP32[(F + 16 | 0) >> 2] = Ja;
HEAP32[(Ja + 24 | 0) >> 2] = F;
a = 62;
break;
case 61:
throw _abort(), "Reached an unreachable!";;
case 62:
var Ka = HEAP32[(x + 20 | 0) >> 2], a = 0 == (Ka | 0) ? 67 : 63;
break;
case 63:
a = Ka >>> 0 < HEAP32[108] >>> 0 ? 65 : 64;
break;
case 64:
HEAP32[(F + 20 | 0) >> 2] = Ka;
HEAP32[(Ka + 24 | 0) >> 2] = F;
a = 67;
break;
case 65:
throw _abort(), "Reached an unreachable!";;
case 66:
throw _abort(), "Reached an unreachable!";;
case 67:
a = 16 > N >>> 0 ? 68 : 69;
break;
case 68:
var Lb = N + c | 0;
HEAP32[(x + 4 | 0) >> 2] = Lb | 3;
var db = S + (Lb + 4 | 0) | 0;
HEAP32[db >> 2] |= 1;
a = 77;
break;
case 69:
HEAP32[(x + 4 | 0) >> 2] = c | 3;
HEAP32[(S + (c | 4) | 0) >> 2] = N | 1;
HEAP32[(S + (N + c | 0) | 0) >> 2] = N;
var Mb = HEAP32[106], a = 0 == (Mb | 0) ? 75 : 70;
break;
case 70:
var La = HEAP32[109], Nb = Mb >>> 3, oa = Nb << 1, eb = 456 + (oa << 2) | 0, $ = HEAP32[104], Ob = 1 << Nb, a = 0 == ($ & Ob | 0) ? 71 : 72;
break;
case 71:
HEAP32[104] = $ | Ob;
var fb = eb, Pb = 456 + ((oa + 2 | 0) << 2) | 0, a = 74;
break;
case 72:
var Qb = 456 + ((oa + 2 | 0) << 2) | 0, Rb = HEAP32[Qb >> 2];
Rb >>> 0 < HEAP32[108] >>> 0 ? a = 73 : (fb = Rb, Pb = Qb, a = 74);
break;
case 73:
throw _abort(), "Reached an unreachable!";;
case 74:
HEAP32[Pb >> 2] = La;
HEAP32[(fb + 12 | 0) >> 2] = La;
HEAP32[(La + 8 | 0) >> 2] = fb;
HEAP32[(La + 12 | 0) >> 2] = eb;
a = 75;
break;
case 75:
HEAP32[106] = N;
HEAP32[109] = pc;
a = 77;
break;
case 76:
throw _abort(), "Reached an unreachable!";;
case 77:
var Sb = x + 8 | 0, Tb = Sb;
0 == (Sb | 0) ? (n = c, a = 160) : (p = Tb, a = 333);
break;
case 78:
4294967231 < b >>> 0 ? (n = -1, a = 160) : a = 79;
break;
case 79:
var Ub = b + 11 | 0, u = Ub & -8, qc = HEAP32[105];
0 == (qc | 0) ? (n = u, a = 160) : a = 80;
break;
case 80:
var Vb = -u | 0, Ma = Ub >>> 8;
if(0 == (Ma | 0)) {
var G = 0, a = 83
}else {
a = 81
}
break;
case 81:
16777215 < u >>> 0 ? (G = 31, a = 83) : a = 82;
break;
case 82:
var gb = (Ma + 1048320 | 0) >>> 16 & 8, Wb = Ma << gb, rc = (Wb + 520192 | 0) >>> 16 & 4, Xb = Wb << rc, hb = (Xb + 245760 | 0) >>> 16 & 2, Yb = (14 - (rc | gb | hb) | 0) + (Xb << hb >>> 15) | 0, G = u >>> ((Yb + 7 | 0) >>> 0) & 1 | Yb << 1, a = 83;
break;
case 83:
var Zb = HEAP32[(720 + (G << 2) | 0) >> 2];
if(0 == (Zb | 0)) {
var pa = 0, Na = Vb, ib = 0, a = 90
}else {
a = 84
}
break;
case 84:
if(31 == (G | 0)) {
var Nd = 0, a = 86
}else {
a = 85
}
break;
case 85:
Nd = 25 - (G >>> 1) | 0;
a = 86;
break;
case 86:
var Od = 0, Mc = Vb, Oa = Zb, Nc = u << Nd, Pd = 0, a = 87;
break;
case 87:
var Qd = HEAP32[(Oa + 4 | 0) >> 2] & -8, Oc = Qd - u | 0;
if(Oc >>> 0 < Mc >>> 0) {
a = 88
}else {
var Pc = Od, Qc = Mc, a = 89
}
break;
case 88:
(Qd | 0) == (u | 0) ? (pa = Oa, Na = Oc, ib = Oa, a = 90) : (Pc = Oa, Qc = Oc, a = 89);
break;
case 89:
var Rc = HEAP32[(Oa + 20 | 0) >> 2], Sc = HEAP32[(Oa + 16 + (Nc >>> 31 << 2) | 0) >> 2], Rd = 0 == (Rc | 0) | (Rc | 0) == (Sc | 0) ? Pd : Rc, Zg = Nc << 1;
0 == (Sc | 0) ? (pa = Pc, Na = Qc, ib = Rd, a = 90) : (Od = Pc, Mc = Qc, Oa = Sc, Nc = Zg, Pd = Rd, a = 87);
break;
case 90:
if(0 == (ib | 0) & 0 == (pa | 0)) {
a = 91
}else {
var Tc = ib, a = 93
}
break;
case 91:
var Sd = 2 << G, Uc = (Sd | -Sd | 0) & qc;
0 == (Uc | 0) ? (n = u, a = 160) : a = 92;
break;
case 92:
var Td = (Uc & (-Uc | 0)) - 1 | 0, Ud = Td >>> 12 & 16, Vd = Td >>> (Ud >>> 0), Wd = Vd >>> 5 & 8, Xd = Vd >>> (Wd >>> 0), Yd = Xd >>> 2 & 4, Zd = Xd >>> (Yd >>> 0), $d = Zd >>> 1 & 2, ae = Zd >>> ($d >>> 0), be = ae >>> 1 & 1, Tc = HEAP32[(720 + (((Wd | Ud | Yd | $d | be) + (ae >>> (be >>> 0)) | 0) << 2) | 0) >> 2], a = 93;
break;
case 93:
if(0 == (Tc | 0)) {
var H = Na, D = pa, a = 96
}else {
var jb = Tc, sc = Na, Vc = pa, a = 94
}
break;
case 94:
var ce = (HEAP32[(jb + 4 | 0) >> 2] & -8) - u | 0, de = ce >>> 0 < sc >>> 0, Wc = de ? ce : sc, Xc = de ? jb : Vc, ee = HEAP32[(jb + 16 | 0) >> 2];
0 == (ee | 0) ? a = 95 : (jb = ee, sc = Wc, Vc = Xc, a = 94);
break;
case 95:
var fe = HEAP32[(jb + 20 | 0) >> 2];
0 == (fe | 0) ? (H = Wc, D = Xc, a = 96) : (jb = fe, sc = Wc, Vc = Xc, a = 94);
break;
case 96:
0 == (D | 0) ? (n = u, a = 160) : a = 97;
break;
case 97:
H >>> 0 < (HEAP32[106] - u | 0) >>> 0 ? a = 98 : (n = u, a = 160);
break;
case 98:
var A = D, Yc = HEAP32[108], a = A >>> 0 < Yc >>> 0 ? 158 : 99;
break;
case 99:
var Zc = A + u | 0, ge = Zc, a = A >>> 0 < Zc >>> 0 ? 100 : 158;
break;
case 100:
var $b = HEAP32[(D + 24 | 0) >> 2], tc = HEAP32[(D + 12 | 0) >> 2], a = (tc | 0) == (D | 0) ? 106 : 101;
break;
case 101:
var $c = HEAP32[(D + 8 | 0) >> 2], a = $c >>> 0 < Yc >>> 0 ? 105 : 102;
break;
case 102:
var he = $c + 12 | 0, a = (HEAP32[he >> 2] | 0) == (D | 0) ? 103 : 105;
break;
case 103:
var ie = tc + 8 | 0, a = (HEAP32[ie >> 2] | 0) == (D | 0) ? 104 : 105;
break;
case 104:
HEAP32[he >> 2] = tc;
HEAP32[ie >> 2] = $c;
var J = tc, a = 113;
break;
case 105:
throw _abort(), "Reached an unreachable!";;
case 106:
var je = D + 20 | 0, ke = HEAP32[je >> 2];
if(0 == (ke | 0)) {
a = 107
}else {
var kb = ke, ac = je, a = 108
}
break;
case 107:
var le = D + 16 | 0, me = HEAP32[le >> 2];
0 == (me | 0) ? (J = 0, a = 113) : (kb = me, ac = le, a = 108);
break;
case 108:
var ne = kb + 20 | 0, oe = HEAP32[ne >> 2];
0 == (oe | 0) ? a = 109 : (kb = oe, ac = ne, a = 108);
break;
case 109:
var pe = kb + 16 | 0, qe = HEAP32[pe >> 2];
0 == (qe | 0) ? a = 110 : (kb = qe, ac = pe, a = 108);
break;
case 110:
a = ac >>> 0 < Yc >>> 0 ? 112 : 111;
break;
case 111:
HEAP32[ac >> 2] = 0;
J = kb;
a = 113;
break;
case 112:
throw _abort(), "Reached an unreachable!";;
case 113:
a = 0 == ($b | 0) ? 133 : 114;
break;
case 114:
var re = HEAP32[(D + 28 | 0) >> 2], se = 720 + (re << 2) | 0, a = (D | 0) == (HEAP32[se >> 2] | 0) ? 115 : 117;
break;
case 115:
HEAP32[se >> 2] = J;
a = 0 == (J | 0) ? 116 : 123;
break;
case 116:
HEAP32[105] &= 1 << re ^ -1;
a = 133;
break;
case 117:
a = $b >>> 0 < HEAP32[108] >>> 0 ? 121 : 118;
break;
case 118:
var te = $b + 16 | 0, a = (HEAP32[te >> 2] | 0) == (D | 0) ? 119 : 120;
break;
case 119:
HEAP32[te >> 2] = J;
a = 122;
break;
case 120:
HEAP32[($b + 20 | 0) >> 2] = J;
a = 122;
break;
case 121:
throw _abort(), "Reached an unreachable!";;
case 122:
a = 0 == (J | 0) ? 133 : 123;
break;
case 123:
a = J >>> 0 < HEAP32[108] >>> 0 ? 132 : 124;
break;
case 124:
HEAP32[(J + 24 | 0) >> 2] = $b;
var uc = HEAP32[(D + 16 | 0) >> 2], a = 0 == (uc | 0) ? 128 : 125;
break;
case 125:
a = uc >>> 0 < HEAP32[108] >>> 0 ? 127 : 126;
break;
case 126:
HEAP32[(J + 16 | 0) >> 2] = uc;
HEAP32[(uc + 24 | 0) >> 2] = J;
a = 128;
break;
case 127:
throw _abort(), "Reached an unreachable!";;
case 128:
var vc = HEAP32[(D + 20 | 0) >> 2], a = 0 == (vc | 0) ? 133 : 129;
break;
case 129:
a = vc >>> 0 < HEAP32[108] >>> 0 ? 131 : 130;
break;
case 130:
HEAP32[(J + 20 | 0) >> 2] = vc;
HEAP32[(vc + 24 | 0) >> 2] = J;
a = 133;
break;
case 131:
throw _abort(), "Reached an unreachable!";;
case 132:
throw _abort(), "Reached an unreachable!";;
case 133:
a = 16 > H >>> 0 ? 134 : 135;
break;
case 134:
var ue = H + u | 0;
HEAP32[(D + 4 | 0) >> 2] = ue | 3;
var ve = A + (ue + 4 | 0) | 0;
HEAP32[ve >> 2] |= 1;
a = 159;
break;
case 135:
HEAP32[(D + 4 | 0) >> 2] = u | 3;
HEAP32[(A + (u | 4) | 0) >> 2] = H | 1;
HEAP32[(A + (H + u | 0) | 0) >> 2] = H;
var we = H >>> 3, a = 256 > H >>> 0 ? 136 : 141;
break;
case 136:
var ad = we << 1, xe = 456 + (ad << 2) | 0, ye = HEAP32[104], ze = 1 << we, a = 0 == (ye & ze | 0) ? 137 : 138;
break;
case 137:
HEAP32[104] = ye | ze;
var bd = xe, Ae = 456 + ((ad + 2 | 0) << 2) | 0, a = 140;
break;
case 138:
var Be = 456 + ((ad + 2 | 0) << 2) | 0, Ce = HEAP32[Be >> 2];
Ce >>> 0 < HEAP32[108] >>> 0 ? a = 139 : (bd = Ce, Ae = Be, a = 140);
break;
case 139:
throw _abort(), "Reached an unreachable!";;
case 140:
HEAP32[Ae >> 2] = ge;
HEAP32[(bd + 12 | 0) >> 2] = ge;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = bd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = xe;
a = 159;
break;
case 141:
var qa = Zc, cd = H >>> 8;
if(0 == (cd | 0)) {
var Pa = 0, a = 144
}else {
a = 142
}
break;
case 142:
16777215 < H >>> 0 ? (Pa = 31, a = 144) : a = 143;
break;
case 143:
var De = (cd + 1048320 | 0) >>> 16 & 8, Ee = cd << De, Fe = (Ee + 520192 | 0) >>> 16 & 4, Ge = Ee << Fe, He = (Ge + 245760 | 0) >>> 16 & 2, Ie = (14 - (Fe | De | He) | 0) + (Ge << He >>> 15) | 0, Pa = H >>> ((Ie + 7 | 0) >>> 0) & 1 | Ie << 1, a = 144;
break;
case 144:
var dd = 720 + (Pa << 2) | 0;
HEAP32[(A + (u + 28 | 0) | 0) >> 2] = Pa;
var $g = A + (u + 16 | 0) | 0;
HEAP32[(A + (u + 20 | 0) | 0) >> 2] = 0;
HEAP32[$g >> 2] = 0;
var Je = HEAP32[105], Ke = 1 << Pa, a = 0 == (Je & Ke | 0) ? 145 : 146;
break;
case 145:
HEAP32[105] = Je | Ke;
HEAP32[dd >> 2] = qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = dd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = qa;
a = 159;
break;
case 146:
var ah = HEAP32[dd >> 2];
if(31 == (Pa | 0)) {
var Le = 0, a = 148
}else {
a = 147
}
break;
case 147:
Le = 25 - (Pa >>> 1) | 0;
a = 148;
break;
case 148:
var ed = H << Le, Qa = ah, a = 149;
break;
case 149:
a = (HEAP32[(Qa + 4 | 0) >> 2] & -8 | 0) == (H | 0) ? 154 : 150;
break;
case 150:
var fd = Qa + 16 + (ed >>> 31 << 2) | 0, Me = HEAP32[fd >> 2], bh = ed << 1;
0 == (Me | 0) ? a = 151 : (ed = bh, Qa = Me, a = 149);
break;
case 151:
a = fd >>> 0 < HEAP32[108] >>> 0 ? 153 : 152;
break;
case 152:
HEAP32[fd >> 2] = qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = Qa;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = qa;
a = 159;
break;
case 153:
throw _abort(), "Reached an unreachable!";;
case 154:
var Ne = Qa + 8 | 0, gd = HEAP32[Ne >> 2], Oe = HEAP32[108], a = Qa >>> 0 < Oe >>> 0 ? 157 : 155;
break;
case 155:
a = gd >>> 0 < Oe >>> 0 ? 157 : 156;
break;
case 156:
HEAP32[(gd + 12 | 0) >> 2] = qa;
HEAP32[Ne >> 2] = qa;
HEAP32[(A + (u + 8 | 0) | 0) >> 2] = gd;
HEAP32[(A + (u + 12 | 0) | 0) >> 2] = Qa;
HEAP32[(A + (u + 24 | 0) | 0) >> 2] = 0;
a = 159;
break;
case 157:
throw _abort(), "Reached an unreachable!";;
case 158:
throw _abort(), "Reached an unreachable!";;
case 159:
var Pe = D + 8 | 0, ch = Pe;
0 == (Pe | 0) ? (n = u, a = 160) : (p = ch, a = 333);
break;
case 160:
var bc = HEAP32[106], a = n >>> 0 > bc >>> 0 ? 165 : 161;
break;
case 161:
var wc = bc - n | 0, cc = HEAP32[109], a = 15 < wc >>> 0 ? 162 : 163;
break;
case 162:
var hd = cc;
HEAP32[109] = hd + n | 0;
HEAP32[106] = wc;
HEAP32[(hd + (n + 4 | 0) | 0) >> 2] = wc | 1;
HEAP32[(hd + bc | 0) >> 2] = wc;
HEAP32[(cc + 4 | 0) >> 2] = n | 3;
a = 164;
break;
case 163:
HEAP32[106] = 0;
HEAP32[109] = 0;
HEAP32[(cc + 4 | 0) >> 2] = bc | 3;
var Qe = cc + (bc + 4 | 0) | 0;
HEAP32[Qe >> 2] |= 1;
a = 164;
break;
case 164:
p = cc + 8 | 0;
a = 333;
break;
case 165:
var Re = HEAP32[107], a = n >>> 0 < Re >>> 0 ? 166 : 167;
break;
case 166:
var Se = Re - n | 0;
HEAP32[107] = Se;
var id = HEAP32[110], Te = id;
HEAP32[110] = Te + n | 0;
HEAP32[(Te + (n + 4 | 0) | 0) >> 2] = Se | 1;
HEAP32[(id + 4 | 0) >> 2] = n | 3;
p = id + 8 | 0;
a = 333;
break;
case 167:
a = 0 == (HEAP32[2] | 0) ? 168 : 169;
break;
case 168:
_init_mparams();
a = 169;
break;
case 169:
var dh = n + 48 | 0, Ue = HEAP32[4], Ve = n + 47 | 0, We = Ue + Ve | 0, Xe = -Ue | 0, lb = We & Xe;
lb >>> 0 > n >>> 0 ? a = 170 : (p = 0, a = 333);
break;
case 170:
var Ye = HEAP32[214], a = 0 == (Ye | 0) ? 172 : 171;
break;
case 171:
var Ze = HEAP32[212], $e = Ze + lb | 0;
$e >>> 0 <= Ze >>> 0 | $e >>> 0 > Ye >>> 0 ? (p = 0, a = 333) : a = 172;
break;
case 172:
if(0 == (HEAP32[215] & 4 | 0)) {
a = 173
}else {
var af = 0, a = 196
}
break;
case 173:
var bf = HEAP32[110], a = 0 == (bf | 0) ? 179 : 174;
break;
case 174:
var cf = bf, dc = 864, a = 175;
break;
case 175:
var df = dc | 0, ef = HEAP32[df >> 2], a = ef >>> 0 > cf >>> 0 ? 177 : 176;
break;
case 176:
var ff = dc + 4 | 0, a = (ef + HEAP32[ff >> 2] | 0) >>> 0 > cf >>> 0 ? 178 : 177;
break;
case 177:
var gf = HEAP32[(dc + 8 | 0) >> 2];
0 == (gf | 0) ? a = 179 : (dc = gf, a = 175);
break;
case 178:
a = 0 == (dc | 0) ? 179 : 186;
break;
case 179:
var xc = _sbrk(0);
if(-1 == (xc | 0)) {
var mb = 0, a = 195
}else {
a = 180
}
break;
case 180:
var jd = xc, hf = HEAP32[3], jf = hf - 1 | 0;
if(0 == (jf & jd | 0)) {
var Ra = lb, a = 182
}else {
a = 181
}
break;
case 181:
Ra = (lb - jd | 0) + ((jf + jd | 0) & (-hf | 0)) | 0;
a = 182;
break;
case 182:
var kf = HEAP32[212], lf = kf + Ra | 0;
Ra >>> 0 > n >>> 0 & 2147483647 > Ra >>> 0 ? a = 183 : (mb = 0, a = 195);
break;
case 183:
var mf = HEAP32[214], a = 0 == (mf | 0) ? 185 : 184;
break;
case 184:
lf >>> 0 <= kf >>> 0 | lf >>> 0 > mf >>> 0 ? (mb = 0, a = 195) : a = 185;
break;
case 185:
var nf = _sbrk(Ra), of = (nf | 0) == (xc | 0), kd = of ? xc : -1, yc = of ? Ra : 0, zc = nf, ra = Ra, a = 188;
break;
case 186:
var Ac = (We - HEAP32[107] | 0) & Xe;
2147483647 > Ac >>> 0 ? a = 187 : (mb = 0, a = 195);
break;
case 187:
var ld = _sbrk(Ac), pf = (ld | 0) == (HEAP32[df >> 2] + HEAP32[ff >> 2] | 0), eh = pf ? Ac : 0, kd = pf ? ld : -1, yc = eh, zc = ld, ra = Ac, a = 188;
break;
case 188:
var fh = -ra | 0;
if(-1 == (kd | 0)) {
a = 189
}else {
var y = yc, r = kd, a = 199
}
break;
case 189:
if(-1 != (zc | 0) & 2147483647 > ra >>> 0 & ra >>> 0 < dh >>> 0) {
a = 190
}else {
var md = ra, a = 194
}
break;
case 190:
var qf = HEAP32[4], nd = ((Ve - ra | 0) + qf | 0) & (-qf | 0);
2147483647 > nd >>> 0 ? a = 191 : (md = ra, a = 194);
break;
case 191:
a = -1 == (_sbrk(nd) | 0) ? 193 : 192;
break;
case 192:
md = nd + ra | 0;
a = 194;
break;
case 193:
_sbrk(fh);
mb = yc;
a = 195;
break;
case 194:
-1 == (zc | 0) ? (mb = yc, a = 195) : (y = md, r = zc, a = 199);
break;
case 195:
HEAP32[215] |= 4;
af = mb;
a = 196;
break;
case 196:
a = 2147483647 > lb >>> 0 ? 197 : 332;
break;
case 197:
var Bc = _sbrk(lb), od = _sbrk(0), a = -1 != (od | 0) & -1 != (Bc | 0) & Bc >>> 0 < od >>> 0 ? 198 : 332;
break;
case 198:
var rf = od - Bc | 0, sf = rf >>> 0 > (n + 40 | 0) >>> 0, gh = sf ? rf : af, tf = sf ? Bc : -1;
-1 == (tf | 0) ? a = 332 : (y = gh, r = tf, a = 199);
break;
case 199:
var pd = HEAP32[212] + y | 0;
HEAP32[212] = pd;
a = pd >>> 0 > HEAP32[213] >>> 0 ? 200 : 201;
break;
case 200:
HEAP32[213] = pd;
a = 201;
break;
case 201:
var w = HEAP32[110];
if(0 == (w | 0)) {
a = 202
}else {
var ec = 864, a = 207
}
break;
case 202:
var uf = HEAP32[108], a = 0 == (uf | 0) | r >>> 0 < uf >>> 0 ? 203 : 204;
break;
case 203:
HEAP32[108] = r;
a = 204;
break;
case 204:
HEAP32[216] = r;
HEAP32[217] = y;
HEAP32[219] = 0;
HEAP32[113] = HEAP32[2];
HEAP32[112] = -1;
var qd = 0, a = 205;
break;
case 205:
var rd = qd << 1, vf = 456 + (rd << 2) | 0;
HEAP32[(456 + ((rd + 3 | 0) << 2) | 0) >> 2] = vf;
HEAP32[(456 + ((rd + 2 | 0) << 2) | 0) >> 2] = vf;
var wf = qd + 1 | 0;
32 > wf >>> 0 ? (qd = wf, a = 205) : a = 206;
break;
case 206:
_init_top(r, y - 40 | 0);
a = 330;
break;
case 207:
var xf = HEAP32[(ec | 0) >> 2], yf = ec + 4 | 0, zf = HEAP32[yf >> 2], a = (r | 0) == (xf + zf | 0) ? 209 : 208;
break;
case 208:
var Af = HEAP32[(ec + 8 | 0) >> 2];
0 == (Af | 0) ? a = 212 : (ec = Af, a = 207);
break;
case 209:
a = 0 == (HEAP32[(ec + 12 | 0) >> 2] & 8 | 0) ? 210 : 212;
break;
case 210:
var Bf = w, a = Bf >>> 0 >= xf >>> 0 & Bf >>> 0 < r >>> 0 ? 211 : 212;
break;
case 211:
HEAP32[yf >> 2] = zf + y | 0;
_init_top(w, HEAP32[107] + y | 0);
a = 330;
break;
case 212:
a = r >>> 0 < HEAP32[108] >>> 0 ? 213 : 214;
break;
case 213:
HEAP32[108] = r;
a = 214;
break;
case 214:
var hh = r + y | 0, fc = 864, a = 215;
break;
case 215:
var Cf = fc | 0, a = (HEAP32[Cf >> 2] | 0) == (hh | 0) ? 217 : 216;
break;
case 216:
var Df = HEAP32[(fc + 8 | 0) >> 2];
0 == (Df | 0) ? a = 298 : (fc = Df, a = 215);
break;
case 217:
a = 0 == (HEAP32[(fc + 12 | 0) >> 2] & 8 | 0) ? 218 : 298;
break;
case 218:
HEAP32[Cf >> 2] = r;
var Ef = fc + 4 | 0;
HEAP32[Ef >> 2] = HEAP32[Ef >> 2] + y | 0;
var Ff = r + 8 | 0;
if(0 == (Ff & 7 | 0)) {
var gc = 0, a = 220
}else {
a = 219
}
break;
case 219:
gc = (-Ff | 0) & 7;
a = 220;
break;
case 220:
var ih = r + gc | 0, Gf = r + (y + 8 | 0) | 0;
if(0 == (Gf & 7 | 0)) {
var O = 0, a = 222
}else {
a = 221
}
break;
case 221:
O = (-Gf | 0) & 7;
a = 222;
break;
case 222:
var sd = r + (O + y | 0) | 0, hc = sd, B = gc + n | 0, Hf = r + B | 0, Cc = Hf, Dc = (sd - ih | 0) - n | 0;
HEAP32[(r + (gc + 4 | 0) | 0) >> 2] = n | 3;
a = (hc | 0) == (HEAP32[110] | 0) ? 223 : 224;
break;
case 223:
var If = HEAP32[107] + Dc | 0;
HEAP32[107] = If;
HEAP32[110] = Cc;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = If | 1;
a = 297;
break;
case 224:
a = (hc | 0) == (HEAP32[109] | 0) ? 225 : 226;
break;
case 225:
var Ec = HEAP32[106] + Dc | 0;
HEAP32[106] = Ec;
HEAP32[109] = Cc;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = Ec | 1;
HEAP32[(r + (Ec + B | 0) | 0) >> 2] = Ec;
a = 297;
break;
case 226:
var td = y + 4 | 0, Fc = HEAP32[(r + (O + td | 0) | 0) >> 2];
if(1 == (Fc & 3 | 0)) {
a = 227
}else {
var Jf = hc, U = Dc, a = 274
}
break;
case 227:
var Kf = Fc & -8, Lf = Fc >>> 3, a = 256 > Fc >>> 0 ? 228 : 240;
break;
case 228:
var nb = HEAP32[(r + ((O | 8) + y | 0) | 0) >> 2], ob = HEAP32[(r + ((y + 12 | 0) + O | 0) | 0) >> 2], Mf = 456 + (Lf << 1 << 2) | 0, a = (nb | 0) == (Mf | 0) ? 231 : 229;
break;
case 229:
a = nb >>> 0 < HEAP32[108] >>> 0 ? 239 : 230;
break;
case 230:
a = (HEAP32[(nb + 12 | 0) >> 2] | 0) == (hc | 0) ? 231 : 239;
break;
case 231:
a = (ob | 0) == (nb | 0) ? 232 : 233;
break;
case 232:
HEAP32[104] &= 1 << Lf ^ -1;
a = 273;
break;
case 233:
a = (ob | 0) == (Mf | 0) ? 234 : 235;
break;
case 234:
var Nf = ob + 8 | 0, a = 237;
break;
case 235:
a = ob >>> 0 < HEAP32[108] >>> 0 ? 238 : 236;
break;
case 236:
var Of = ob + 8 | 0;
(HEAP32[Of >> 2] | 0) == (hc | 0) ? (Nf = Of, a = 237) : a = 238;
break;
case 237:
HEAP32[(nb + 12 | 0) >> 2] = ob;
HEAP32[Nf >> 2] = nb;
a = 273;
break;
case 238:
throw _abort(), "Reached an unreachable!";;
case 239:
throw _abort(), "Reached an unreachable!";;
case 240:
var ic = sd, jc = HEAP32[(r + ((O | 24) + y | 0) | 0) >> 2], Gc = HEAP32[(r + ((y + 12 | 0) + O | 0) | 0) >> 2], a = (Gc | 0) == (ic | 0) ? 246 : 241;
break;
case 241:
var ud = HEAP32[(r + ((O | 8) + y | 0) | 0) >> 2], a = ud >>> 0 < HEAP32[108] >>> 0 ? 245 : 242;
break;
case 242:
var Pf = ud + 12 | 0, a = (HEAP32[Pf >> 2] | 0) == (ic | 0) ? 243 : 245;
break;
case 243:
var Qf = Gc + 8 | 0, a = (HEAP32[Qf >> 2] | 0) == (ic | 0) ? 244 : 245;
break;
case 244:
HEAP32[Pf >> 2] = Gc;
HEAP32[Qf >> 2] = ud;
var K = Gc, a = 253;
break;
case 245:
throw _abort(), "Reached an unreachable!";;
case 246:
var Rf = O | 16, Sf = r + (Rf + td | 0) | 0, Tf = HEAP32[Sf >> 2];
if(0 == (Tf | 0)) {
a = 247
}else {
var pb = Tf, kc = Sf, a = 248
}
break;
case 247:
var Uf = r + (Rf + y | 0) | 0, Vf = HEAP32[Uf >> 2];
0 == (Vf | 0) ? (K = 0, a = 253) : (pb = Vf, kc = Uf, a = 248);
break;
case 248:
var Wf = pb + 20 | 0, Xf = HEAP32[Wf >> 2];
0 == (Xf | 0) ? a = 249 : (pb = Xf, kc = Wf, a = 248);
break;
case 249:
var Yf = pb + 16 | 0, Zf = HEAP32[Yf >> 2];
0 == (Zf | 0) ? a = 250 : (pb = Zf, kc = Yf, a = 248);
break;
case 250:
a = kc >>> 0 < HEAP32[108] >>> 0 ? 252 : 251;
break;
case 251:
HEAP32[kc >> 2] = 0;
K = pb;
a = 253;
break;
case 252:
throw _abort(), "Reached an unreachable!";;
case 253:
a = 0 == (jc | 0) ? 273 : 254;
break;
case 254:
var $f = HEAP32[(r + ((y + 28 | 0) + O | 0) | 0) >> 2], ag = 720 + ($f << 2) | 0, a = (ic | 0) == (HEAP32[ag >> 2] | 0) ? 255 : 257;
break;
case 255:
HEAP32[ag >> 2] = K;
a = 0 == (K | 0) ? 256 : 263;
break;
case 256:
HEAP32[105] &= 1 << $f ^ -1;
a = 273;
break;
case 257:
a = jc >>> 0 < HEAP32[108] >>> 0 ? 261 : 258;
break;
case 258:
var bg = jc + 16 | 0, a = (HEAP32[bg >> 2] | 0) == (ic | 0) ? 259 : 260;
break;
case 259:
HEAP32[bg >> 2] = K;
a = 262;
break;
case 260:
HEAP32[(jc + 20 | 0) >> 2] = K;
a = 262;
break;
case 261:
throw _abort(), "Reached an unreachable!";;
case 262:
a = 0 == (K | 0) ? 273 : 263;
break;
case 263:
a = K >>> 0 < HEAP32[108] >>> 0 ? 272 : 264;
break;
case 264:
HEAP32[(K + 24 | 0) >> 2] = jc;
var cg = O | 16, Hc = HEAP32[(r + (cg + y | 0) | 0) >> 2], a = 0 == (Hc | 0) ? 268 : 265;
break;
case 265:
a = Hc >>> 0 < HEAP32[108] >>> 0 ? 267 : 266;
break;
case 266:
HEAP32[(K + 16 | 0) >> 2] = Hc;
HEAP32[(Hc + 24 | 0) >> 2] = K;
a = 268;
break;
case 267:
throw _abort(), "Reached an unreachable!";;
case 268:
var Ic = HEAP32[(r + (cg + td | 0) | 0) >> 2], a = 0 == (Ic | 0) ? 273 : 269;
break;
case 269:
a = Ic >>> 0 < HEAP32[108] >>> 0 ? 271 : 270;
break;
case 270:
HEAP32[(K + 20 | 0) >> 2] = Ic;
HEAP32[(Ic + 24 | 0) >> 2] = K;
a = 273;
break;
case 271:
throw _abort(), "Reached an unreachable!";;
case 272:
throw _abort(), "Reached an unreachable!";;
case 273:
var jh = Kf + Dc | 0, Jf = r + ((Kf | O) + y | 0) | 0, U = jh, a = 274;
break;
case 274:
var dg = Jf + 4 | 0;
HEAP32[dg >> 2] &= -2;
HEAP32[(r + (B + 4 | 0) | 0) >> 2] = U | 1;
HEAP32[(r + (U + B | 0) | 0) >> 2] = U;
var eg = U >>> 3, a = 256 > U >>> 0 ? 275 : 280;
break;
case 275:
var vd = eg << 1, fg = 456 + (vd << 2) | 0, gg = HEAP32[104], hg = 1 << eg, a = 0 == (gg & hg | 0) ? 276 : 277;
break;
case 276:
HEAP32[104] = gg | hg;
var wd = fg, ig = 456 + ((vd + 2 | 0) << 2) | 0, a = 279;
break;
case 277:
var jg = 456 + ((vd + 2 | 0) << 2) | 0, kg = HEAP32[jg >> 2];
kg >>> 0 < HEAP32[108] >>> 0 ? a = 278 : (wd = kg, ig = jg, a = 279);
break;
case 278:
throw _abort(), "Reached an unreachable!";;
case 279:
HEAP32[ig >> 2] = Cc;
HEAP32[(wd + 12 | 0) >> 2] = Cc;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = wd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = fg;
a = 297;
break;
case 280:
var sa = Hf, xd = U >>> 8;
if(0 == (xd | 0)) {
var Sa = 0, a = 283
}else {
a = 281
}
break;
case 281:
16777215 < U >>> 0 ? (Sa = 31, a = 283) : a = 282;
break;
case 282:
var lg = (xd + 1048320 | 0) >>> 16 & 8, mg = xd << lg, ng = (mg + 520192 | 0) >>> 16 & 4, og = mg << ng, pg = (og + 245760 | 0) >>> 16 & 2, qg = (14 - (ng | lg | pg) | 0) + (og << pg >>> 15) | 0, Sa = U >>> ((qg + 7 | 0) >>> 0) & 1 | qg << 1, a = 283;
break;
case 283:
var yd = 720 + (Sa << 2) | 0;
HEAP32[(r + (B + 28 | 0) | 0) >> 2] = Sa;
var kh = r + (B + 16 | 0) | 0;
HEAP32[(r + (B + 20 | 0) | 0) >> 2] = 0;
HEAP32[kh >> 2] = 0;
var rg = HEAP32[105], sg = 1 << Sa, a = 0 == (rg & sg | 0) ? 284 : 285;
break;
case 284:
HEAP32[105] = rg | sg;
HEAP32[yd >> 2] = sa;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = yd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = sa;
a = 297;
break;
case 285:
var lh = HEAP32[yd >> 2];
if(31 == (Sa | 0)) {
var tg = 0, a = 287
}else {
a = 286
}
break;
case 286:
tg = 25 - (Sa >>> 1) | 0;
a = 287;
break;
case 287:
var zd = U << tg, Ta = lh, a = 288;
break;
case 288:
a = (HEAP32[(Ta + 4 | 0) >> 2] & -8 | 0) == (U | 0) ? 293 : 289;
break;
case 289:
var Ad = Ta + 16 + (zd >>> 31 << 2) | 0, ug = HEAP32[Ad >> 2], mh = zd << 1;
0 == (ug | 0) ? a = 290 : (zd = mh, Ta = ug, a = 288);
break;
case 290:
a = Ad >>> 0 < HEAP32[108] >>> 0 ? 292 : 291;
break;
case 291:
HEAP32[Ad >> 2] = sa;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = Ta;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = sa;
a = 297;
break;
case 292:
throw _abort(), "Reached an unreachable!";;
case 293:
var vg = Ta + 8 | 0, Bd = HEAP32[vg >> 2], wg = HEAP32[108], a = Ta >>> 0 < wg >>> 0 ? 296 : 294;
break;
case 294:
a = Bd >>> 0 < wg >>> 0 ? 296 : 295;
break;
case 295:
HEAP32[(Bd + 12 | 0) >> 2] = sa;
HEAP32[vg >> 2] = sa;
HEAP32[(r + (B + 8 | 0) | 0) >> 2] = Bd;
HEAP32[(r + (B + 12 | 0) | 0) >> 2] = Ta;
HEAP32[(r + (B + 24 | 0) | 0) >> 2] = 0;
a = 297;
break;
case 296:
throw _abort(), "Reached an unreachable!";;
case 297:
p = r + (gc | 8) | 0;
a = 333;
break;
case 298:
var qb = w, Jc = 864, a = 299;
break;
case 299:
var Kc = HEAP32[(Jc | 0) >> 2], a = Kc >>> 0 > qb >>> 0 ? 301 : 300;
break;
case 300:
var Cd = HEAP32[(Jc + 4 | 0) >> 2], Dd = Kc + Cd | 0, a = Dd >>> 0 > qb >>> 0 ? 302 : 301;
break;
case 301:
Jc = HEAP32[(Jc + 8 | 0) >> 2];
a = 299;
break;
case 302:
var nh = Cd - 47 | 0, xg = Kc + (Cd - 39 | 0) | 0;
if(0 == (xg & 7 | 0)) {
var yg = 0, a = 304
}else {
a = 303
}
break;
case 303:
yg = (-xg | 0) & 7;
a = 304;
break;
case 304:
var zg = Kc + (nh + yg | 0) | 0, rb = zg >>> 0 < (w + 16 | 0) >>> 0 ? qb : zg, lc = rb + 8 | 0, oh = lc;
_init_top(r, y - 40 | 0);
HEAP32[(rb + 4 | 0) >> 2] = 27;
assert(!0);
HEAP32[lc >> 2] = HEAP32[216];
HEAP32[lc + 4 >> 2] = HEAP32[217];
HEAP32[lc + 8 >> 2] = HEAP32[218];
HEAP32[lc + 12 >> 2] = HEAP32[219];
HEAP32[216] = r;
HEAP32[217] = y;
HEAP32[219] = 0;
HEAP32[218] = oh;
var Ag = rb + 28 | 0;
HEAP32[Ag >> 2] = 7;
if((rb + 32 | 0) >>> 0 < Dd >>> 0) {
var Ed = Ag, a = 305
}else {
a = 306
}
break;
case 305:
var Bg = Ed + 4 | 0;
HEAP32[Bg >> 2] = 7;
(Ed + 8 | 0) >>> 0 < Dd >>> 0 ? (Ed = Bg, a = 305) : a = 306;
break;
case 306:
a = (rb | 0) == (qb | 0) ? 330 : 307;
break;
case 307:
var V = rb - w | 0, ph = qb + V | 0, Cg = qb + (V + 4 | 0) | 0;
HEAP32[Cg >> 2] &= -2;
HEAP32[(w + 4 | 0) >> 2] = V | 1;
HEAP32[ph >> 2] = V;
var Dg = V >>> 3, a = 256 > V >>> 0 ? 308 : 313;
break;
case 308:
var Fd = Dg << 1, Eg = 456 + (Fd << 2) | 0, Fg = HEAP32[104], Gg = 1 << Dg, a = 0 == (Fg & Gg | 0) ? 309 : 310;
break;
case 309:
HEAP32[104] = Fg | Gg;
var Gd = Eg, Hg = 456 + ((Fd + 2 | 0) << 2) | 0, a = 312;
break;
case 310:
var Ig = 456 + ((Fd + 2 | 0) << 2) | 0, Jg = HEAP32[Ig >> 2];
Jg >>> 0 < HEAP32[108] >>> 0 ? a = 311 : (Gd = Jg, Hg = Ig, a = 312);
break;
case 311:
throw _abort(), "Reached an unreachable!";;
case 312:
HEAP32[Hg >> 2] = w;
HEAP32[(Gd + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = Gd;
HEAP32[(w + 12 | 0) >> 2] = Eg;
a = 330;
break;
case 313:
var Lc = w, Hd = V >>> 8;
if(0 == (Hd | 0)) {
var Ua = 0, a = 316
}else {
a = 314
}
break;
case 314:
16777215 < V >>> 0 ? (Ua = 31, a = 316) : a = 315;
break;
case 315:
var Kg = (Hd + 1048320 | 0) >>> 16 & 8, Lg = Hd << Kg, Mg = (Lg + 520192 | 0) >>> 16 & 4, Ng = Lg << Mg, Og = (Ng + 245760 | 0) >>> 16 & 2, Pg = (14 - (Mg | Kg | Og) | 0) + (Ng << Og >>> 15) | 0, Ua = V >>> ((Pg + 7 | 0) >>> 0) & 1 | Pg << 1, a = 316;
break;
case 316:
var Id = 720 + (Ua << 2) | 0;
HEAP32[(w + 28 | 0) >> 2] = Ua;
HEAP32[(w + 20 | 0) >> 2] = 0;
HEAP32[(w + 16 | 0) >> 2] = 0;
var Qg = HEAP32[105], Rg = 1 << Ua, a = 0 == (Qg & Rg | 0) ? 317 : 318;
break;
case 317:
HEAP32[105] = Qg | Rg;
HEAP32[Id >> 2] = Lc;
HEAP32[(w + 24 | 0) >> 2] = Id;
HEAP32[(w + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = w;
a = 330;
break;
case 318:
var qh = HEAP32[Id >> 2];
if(31 == (Ua | 0)) {
var Sg = 0, a = 320
}else {
a = 319
}
break;
case 319:
Sg = 25 - (Ua >>> 1) | 0;
a = 320;
break;
case 320:
var Jd = V << Sg, Va = qh, a = 321;
break;
case 321:
a = (HEAP32[(Va + 4 | 0) >> 2] & -8 | 0) == (V | 0) ? 326 : 322;
break;
case 322:
var Kd = Va + 16 + (Jd >>> 31 << 2) | 0, Tg = HEAP32[Kd >> 2], rh = Jd << 1;
0 == (Tg | 0) ? a = 323 : (Jd = rh, Va = Tg, a = 321);
break;
case 323:
a = Kd >>> 0 < HEAP32[108] >>> 0 ? 325 : 324;
break;
case 324:
HEAP32[Kd >> 2] = Lc;
HEAP32[(w + 24 | 0) >> 2] = Va;
HEAP32[(w + 12 | 0) >> 2] = w;
HEAP32[(w + 8 | 0) >> 2] = w;
a = 330;
break;
case 325:
throw _abort(), "Reached an unreachable!";;
case 326:
var Ug = Va + 8 | 0, Ld = HEAP32[Ug >> 2], Vg = HEAP32[108], a = Va >>> 0 < Vg >>> 0 ? 329 : 327;
break;
case 327:
a = Ld >>> 0 < Vg >>> 0 ? 329 : 328;
break;
case 328:
HEAP32[(Ld + 12 | 0) >> 2] = Lc;
HEAP32[Ug >> 2] = Lc;
HEAP32[(w + 8 | 0) >> 2] = Ld;
HEAP32[(w + 12 | 0) >> 2] = Va;
HEAP32[(w + 24 | 0) >> 2] = 0;
a = 330;
break;
case 329:
throw _abort(), "Reached an unreachable!";;
case 330:
var Wg = HEAP32[107], a = Wg >>> 0 > n >>> 0 ? 331 : 332;
break;
case 331:
var Xg = Wg - n | 0;
HEAP32[107] = Xg;
var Md = HEAP32[110], Yg = Md;
HEAP32[110] = Yg + n | 0;
HEAP32[(Yg + (n + 4 | 0) | 0) >> 2] = Xg | 1;
HEAP32[(Md + 4 | 0) >> 2] = n | 3;
p = Md + 8 | 0;
a = 333;
break;
case 332:
var sh = ___errno_location();
HEAP32[sh >> 2] = 12;
p = 0;
a = 333;
break;
case 333:
return p;
default:
assert(0, "bad label: " + a)
}
}
}
function __ZdlPv(b) {
for(var a = 0, a = 1;;) {
switch(a) {
case 1:
a = 0 == (b | 0) ? 156 : 2;
break;
case 2:
var c = b - 8 | 0, d = c, f = HEAP32[108], a = c >>> 0 < f >>> 0 ? 155 : 3;
break;
case 3:
var e = HEAP32[(b - 4 | 0) >> 2], g = e & 3, a = 1 == (g | 0) ? 155 : 4;
break;
case 4:
var h = e & -8, i = b + (h - 8 | 0) | 0, j = i;
if(0 == (e & 1 | 0)) {
a = 5
}else {
var k = d, l = h, a = 56
}
break;
case 5:
var s = HEAP32[c >> 2], a = 0 == (g | 0) ? 156 : 6;
break;
case 6:
var t = -8 - s | 0, v = b + t | 0, q = v, p = s + h | 0, a = v >>> 0 < f >>> 0 ? 155 : 7;
break;
case 7:
a = (q | 0) == (HEAP32[109] | 0) ? 54 : 8;
break;
case 8:
var n = s >>> 3, a = 256 > s >>> 0 ? 9 : 21;
break;
case 9:
var m = HEAP32[(b + (t + 8 | 0) | 0) >> 2], z = HEAP32[(b + (t + 12 | 0) | 0) >> 2], W = 456 + (n << 1 << 2) | 0, a = (m | 0) == (W | 0) ? 12 : 10;
break;
case 10:
a = m >>> 0 < f >>> 0 ? 20 : 11;
break;
case 11:
a = (HEAP32[(m + 12 | 0) >> 2] | 0) == (q | 0) ? 12 : 20;
break;
case 12:
a = (z | 0) == (m | 0) ? 13 : 14;
break;
case 13:
HEAP32[104] &= 1 << n ^ -1;
k = q;
l = p;
a = 56;
break;
case 14:
a = (z | 0) == (W | 0) ? 15 : 16;
break;
case 15:
var aa = z + 8 | 0, a = 18;
break;
case 16:
a = z >>> 0 < f >>> 0 ? 19 : 17;
break;
case 17:
var X = z + 8 | 0;
(HEAP32[X >> 2] | 0) == (q | 0) ? (aa = X, a = 18) : a = 19;
break;
case 18:
HEAP32[(m + 12 | 0) >> 2] = z;
HEAP32[aa >> 2] = m;
k = q;
l = p;
a = 56;
break;
case 19:
throw _abort(), "Reached an unreachable!";;
case 20:
throw _abort(), "Reached an unreachable!";;
case 21:
var I = v, L = HEAP32[(b + (t + 24 | 0) | 0) >> 2], P = HEAP32[(b + (t + 12 | 0) | 0) >> 2], a = (P | 0) == (I | 0) ? 27 : 22;
break;
case 22:
var Y = HEAP32[(b + (t + 8 | 0) | 0) >> 2], a = Y >>> 0 < f >>> 0 ? 26 : 23;
break;
case 23:
var ja = Y + 12 | 0, a = (HEAP32[ja >> 2] | 0) == (I | 0) ? 24 : 26;
break;
case 24:
var ba = P + 8 | 0, a = (HEAP32[ba >> 2] | 0) == (I | 0) ? 25 : 26;
break;
case 25:
HEAP32[ja >> 2] = P;
HEAP32[ba >> 2] = Y;
var E = P, a = 34;
break;
case 26:
throw _abort(), "Reached an unreachable!";;
case 27:
var Z = b + (t + 20 | 0) | 0, ta = HEAP32[Z >> 2];
if(0 == (ta | 0)) {
a = 28
}else {
var Q = ta, M = Z, a = 29
}
break;
case 28:
var ca = b + (t + 16 | 0) | 0, da = HEAP32[ca >> 2];
0 == (da | 0) ? (E = 0, a = 34) : (Q = da, M = ca, a = 29);
break;
case 29:
var ua = Q + 20 | 0, sb = HEAP32[ua >> 2];
0 == (sb | 0) ? a = 30 : (Q = sb, M = ua, a = 29);
break;
case 30:
var tb = Q + 16 | 0, Wa = HEAP32[tb >> 2];
0 == (Wa | 0) ? a = 31 : (Q = Wa, M = tb, a = 29);
break;
case 31:
a = M >>> 0 < f >>> 0 ? 33 : 32;
break;
case 32:
HEAP32[M >> 2] = 0;
E = Q;
a = 34;
break;
case 33:
throw _abort(), "Reached an unreachable!";;
case 34:
0 == (L | 0) ? (k = q, l = p, a = 56) : a = 35;
break;
case 35:
var Xa = HEAP32[(b + (t + 28 | 0) | 0) >> 2], mc = 720 + (Xa << 2) | 0, a = (I | 0) == (HEAP32[mc >> 2] | 0) ? 36 : 38;
break;
case 36:
HEAP32[mc >> 2] = E;
a = 0 == (E | 0) ? 37 : 44;
break;
case 37:
HEAP32[105] &= 1 << Xa ^ -1;
k = q;
l = p;
a = 56;
break;
case 38:
a = L >>> 0 < HEAP32[108] >>> 0 ? 42 : 39;
break;
case 39:
var ub = L + 16 | 0, a = (HEAP32[ub >> 2] | 0) == (I | 0) ? 40 : 41;
break;
case 40:
HEAP32[ub >> 2] = E;
a = 43;
break;
case 41:
HEAP32[(L + 20 | 0) >> 2] = E;
a = 43;
break;
case 42:
throw _abort(), "Reached an unreachable!";;
case 43:
0 == (E | 0) ? (k = q, l = p, a = 56) : a = 44;
break;
case 44:
a = E >>> 0 < HEAP32[108] >>> 0 ? 53 : 45;
break;
case 45:
HEAP32[(E + 24 | 0) >> 2] = L;
var ea = HEAP32[(b + (t + 16 | 0) | 0) >> 2], a = 0 == (ea | 0) ? 49 : 46;
break;
case 46:
a = ea >>> 0 < HEAP32[108] >>> 0 ? 48 : 47;
break;
case 47:
HEAP32[(E + 16 | 0) >> 2] = ea;
HEAP32[(ea + 24 | 0) >> 2] = E;
a = 49;
break;
case 48:
throw _abort(), "Reached an unreachable!";;
case 49:
var va = HEAP32[(b + (t + 20 | 0) | 0) >> 2];
0 == (va | 0) ? (k = q, l = p, a = 56) : a = 50;
break;
case 50:
a = va >>> 0 < HEAP32[108] >>> 0 ? 52 : 51;
break;
case 51:
HEAP32[(E + 20 | 0) >> 2] = va;
HEAP32[(va + 24 | 0) >> 2] = E;
k = q;
l = p;
a = 56;
break;
case 52:
throw _abort(), "Reached an unreachable!";;
case 53:
throw _abort(), "Reached an unreachable!";;
case 54:
var wa = b + (h - 4 | 0) | 0;
3 == (HEAP32[wa >> 2] & 3 | 0) ? a = 55 : (k = q, l = p, a = 56);
break;
case 55:
HEAP32[106] = p;
HEAP32[wa >> 2] &= -2;
HEAP32[(b + (t + 4 | 0) | 0) >> 2] = p | 1;
HEAP32[i >> 2] = p;
a = 156;
break;
case 56:
var xa = k, a = xa >>> 0 < i >>> 0 ? 57 : 155;
break;
case 57:
var vb = b + (h - 4 | 0) | 0, fa = HEAP32[vb >> 2], a = 0 == (fa & 1 | 0) ? 155 : 58;
break;
case 58:
a = 0 == (fa & 2 | 0) ? 59 : 128;
break;
case 59:
a = (j | 0) == (HEAP32[110] | 0) ? 60 : 78;
break;
case 60:
var ya = HEAP32[107] + l | 0;
HEAP32[107] = ya;
HEAP32[110] = k;
HEAP32[(k + 4 | 0) >> 2] = ya | 1;
a = (k | 0) == (HEAP32[109] | 0) ? 61 : 62;
break;
case 61:
HEAP32[109] = 0;
HEAP32[106] = 0;
a = 62;
break;
case 62:
a = ya >>> 0 > HEAP32[111] >>> 0 ? 63 : 156;
break;
case 63:
if(0 == (HEAP32[2] | 0)) {
a = 64
}else {
var Ya = k, a = 65
}
break;
case 64:
_init_mparams();
Ya = HEAP32[110];
a = 65;
break;
case 65:
a = 0 == (Ya | 0) ? 156 : 66;
break;
case 66:
var wb = HEAP32[107], a = 40 < wb >>> 0 ? 67 : 76;
break;
case 67:
var za = HEAP32[4], Za = Math.imul(Math.floor((((wb - 41 | 0) + za | 0) >>> 0) / (za >>> 0)) - 1 | 0, za), xb = Ya, ka = 864, a = 68;
break;
case 68:
var yb = HEAP32[(ka | 0) >> 2], a = yb >>> 0 > xb >>> 0 ? 70 : 69;
break;
case 69:
if((yb + HEAP32[(ka + 4 | 0) >> 2] | 0) >>> 0 > xb >>> 0) {
var Aa = ka, a = 71
}else {
a = 70
}
break;
case 70:
var zb = HEAP32[(ka + 8 | 0) >> 2];
0 == (zb | 0) ? (Aa = 0, a = 71) : (ka = zb, a = 68);
break;
case 71:
a = 0 == (HEAP32[(Aa + 12 | 0) >> 2] & 8 | 0) ? 72 : 76;
break;
case 72:
var Ba = _sbrk(0), $a = Aa + 4 | 0, a = (Ba | 0) == (HEAP32[(Aa | 0) >> 2] + HEAP32[$a >> 2] | 0) ? 73 : 76;
break;
case 73:
var nc = -2147483648 - za | 0, oc = _sbrk(-(2147483646 < Za >>> 0 ? nc : Za) | 0), ab = _sbrk(0), a = -1 != (oc | 0) & ab >>> 0 < Ba >>> 0 ? 74 : 76;
break;
case 74:
var Ca = Ba - ab | 0, a = (Ba | 0) == (ab | 0) ? 76 : 75;
break;
case 75:
HEAP32[$a >> 2] = HEAP32[$a >> 2] - Ca | 0;
HEAP32[212] = HEAP32[212] - Ca | 0;
_init_top(HEAP32[110], HEAP32[107] - Ca | 0);
a = 156;
break;
case 76:
a = HEAP32[107] >>> 0 > HEAP32[111] >>> 0 ? 77 : 156;
break;
case 77:
HEAP32[111] = -1;
a = 156;
break;
case 78:
a = (j | 0) == (HEAP32[109] | 0) ? 79 : 80;
break;
case 79:
var la = HEAP32[106] + l | 0;
HEAP32[106] = la;
HEAP32[109] = k;
HEAP32[(k + 4 | 0) >> 2] = la | 1;
HEAP32[(xa + la | 0) >> 2] = la;
a = 156;
break;
case 80:
var x = (fa & -8) + l | 0, N = fa >>> 3, a = 256 > fa >>> 0 ? 81 : 93;
break;
case 81:
var ga = HEAP32[(b + h | 0) >> 2], R = HEAP32[(b + (h | 4) | 0) >> 2], Ab = 456 + (N << 1 << 2) | 0, a = (ga | 0) == (Ab | 0) ? 84 : 82;
break;
case 82:
a = ga >>> 0 < HEAP32[108] >>> 0 ? 92 : 83;
break;
case 83:
a = (HEAP32[(ga + 12 | 0) >> 2] | 0) == (j | 0) ? 84 : 92;
break;
case 84:
a = (R | 0) == (ga | 0) ? 85 : 86;
break;
case 85:
HEAP32[104] &= 1 << N ^ -1;
a = 126;
break;
case 86:
a = (R | 0) == (Ab | 0) ? 87 : 88;
break;
case 87:
var Bb = R + 8 | 0, a = 90;
break;
case 88:
a = R >>> 0 < HEAP32[108] >>> 0 ? 91 : 89;
break;
case 89:
var Cb = R + 8 | 0;
(HEAP32[Cb >> 2] | 0) == (j | 0) ? (Bb = Cb, a = 90) : a = 91;
break;
case 90:
HEAP32[(ga + 12 | 0) >> 2] = R;
HEAP32[Bb >> 2] = ga;
a = 126;
break;
case 91:
throw _abort(), "Reached an unreachable!";;
case 92:
throw _abort(), "Reached an unreachable!";;
case 93:
var Da = i, Ea = HEAP32[(b + (h + 16 | 0) | 0) >> 2], S = HEAP32[(b + (h | 4) | 0) >> 2], a = (S | 0) == (Da | 0) ? 99 : 94;
break;
case 94:
var Fa = HEAP32[(b + h | 0) >> 2], a = Fa >>> 0 < HEAP32[108] >>> 0 ? 98 : 95;
break;
case 95:
var Db = Fa + 12 | 0, a = (HEAP32[Db >> 2] | 0) == (Da | 0) ? 96 : 98;
break;
case 96:
var pc = S + 8 | 0, a = (HEAP32[pc >> 2] | 0) == (Da | 0) ? 97 : 98;
break;
case 97:
HEAP32[Db >> 2] = S;
HEAP32[pc >> 2] = Fa;
var C = S, a = 106;
break;
case 98:
throw _abort(), "Reached an unreachable!";;
case 99:
var Ga = b + (h + 12 | 0) | 0, bb = HEAP32[Ga >> 2];
if(0 == (bb | 0)) {
a = 100
}else {
var ha = bb, ma = Ga, a = 101
}
break;
case 100:
var F = b + (h + 8 | 0) | 0, Eb = HEAP32[F >> 2];
0 == (Eb | 0) ? (C = 0, a = 106) : (ha = Eb, ma = F, a = 101);
break;
case 101:
var Fb = ha + 20 | 0, ia = HEAP32[Fb >> 2];
0 == (ia | 0) ? a = 102 : (ha = ia, ma = Fb, a = 101);
break;
case 102:
var na = ha + 16 | 0, Gb = HEAP32[na >> 2];
0 == (Gb | 0) ? a = 103 : (ha = Gb, ma = na, a = 101);
break;
case 103:
a = ma >>> 0 < HEAP32[108] >>> 0 ? 105 : 104;
break;
case 104:
HEAP32[ma >> 2] = 0;
C = ha;
a = 106;
break;
case 105:
throw _abort(), "Reached an unreachable!";;
case 106:
a = 0 == (Ea | 0) ? 126 : 107;
break;
case 107:
var Hb = HEAP32[(b + (h + 20 | 0) | 0) >> 2], Ib = 720 + (Hb << 2) | 0, a = (Da | 0) == (HEAP32[Ib >> 2] | 0) ? 108 : 110;
break;
case 108:
HEAP32[Ib >> 2] = C;
a = 0 == (C | 0) ? 109 : 116;
break;
case 109:
HEAP32[105] &= 1 << Hb ^ -1;
a = 126;
break;
case 110:
a = Ea >>> 0 < HEAP32[108] >>> 0 ? 114 : 111;
break;
case 111:
var Jb = Ea + 16 | 0, a = (HEAP32[Jb >> 2] | 0) == (Da | 0) ? 112 : 113;
break;
case 112:
HEAP32[Jb >> 2] = C;
a = 115;
break;
case 113:
HEAP32[(Ea + 20 | 0) >> 2] = C;
a = 115;
break;
case 114:
throw _abort(), "Reached an unreachable!";;
case 115:
a = 0 == (C | 0) ? 126 : 116;
break;
case 116:
a = C >>> 0 < HEAP32[108] >>> 0 ? 125 : 117;
break;
case 117:
HEAP32[(C + 24 | 0) >> 2] = Ea;
var Ha = HEAP32[(b + (h + 8 | 0) | 0) >> 2], a = 0 == (Ha | 0) ? 121 : 118;
break;
case 118:
a = Ha >>> 0 < HEAP32[108] >>> 0 ? 120 : 119;
break;
case 119:
HEAP32[(C + 16 | 0) >> 2] = Ha;
HEAP32[(Ha + 24 | 0) >> 2] = C;
a = 121;
break;
case 120:
throw _abort(), "Reached an unreachable!";;
case 121:
var Ia = HEAP32[(b + (h + 12 | 0) | 0) >> 2], a = 0 == (Ia | 0) ? 126 : 122;
break;
case 122:
a = Ia >>> 0 < HEAP32[108] >>> 0 ? 124 : 123;
break;
case 123:
HEAP32[(C + 20 | 0) >> 2] = Ia;
HEAP32[(Ia + 24 | 0) >> 2] = C;
a = 126;
break;
case 124:
throw _abort(), "Reached an unreachable!";;
case 125:
throw _abort(), "Reached an unreachable!";;
case 126:
HEAP32[(k + 4 | 0) >> 2] = x | 1;
HEAP32[(xa + x | 0) >> 2] = x;
if((k | 0) == (HEAP32[109] | 0)) {
a = 127
}else {
var T = x, a = 129
}
break;
case 127:
HEAP32[106] = x;
a = 156;
break;
case 128:
HEAP32[vb >> 2] = fa & -2;
HEAP32[(k + 4 | 0) >> 2] = l | 1;
T = HEAP32[(xa + l | 0) >> 2] = l;
a = 129;
break;
case 129:
var Kb = T >>> 3, a = 256 > T >>> 0 ? 130 : 135;
break;
case 130:
var cb = Kb << 1, Ja = 456 + (cb << 2) | 0, Ka = HEAP32[104], Lb = 1 << Kb, a = 0 == (Ka & Lb | 0) ? 131 : 132;
break;
case 131:
HEAP32[104] = Ka | Lb;
var db = Ja, Mb = 456 + ((cb + 2 | 0) << 2) | 0, a = 134;
break;
case 132:
var La = 456 + ((cb + 2 | 0) << 2) | 0, Nb = HEAP32[La >> 2];
Nb >>> 0 < HEAP32[108] >>> 0 ? a = 133 : (db = Nb, Mb = La, a = 134);
break;
case 133:
throw _abort(), "Reached an unreachable!";;
case 134:
HEAP32[Mb >> 2] = k;
HEAP32[(db + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = db;
HEAP32[(k + 12 | 0) >> 2] = Ja;
a = 156;
break;
case 135:
var oa = k, eb = T >>> 8;
if(0 == (eb | 0)) {
var $ = 0, a = 138
}else {
a = 136
}
break;
case 136:
16777215 < T >>> 0 ? ($ = 31, a = 138) : a = 137;
break;
case 137:
var Ob = (eb + 1048320 | 0) >>> 16 & 8, fb = eb << Ob, Pb = (fb + 520192 | 0) >>> 16 & 4, Qb = fb << Pb, Rb = (Qb + 245760 | 0) >>> 16 & 2, Sb = (14 - (Pb | Ob | Rb) | 0) + (Qb << Rb >>> 15) | 0, $ = T >>> ((Sb + 7 | 0) >>> 0) & 1 | Sb << 1, a = 138;
break;
case 138:
var Tb = 720 + ($ << 2) | 0;
HEAP32[(k + 28 | 0) >> 2] = $;
HEAP32[(k + 20 | 0) >> 2] = 0;
HEAP32[(k + 16 | 0) >> 2] = 0;
var Ub = HEAP32[105], u = 1 << $, a = 0 == (Ub & u | 0) ? 139 : 140;
break;
case 139:
HEAP32[105] = Ub | u;
HEAP32[Tb >> 2] = oa;
HEAP32[(k + 24 | 0) >> 2] = Tb;
HEAP32[(k + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = k;
a = 152;
break;
case 140:
var qc = HEAP32[Tb >> 2];
if(31 == ($ | 0)) {
var Vb = 0, a = 142
}else {
a = 141
}
break;
case 141:
Vb = 25 - ($ >>> 1) | 0;
a = 142;
break;
case 142:
var Ma = T << Vb, G = qc, a = 143;
break;
case 143:
a = (HEAP32[(G + 4 | 0) >> 2] & -8 | 0) == (T | 0) ? 148 : 144;
break;
case 144:
var gb = G + 16 + (Ma >>> 31 << 2) | 0, Wb = HEAP32[gb >> 2], rc = Ma << 1;
0 == (Wb | 0) ? a = 145 : (Ma = rc, G = Wb, a = 143);
break;
case 145:
a = gb >>> 0 < HEAP32[108] >>> 0 ? 147 : 146;
break;
case 146:
HEAP32[gb >> 2] = oa;
HEAP32[(k + 24 | 0) >> 2] = G;
HEAP32[(k + 12 | 0) >> 2] = k;
HEAP32[(k + 8 | 0) >> 2] = k;
a = 152;
break;
case 147:
throw _abort(), "Reached an unreachable!";;
case 148:
var Xb = G + 8 | 0, hb = HEAP32[Xb >> 2], Yb = HEAP32[108], a = G >>> 0 < Yb >>> 0 ? 151 : 149;
break;
case 149:
a = hb >>> 0 < Yb >>> 0 ? 151 : 150;
break;
case 150:
HEAP32[(hb + 12 | 0) >> 2] = oa;
HEAP32[Xb >> 2] = oa;
HEAP32[(k + 8 | 0) >> 2] = hb;
HEAP32[(k + 12 | 0) >> 2] = G;
HEAP32[(k + 24 | 0) >> 2] = 0;
a = 152;
break;
case 151:
throw _abort(), "Reached an unreachable!";;
case 152:
var Zb = HEAP32[112] - 1 | 0;
HEAP32[112] = Zb;
if(0 == (Zb | 0)) {
var pa = 872, a = 153
}else {
a = 156
}
break;
case 153:
var Na = HEAP32[pa >> 2], ib = Na + 8 | 0;
0 == (Na | 0) ? a = 154 : (pa = ib, a = 153);
break;
case 154:
HEAP32[112] = -1;
a = 156;
break;
case 155:
throw _abort(), "Reached an unreachable!";;
case 156:
return;
default:
assert(0, "bad label: " + a)
}
}
}
function __ZNK10__cxxabiv116__shim_type_info5noop1Ev() {
}
function __ZNK10__cxxabiv116__shim_type_info5noop2Ev() {
}
function _init_top(b, a) {
for(var c = 0, c = 1;;) {
switch(c) {
case 1:
var d = b, f = b + 8 | 0;
if(0 == (f & 7 | 0)) {
var e = 0, c = 3
}else {
c = 2
}
break;
case 2:
e = (-f | 0) & 7;
c = 3;
break;
case 3:
c = a - e | 0;
HEAP32[110] = d + e | 0;
HEAP32[107] = c;
HEAP32[(d + (e + 4 | 0) | 0) >> 2] = c | 1;
HEAP32[(d + (a + 4 | 0) | 0) >> 2] = 40;
HEAP32[111] = HEAP32[6];
return;
default:
assert(0, "bad label: " + c)
}
}
}
function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(b, a, c) {
for(var d = 0, d = 1;;) {
switch(d) {
case 1:
var f = b + 16 | 0, e = HEAP32[f >> 2], d = 0 == (e | 0) ? 2 : 3;
break;
case 2:
HEAP32[f >> 2] = a;
HEAP32[(b + 24 | 0) >> 2] = c;
HEAP32[(b + 36 | 0) >> 2] = 1;
d = 7;
break;
case 3:
d = (e | 0) == (a | 0) ? 4 : 6;
break;
case 4:
var g = b + 24 | 0, d = 2 == (HEAP32[g >> 2] | 0) ? 5 : 7;
break;
case 5:
HEAP32[g >> 2] = c;
d = 7;
break;
case 6:
d = b + 36 | 0;
HEAP32[d >> 2] = HEAP32[d >> 2] + 1 | 0;
HEAP32[(b + 24 | 0) >> 2] = 2;
HEAP8[b + 54 | 0] = 1;
d = 7;
break;
case 7:
return;
default:
assert(0, "bad label: " + d)
}
}
}
function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
HEAP8[b + 53 | 0] = 1;
f = (HEAP32[(b + 4 | 0) >> 2] | 0) == (c | 0) ? 2 : 11;
break;
case 2:
HEAP8[b + 52 | 0] = 1;
var e = b + 16 | 0, g = HEAP32[e >> 2], f = 0 == (g | 0) ? 3 : 5;
break;
case 3:
HEAP32[e >> 2] = a;
HEAP32[(b + 24 | 0) >> 2] = d;
HEAP32[(b + 36 | 0) >> 2] = 1;
f = 1 == (HEAP32[(b + 48 | 0) >> 2] | 0) & 1 == (d | 0) ? 4 : 11;
break;
case 4:
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 5:
f = (g | 0) == (a | 0) ? 6 : 10;
break;
case 6:
var h = b + 24 | 0, f = HEAP32[h >> 2];
if(2 == (f | 0)) {
f = 7
}else {
var i = f, f = 8
}
break;
case 7:
i = HEAP32[h >> 2] = d;
f = 8;
break;
case 8:
f = 1 == (HEAP32[(b + 48 | 0) >> 2] | 0) & 1 == (i | 0) ? 9 : 11;
break;
case 9:
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 10:
f = b + 36 | 0;
HEAP32[f >> 2] = HEAP32[f >> 2] + 1 | 0;
HEAP8[b + 54 | 0] = 1;
f = 11;
break;
case 11:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 5;
break;
case 2:
f = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 14;
break;
case 3:
var e = a + 28 | 0, f = 1 == (HEAP32[e >> 2] | 0) ? 14 : 4;
break;
case 4:
HEAP32[e >> 2] = d;
f = 14;
break;
case 5:
f = (HEAP32[(a | 0) >> 2] | 0) == (b | 0) ? 6 : 14;
break;
case 6:
f = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var g = a + 20 | 0, f = (HEAP32[g >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
f = 1 == (d | 0) ? 9 : 14;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
f = 14;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
HEAP32[g >> 2] = c;
f = a + 40 | 0;
HEAP32[f >> 2] = HEAP32[f >> 2] + 1 | 0;
f = 1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? 11 : 13;
break;
case 11:
f = 2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? 12 : 13;
break;
case 12:
HEAP8[a + 54 | 0] = 1;
f = 13;
break;
case 13:
HEAP32[(a + 44 | 0) >> 2] = 4;
f = 14;
break;
case 14:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
var h = HEAP32[(b + 4 | 0) >> 2], i = h >> 8;
if(0 == (h & 1 | 0)) {
var j = i, g = 3
}else {
g = 2
}
break;
case 2:
j = HEAP32[(HEAP32[d >> 2] + i | 0) >> 2];
g = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 20 | 0) >> 2]](b, a, c, d + j | 0, 0 != (h & 2 | 0) ? f : 2, e);
return;
default:
assert(0, "bad label: " + g)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = HEAP32[(b + 4 | 0) >> 2], h = g >> 8;
if(0 == (g & 1 | 0)) {
var i = h, e = 3
}else {
e = 2
}
break;
case 2:
i = HEAP32[(HEAP32[c >> 2] + h | 0) >> 2];
e = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 24 | 0) >> 2]](b, a, c + i | 0, 0 != (g & 2 | 0) ? d : 2, f);
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
var e = HEAP32[(b + 4 | 0) >> 2], g = e >> 8;
if(0 == (e & 1 | 0)) {
var h = g, f = 3
}else {
f = 2
}
break;
case 2:
h = HEAP32[(HEAP32[c >> 2] + g | 0) >> 2];
f = 3;
break;
case 3:
b = HEAP32[(b | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[b >> 2] + 28 | 0) >> 2]](b, a, c + h | 0, 0 != (e & 2 | 0) ? d : 2);
return;
default:
assert(0, "bad label: " + f)
}
}
}
function ___getTypeName(b) {
return _strdup(HEAP32[(b + 4 | 0) >> 2])
}
function __Z16print_some_stuffifRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(b, a, c) {
var d = 0, f = STACKTOP;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(d = 1;;) {
switch(d) {
case 1:
var e = a, d = 0 == (HEAP8[c] & 1) << 24 >> 24 ? 3 : 2;
break;
case 2:
var g = HEAP32[(c + 8 | 0) >> 2], d = 4;
break;
case 3:
g = c + 1 | 0;
d = 4;
break;
case 4:
_printf(384, (tempInt = STACKTOP, STACKTOP = STACKTOP + 24 | 0, assert((STACKTOP | 0) < (STACK_MAX | 0)), HEAP32[tempInt >> 2] = b, HEAPF64[tempInt + 8 >> 3] = e, HEAP32[tempInt + 16 >> 2] = g, tempInt));
STACKTOP = f;
return;
default:
assert(0, "bad label: " + d)
}
}
}
function __ZN10__cxxabiv116__shim_type_infoD2Ev() {
}
function __ZN10__cxxabiv117__class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv120__si_class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZN10__cxxabiv123__fundamental_type_infoD0Ev(b) {
__ZdlPv(b)
}
function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
e = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
e = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (HEAP32[(a + 8 | 0) >> 2] | 0) == (b | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 3;
break;
case 3:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
g = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
g = 4;
break;
case 3:
g = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[g >> 2] + 20 | 0) >> 2]](g, a, c, d, f, e);
g = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + g)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = b | 0, e = (g | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
e = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 20;
break;
case 3:
var h = a + 28 | 0, e = 1 == (HEAP32[h >> 2] | 0) ? 20 : 4;
break;
case 4:
HEAP32[h >> 2] = d;
e = 20;
break;
case 5:
e = (g | 0) == (HEAP32[(a | 0) >> 2] | 0) ? 6 : 19;
break;
case 6:
e = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var i = a + 20 | 0, e = (HEAP32[i >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
e = 1 == (d | 0) ? 9 : 20;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
e = 20;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
var j = a + 44 | 0, e = 4 == (HEAP32[j >> 2] | 0) ? 20 : 11;
break;
case 11:
var k = a + 52 | 0;
HEAP8[k] = 0;
e = a + 53 | 0;
HEAP8[e] = 0;
var l = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[l >> 2] + 20 | 0) >> 2]](l, a, c, c, 1, f);
if(0 == HEAP8[e] << 24 >> 24) {
var s = 0, e = 13
}else {
e = 12
}
break;
case 12:
0 == HEAP8[k] << 24 >> 24 ? (s = 1, e = 13) : e = 17;
break;
case 13:
HEAP32[i >> 2] = c;
e = a + 40 | 0;
HEAP32[e >> 2] = HEAP32[e >> 2] + 1 | 0;
e = 1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? 14 : 16;
break;
case 14:
e = 2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? 15 : 16;
break;
case 15:
HEAP8[a + 54 | 0] = 1;
e = s ? 17 : 18;
break;
case 16:
e = s ? 17 : 18;
break;
case 17:
HEAP32[j >> 2] = 3;
e = 20;
break;
case 18:
HEAP32[j >> 2] = 4;
e = 20;
break;
case 19:
e = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[e >> 2] + 24 | 0) >> 2]](e, a, c, d, f);
e = 20;
break;
case 20:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 4;
break;
case 3:
f = HEAP32[(b + 8 | 0) >> 2];
FUNCTION_TABLE[HEAP32[(HEAP32[f >> 2] + 28 | 0) >> 2]](f, a, c, d);
f = 4;
break;
case 4:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(b, a, c, d, f, e) {
for(var g = 0, g = 1;;) {
switch(g) {
case 1:
g = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(a, c, d, f);
g = 13;
break;
case 3:
var h = a + 52 | 0, i = HEAP8[h], j = a + 53 | 0, k = HEAP8[j], g = b + 16 | 0, l = HEAP32[(b + 12 | 0) >> 2], s = b + 16 + (l << 3) | 0;
HEAP8[h] = 0;
HEAP8[j] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(g, a, c, d, f, e);
g = 1 < (l | 0) ? 4 : 12;
break;
case 4:
var t = a + 24 | 0, v = b + 8 | 0, q = a + 54 | 0, p = b + 24 | 0, g = 5;
break;
case 5:
g = 0 == HEAP8[q] << 24 >> 24 ? 6 : 12;
break;
case 6:
g = 0 == HEAP8[h] << 24 >> 24 ? 9 : 7;
break;
case 7:
g = 1 == (HEAP32[t >> 2] | 0) ? 12 : 8;
break;
case 8:
g = 0 == (HEAP32[v >> 2] & 2 | 0) ? 12 : 11;
break;
case 9:
g = 0 == HEAP8[j] << 24 >> 24 ? 11 : 10;
break;
case 10:
g = 0 == (HEAP32[v >> 2] & 1 | 0) ? 12 : 11;
break;
case 11:
HEAP8[h] = 0;
HEAP8[j] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(p, a, c, d, f, e);
g = p + 8 | 0;
g >>> 0 < s >>> 0 ? (p = g, g = 5) : g = 12;
break;
case 12:
HEAP8[h] = i;
HEAP8[j] = k;
g = 13;
break;
case 13:
return;
default:
assert(0, "bad label: " + g)
}
}
}
function _init_mparams() {
for(var b = 0, b = 1;;) {
switch(b) {
case 1:
b = 0 == (HEAP32[2] | 0) ? 2 : 5;
break;
case 2:
var a = _sysconf(8), b = 0 == ((a - 1 | 0) & a | 0) ? 4 : 3;
break;
case 3:
throw _abort(), "Reached an unreachable!";;
case 4:
HEAP32[4] = a;
HEAP32[3] = a;
HEAP32[5] = -1;
HEAP32[6] = 2097152;
HEAP32[7] = 0;
HEAP32[215] = 0;
b = _time(0) & -16 ^ 1431655768;
HEAP32[2] = b;
b = 5;
break;
case 5:
return;
default:
assert(0, "bad label: " + b)
}
}
}
function ___ZN10emscripten8internal7InvokerIvJifRKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFvifSA_EifPNS0_11BindingTypeIS8_E3$_0E_(b, a, c, d) {
var f = 0, e = STACKTOP;
STACKTOP = STACKTOP + 16 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(f = 1;;) {
switch(f) {
case 1:
var g = e, h = d + 4 | 0, i = HEAP32[(d | 0) >> 2], f = -1 == (i | 0) ? 2 : 3;
break;
case 2:
throw ___assert_func(200, 1014, 888, 304), "Reached an unreachable!";;
case 3:
f = 11 > i >>> 0 ? 4 : 5;
break;
case 4:
f = g;
HEAP8[f] = i << 1 & 255;
var j = g + 1 | 0, k = f, f = 6;
break;
case 5:
f = (i + 16 | 0) & -16;
j = __Znwj(f);
HEAP32[(g + 8 | 0) >> 2] = j;
HEAP32[(g | 0) >> 2] = f | 1;
HEAP32[(g + 4 | 0) >> 2] = i;
k = f = g;
f = 6;
break;
case 6:
assert(0 === i % 1);
_memcpy(j, h, i);
HEAP8[j + i | 0] = 0;
FUNCTION_TABLE[b](a, c, g);
f = 0 == (HEAP8[k] & 1) << 24 >> 24 ? 8 : 7;
break;
case 7:
__ZdlPv(HEAP32[(g + 8 | 0) >> 2]);
f = 8;
break;
case 8:
STACKTOP = e;
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv(b, a) {
return(b | 0) == (a | 0)
}
function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b, a, c, d, f) {
for(var e = 0, e = 1;;) {
switch(e) {
case 1:
var g = b | 0, e = (g | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 5;
break;
case 2:
e = (HEAP32[(a + 4 | 0) >> 2] | 0) == (c | 0) ? 3 : 43;
break;
case 3:
var h = a + 28 | 0, e = 1 == (HEAP32[h >> 2] | 0) ? 43 : 4;
break;
case 4:
HEAP32[h >> 2] = d;
e = 43;
break;
case 5:
e = (g | 0) == (HEAP32[(a | 0) >> 2] | 0) ? 6 : 27;
break;
case 6:
e = (HEAP32[(a + 16 | 0) >> 2] | 0) == (c | 0) ? 8 : 7;
break;
case 7:
var i = a + 20 | 0, e = (HEAP32[i >> 2] | 0) == (c | 0) ? 8 : 10;
break;
case 8:
e = 1 == (d | 0) ? 9 : 43;
break;
case 9:
HEAP32[(a + 32 | 0) >> 2] = 1;
e = 43;
break;
case 10:
HEAP32[(a + 32 | 0) >> 2] = d;
var j = a + 44 | 0, e = 4 == (HEAP32[j >> 2] | 0) ? 43 : 11;
break;
case 11:
var e = HEAP32[(b + 12 | 0) >> 2], k = b + 16 + (e << 3) | 0;
if(0 < (e | 0)) {
e = 12
}else {
var l = 0, e = 21
}
break;
case 12:
var s = a + 52 | 0, t = a + 53 | 0, v = a + 54 | 0, q = b + 8 | 0, p = a + 24 | 0, n = 0, m = b + 16 | 0, z = 0, e = 13;
break;
case 13:
HEAP8[s] = 0;
HEAP8[t] = 0;
__ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(m, a, c, c, 1, f);
if(0 == HEAP8[v] << 24 >> 24) {
e = 14
}else {
var W = z, aa = n, e = 20
}
break;
case 14:
if(0 == HEAP8[t] << 24 >> 24) {
var X = z, I = n, e = 19
}else {
e = 15
}
break;
case 15:
e = 0 == HEAP8[s] << 24 >> 24 ? 18 : 16;
break;
case 16:
e = 1 == (HEAP32[p >> 2] | 0) ? 25 : 17;
break;
case 17:
0 == (HEAP32[q >> 2] & 2 | 0) ? e = 25 : (I = X = 1, e = 19);
break;
case 18:
0 == (HEAP32[q >> 2] & 1 | 0) ? (W = 1, aa = n, e = 20) : (X = 1, I = n, e = 19);
break;
case 19:
e = m + 8 | 0;
e >>> 0 < k >>> 0 ? (n = I, m = e, z = X, e = 13) : (W = X, aa = I, e = 20);
break;
case 20:
if(aa) {
var L = W, e = 24
}else {
l = W, e = 21
}
break;
case 21:
HEAP32[i >> 2] = c;
e = a + 40 | 0;
HEAP32[e >> 2] = HEAP32[e >> 2] + 1 | 0;
1 == (HEAP32[(a + 36 | 0) >> 2] | 0) ? e = 22 : (L = l, e = 24);
break;
case 22:
2 == (HEAP32[(a + 24 | 0) >> 2] | 0) ? e = 23 : (L = l, e = 24);
break;
case 23:
HEAP8[a + 54 | 0] = 1;
e = l ? 25 : 26;
break;
case 24:
e = L ? 25 : 26;
break;
case 25:
HEAP32[j >> 2] = 3;
e = 43;
break;
case 26:
HEAP32[j >> 2] = 4;
e = 43;
break;
case 27:
var e = HEAP32[(b + 12 | 0) >> 2], P = b + 16 + (e << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(b + 16 | 0, a, c, d, f);
var Y = b + 24 | 0, e = 1 < (e | 0) ? 28 : 43;
break;
case 28:
var ja = HEAP32[(b + 8 | 0) >> 2], e = 0 == (ja & 2 | 0) ? 29 : 30;
break;
case 29:
var ba = a + 36 | 0, e = 1 == (HEAP32[ba >> 2] | 0) ? 30 : 33;
break;
case 30:
var E = a + 54 | 0, Z = Y, e = 31;
break;
case 31:
e = 0 == HEAP8[E] << 24 >> 24 ? 32 : 43;
break;
case 32:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(Z, a, c, d, f);
e = Z + 8 | 0;
e >>> 0 < P >>> 0 ? (Z = e, e = 31) : e = 43;
break;
case 33:
e = 0 == (ja & 1 | 0) ? 35 : 34;
break;
case 34:
var ta = a + 24 | 0, Q = a + 54 | 0, M = Y, e = 36;
break;
case 35:
var ca = a + 54 | 0, da = Y, e = 40;
break;
case 36:
e = 0 == HEAP8[Q] << 24 >> 24 ? 37 : 43;
break;
case 37:
e = 1 == (HEAP32[ba >> 2] | 0) ? 38 : 39;
break;
case 38:
e = 1 == (HEAP32[ta >> 2] | 0) ? 43 : 39;
break;
case 39:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(M, a, c, d, f);
e = M + 8 | 0;
e >>> 0 < P >>> 0 ? (M = e, e = 36) : e = 43;
break;
case 40:
e = 0 == HEAP8[ca] << 24 >> 24 ? 41 : 43;
break;
case 41:
e = 1 == (HEAP32[ba >> 2] | 0) ? 43 : 42;
break;
case 42:
__ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(da, a, c, d, f);
e = da + 8 | 0;
e >>> 0 < P >>> 0 ? (da = e, e = 40) : e = 43;
break;
case 43:
return;
default:
assert(0, "bad label: " + e)
}
}
}
function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b, a, c, d) {
for(var f = 0, f = 1;;) {
switch(f) {
case 1:
f = (b | 0) == (HEAP32[(a + 8 | 0) >> 2] | 0) ? 2 : 3;
break;
case 2:
__ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(a, c, d);
f = 7;
break;
case 3:
var f = HEAP32[(b + 12 | 0) >> 2], e = b + 16 + (f << 3) | 0;
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(b + 16 | 0, a, c, d);
f = 1 < (f | 0) ? 4 : 7;
break;
case 4:
var g = a + 54 | 0, h = b + 24 | 0, f = 5;
break;
case 5:
__ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(h, a, c, d);
f = 0 == HEAP8[g] << 24 >> 24 ? 6 : 7;
break;
case 6:
f = h + 8 | 0;
f >>> 0 < e >>> 0 ? (h = f, f = 5) : f = 7;
break;
case 7:
return;
default:
assert(0, "bad label: " + f)
}
}
}
function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv(b, a, c) {
var d = 0, f = STACKTOP;
STACKTOP = STACKTOP + 112 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
for(d = 1;;) {
switch(d) {
case 1:
var e = f, g = f + 56;
if((b | 0) == (a | 0)) {
var h = 1, d = 17
}else {
d = 2
}
break;
case 2:
0 == (a | 0) ? (h = 0, d = 17) : d = 3;
break;
case 3:
var i = a, j = HEAP32[a >> 2], k = i + HEAP32[(j - 8 | 0) >> 2] | 0, l = j = HEAP32[(j - 4 | 0) >> 2];
HEAP32[(e | 0) >> 2] = 1744;
HEAP32[(e + 4 | 0) >> 2] = i;
HEAP32[(e + 8 | 0) >> 2] = 1760;
HEAP32[(e + 12 | 0) >> 2] = -1;
var i = e + 16 | 0, s = e + 20 | 0, t = e + 24 | 0, v = e + 28 | 0, q = e + 32 | 0, p = e + 40 | 0, d = 1744 == (j | 0);
_memset(i, 0, 39);
d = d ? 4 : 5;
break;
case 4:
HEAP32[(e + 48 | 0) >> 2] = 1;
FUNCTION_TABLE[HEAP32[(HEAP32[436] + 20 | 0) >> 2]](l, e, k, k, 1, 0);
var n = 1 == (HEAP32[t >> 2] | 0) ? k : 0, d = 14;
break;
case 5:
d = e + 36 | 0;
FUNCTION_TABLE[HEAP32[(HEAP32[j >> 2] + 24 | 0) >> 2]](l, e, k, 1, 0);
d = HEAP32[d >> 2];
0 == (d | 0) ? d = 6 : 1 == (d | 0) ? d = 9 : (n = 0, d = 14);
break;
case 6:
1 == (HEAP32[p >> 2] | 0) ? d = 7 : (n = 0, d = 14);
break;
case 7:
1 == (HEAP32[v >> 2] | 0) ? d = 8 : (n = 0, d = 14);
break;
case 8:
n = HEAP32[s >> 2];
n = 1 == (HEAP32[q >> 2] | 0) ? n : 0;
d = 14;
break;
case 9:
d = 1 == (HEAP32[t >> 2] | 0) ? 13 : 10;
break;
case 10:
0 == (HEAP32[p >> 2] | 0) ? d = 11 : (n = 0, d = 14);
break;
case 11:
1 == (HEAP32[v >> 2] | 0) ? d = 12 : (n = 0, d = 14);
break;
case 12:
1 == (HEAP32[q >> 2] | 0) ? d = 13 : (n = 0, d = 14);
break;
case 13:
n = HEAP32[i >> 2];
d = 14;
break;
case 14:
var m = n;
0 == (n | 0) ? (h = 0, d = 17) : d = 15;
break;
case 15:
_memset(g, 0, 56);
HEAP32[(g | 0) >> 2] = m;
HEAP32[(g + 8 | 0) >> 2] = b;
HEAP32[(g + 12 | 0) >> 2] = -1;
HEAP32[(g + 48 | 0) >> 2] = 1;
FUNCTION_TABLE[HEAP32[(HEAP32[n >> 2] + 28 | 0) >> 2]](m, g, HEAP32[c >> 2], 1);
1 == (HEAP32[(g + 24 | 0) >> 2] | 0) ? d = 16 : (h = 0, d = 17);
break;
case 16:
HEAP32[c >> 2] = HEAP32[(g + 16 | 0) >> 2];
h = 1;
d = 17;
break;
case 17:
return STACKTOP = f, h;
default:
assert(0, "bad label: " + d)
}
}
}
function __GLOBAL__I_a() {
var b = STACKTOP;
STACKTOP = STACKTOP + 24 | 0;
assert((STACKTOP | 0) < (STACK_MAX | 0));
HEAP32[(b | 0) >> 2] = 4;
var a = b + 4 | 0;
HEAP32[a >> 2] = 1600;
HEAP32[(b + 8 | 0) >> 2] = __ZTIi;
HEAP32[(b + 12 | 0) >> 2] = __ZTIf;
HEAP32[(b + 16 | 0) >> 2] = 1656;
__embind_register_function(360, 4, a, 32, 26);
STACKTOP = b
}
function __GLOBAL__I_a7() {
__embind_register_void(1600, 136);
__embind_register_bool(1608, 288, 1, 0);
__embind_register_integer(__ZTIc, 128, -128, 127);
__embind_register_integer(__ZTIa, 112, -128, 127);
__embind_register_integer(__ZTIh, 96, 0, 255);
__embind_register_integer(__ZTIs, 88, -32768, 32767);
__embind_register_integer(__ZTIt, 72, 0, 65535);
__embind_register_integer(__ZTIi, 64, -2147483648, 2147483647);
__embind_register_integer(__ZTIj, 48, 0, -1);
__embind_register_integer(__ZTIl, 40, -2147483648, 2147483647);
__embind_register_integer(__ZTIm, 344, 0, -1);
__embind_register_float(__ZTIf, 336);
__embind_register_float(__ZTId, 296);
__embind_register_std_string(1656, 272);
__embind_register_std_wstring(1632, 4, 184);
__embind_register_emval(1680, 168);
__embind_register_memory_view(1688, 144)
}
var i64Math = null;
Module.callMain = function(b) {
function a() {
for(var a = 0;3 > a;a++) {
d.push(0)
}
}
assert(0 == runDependencies, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
assert(!Module.preRun || 0 == Module.preRun.length, "cannot call main when preRun functions remain to be called");
b = b || [];
ensureInitRuntime();
var c = b.length + 1, d = [allocate(intArrayFromString("/bin/this.program"), "i8", ALLOC_NORMAL)];
a();
for(var f = 0;f < c - 1;f += 1) {
d.push(allocate(intArrayFromString(b[f]), "i8", ALLOC_NORMAL)), a()
}
d.push(0);
var d = allocate(d, "i32", ALLOC_NORMAL), e, b = STACKTOP;
try {
e = Module._main(c, d, 0)
}catch(g) {
if("ExitStatus" == g.name) {
return g.status
}
if("SimulateInfiniteLoop" == g) {
Module.noExitRuntime = !0
}else {
throw g;
}
}finally {
STACKTOP = b
}
return e
};
function run(b) {
function a() {
ensureInitRuntime();
preMain();
var a = 0;
calledRun = !0;
Module._main && shouldRunNow && (a = Module.callMain(b), Module.noExitRuntime || exitRuntime());
if(Module.postRun) {
for("function" == typeof Module.postRun && (Module.postRun = [Module.postRun]);0 < Module.postRun.length;) {
Module.postRun.pop()()
}
}
return a
}
b = b || Module.arguments;
if(0 < runDependencies) {
return Module.printErr("run() called, but dependencies remain, so not running"), 0
}
if(Module.preRun) {
"function" == typeof Module.preRun && (Module.preRun = [Module.preRun]);
var c = Module.preRun;
Module.preRun = [];
for(var d = c.length - 1;0 <= d;d--) {
c[d]()
}
if(0 < runDependencies) {
return 0
}
}
return Module.setStatus ? (Module.setStatus("Running..."), setTimeout(function() {
setTimeout(function() {
Module.setStatus("")
}, 1);
a()
}, 1), 0) : a()
}
Module.run = Module.run = run;
if(Module.preInit) {
for("function" == typeof Module.preInit && (Module.preInit = [Module.preInit]);0 < Module.preInit.length;) {
Module.preInit.pop()()
}
}
var shouldRunNow = !0;
Module.noInitialRun && (shouldRunNow = !1);
run();
This file has been truncated, but you can view the full file.
function b(c){throw c}var i=void 0,p=!0,r=null,t=!1;function aa(){return(function(){})}var v=v||{},ca=[{}],ja=[];v.count_emval_handles=(function(){for(var c=0,a=1;a<ca.length;++a){ca[a]!==i&&++c}return c});v.get_first_emval=(function(){for(var c=1;c<ca.length;++c){if(ca[c]!==i){return ca[c]}}return r});Function("return this")();var sa=v.Da=ra(Error,"InternalError"),ta=v.Ca=ra(Error,"BindingError"),wa=v.Fa=ra(ta,"UnboundTypeError");function Aa(c){b(new ta(c))}function ra(c,a){var d=Ba(a,(function(c){this.name=a;this.message=c;c=Error(c).stack;c!==i&&(this.stack=this.toString()+"\n"+c.replace(/^Error(:[^\n]*)?\n/,""))}));d.prototype=Object.create(c.prototype);d.prototype.toString=(function(){return this.message===i?this.name:this.name+": "+this.message});return d}function Ba(c,a){c=La(c);return(new Function("body","return function "+c+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(a)}function Ma(c){var a=typeof c;return"object"===a||"array"===a||"function"===a?c.toString():""+c}var Na={},Oa={},Za={};function $a(c,a){var d=a.name;c||Aa('type "'+d+'" must have a positive integer typeid pointer');Na.hasOwnProperty(c)&&Aa("Cannot register type '"+d+"' twice");Na[c]=a;delete Za[c];Oa.hasOwnProperty(c)&&(d=Oa[c],delete Oa[c],d.forEach((function(a){a()})))}for(var Db,Eb=Array(256),Fb=0;256>Fb;++Fb){Eb[Fb]=String.fromCharCode(Fb)}Db=Eb;function Gb(c){for(var a="";x[c];){a+=Db[x[c++]]}return a}function Hb(c){c=Ib(c);c=Gb(c);fc();return c}function gc(c,a,d,e){a=Gb(a);-1===e&&(e=4294967295);$a(c,{name:a,Qa:d,Pa:e,fromWireType:(function(a){return a}),toWireType:(function(c,g){"number"!==typeof g&&"boolean"!==typeof g&&b(new TypeError('Cannot convert "'+Ma(g)+'" to '+this.name));(g<d||g>e)&&b(new TypeError('Passing a number "'+Ma(g)+'" from JS side to C/C++ side to an argument of type "'+a+'", which is outside the valid range ['+d+", "+e+"]!"));return g|0}),d:r})}function hc(c,a){a=Gb(a);$a(c,{name:a,fromWireType:(function(a){return a}),toWireType:(function(a,c){"number"!==typeof c&&"boolean"!==typeof c&&b(new TypeError('Cannot convert "'+Ma(c)+'" to '+this.name));return c}),d:r})}function ic(c){for(;c.length;){var a=c.pop();c.pop()(a)}}var jc=[];function kc(){for(;jc.length;){var c=jc.pop();c.Ba.La=t;c["delete"]()}}v.flushPendingDeletes=kc;var lc;v.setDelayFunction=(function(c){lc=c;jc.length&&lc&&lc(kc)});var mc=48,nc=57;function La(c){var c=c.replace(/[^a-zA-Z0-9_]/g,"$"),a=c.charCodeAt(0);return a>=mc&&a<=nc?"_"+c:c}try{this.Module=v}catch(oc){this.Module=v={}}var pc="object"===typeof process&&"function"===typeof require,qc="object"===typeof window,rc="function"===typeof importScripts,sc=!qc&&!pc&&!rc;if(pc){v.print=(function(c){process.stdout.write(c+"\n")});v.printErr=(function(c){process.stderr.write(c+"\n")});var nd=require("fs"),od=require("path");v.read=(function(c,a){var c=od.normalize(c),d=nd.readFileSync(c);!d&&c!=od.resolve(c)&&(c=path.join(__dirname,"..","src",c),d=nd.readFileSync(c));d&&!a&&(d=d.toString());return d});v.readBinary=(function(c){return v.read(c,p)});v.load=(function(c){pd(read(c))});v.arguments||(v.arguments=process.argv.slice(2))}sc&&(v.print=print,"undefined"!=typeof printErr&&(v.printErr=printErr),v.read=read,v.readBinary=(function(c){return read(c,"binary")}),v.arguments||("undefined"!=typeof scriptArgs?v.arguments=scriptArgs:"undefined"!=typeof arguments&&(v.arguments=arguments)));qc&&!rc&&(v.print||(v.print=(function(c){console.log(c)})),v.printErr||(v.printErr=(function(c){console.log(c)})));if(qc||rc){v.read=(function(c){var a=new XMLHttpRequest;a.open("GET",c,t);a.send(r);return a.responseText}),v.arguments||"undefined"!=typeof arguments&&(v.arguments=arguments)}rc&&(v.print||(v.print=aa()),v.load=importScripts);!rc&&!qc&&!pc&&!sc&&b("Unknown runtime environment. Where are we?");function pd(c){eval.call(r,c)}"undefined"==!v.load&&v.read&&(v.load=(function(c){pd(v.read(c))}));v.print||(v.print=aa());v.printErr||(v.printErr=v.print);v.arguments||(v.arguments=[]);v.print=v.print;v.g=v.printErr;v.preRun||(v.preRun=[]);v.postRun||(v.postRun=[]);var A={H:(function(){return z}),$:(function(c){z=c}),Ma:(function(c,a){a=a||4;if(1==a){return c}if(isNumber(c)&&isNumber(a)){return Math.ceil(c/a)*a}if(isNumber(a)&&isPowerOfTwo(a)){var d=log2(a);return"(((("+c+")+"+(a-1)+")>>"+d+")<<"+d+")"}return"Math.ceil(("+c+")/"+a+")*"+a}),pa:(function(c){return c in A.ea||c in A.ca}),qa:(function(c){return"*"==c[c.length-1]}),sa:(function(c){return isPointerType(c)?t:/^\[\d+\ x\ (.*)\]/.test(c)||/<?{ ?[^}]* ?}>?/.test(c)?p:"%"==c[0]}),ea:{i1:0,i8:0,i16:0,i32:0,i64:0},ca:{"float":0,"double":0},Va:(function(c,a){return(c|0|a|0)+4294967296*(Math.round(c/4294967296)|Math.round(a/4294967296))}),Ja:(function(c,a){return((c|0)&(a|0))+4294967296*(Math.round(c/4294967296)&Math.round(a/4294967296))}),$a:(function(c,a){return((c|0)^(a|0))+4294967296*(Math.round(c/4294967296)^Math.round(a/4294967296))}),B:(function(c){if(1==A.c){return 1}var a={"%i1":1,"%i8":1,"%i16":2,"%i32":4,"%i64":8,"%float":4,"%double":8}["%"+c];a||("*"==c.charAt(c.length-1)?a=A.c:"i"==c[0]&&(c=parseInt(c.substr(1)),B(0==c%8),a=c/8));return a}),O:(function(c){return Math.max(A.B(c),A.c)}),ka:(function(c,a){var d={};return a?c.filter((function(c){return d[c[a]]?t:d[c[a]]=p})):c.filter((function(a){return d[a]?t:d[a]=p}))}),set:(function(){for(var c="object"===typeof arguments[0]?arguments[0]:arguments,a={},d=0;d<c.length;d++){a[c[d]]=0}return a}),Ea:8,A:(function(c,a,d){return"i64"==c||"double"==c||d?8:!c?Math.min(a,8):Math.min(a||(c?A.O(c):0),A.c)}),ha:(function(c){c.f=0;c.m=0;var a=[],d=-1;c.N=c.w.map((function(e){var f,g;A.pa(e)||A.qa(e)?(f=A.B(e),g=A.A(e,f)):A.sa(e)?(f=Types.types[e].f,g=A.A(r,Types.types[e].m)):"b"==e[0]?(f=e.substr(1)|0,g=1):b("Unclear type in struct: "+e+", in "+c.ua+" :: "+dump(Types.types[c.ua]));c.Wa&&(g=1);c.m=Math.max(c.m,g);e=A.k(c.f,g);c.f=e+f;0<=d&&a.push(e-d);return d=e}));c.f=A.k(c.f,c.m);0==a.length?c.M=c.f:1==A.ka(a).length&&(c.M=a[0]);c.Ra=1!=c.M;return c.N}),ma:(function(c,a,d){var e,f;if(a){d=d||0;e=("undefined"===typeof Types?A.Za:Types.types)[a];if(!e){return r}if(e.w.length!=c.length){return printErr("Number of named fields must match the type for "+a+": possibly duplicate struct names. Cannot return structInfo"),r}f=e.N}else{e={w:c.map((function(a){return a[0]}))},f=A.ha(e)}var g={Ha:e.f};a?c.forEach((function(a,c){if("string"===typeof a){g[a]=f[c]+d}else{var j,m;for(m in a){j=m}g[j]=A.ma(a[j],e.w[c],f[c])}})):c.forEach((function(a,c){g[a[1]]=f[c]}));return g}),u:(function(c,a,d){if(d&&d.length){return B(d.length==c.length-1),F[a].apply(r,d)}B(1==c.length);return F[a]()}),Ia:(function(c){var a=F.length;F.push(c);F.push(0);return a}),Xa:(function(c){F[c]=r}),j:(function(c){A.j.F||(A.j.F={});A.j.F[c]||(A.j.F[c]=1,v.g(c))}),z:{},Na:(function(c,a){B(a);A.z[c]||(A.z[c]=(function(){return A.u(a,c,arguments)}));return A.z[c]}),r:(function(){var c=[],a=0;this.X=(function(d){d&=255;a&&(c.push(d),a--);if(0==c.length){if(128>d){return String.fromCharCode(d)}c.push(d);a=191<d&&224>d?1:2;return""}if(0<a){return""}var d=c[0],e=c[1],f=c[2],d=191<d&&224>d?String.fromCharCode((d&31)<<6|e&63):String.fromCharCode((d&15)<<12|(e&63)<<6|f&63);c.length=0;return d});this.va=(function(a){for(var a=unescape(encodeURIComponent(a)),c=[],f=0;f<a.length;f++){c.push(a.charCodeAt(f))}return c})}),G:(function(c){var a=z;z=z+c|0;z=z+7>>3<<3;B((z|0)<(qd|0));return a}),aa:(function(c){var a=rd;rd=rd+(B(!sd),c)|0;rd=rd+7>>3<<3;return a}),o:(function(c){var a=td;td=td+(B(0<td),c)|0;td=td+7>>3<<3;td>=ud&&vd("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");return a}),k:(function(c,a){return Math.ceil(c/(a?a:8))*(a?a:8)}),ta:(function(c,a,d){return d?(c>>>0)+4294967296*(a>>>0):(c>>>0)+4294967296*(a|0)}),da:8,c:4,Ga:0},wd,xd,yd;function vd(c){v.print(c+":\n"+Error().stack);b("Assertion: "+c)}function B(c,a){c||vd("Assertion failed: "+a)}var zd=this;v.ccall=(function(c,a,d,e){return Ad(Bd(c),a,d,e)});function Bd(c){try{var a=zd.Module["_"+c];a||(a=eval("_"+c))}catch(d){}B(a,"Cannot call unknown function "+c+" (perhaps LLVM optimizations or closure removed it?)");return a}function Ad(c,a,d,e){function f(a,c){if("string"==c){if(a===r||a===i||0===a){return 0}g||(g=A.H());var d=A.G(a.length+1);Cd(a,d);return d}return"array"==c?(g||(g=A.H()),d=A.G(a.length),Dd(a,d),d):a}var g=0,h=0,e=e?e.map((function(a){return f(a,d[h++])})):[];c=c.apply(r,e);"string"==a?a=Ed(c):(B("array"!=a),a=c);g&&A.$(g);return a}v.cwrap=(function(c,a,d){var e=Bd(c);return(function(){return Ad(e,a,d,Array.prototype.slice.call(arguments))})});function Fd(c,a,d){d=d||"i8";"*"===d.charAt(d.length-1)&&(d="i32");switch(d){case"i1":I[c]=a;break;case"i8":I[c]=a;break;case"i16":Gd[c>>1]=a;break;case"i32":J[c>>2]=a;break;case"i64":yd=[a>>>0,Math.min(Math.floor(a/4294967296),4294967295)>>>0];J[c>>2]=yd[0];J[c+4>>2]=yd[1];break;case"float":Hd[c>>2]=a;break;case"double":Id[c>>3]=a;break;default:vd("invalid type for setValue: "+d)}}v.setValue=Fd;v.getValue=(function(c,a){a=a||"i8";"*"===a.charAt(a.length-1)&&(a="i32");switch(a){case"i1":return I[c];case"i8":return I[c];case"i16":return Gd[c>>1];case"i32":return J[c>>2];case"i64":return J[c>>2];case"float":return Hd[c>>2];case"double":return Id[c>>3];default:vd("invalid type for setValue: "+a)}return r});var Jd=0,Kd=1,M=2,Ld=4;v.ALLOC_NORMAL=Jd;v.ALLOC_STACK=Kd;v.ALLOC_STATIC=M;v.ALLOC_DYNAMIC=3;v.ALLOC_NONE=Ld;function O(c,a,d,e){var f,g;"number"===typeof c?(f=p,g=c):(f=t,g=c.length);var h="string"===typeof a?a:r,d=d==Ld?e:[Md,A.G,A.aa,A.o][d===i?M:d](Math.max(g,h?1:a.length));if(f){e=d;B(0==(d&3));for(c=d+(g&-4);e<c;e+=4){J[e>>2]=0}for(c=d+g;e<c;){I[e++|0]=0}return d}if("i8"===h){return x.set(new Uint8Array(c),d),d}for(var e=0,k,j;e<g;){var m=c[e];"function"===typeof m&&(m=A.Oa(m));f=h||a[e];0===f?e++:(B(f,"Must know what type to store in allocate!"),"i64"==f&&(f="i32"),Fd(d+e,m,f),j!==f&&(k=A.B(f),j=f),e+=k)}return d}v.allocate=O;function Ed(c,a){for(var d=t,e,f=0;;){e=x[c+f|0];if(128<=e){d=p}else{if(0==e&&!a){break}}f++;if(a&&f==a){break}}a||(a=f);var g="";if(!d){for(;0<a;){e=String.fromCharCode.apply(String,x.subarray(c,c+Math.min(a,1024))),g=g?g+e:e,c+=1024,a-=1024}return g}d=new A.r;for(f=0;f<a;f++){B(c+f<ud),e=x[c+f|0],g+=d.X(e)}return g}v.Pointer_stringify=Ed;var Nd=4096,I,x,Gd,Od,J,ee,Hd,Id,pe=0,rd=0,sd=t,qe=0,z=0,qd=0,re=0,td=0,ud=v.TOTAL_MEMORY||16777216;B(!!Int32Array&&!!Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"Cannot fallback to non-typed array case: Code is too specialized");var se=new ArrayBuffer(ud);I=new Int8Array(se);Gd=new Int16Array(se);J=new Int32Array(se);x=new Uint8Array(se);Od=new Uint16Array(se);ee=new Uint32Array(se);Hd=new Float32Array(se);Id=new Float64Array(se);J[0]=255;B(255===x[0]&&0===x[3],"Typed arrays 2 must be run on a little-endian system");v.HEAP=i;v.HEAP8=I;v.HEAP16=Gd;v.HEAP32=J;v.HEAPU8=x;v.HEAPU16=Od;v.HEAPU32=ee;v.HEAPF32=Hd;v.HEAPF64=Id;function te(c){for(;0<c.length;){var a=c.shift();if("function"==typeof a){a()}else{var d=a.l;"number"===typeof d?a.s===i?A.u("v",d):A.u("vi",d,[a.s]):d(a.s===i?r:a.s)}}}var ue=[],ve=[],we=[],xe=t;function ye(c,a,d){c=(new A.r).va(c);d&&(c.length=d);a||c.push(0);return c}v.intArrayFromString=ye;v.intArrayToString=(function(c){for(var a=[],d=0;d<c.length;d++){var e=c[d];255<e&&(B(t,"Character code "+e+" ("+String.fromCharCode(e)+") at offset "+d+" not in 0x00-0xFF."),e&=255);a.push(String.fromCharCode(e))}return a.join("")});function Cd(c,a,d){c=ye(c,d);for(d=0;d<c.length;){I[a+d|0]=c[d],d+=1}}v.writeStringToMemory=Cd;function Dd(c,a){for(var d=0;d<c.length;d++){I[a+d|0]=c[d]}}v.writeArrayToMemory=Dd;function ze(c,a){return 0<=c?c:32>=a?2*Math.abs(1<<a-1)+c:Math.pow(2,a)+c}function Ae(c,a){if(0>=c){return c}var d=32>=a?Math.abs(1<<a-1):Math.pow(2,a-1);if(c>=d&&(32>=a||c>d)){c=-2*d+c}return c}Math.P||(Math.P=(function(c,a){var d=c&65535,e=a&65535;return d*e+((c>>>16)*e+d*(a>>>16)<<16)|0}));var Be=0,Ce={},Ff=t,Gf=r;function Hf(c){Be++;v.monitorRunDependencies&&v.monitorRunDependencies(Be);c?(B(!Ce[c]),Ce[c]=1,Gf===r&&"undefined"!==typeof setInterval&&(Gf=setInterval((function(){var a=t,c;for(c in Ce){a||(a=p,v.g("still waiting on run dependencies:")),v.g("dependency: "+c)}a&&v.g("(end of list)")}),6e3))):v.g("warning: run dependency added without ID")}v.addRunDependency=Hf;function If(c){Be--;v.monitorRunDependencies&&v.monitorRunDependencies(Be);c?(B(Ce[c]),delete Ce[c]):v.g("warning: run dependency removed without ID");0==Be&&(Gf!==r&&(clearInterval(Gf),Gf=r),!Ff&&Jf&&Kf())}v.removeRunDependency=If;v.preloadedImages={};v.preloadedAudios={};var pe=8,rd=pe+1776,ue=ue.concat([{l:(function(){function c(a){var c=[a[0],r].concat(a.slice(1)),d=a=f,e=g,h=c.length;2>h&&Aa("argTypes array size mismatch! Must at least get return value and 'this' types!");var k=c[1]!==r&&t;!k&&!F[26]&&Aa("Global function "+d+" is not defined!");for(var j="",m="",l=0;l<h-2;++l){j+=(0!==l?", ":"")+"arg"+l,m+=(0!==l?", ":"")+"arg"+l+"Wired"}for(var j="return function "+La(d)+"("+j+") {\nif (arguments.length !== "+(h-2)+") {\nthrowBindingError('function "+d+" called with ' + arguments.length + ' arguments, expected "+(h-2)+" args!');\n}\n",y=t,l=1;l<c.length;++l){if(c[l]!==r&&c[l].d===i){y=p;break}}y&&(j+="var destructors = [];\n");var D=y?"destructors":"null",d="throwBindingError classType invoker fn runDestructors retType classParam".split(" "),e=[Aa,r,e,26,ic,c[0],c[1]];k&&(j+="var thisWired = classParam.toWireType("+D+", this);\n");for(l=0;l<h-2;++l){j+="var arg"+l+"Wired = argType"+l+".toWireType("+D+", arg"+l+"); // "+c[l+2].name+"\n",d.push("argType"+l),e.push(c[l+2])}k&&(m="thisWired"+(0<m.length?", ":"")+m);h="void"!==c[0].name;j+=(h?"var rv = ":"")+"invoker(fn"+(0<m.length?", ":"")+m+");\n";if(y){j+="runDestructors(destructors);\n"}else{for(l=k?1:2;l<c.length;++l){k=1===l?"thisWired":"arg"+(l-2)+"Wired",c[l].d!==r&&(j+=k+"_dtor("+k+"); // "+c[l].name+"\n",d.push(k+"_dtor"),e.push(c[l].d))}}h&&(j+="return retType.fromWireType(rv);\n");d.push(j+"}\n");c=Function;c instanceof Function||b(new TypeError("new_ called with constructor type "+typeof c+" which is not a function"));l=Ba(c.name,aa());l.prototype=c.prototype;l=new l;d=c.apply(l,d);d=(d instanceof Object?d:l).apply(r,e);v.hasOwnProperty(a)||b(new sa("Replacing nonexistant public symbol"));i!==v[a].b?v[a].b[3]=d:v[a]=d;a=[];a.length!==n.length&&b(new sa("Mismatched type converter count"));for(d=0;d<n.length;++d){$a(n[d],a[d])}}function a(){function a(c){!e[c]&&!Na[c]&&(Za[c]?Za[c].forEach(a):(d.push(c),e[c]=p))}var c="Cannot call "+f+" due to unbound types",d=[],e={};h.forEach(a);b(new wa(c+": "+d.map(Hb).join([", "])))}var d=z;z=z+24|0;B((z|0)<(qd|0));J[(d|0)>>2]=4;var e=d+4|0;J[e>>2]=1600;J[(d+8|0)>>2]=Lf;J[(d+12|0)>>2]=Mf;J[(d+16|0)>>2]=1656;for(var f=360,g=32,h=[],k=0;4>k;k++){h.push(J[(e>>2)+k])}var f=Gb(f),g=F[g],j=f;if(v.hasOwnProperty(j)){i!==v[j].b&&i!==v[j].b[3]&&Aa("Cannot register public name '"+j+"' twice");var m=v;i===m[j].b&&(e=m[j],m[j]=(function(){m[j].b.hasOwnProperty(arguments.length)||Aa("Function '"+j+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+m[j].b+")!");return m[j].b[arguments.length].apply(this,arguments)}),m[j].b=[],m[j].b[e.Ka]=e);v.hasOwnProperty(3)&&Aa("Cannot register multiple overloads of a function with the same number of arguments (3)!");v[j].b[3]=a}else{v[j]=a,v[j].Ua=3}var n=[];n.forEach((function(a){Za[a]=h}));var l=Array(h.length),y=[],D=0;h.forEach((function(a,d){Na.hasOwnProperty(a)?l[d]=Na[a]:(y.push(a),Oa.hasOwnProperty(a)||(Oa[a]=[]),Oa[a].push((function(){l[d]=Na[a];++D;D===y.length&&c(l)})))}));0===y.length&&c(l);z=d})},{l:(function(){var c;c=Gb(136);$a(1600,{name:c,fromWireType:aa(),toWireType:aa()});c=Gb(288);$a(1608,{name:c,fromWireType:(function(a){return!!a}),toWireType:(function(a,c){return c?1:0}),d:r});gc(Nf,128,-128,127);gc(Of,112,-128,127);gc(Pf,96,0,255);gc(Qf,88,-32768,32767);gc(Rf,72,0,65535);gc(Lf,64,-2147483648,2147483647);gc(Sf,48,0,-1);gc(Tf,40,-2147483648,2147483647);gc(Uf,344,0,-1);hc(Mf,336);hc(Vf,296);c=Gb(272);$a(1656,{name:c,fromWireType:(function(a){for(var c=ee[a>>2],f=Array(c),g=0;g<c;++g){f[g]=String.fromCharCode(x[a+4+g])}fc();return f.join("")}),toWireType:(function(a,c){function f(a,c){return a[c]}function g(a,c){return a.charCodeAt(c)}c instanceof ArrayBuffer&&(c=new Uint8Array(c));var h;c instanceof Uint8Array?h=f:c instanceof Int8Array?h=f:"string"===typeof c?h=g:Aa("Cannot pass non-string to std::string");var k=c.length,j=Md(4+k);ee[j>>2]=k;for(var m=0;m<k;++m){var n=h(c,m);255<n&&(fc(),Aa("String has UTF-16 code units that do not fit in 8 bits"));x[j+4+m]=n}a!==r&&a.push(fc,j);return j}),d:(function(){fc()})});c=Gb(184);$a(1632,{name:c,fromWireType:(function(a){for(var c=ee[a>>2],f=Array(c),a=a+4>>2,g=0;g<c;++g){f[g]=String.fromCharCode(ee[a+g])}fc();return f.join("")}),toWireType:(function(a,c){var f=c.length,g=Md(4+4*f);ee[g>>2]=f;for(var h=g+4>>2,k=0;k<f;++k){ee[h+k]=c.charCodeAt(k)}a!==r&&a.push(fc,g);return g}),d:(function(){fc()})});c=Gb(168);$a(1680,{name:c,fromWireType:(function(a){var c=ca[a].value;a&&0===--ca[a].wa&&(ca[a]=i,ja.push(a));return c}),toWireType:(function(a,c){var f=ja.length?ja.pop():ca.length;ca[f]={wa:1,value:c};return f}),d:r});var a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];c=Gb(144);$a(1688,{name:c,fromWireType:(function(c){return new a[ee[c>>2]](I.buffer,ee[(c>>2)+2],ee[(c>>2)+1])})})})}]),P,Wf,Rf,Qf,Uf,Tf,Sf,Lf,Pf,Mf,Vf,Nf,Of;P=O([0,0,0,0,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",M);Wf=O([0,0,0,0,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",M);Rf=O([0,0,0,0,0,0,0,0],"i8",M);Qf=O([0,0,0,0,0,0,0,0],"i8",M);Uf=O([0,0,0,0,0,0,0,0],"i8",M);Tf=O([0,0,0,0,0,0,0,0],"i8",M);Sf=O([0,0,0,0,0,0,0,0],"i8",M);Lf=O([0,0,0,0,0,0,0,0],"i8",M);Pf=O([0,0,0,0,0,0,0,0],"i8",M);Mf=O([0,0,0,0,0,0,0,0],"i8",M);Vf=O([0,0,0,0,0,0,0,0],"i8",M);Nf=O([0,0,0,0,0,0,0,0],"i8",M);Of=O([0,0,0,0,0,0,0,0],"i8",M);O([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,108,111,110,103,0,0,0,0,117,110,115,105,103,110,101,100,32,105,110,116,0,0,0,0,105,110,116,0,0,0,0,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,115,104,111,114,116,0,0,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,0,0,115,105,103,110,101,100,32,99,104,97,114,0,0,0,0,0,99,104,97,114,0,0,0,0,118,111,105,100,0,0,0,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,115,116,100,58,58,119,115,116,114,105,110,103,0,0,0,0,47,118,111,108,47,98,105,103,50,52,48,47,115,110,97,112,47,106,105,109,47,119,111,114,107,47,101,109,115,99,114,105,112,116,101,110,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,0,0,0,0,0,0,115,116,100,58,58,115,116,114,105,110,103,0,0,0,0,0,98,111,111,108,0,0,0,0,100,111,117,98,108,101,0,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,0,0,0,102,108,111,97,116,0,0,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,0,0,112,114,105,110,116,95,115,111,109,101,95,115,116,117,102,102,0,0,0,0,0,0,0,0,112,114,105,110,116,95,115,111,109,101,95,115,116,117,102,102,58,32,37,100,44,32,37,102,44,32,37,115,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,111,105,100,32,115,116,100,58,58,95,95,49,58,58,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,60,116,114,117,101,62,58,58,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,40,41,32,99,111,110,115,116,0,0,0,0,0,0,0,0,0,0,0,0,160,6,0,0,24,0,0,0,4,0,0,0,20,0,0,0,42,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,6,0,0,24,0,0,0,2,0,0,0,20,0,0,0,42,0,0,0,38,0,0,0,34,0,0,0,18,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,118,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,115,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,98,0,0,0,0,0,0,0,97,0,0,0,0,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,0,0,0,0,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,69,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,208,3,0,0,32,4,0,0,208,3,0,0,120,4,0,0,0,0,0,0,136,4,0,0,0,0,0,0,152,4,0,0,248,3,0,0,192,4,0,0,0,0,0,0,1,0,0,0,88,6,0,0,0,0,0,0,248,3,0,0,0,5,0,0,0,0,0,0,1,0,0,0,88,6,0,0,0,0,0,0,0,0,0,0,64,5,0,0,0,0,0,0,88,5,0,0,0,0,0,0,120,5,0,0,224,6,0,0,0,0,0,0,0,0,0,0,160,5,0,0,208,6,0,0,0,0,0,0,0,0,0,0,200,5,0,0,208,6,0,0,0,0,0,0,0,0,0,0,240,5,0,0,224,6,0,0,0,0,0,0,0,0,0,0,24,6,0,0,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",Ld,A.da);J[P+8>>2]=24;J[P+12>>2]=22;J[P+16>>2]=20;J[P+20>>2]=42;J[P+24>>2]=38;J[P+28>>2]=12;J[P+32>>2]=10;J[P+36>>2]=6;J[Wf+8>>2]=24;J[Wf+12>>2]=36;J[Wf+16>>2]=20;J[Wf+20>>2]=42;J[Wf+24>>2]=38;J[Wf+28>>2]=40;J[Wf+32>>2]=30;J[Wf+36>>2]=8;J[Rf>>2]=976;J[Rf+4>>2]=1064;J[Qf>>2]=976;J[Qf+4>>2]=1072;J[Uf>>2]=976;J[Uf+4>>2]=1080;J[Tf>>2]=976;J[Tf+4>>2]=1088;J[Sf>>2]=976;J[Sf+4>>2]=1096;J[Lf>>2]=976;J[Lf+4>>2]=1104;J[Pf>>2]=976;J[Pf+4>>2]=1112;J[Mf>>2]=976;J[Mf+4>>2]=1120;J[Vf>>2]=976;J[Vf+4>>2]=1128;J[Nf>>2]=976;J[Nf+4>>2]=1136;J[Of>>2]=976;J[Of+4>>2]=1152;J[404]=Wf+8|0;J[406]=Wf+8|0;J[420]=Wf+8|0;J[422]=Wf+8|0;J[424]=P+8|0;J[428]=P+8|0;J[432]=P+8|0;J[436]=P+8|0;J[440]=P+8|0;var Xf=A.k(O(12,"i8",M),8);B(0==Xf%8);var Yf=13,Zf=9,$f=22,ag=5,bg=21,cg=6,dg=0;function V(c){J[dg>>2]=c}var eg,fg=O(1,"i32*",M),gg=O(1,"i32*",M),hg=O(1,"i32*",M),ig=O(1,"i32*",M),jg=2,X=[r],kg=p;function lg(c,a){if("string"!==typeof c){return r}a===i&&(a="/");c&&"/"==c[0]&&(a="");for(var d=(a+"/"+c).split("/").reverse(),e=[""];d.length;){var f=d.pop();""==f||"."==f||(".."==f?1<e.length&&e.pop():e.push(f))}return 1==e.length?"/":e.join("/")}function mg(c,a,d){var e={ra:t,v:t,error:0,name:r,path:r,object:r,U:t,W:r,V:r},c=lg(c);if("/"==c){e.ra=p,e.v=e.U=p,e.name="/",e.path=e.W="/",e.object=e.V=ng}else{if(c!==r){for(var d=d||0,c=c.slice(1).split("/"),f=ng,g=[""];c.length;){1==c.length&&f.h&&(e.U=p,e.W=1==g.length?"/":g.join("/"),e.V=f,e.name=c[0]);var h=c.shift();if(f.h){if(f.Y){if(!f.a.hasOwnProperty(h)){e.error=2;break}}else{e.error=Yf;break}}else{e.error=20;break}f=f.a[h];if(f.link&&!(a&&0==c.length)){if(40<d){e.error=40;break}e=lg(f.link,g.join("/"));e=mg([e].concat(c).join("/"),a,d+1);break}g.push(h);0==c.length&&(e.v=p,e.path=g.join("/"),e.object=f)}}}return e}function og(c){pg();c=mg(c,i);if(c.v){return c.object}V(c.error);return r}function qg(c,a,d,e,f){c||(c="/");"string"===typeof c&&(c=og(c));c||(V(Yf),b(Error("Parent path must exist.")));c.h||(V(20),b(Error("Parent must be a folder.")));!c.write&&!kg&&(V(Yf),b(Error("Parent folder must be writeable.")));if(!a||"."==a||".."==a){V(2),b(Error("Name must not be empty."))}c.a.hasOwnProperty(a)&&(V(17),b(Error("Can't overwrite object.")));c.a[a]={Y:e===i?p:e,write:f===i?t:f,timestamp:Date.now(),oa:jg++};for(var g in d){d.hasOwnProperty(g)&&(c.a[a][g]=d[g])}return c.a[a]}function rg(c,a,d,e){return qg(c,a,{h:p,e:t,a:{}},d,e)}function sg(c,a,d,e){c=og(c);c===r&&b(Error("Invalid parent."));for(a=a.split("/").reverse();a.length;){var f=a.pop();f&&(c.a.hasOwnProperty(f)||rg(c,f,d,e),c=c.a[f])}return c}function tg(c,a,d,e,f){d.h=t;return qg(c,a,d,e,f)}function ug(c,a,d,e,f){if("string"===typeof d){for(var g=Array(d.length),h=0,k=d.length;h<k;++h){g[h]=d.charCodeAt(h)}d=g}d={e:t,a:d.subarray?d.subarray(0):d};return tg(c,a,d,e,f)}function vg(c,a,d,e){!d&&!e&&b(Error("A device must have at least one callback defined."));return tg(c,a,{e:p,input:d,i:e},Boolean(d),Boolean(e))}function pg(){ng||(ng={Y:p,write:p,h:p,e:t,timestamp:Date.now(),oa:1,a:{}})}var wg,ng;function xg(c,a,d){var e=X[c];if(e){if(e.p){if(0>d){return V($f),-1}if(e.object.e){if(e.object.i){for(var f=0;f<d;f++){try{e.object.i(I[a+f|0])}catch(g){return V(ag),-1}}e.object.timestamp=Date.now();return f}V(cg);return-1}f=e.position;c=X[c];if(!c||c.object.e){V(Zf),a=-1}else{if(c.p){if(c.object.h){V(bg),a=-1}else{if(0>d||0>f){V($f),a=-1}else{for(var h=c.object.a;h.length<f;){h.push(0)}for(var k=0;k<d;k++){h[f+k]=x[a+k|0]}c.object.timestamp=Date.now();a=k}}}else{V(Yf),a=-1}}-1!=a&&(e.position+=a);return a}V(Yf);return-1}V(Zf);return-1}function yg(c){for(var c=c|0,a=0,a=c;I[a];){a=a+1|0}return a-c|0}function zg(c){function a(a){var d;"double"===a?d=Id[c+g>>3]:"i64"==a?(d=[J[c+g>>2],J[c+(g+8)>>2]],g+=8):(a="i32",d=J[c+g>>2]);g+=Math.max(A.O(a),A.A(a,r,p));return d}for(var d=J[gg>>2],e,f=384,g=0,h=[],k,j;;){var m=f;k=I[f];if(0===k){break}j=I[f+1|0];if(37==k){var n=t,l=e=t,y=t;a:for(;;){switch(j){case 43:n=p;break;case 45:e=p;break;case 35:l=p;break;case 48:if(y){break a}else{y=p;break};default:break a}f++;j=I[f+1|0]}var D=0;if(42==j){D=a("i32"),f++,j=I[f+1|0]}else{for(;48<=j&&57>=j;){D=10*D+(j-48),f++,j=I[f+1|0]}}var K=t;if(46==j){var w=0,K=p;f++;j=I[f+1|0];if(42==j){w=a("i32"),f++}else{for(;;){j=I[f+1|0];if(48>j||57<j){break}w=10*w+(j-48);f++}}j=I[f+1|0]}else{w=6}var u;switch(String.fromCharCode(j)){case"h":j=I[f+2|0];104==j?(f++,u=1):u=2;break;case"l":j=I[f+2|0];108==j?(f++,u=8):u=4;break;case"L":;case"q":;case"j":u=8;break;case"z":;case"t":;case"I":u=4;break;default:u=r}u&&f++;j=I[f+1|0];switch(String.fromCharCode(j)){case"d":;case"i":;case"u":;case"o":;case"x":;case"X":;case"p":m=100==j||105==j;u=u||4;var s=k=a("i"+8*u),q;8==u&&(k=A.ta(k[0],k[1],117==j));4>=u&&(k=(m?Ae:ze)(k&Math.pow(256,u)-1,8*u));var G=Math.abs(k),m="";if(100==j||105==j){q=8==u&&Ag?Ag.stringify(s[0],s[1],r):Ae(k,8*u).toString(10)}else{if(117==j){q=8==u&&Ag?Ag.stringify(s[0],s[1],p):ze(k,8*u).toString(10),k=Math.abs(k)}else{if(111==j){q=(l?"0":"")+G.toString(8)}else{if(120==j||88==j){m=l&&0!=k?"0x":"";if(8==u&&Ag){if(s[1]){q=(s[1]>>>0).toString(16);for(l=(s[0]>>>0).toString(16);8>l.length;){l="0"+l}q+=l}else{q=(s[0]>>>0).toString(16)}}else{if(0>k){k=-k;q=(G-1).toString(16);s=[];for(l=0;l<q.length;l++){s.push((15-parseInt(q[l],16)).toString(16))}for(q=s.join("");q.length<2*u;){q="f"+q}}else{q=G.toString(16)}}88==j&&(m=m.toUpperCase(),q=q.toUpperCase())}else{112==j&&(0===G?q="(nil)":(m="0x",q=G.toString(16)))}}}}if(K){for(;q.length<w;){q="0"+q}}for(n&&(m=0>k?"-"+m:"+"+m);m.length+q.length<D;){e?q+=" ":y?q="0"+q:m=" "+m}q=m+q;q.split("").forEach((function(a){h.push(a.charCodeAt(0))}));break;case"f":;case"F":;case"e":;case"E":;case"g":;case"G":k=a("double");if(isNaN(k)){q="nan",y=t}else{if(isFinite(k)){K=t;u=Math.min(w,20);if(103==j||71==j){K=p,w=w||1,u=parseInt(k.toExponential(u).split("e")[1],10),w>u&&-4<=u?(j=(103==j?"f":"F").charCodeAt(0),w-=u+1):(j=(103==j?"e":"E").charCodeAt(0),w--),u=Math.min(w,20)}if(101==j||69==j){q=k.toExponential(u),/[eE][-+]\d$/.test(q)&&(q=q.slice(0,-1)+"0"+q.slice(-1))}else{if(102==j||70==j){q=k.toFixed(u),0===k&&(0>k||0===k&&-Infinity===1/k)&&(q="-"+q)}}m=q.split("e");if(K&&!l){for(;1<m[0].length&&-1!=m[0].indexOf(".")&&("0"==m[0].slice(-1)||"."==m[0].slice(-1));){m[0]=m[0].slice(0,-1)}}else{for(l&&-1==q.indexOf(".")&&(m[0]+=".");w>u++;){m[0]+="0"}}q=m[0]+(1<m.length?"e"+m[1]:"");69==j&&(q=q.toUpperCase());n&&0<=k&&(q="+"+q)}else{q=(0>k?"-":"")+"inf",y=t}}for(;q.length<D;){q=e?q+" ":y&&("-"==q[0]||"+"==q[0])?q[0]+"0"+q.slice(1):(y?"0":" ")+q}97>j&&(q=q.toUpperCase());q.split("").forEach((function(a){h.push(a.charCodeAt(0))}));break;case"s":y=(n=a("i8*"))?yg(n):6;K&&(y=Math.min(y,w));if(!e){for(;y<D--;){h.push(32)}}if(n){for(l=0;l<y;l++){h.push(x[n++|0])}}else{h=h.concat(ye("(null)".substr(0,y),p))}if(e){for(;y<D--;){h.push(32)}}break;case"c":for(e&&h.push(a("i8"));0<--D;){h.push(32)}e||h.push(a("i8"));break;case"n":e=a("i32*");J[e>>2]=h.length;break;case"%":h.push(k);break;default:for(l=m;l<f+2;l++){h.push(I[l])}}f+=2}else{h.push(k),f+=1}}e=h;f=A.H();q=O(e,"i8",Kd);e=1*e.length;0!=e&&-1==xg(d,q,e)&&X[d]&&(X[d].error=p);A.$(f)}function Y(){b("abort() at "+Error().stack)}function Bg(c,a,d){c|=0;a|=0;d|=0;if((c&3)==(a&3)){for(;c&3;){if(0==(d|0)){return}I[c]=I[a];c=c+1|0;a=a+1|0;d=d-1|0}for(;4<=(d|0);){J[c>>2]=J[a>>2],c=c+4|0,a=a+4|0,d=d-4|0}}for(;0<(d|0);){I[c]=I[a],c=c+1|0,a=a+1|0,d=d-1|0}}function Cg(){switch(8){case 8:return Nd;case 54:;case 56:;case 21:;case 61:;case 63:;case 22:;case 67:;case 23:;case 24:;case 25:;case 26:;case 27:;case 69:;case 28:;case 101:;case 70:;case 71:;case 29:;case 30:;case 199:;case 75:;case 76:;case 32:;case 43:;case 44:;case 80:;case 46:;case 47:;case 45:;case 48:;case 49:;case 42:;case 82:;case 33:;case 7:;case 108:;case 109:;case 107:;case 112:;case 119:;case 121:return 200809;case 13:;case 104:;case 94:;case 95:;case 34:;case 35:;case 77:;case 81:;case 83:;case 84:;case 85:;case 86:;case 87:;case 88:;case 89:;case 90:;case 91:;case 94:;case 95:;case 110:;case 111:;case 113:;case 114:;case 115:;case 116:;case 117:;case 118:;case 120:;case 40:;case 16:;case 79:;case 19:return-1;case 92:;case 93:;case 5:;case 72:;case 6:;case 74:;case 92:;case 93:;case 96:;case 97:;case 98:;case 99:;case 102:;case 103:;case 105:return 1;case 38:;case 66:;case 50:;case 51:;case 4:return 1024;case 15:;case 64:;case 41:return 32;case 55:;case 37:;case 17:return 2147483647;case 18:;case 1:return 47839;case 59:;case 57:return 99;case 68:;case 58:return 2048;case 0:return 2097152;case 3:return 65536;case 14:return 32768;case 73:return 32767;case 39:return 16384;case 60:return 1e3;case 106:return 700;case 52:return 256;case 62:return 255;case 2:return 100;case 65:return 64;case 36:return 20;case 100:return 16;case 20:return 6;case 53:return 4;case 10:return 1}V($f);return-1}function Dg(c){Eg||(td=td+4095>>12<<12,Eg=p,B(A.o),Mh=A.o,A.o=(function(){vd("cannot dynamically allocate, sbrk now has control")}));var a=td;0!=c&&Mh(c);return a}var Eg,Mh;function Rj(c,a){var d,c=c|0;d=0;var a=a|0,e=0,f=0,g=0,h=0,e=c+a|0;if(20<=(a|0)){d&=255;h=c&3;f=d|d<<8|d<<16|d<<24;g=e&-4;if(h){for(h=c+4-h|0;(c|0)<(h|0);){I[c]=d,c=c+1|0}}for(;(c|0)<(g|0);){J[c>>2]=f,c=c+4|0}}for(;(c|0)<(e|0);){I[c]=d,c=c+1|0}}function fc(){A.j("using stub free (reference it from C to have the real one included)")}var Sj=t,Tj=t,Uj=t,Vj=i,Wj=i;function Xj(c,a){function d(){Tj=t;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement)===e?(e.J=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen,e.J=e.J.bind(document),Vj&&e.D(),Tj=p,Wj&&Yj()):Wj&&Zj();if(v.onFullScreen){v.onFullScreen(Tj)}}this.T=c;this.Z=a;"undefined"===typeof this.T&&(this.T=p);"undefined"===typeof this.Z&&(this.Z=t);var e=v.canvas;this.la||(this.la=p,document.addEventListener("fullscreenchange",d,t),document.addEventListener("mozfullscreenchange",d,t),document.addEventListener("webkitfullscreenchange",d,t));e.xa=e.requestFullScreen||e.mozRequestFullScreen||(e.webkitRequestFullScreen?(function(){e.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}):r);e.xa()}var $j=[];function ak(){var c=v.canvas;$j.forEach((function(a){a(c.width,c.height)}))}function Yj(){var c=v.canvas;this.Aa=c.width;this.za=c.height;c.width=screen.width;c.height=screen.height;c=ee[SDL.screen+0*A.c>>2];J[SDL.screen+0*A.c>>2]=c|8388608;ak()}function Zj(){var c=v.canvas;c.width=this.Aa;c.height=this.za;c=ee[SDL.screen+0*A.c>>2];J[SDL.screen+0*A.c>>2]=c&-8388609;ak()}var bk,ck,dk,ek;ue.unshift({l:(function(){if(!v.noFSInit&&!wg){var c,a,d,e=(function(c){c===r||10===c?(a.q(a.buffer.join("")),a.buffer=[]):a.buffer.push(k.X(c))});B(!wg,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");wg=p;pg();c=c||v.stdin;a=a||v.stdout;d=d||v.stderr;var f=p,g=p,h=p;c||(f=t,c=(function(){if(!c.t||!c.t.length){var a;"undefined"!=typeof window&&"function"==typeof window.prompt?(a=window.prompt("Input: "),a===r&&(a=String.fromCharCode(0))):"function"==typeof readline&&(a=readline());a||(a="");c.t=ye(a+"\n",p)}return c.t.shift()}));var k=new A.r;a||(g=t,a=e);a.q||(a.q=v.print);a.buffer||(a.buffer=[]);d||(h=t,d=e);d.q||(d.q=v.print);d.buffer||(d.buffer=[]);try{rg("/","tmp",p,p)}catch(j){}var e=rg("/","dev",p,p),m=vg(e,"stdin",c),n=vg(e,"stdout",r,a);d=vg(e,"stderr",r,d);vg(e,"tty",c,a);X[1]={path:"/dev/stdin",object:m,position:0,R:p,p:t,Q:t,S:!f,error:t,K:t,ba:[]};X[2]={path:"/dev/stdout",object:n,position:0,R:t,p:p,Q:t,S:!g,error:t,K:t,ba:[]};X[3]={path:"/dev/stderr",object:d,position:0,R:t,p:p,Q:t,S:!h,error:t,K:t,ba:[]};J[fg>>2]=1;J[gg>>2]=2;J[hg>>2]=3;sg("/","dev/shm/tmp",p,p);for(f=X.length;f<Math.max(fg,gg,hg)+4;f++){X[f]=r}X[fg]=X[1];X[gg]=X[2];X[hg]=X[3];for(var l in X){X.hasOwnProperty(l)&&B(0<=l&&l<X.length)}for(l=0;l<X.length;l++){B("object"==typeof X[l])}O([O([0,0,0,0,fg,0,0,0,gg,0,0,0,hg,0,0,0],"void*",3)],"void*",Ld,ig)}})});ve.push({l:(function(){kg=t})});we.push({l:(function(){wg&&(X[2]&&0<X[2].object.i.buffer.length&&X[2].object.i(10),X[3]&&0<X[3].object.i.buffer.length&&X[3].object.i(10))})});v.FS_createFolder=rg;v.FS_createPath=sg;v.FS_createDataFile=ug;v.FS_createPreloadedFile=(function(c,a,d,e,f,g,h,k){function j(){Uj=document.pointerLockElement===y||document.mozPointerLockElement===y||document.webkitPointerLockElement===y}function m(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]}function n(d){function j(d){k||ug(c,a,d,e,f);g&&g();If("cp "+D)}var l=t;v.preloadPlugins.forEach((function(a){!l&&a.canHandle(D)&&(a.handle(d,D,j,(function(){h&&h();If("cp "+D)})),l=p)}));l||j(d)}if(!bk){bk=p;try{new Blob,ck=p}catch(l){ck=t,console.log("warning: no blob constructor, cannot create blobs with mimetypes")}dk="undefined"!=typeof MozBlobBuilder?MozBlobBuilder:"undefined"!=typeof WebKitBlobBuilder?WebKitBlobBuilder:!ck?console.log("warning: no BlobBuilder"):r;ek="undefined"!=typeof window?window.URL?window.URL:window.webkitURL:console.log("warning: cannot create object URLs");v.preloadPlugins||(v.preloadPlugins=[]);v.preloadPlugins.push({canHandle:(function(a){return!v.Ta&&/\.(jpg|jpeg|png|bmp)$/.exec(a)}),handle:(function(a,c,d,e){var f=r;if(ck){try{f=new Blob([a],{type:m(c)})}catch(g){A.j("Blob constructor present but fails: "+g+"; falling back to blob builder")}}f||(f=new dk,f.append((new Uint8Array(a)).buffer),f=f.getBlob());var h=ek.createObjectURL(f);B("string"==typeof h,"createObjectURL must return a url as a string");var j=new Image;j.onload=(function(){B(j.complete,"Image "+c+" could not be decoded");var e=document.createElement("canvas");e.width=j.width;e.height=j.height;e.getContext("2d").drawImage(j,0,0);v.preloadedImages[c]=e;ek.revokeObjectURL(h);d&&d(a)});j.onerror=(function(){console.log("Image "+h+" could not be decoded");e&&e()});j.src=h})});v.preloadPlugins.push({canHandle:(function(a){return!v.Sa&&a.substr(-4)in{".ogg":1,".wav":1,".mp3":1}}),handle:(function(a,c,d,e){function f(e){h||(h=p,v.preloadedAudios[c]=e,d&&d(a))}function g(){h||(h=p,v.preloadedAudios[c]=new Audio,e&&e())}var h=t;if(ck){try{var j=new Blob([a],{type:m(c)})}catch(k){return g()}j=ek.createObjectURL(j);B("string"==typeof j,"createObjectURL must return a url as a string");var l=new Audio;l.addEventListener("canplaythrough",(function(){f(l)}),t);l.onerror=(function(){if(!h){console.log("warning: browser could not fully decode audio "+c+", trying slower base64 approach");for(var d="",e=0,g=0,j=0;j<a.length;j++){e=e<<8|a[j];for(g+=8;6<=g;){var k=e>>g-6&63,g=g-6,d=d+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[k]}}2==g?(d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(e&3)<<4],d+="=="):4==g&&(d+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(e&15)<<2],d+="=");l.src="data:audio/x-"+c.substr(-3)+";base64,"+d;f(l)}});l.src=j;setTimeout((function(){f(l)}),1e4)}else{return g()}})});var y=v.canvas;y.D=y.requestPointerLock||y.mozRequestPointerLock||y.webkitRequestPointerLock;y.L=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock;y.L=y.L.bind(document);document.addEventListener("pointerlockchange",j,t);document.addEventListener("mozpointerlockchange",j,t);document.addEventListener("webkitpointerlockchange",j,t);v.elementPointerLock&&y.addEventListener("click",(function(a){!Uj&&y.D&&(y.D(),a.preventDefault())}),t)}for(var D,K=[c,a],w=K[0],u=1;u<K.length;u++){"/"!=w[w.length-1]&&(w+="/"),w+=K[u]}"/"==w[0]&&(w=w.substr(1));D=w;Hf("cp "+D);if("string"==typeof d){var s=h,q=(function(){s?s():b('Loading data file "'+d+'" failed.')}),G=new XMLHttpRequest;G.open("GET",d,p);G.responseType="arraybuffer";G.onload=(function(){if(200==G.status||0==G.status&&G.response){var a=G.response;B(a,'Loading data file "'+d+'" failed (no arrayBuffer).');a=new Uint8Array(a);n(a);If("al "+d)}else{q()}});G.onerror=q;G.send(r);Hf("al "+d)}else{n(d)}});v.FS_createLazyFile=(function(c,a,d,e,f){if("undefined"!==typeof XMLHttpRequest){rc||b("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var g=(function(){this.C=t;this.n=[]});g.prototype.get=(function(a){if(!(a>this.length-1||0>a)){var c=a%this.ja;return this.na(Math.floor(a/this.ja))[c]}});g.prototype.ya=(function(a){this.na=a});g.prototype.I=(function(){var a=new XMLHttpRequest;a.open("HEAD",d,t);a.send(r);200<=a.status&&300>a.status||304===a.status||b(Error("Couldn't load "+d+". Status: "+a.status));var c=Number(a.getResponseHeader("Content-length")),e,f=1048576;if(!((e=a.getResponseHeader("Accept-Ranges"))&&"bytes"===e)){f=c}var g=this;g.ya((function(a){var e=a*f,h=(a+1)*f-1,h=Math.min(h,c-1);if("undefined"===typeof g.n[a]){var j=g.n;e>h&&b(Error("invalid range ("+e+", "+h+") or no bytes requested!"));h>c-1&&b(Error("only "+c+" bytes available! programmer error!"));var w=new XMLHttpRequest;w.open("GET",d,t);c!==f&&w.setRequestHeader("Range","bytes="+e+"-"+h);"undefined"!=typeof Uint8Array&&(w.responseType="arraybuffer");w.overrideMimeType&&w.overrideMimeType("text/plain; charset=x-user-defined");w.send(r);200<=w.status&&300>w.status||304===w.status||b(Error("Couldn't load "+d+". Status: "+w.status));e=w.response!==i?new Uint8Array(w.response||[]):ye(w.responseText||"",p);j[a]=e}"undefined"===typeof g.n[a]&&b(Error("doXHR failed!"));return g.n[a]}));this.ga=c;this.fa=f;this.C=p});g=new g;Object.defineProperty(g,"length",{get:(function(){this.C||this.I();return this.ga})});Object.defineProperty(g,"chunkSize",{get:(function(){this.C||this.I();return this.fa})});g={e:t,a:g}}else{g={e:t,url:d}}return tg(c,a,g,e,f)});v.FS_createLink=(function(c,a,d,e,f){return tg(c,a,{e:t,link:d},e,f)});v.FS_createDevice=vg;dg=A.aa(4);v.requestFullScreen=(function(c,a){Xj(c,a)});v.requestAnimationFrame=(function(c){window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||window.setTimeout);window.requestAnimationFrame(c)});v.pauseMainLoop=aa();v.resumeMainLoop=(function(){Sj&&(Sj=t,r())});qe=z=A.k(rd);sd=p;qd=qe+5242880;re=td=A.k(qd);B(re<ud);var F=[0,0,fk,0,gk,0,hk,0,ik,0,jk,0,kk,0,lk,0,mk,0,nk,0,ok,0,pk,0,qk,0,rk,0,Ib,0,sk,0,tk,0,uk,0,vk,0,wk,0,xk,0,yk];function Md(c){for(var a=0,a=1;;){switch(a){case 1:a=245>c>>>0?2:78;break;case 2:if(11>c>>>0){var d=16,a=4}else{a=3}break;case 3:d=(c+11|0)&-8;a=4;break;case 4:var e=d>>>3,f=J[104],g=f>>>(e>>>0),a=0==(g&3|0)?12:5;break;case 5:var h=(g&1^1)+e|0,k=h<<1,j=456+(k<<2)|0,m=456+((k+2|0)<<2)|0,n=J[m>>2],l=n+8|0,y=J[l>>2],a=(j|0)==(y|0)?6:7;break;case 6:J[104]=f&(1<<h^-1);a=11;break;case 7:a=y>>>0<J[108]>>>0?10:8;break;case 8:var D=y+12|0,a=(J[D>>2]|0)==(n|0)?9:10;break;case 9:J[D>>2]=j;J[m>>2]=y;a=11;break;case 10:Y(),b("Reached an unreachable!");case 11:var K=h<<3;J[(n+4|0)>>2]=K|3;var w=n+(K|4)|0;J[w>>2]|=1;var u=l,a=333;break;case 12:if(d>>>0>J[106]>>>0){a=13}else{var s=d,a=160}break;case 13:a=0==(g|0)?27:14;break;case 14:var q=2<<e,G=g<<e&(q|-q|0),ua=(G&(-G|0))-1|0,Ca=ua>>>12&16,va=ua>>>(Ca>>>0),ba=va>>>5&8,fa=va>>>(ba>>>0),ka=fa>>>2&4,xa=fa>>>(ka>>>0),Pa=xa>>>1&2,Da=xa>>>(Pa>>>0),U=Da>>>1&1,ya=(ba|Ca|ka|Pa|U)+(Da>>>(U>>>0))|0,ab=ya<<1,la=456+(ab<<2)|0,ga=456+((ab+2|0)<<2)|0,Ea=J[ga>>2],Fa=Ea+8|0,bb=J[Fa>>2],a=(la|0)==(bb|0)?15:16;break;case 15:J[104]=f&(1<<ya^-1);a=20;break;case 16:a=bb>>>0<J[108]>>>0?19:17;break;case 17:var tc=bb+12|0,a=(J[tc>>2]|0)==(Ea|0)?18:19;break;case 18:J[tc>>2]=la;J[ga>>2]=bb;a=20;break;case 19:Y(),b("Reached an unreachable!");case 20:var uc=ya<<3,Jb=uc-d|0;J[(Ea+4|0)>>2]=d|3;var Kb=Ea,Pd=Kb+d|0;J[(Kb+(d|4)|0)>>2]=Jb|1;J[(Kb+uc|0)>>2]=Jb;var vc=J[106],a=0==(vc|0)?26:21;break;case 21:var Ga=J[109],cb=vc>>>3,db=cb<<1,eb=456+(db<<2)|0,wc=J[104],Ha=1<<cb,a=0==(wc&Ha|0)?22:23;break;case 22:J[104]=wc|Ha;var fb=eb,Lb=456+((db+2|0)<<2)|0,a=25;break;case 23:var xc=456+((db+2|0)<<2)|0,gb=J[xc>>2];gb>>>0<J[108]>>>0?a=24:(fb=gb,Lb=xc,a=25);break;case 24:Y(),b("Reached an unreachable!");case 25:J[Lb>>2]=Ga;J[(fb+12|0)>>2]=Ga;J[(Ga+8|0)>>2]=fb;J[(Ga+12|0)>>2]=eb;a=26;break;case 26:J[106]=Jb;J[109]=Pd;u=Fa;a=333;break;case 27:var Mb=J[105];0==(Mb|0)?(s=d,a=160):a=28;break;case 28:var yc=(Mb&(-Mb|0))-1|0,Qa=yc>>>12&16,zc=yc>>>(Qa>>>0),hb=zc>>>5&8,Ac=zc>>>(hb>>>0),ib=Ac>>>2&4,Nb=Ac>>>(ib>>>0),Qd=Nb>>>1&2,Rd=Nb>>>(Qd>>>0),Ob=Rd>>>1&1,jb=J[(720+(((hb|Qa|ib|Qd|Ob)+(Rd>>>(Ob>>>0))|0)<<2)|0)>>2],Ra=jb,L=jb,ha=(J[(jb+4|0)>>2]&-8)-d|0,a=29;break;case 29:var Ia=J[(Ra+16|0)>>2];if(0==(Ia|0)){a=30}else{var ma=Ia,a=31}break;case 30:var Bc=J[(Ra+20|0)>>2];0==(Bc|0)?a=32:(ma=Bc,a=31);break;case 31:var Cc=(J[(ma+4|0)>>2]&-8)-d|0,Dc=Cc>>>0<ha>>>0,kb=Dc?Cc:ha,lb=Dc?ma:L,Ra=ma,L=lb,ha=kb,a=29;break;case 32:var na=L,mb=J[108],a=na>>>0<mb>>>0?76:33;break;case 33:var Ec=na+d|0,Sd=Ec,a=na>>>0<Ec>>>0?34:76;break;case 34:var S=J[(L+24|0)>>2],nb=J[(L+12|0)>>2],a=(nb|0)==(L|0)?40:35;break;case 35:var Pb=J[(L+8|0)>>2],a=Pb>>>0<mb>>>0?39:36;break;case 36:var Ja=Pb+12|0,a=(J[Ja>>2]|0)==(L|0)?37:39;break;case 37:var Sa=nb+8|0,a=(J[Sa>>2]|0)==(L|0)?38:39;break;case 38:J[Ja>>2]=nb;J[Sa>>2]=Pb;var W=nb,a=47;break;case 39:Y(),b("Reached an unreachable!");case 40:var Fc=L+20|0,Gc=J[Fc>>2];if(0==(Gc|0)){a=41}else{var Ka=Gc,Ta=Fc,a=42}break;case 41:var Hc=L+16|0,Ic=J[Hc>>2];0==(Ic|0)?(W=0,a=47):(Ka=Ic,Ta=Hc,a=42);break;case 42:var Jc=Ka+20|0,Kc=J[Jc>>2];0==(Kc|0)?a=43:(Ka=Kc,Ta=Jc,a=42);break;case 43:var ob=Ka+16|0,pb=J[ob>>2];0==(pb|0)?a=44:(Ka=pb,Ta=ob,a=42);break;case 44:a=Ta>>>0<mb>>>0?46:45;break;case 45:J[Ta>>2]=0;W=Ka;a=47;break;case 46:Y(),b("Reached an unreachable!");case 47:a=0==(S|0)?67:48;break;case 48:var oa=J[(L+28|0)>>2],Lc=720+(oa<<2)|0,a=(L|0)==(J[Lc>>2]|0)?49:51;break;case 49:J[Lc>>2]=W;a=0==(W|0)?50:57;break;case 50:J[105]&=1<<oa^-1;a=67;break;case 51:a=S>>>0<J[108]>>>0?55:52;break;case 52:var Qb=S+16|0,a=(J[Qb>>2]|0)==(L|0)?53:54;break;case 53:J[Qb>>2]=W;a=56;break;case 54:J[(S+20|0)>>2]=W;a=56;break;case 55:Y(),b("Reached an unreachable!");case 56:a=0==(W|0)?67:57;break;case 57:a=W>>>0<J[108]>>>0?66:58;break;case 58:J[(W+24|0)>>2]=S;var qb=J[(L+16|0)>>2],a=0==(qb|0)?62:59;break;case 59:a=qb>>>0<J[108]>>>0?61:60;break;case 60:J[(W+16|0)>>2]=qb;J[(qb+24|0)>>2]=W;a=62;break;case 61:Y(),b("Reached an unreachable!");case 62:var rb=J[(L+20|0)>>2],a=0==(rb|0)?67:63;break;case 63:a=rb>>>0<J[108]>>>0?65:64;break;case 64:J[(W+20|0)>>2]=rb;J[(rb+24|0)>>2]=W;a=67;break;case 65:Y(),b("Reached an unreachable!");case 66:Y(),b("Reached an unreachable!");case 67:a=16>ha>>>0?68:69;break;case 68:var Mc=ha+d|0;J[(L+4|0)>>2]=Mc|3;var Rb=na+(Mc+4|0)|0;J[Rb>>2]|=1;a=77;break;case 69:J[(L+4|0)>>2]=d|3;J[(na+(d|4)|0)>>2]=ha|1;J[(na+(ha+d|0)|0)>>2]=ha;var Nc=J[106],a=0==(Nc|0)?75:70;break;case 70:var sb=J[109],Oc=Nc>>>3,Ua=Oc<<1,Sb=456+(Ua<<2)|0,za=J[104],Pc=1<<Oc,a=0==(za&Pc|0)?71:72;break;case 71:J[104]=za|Pc;var Tb=Sb,Qc=456+((Ua+2|0)<<2)|0,a=74;break;case 72:var Rc=456+((Ua+2|0)<<2)|0,Sc=J[Rc>>2];Sc>>>0<J[108]>>>0?a=73:(Tb=Sc,Qc=Rc,a=74);break;case 73:Y(),b("Reached an unreachable!");case 74:J[Qc>>2]=sb;J[(Tb+12|0)>>2]=sb;J[(sb+8|0)>>2]=Tb;J[(sb+12|0)>>2]=Sb;a=75;break;case 75:J[106]=ha;J[109]=Sd;a=77;break;case 76:Y(),b("Reached an unreachable!");case 77:var Tc=L+8|0,Uc=Tc;0==(Tc|0)?(s=d,a=160):(u=Uc,a=333);break;case 78:4294967231<c>>>0?(s=-1,a=160):a=79;break;case 79:var Vc=c+11|0,E=Vc&-8,Td=J[105];0==(Td|0)?(s=E,a=160):a=80;break;case 80:var Wc=-E|0,tb=Vc>>>8;if(0==(tb|0)){var Z=0,a=83}else{a=81}break;case 81:16777215<E>>>0?(Z=31,a=83):a=82;break;case 82:var Ub=(tb+1048320|0)>>>16&8,Xc=tb<<Ub,Ud=(Xc+520192|0)>>>16&4,Yc=Xc<<Ud,Vb=(Yc+245760|0)>>>16&2,Zc=(14-(Ud|Ub|Vb)|0)+(Yc<<Vb>>>15)|0,Z=E>>>((Zc+7|0)>>>0)&1|Zc<<1,a=83;break;case 83:var $c=J[(720+(Z<<2)|0)>>2];if(0==($c|0)){var Va=0,ub=Wc,Wb=0,a=90}else{a=84}break;case 84:if(31==(Z|0)){var Fg=0,a=86}else{a=85}break;case 85:Fg=25-(Z>>>1)|0;a=86;break;case 86:var Gg=0,De=Wc,vb=$c,Ee=E<<Fg,Hg=0,a=87;break;case 87:var Ig=J[(vb+4|0)>>2]&-8,Fe=Ig-E|0;if(Fe>>>0<De>>>0){a=88}else{var Ge=Gg,He=De,a=89}break;case 88:(Ig|0)==(E|0)?(Va=vb,ub=Fe,Wb=vb,a=90):(Ge=vb,He=Fe,a=89);break;case 89:var Ie=J[(vb+20|0)>>2],Je=J[(vb+16+(Ee>>>31<<2)|0)>>2],Jg=0==(Ie|0)|(Ie|0)==(Je|0)?Hg:Ie,Gk=Ee<<1;0==(Je|0)?(Va=Ge,ub=He,Wb=Jg,a=90):(Gg=Ge,De=He,vb=Je,Ee=Gk,Hg=Jg,a=87);break;case 90:if(0==(Wb|0)&0==(Va|0)){a=91}else{var Ke=Wb,a=93}break;case 91:var Kg=2<<Z,Le=(Kg|-Kg|0)&Td;0==(Le|0)?(s=E,a=160):a=92;break;case 92:var Lg=(Le&(-Le|0))-1|0,Mg=Lg>>>12&16,Ng=Lg>>>(Mg>>>0),Og=Ng>>>5&8,Pg=Ng>>>(Og>>>0),Qg=Pg>>>2&4,Rg=Pg>>>(Qg>>>0),Sg=Rg>>>1&2,Tg=Rg>>>(Sg>>>0),Ug=Tg>>>1&1,Ke=J[(720+(((Og|Mg|Qg|Sg|Ug)+(Tg>>>(Ug>>>0))|0)<<2)|0)>>2],a=93;break;case 93:if(0==(Ke|0)){var $=ub,T=Va,a=96}else{var Xb=Ke,Vd=ub,Me=Va,a=94}break;case 94:var Vg=(J[(Xb+4|0)>>2]&-8)-E|0,Wg=Vg>>>0<Vd>>>0,Ne=Wg?Vg:Vd,Oe=Wg?Xb:Me,Xg=J[(Xb+16|0)>>2];0==(Xg|0)?a=95:(Xb=Xg,Vd=Ne,Me=Oe,a=94);break;case 95:var Yg=J[(Xb+20|0)>>2];0==(Yg|0)?($=Ne,T=Oe,a=96):(Xb=Yg,Vd=Ne,Me=Oe,a=94);break;case 96:0==(T|0)?(s=E,a=160):a=97;break;case 97:$>>>0<(J[106]-E|0)>>>0?a=98:(s=E,a=160);break;case 98:var Q=T,Pe=J[108],a=Q>>>0<Pe>>>0?158:99;break;case 99:var Qe=Q+E|0,Zg=Qe,a=Q>>>0<Qe>>>0?100:158;break;case 100:var ad=J[(T+24|0)>>2],Wd=J[(T+12|0)>>2],a=(Wd|0)==(T|0)?106:101;break;case 101:var Re=J[(T+8|0)>>2],a=Re>>>0<Pe>>>0?105:102;break;case 102:var $g=Re+12|0,a=(J[$g>>2]|0)==(T|0)?103:105;break;case 103:var ah=Wd+8|0,a=(J[ah>>2]|0)==(T|0)?104:105;break;case 104:J[$g>>2]=Wd;J[ah>>2]=Re;var da=Wd,a=113;break;case 105:Y(),b("Reached an unreachable!");case 106:var bh=T+20|0,ch=J[bh>>2];if(0==(ch|0)){a=107}else{var Yb=ch,bd=bh,a=108}break;case 107:var dh=T+16|0,eh=J[dh>>2];0==(eh|0)?(da=0,a=113):(Yb=eh,bd=dh,a=108);break;case 108:var fh=Yb+20|0,gh=J[fh>>2];0==(gh|0)?a=109:(Yb=gh,bd=fh,a=108);break;case 109:var hh=Yb+16|0,ih=J[hh>>2];0==(ih|0)?a=110:(Yb=ih,bd=hh,a=108);break;case 110:a=bd>>>0<Pe>>>0?112:111;break;case 111:J[bd>>2]=0;da=Yb;a=113;break;case 112:Y(),b("Reached an unreachable!");case 113:a=0==(ad|0)?133:114;break;case 114:var jh=J[(T+28|0)>>2],kh=720+(jh<<2)|0,a=(T|0)==(J[kh>>2]|0)?115:117;break;case 115:J[kh>>2]=da;a=0==(da|0)?116:123;break;case 116:J[105]&=1<<jh^-1;a=133;break;case 117:a=ad>>>0<J[108]>>>0?121:118;break;case 118:var lh=ad+16|0,a=(J[lh>>2]|0)==(T|0)?119:120;break;case 119:J[lh>>2]=da;a=122;break;case 120:J[(ad+20|0)>>2]=da;a=122;break;case 121:Y(),b("Reached an unreachable!");case 122:a=0==(da|0)?133:123;break;case 123:a=da>>>0<J[108]>>>0?132:124;break;case 124:J[(da+24|0)>>2]=ad;var Xd=J[(T+16|0)>>2],a=0==(Xd|0)?128:125;break;case 125:a=Xd>>>0<J[108]>>>0?127:126;break;case 126:J[(da+16|0)>>2]=Xd;J[(Xd+24|0)>>2]=da;a=128;break;case 127:Y(),b("Reached an unreachable!");case 128:var Yd=J[(T+20|0)>>2],a=0==(Yd|0)?133:129;break;case 129:a=Yd>>>0<J[108]>>>0?131:130;break;case 130:J[(da+20|0)>>2]=Yd;J[(Yd+24|0)>>2]=da;a=133;break;case 131:Y(),b("Reached an unreachable!");case 132:Y(),b("Reached an unreachable!");case 133:a=16>$>>>0?134:135;break;case 134:var mh=$+E|0;J[(T+4|0)>>2]=mh|3;var nh=Q+(mh+4|0)|0;J[nh>>2]|=1;a=159;break;case 135:J[(T+4|0)>>2]=E|3;J[(Q+(E|4)|0)>>2]=$|1;J[(Q+($+E|0)|0)>>2]=$;var oh=$>>>3,a=256>$>>>0?136:141;break;case 136:var Se=oh<<1,ph=456+(Se<<2)|0,qh=J[104],rh=1<<oh,a=0==(qh&rh|0)?137:138;break;case 137:J[104]=qh|rh;var Te=ph,sh=456+((Se+2|0)<<2)|0,a=140;break;case 138:var th=456+((Se+2|0)<<2)|0,uh=J[th>>2];uh>>>0<J[108]>>>0?a=139:(Te=uh,sh=th,a=140);break;case 139:Y(),b("Reached an unreachable!");case 140:J[sh>>2]=Zg;J[(Te+12|0)>>2]=Zg;J[(Q+(E+8|0)|0)>>2]=Te;J[(Q+(E+12|0)|0)>>2]=ph;a=159;break;case 141:var Wa=Qe,Ue=$>>>8;if(0==(Ue|0)){var wb=0,a=144}else{a=142}break;case 142:16777215<$>>>0?(wb=31,a=144):a=143;break;case 143:var vh=(Ue+1048320|0)>>>16&8,wh=Ue<<vh,xh=(wh+520192|0)>>>16&4,yh=wh<<xh,zh=(yh+245760|0)>>>16&2,Ah=(14-(xh|vh|zh)|0)+(yh<<zh>>>15)|0,wb=$>>>((Ah+7|0)>>>0)&1|Ah<<1,a=144;break;case 144:var Ve=720+(wb<<2)|0;J[(Q+(E+28|0)|0)>>2]=wb;var Hk=Q+(E+16|0)|0;J[(Q+(E+20|0)|0)>>2]=0;J[Hk>>2]=0;var Bh=J[105],Ch=1<<wb,a=0==(Bh&Ch|0)?145:146;break;case 145:J[105]=Bh|Ch;J[Ve>>2]=Wa;J[(Q+(E+24|0)|0)>>2]=Ve;J[(Q+(E+12|0)|0)>>2]=Wa;J[(Q+(E+8|0)|0)>>2]=Wa;a=159;break;case 146:var Ik=J[Ve>>2];if(31==(wb|0)){var Dh=0,a=148}else{a=147}break;case 147:Dh=25-(wb>>>1)|0;a=148;break;case 148:var We=$<<Dh,xb=Ik,a=149;break;case 149:a=(J[(xb+4|0)>>2]&-8|0)==($|0)?154:150;break;case 150:var Xe=xb+16+(We>>>31<<2)|0,Eh=J[Xe>>2],Jk=We<<1;0==(Eh|0)?a=151:(We=Jk,xb=Eh,a=149);break;case 151:a=Xe>>>0<J[108]>>>0?153:152;break;case 152:J[Xe>>2]=Wa;J[(Q+(E+24|0)|0)>>2]=xb;J[(Q+(E+12|0)|0)>>2]=Wa;J[(Q+(E+8|0)|0)>>2]=Wa;a=159;break;case 153:Y(),b("Reached an unreachable!");case 154:var Fh=xb+8|0,Ye=J[Fh>>2],Gh=J[108],a=xb>>>0<Gh>>>0?157:155;break;case 155:a=Ye>>>0<Gh>>>0?157:156;break;case 156:J[(Ye+12|0)>>2]=Wa;J[Fh>>2]=Wa;J[(Q+(E+8|0)|0)>>2]=Ye;J[(Q+(E+12|0)|0)>>2]=xb;J[(Q+(E+24|0)|0)>>2]=0;a=159;break;case 157:Y(),b("Reached an unreachable!");case 158:Y(),b("Reached an unreachable!");case 159:var Hh=T+8|0,Kk=Hh;0==(Hh|0)?(s=E,a=160):(u=Kk,a=333);break;case 160:var cd=J[106],a=s>>>0>cd>>>0?165:161;break;case 161:var Zd=cd-s|0,dd=J[109],a=15<Zd>>>0?162:163;break;case 162:var Ze=dd;J[109]=Ze+s|0;J[106]=Zd;J[(Ze+(s+4|0)|0)>>2]=Zd|1;J[(Ze+cd|0)>>2]=Zd;J[(dd+4|0)>>2]=s|3;a=164;break;case 163:J[106]=0;J[109]=0;J[(dd+4|0)>>2]=cd|3;var Ih=dd+(cd+4|0)|0;J[Ih>>2]|=1;a=164;break;case 164:u=dd+8|0;a=333;break;case 165:var Jh=J[107],a=s>>>0<Jh>>>0?166:167;break;case 166:var Kh=Jh-s|0;J[107]=Kh;var $e=J[110],Lh=$e;J[110]=Lh+s|0;J[(Lh+(s+4|0)|0)>>2]=Kh|1;J[($e+4|0)>>2]=s|3;u=$e+8|0;a=333;break;case 167:a=0==(J[2]|0)?168:169;break;case 168:zk();a=169;break;case 169:var Lk=s+48|0,Nh=J[4],Oh=s+47|0,Ph=Nh+Oh|0,Qh=-Nh|0,Zb=Ph&Qh;Zb>>>0>s>>>0?a=170:(u=0,a=333);break;case 170:var Rh=J[214],a=0==(Rh|0)?172:171;break;case 171:var Sh=J[212],Th=Sh+Zb|0;Th>>>0<=Sh>>>0|Th>>>0>Rh>>>0?(u=0,a=333):a=172;break;case 172:if(0==(J[215]&4|0)){a=173}else{var Uh=0,a=196}break;case 173:var Vh=J[110],a=0==(Vh|0)?179:174;break;case 174:var Wh=Vh,ed=864,a=175;break;case 175:var Xh=ed|0,Yh=J[Xh>>2],a=Yh>>>0>Wh>>>0?177:176;break;case 176:var Zh=ed+4|0,a=(Yh+J[Zh>>2]|0)>>>0>Wh>>>0?178:177;break;case 177:var $h=J[(ed+8|0)>>2];0==($h|0)?a=179:(ed=$h,a=175);break;case 178:a=0==(ed|0)?179:186;break;case 179:var $d=Dg(0);if(-1==($d|0)){var $b=0,a=195}else{a=180}break;case 180:var af=$d,ai=J[3],bi=ai-1|0;if(0==(bi&af|0)){var yb=Zb,a=182}else{a=181}break;case 181:yb=(Zb-af|0)+((bi+af|0)&(-ai|0))|0;a=182;break;case 182:var ci=J[212],di=ci+yb|0;yb>>>0>s>>>0&2147483647>yb>>>0?a=183:($b=0,a=195);break;case 183:var ei=J[214],a=0==(ei|0)?185:184;break;case 184:di>>>0<=ci>>>0|di>>>0>ei>>>0?($b=0,a=195):a=185;break;case 185:var fi=Dg(yb),gi=(fi|0)==($d|0),bf=gi?$d:-1,ae=gi?yb:0,be=fi,Xa=yb,a=188;break;case 186:var ce=(Ph-J[107]|0)&Qh;2147483647>ce>>>0?a=187:($b=0,a=195);break;case 187:var cf=Dg(ce),hi=(cf|0)==(J[Xh>>2]+J[Zh>>2]|0),Mk=hi?ce:0,bf=hi?cf:-1,ae=Mk,be=cf,Xa=ce,a=188;break;case 188:var Nk=-Xa|0;if(-1==(bf|0)){a=189}else{var N=ae,C=bf,a=199}break;case 189:if(-1!=(be|0)&2147483647>Xa>>>0&Xa>>>0<Lk>>>0){a=190}else{var df=Xa,a=194}break;case 190:var ii=J[4],ef=((Oh-Xa|0)+ii|0)&(-ii|0);2147483647>ef>>>0?a=191:(df=Xa,a=194);break;case 191:a=-1==(Dg(ef)|0)?193:192;break;case 192:df=ef+Xa|0;a=194;break;case 193:Dg(Nk);$b=ae;a=195;break;case 194:-1==(be|0)?($b=ae,a=195):(N=df,C=be,a=199);break;case 195:J[215]|=4;Uh=$b;a=196;break;case 196:a=2147483647>Zb>>>0?197:332;break;case 197:var de=Dg(Zb),ff=Dg(0),a=-1!=(ff|0)&-1!=(de|0)&de>>>0<ff>>>0?198:332;break;case 198:var ji=ff-de|0,ki=ji>>>0>(s+40|0)>>>0,Ok=ki?ji:Uh,l
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment